Autor Thema: User Defined Error  (Gelesen 13255 mal)

Offline hOtze

  • Aktives Mitglied
  • ***
  • Beiträge: 159
  • Geschlecht: Männlich
  • .:[gEHt nIt???? gIBTs nIt!!!!]:.
User Defined Error
« am: 06.10.04 - 15:51:48 »
Hallo ,
stehe hier mal wieder vor einem Notes Mysterium (oder meine eigene Blödheit blockiert mich wieder)

Kollegen aus einer andern Niederlassung bekommen allle die Fehlermeldung
"User-Defined Error" vom Errorhandler im folgenden Script, und zwar an Zeile 302 quasi
dieser Zeile

Call O_Dokument.Save(True,False,True)

Komischerweiße funktioniert die ganze Geschichte an meinem Client einwandfrei. Auch mit einem 5er Client funktioniert es, daher kann ich den fehler auch nicht debuggen! ;(

Hier der Code:

   Private Sub Urlaubberrechnen
      ClassFunction = "MitarbeiterDokument / Urlaubberrechnen"      
      On Error Goto ErrorHandler
      
      O_Resturlaub = (O_Urlaubstage + O_Übertrag) - O_UrlaubGenommen   
      O_Dokument.Urlaubstage =  O_Urlaubstage
      O_Dokument.genommen = O_UrlaubGenommen
      O_Dokument.Resturlaub = O_Resturlaub
      O_Dokument.NewYear = O_NewYear
      
      Call O_Dokument.Save(True,False,True)
      
      Exit Sub
      
ErrorHandler:
      Msgbox "Class-Function: "+ClassFunction + Chr(13) +"Error: " + Chr( 9 ) + Cstr( Err ) + " " + Error( Err ) + Chr( 13 ) + "in Line: " + Chr( 9 ) + Cstr( Erl ), 16, "Critical Error"      
      Exit Sub
   End Sub
...........::]hOtze[::...............................................

Driri

  • Gast
Re: User Defined Error
« Antwort #1 am: 06.10.04 - 16:51:23 »
Hi,

Verkettung von Strings werden in Script mit "&" gemacht, nicht mit "+".

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #2 am: 06.10.04 - 17:11:46 »
Genau, Ordnung und Sauberkeit im Schlachthof muss sein. Das mit "+" funktioniert zwar, aber entspricht nicht den Vorgaben.

Ingo, Du hast aber was übersehen: "Urlaubberrechnen". Das ist eigentlich das selbe in Gründe - es "funktioniert", aber ...

Jetzt aber ernsthaft: Stimmen den erforderlichen Rechte für die betroffenen User ? Manchmal ist es ja nur ein ganz kleiner vergessener Haken ...

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: User Defined Error
« Antwort #3 am: 06.10.04 - 22:07:23 »
Bernhard und Ingo

Ich kann mich Euren Aussagen gar nicht anschliessen. Wenn die Syntax der Sprache eine Notation zulässt, ist es uns nicht gegeben, diese zu beurteilen. Die Designer-Hilfe gibt ganz klar die Unterschiede der beiden Operatoren an, wertet aber in keiner Weise, es bleibt also dem Benutzer überlassen, was ihm besser passt. Alles andere ist in meinen Augen religiöse Aussage.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re: User Defined Error
« Antwort #4 am: 06.10.04 - 22:19:35 »
Es gibt sogar einen Unterschied zwischen + und &. Das haben wir mal vor einiger Zeit hier diskutiert...

Die Ergebnisse können schon unterschiedlich sein!

Use the ampersand (&) operator to ensure a concatenation operation. The plus (+) operator  concatenates two character strings, but LotusScript determines whether to interpret the plus as a concatenation operator or an addition operator on the basis of the operands in the expression in which it appears.
For example:
Print 100 & "200"
' Output is 100200, because & is always
' a concatenation operator
while
Print 100 + "200"
' Output is 300, because + was interpreted
' as addition operator

Print "100" + "200"
' Output is 100200, because + was interpreted
' as concatenation operator

Religion ist hier aber nicht gefragt, eher Pragmatismus (oder ist das das gleiche, nur auf hohem Niveau  ;D)

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #5 am: 06.10.04 - 22:27:23 »
Ich kann mich Jens' Aussage diesmal zu 0 Prozent anschliessen. Es gibt - auch wenn die Programmiersprache das  - leider - zulässt, gewisse Regeln, die es sich einfach lohnt zu befolgen. Die DesignerHelp zieht dies auch stringent durch - wohl ebenso nicht ohne Grund.

Es folgen ein paar Codezeilen, die man sich bitte mal im Kontext von Tausenden Codezeilen vorstellt (wo der Überblick ja mal verloren gehen kann). Aus meinen Augen verbietet sich für Stringoperationen schlicht jedwede Vermengung von vielleicht möglichen, aber nicht ausdrücklich angeratenen Operatoren:

Code
Sub Click(Source As Button)
	
	Dim Wert1 As Integer
	Dim Wert2 As Integer
	
	Wert1 = 5
	Wert2 = 7
	
	Messagebox "Unsauber: " & Wert1 + Wert2
	Messagebox "Auch nicht sauber, aber erwartetes Ergebnis: " & Wert1 & Wert2
	Messagebox "Sauber: " & Cstr (Wert1) & Cstr (Wert2)
	
End Sub

Einen Zusammenhang zu religiösen Dingen kann ich absolut nicht erkennen, Jens. Und Andreas' Posting zielt hier auch in die gleiche Richtung.

Bernhard

Glombi

  • Gast
Re: User Defined Error
« Antwort #6 am: 06.10.04 - 22:33:59 »
Print 100 + "200"

hat für mich die gleiche "Qualität" wie i++ oder ++i

Liefert das jetzt "300" oder 300 ? Habe keinen Bock das jetzt auszuprobieren. Wehe einer der Azubis, deren Code ich dann warten muss, programmiert das  ;D

Verwirrung ohne Ende

Wenn man mit Cstr(i) arbeitet, ist es egal, ob + oder &. Dann aber bitte &  ;D
(aus meinen subjektiv ästhetischem Empfinden)

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #7 am: 06.10.04 - 22:42:00 »
Wenn man mit Cstr(i) arbeitet, ist es egal, ob + oder &. Dann aber bitte &  ;D
(aus meinen subjektiv ästhetischem Empfinden)

FULL ACK, Andreas !

Ich halte das aber weder für eine subjektiv noch eine für ästhetische Frage. Ich habe es weiter oben mit "Ordnung und Sauberkeit im Schlachthof" umschrieben. Wer derart einfache Regeln der Code-Lesbarkeit (dazu zählt auch eine naming convention wie die Hungarian notation) und vor allem EINDEUTIGKEIT missachtet, schreibt entweder nur 100-Zeiler oder fällt irgendwann tierisch auf die Schnauze. Eine Sauerei ist zumindest gegenüber Kollegen, die den "Kot" mal warten müssen.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: User Defined Error
« Antwort #8 am: 06.10.04 - 23:02:06 »
Messagebox "Auch nicht sauber, aber erwartetes Ergebnis: " & Wert1 & Wert2

Ich wollte hier erst widersprechen und hätte schwören können, dass in der Designerhilfe steht, dass Integer etc. bei der Übergabe in die Massagebox immer als String umgewandelt werden (und man sich das CStr somit schenken kann). Aber konnte es nicht finden, schätze ich habe das mal in einem Buch gelesen....

Ich mag nämlich CStr's in Messageboxes nicht, weil diese die Codezeilen länger werden lassen, dies kann gerade bei längeren Messages dann unübersichtlicher werden.
Werde das trotzdem weiter so handhaben ohne CStr, aber natürlich immer mit & als Verkettung.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #9 am: 06.10.04 - 23:08:36 »
Ui, das halte ich jetzt aber für bedenklich, Matthias. Und Massagekisten kann man doch wunderbar in einzelne Zeilen aufteilen (ab und an bleibt einem da ja sowieso keine Möglichkeit - auch ohne Cstr-Statements):
Messagebox "Ein Fehler ist aufgetreten !" & Chr$ (10) & Chr$ (10) &_
                     "Bitte beschimpfen Sie den Programmierer !"

oder - einfacher -

Messagebox |Ein Fehler ist aufgetreten !"

"Bitte beschimpfen Sie den Programmierer !" |

"Lange Zeilen" sind für mich jedenfalls kein Argument gegen sauberes Coding.

Bernhard (wie immer grüssend von "Ober" nach "Nieder")

Glombi

  • Gast
Re: User Defined Error
« Antwort #10 am: 06.10.04 - 23:11:56 »
Oder noch einfacher

Messagebox {Ein Fehler ist aufgetreten !

Bitte beschimpfen oder steinigen Sie den Programmierer ! }

Zwischen was Notes implizit macht und was sinnvoll ist besteht meiner Meinung nach noch ein Unterschied. Und implizite Typumwandlung ist - was die Wartbarkeit und Fehlersuche betrifft - schwierig nachzuvollziehen.

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: User Defined Error
« Antwort #11 am: 06.10.04 - 23:14:34 »
Die mehrzeilige Aufteilungssyntax ist mir klar, Bernhard.

Aber ich perönlich finde
Messagebox collection.Count & " Dokumente von " & intIrgendwas & "wurden abgearbeitet."
einfach lesbarer als
Messagebox cstr(collection.Count) & " Dokumente von " & cstr(intIrgendwas) & "wurden abgearbeitet."

Dies gerade, wenn in einer Massagebox mehrere Variablen vorkommen.
Mir fällt auch kein einziger Nachteil hier ein, außer eben dass dies leider so nicht in der Messagebox-Hilfe explizit erwähnt wird, eben dass z.B. ein
  Messagebox collection.Count
keinen Fehler wirft.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: User Defined Error
« Antwort #12 am: 06.10.04 - 23:29:52 »
Zwischen was Notes implizit macht und was sinnvoll ist besteht meiner Meinung nach noch ein Unterschied. Und implizite Typumwandlung ist - was die Wartbarkeit und Fehlersuche betrifft - schwierig nachzuvollziehen.

Das sehe ich genauso.
Gerade bei Messagebox mache ich da aber eine Ausnahme, ich musste auch noch nie Fehler in einer Messagebox suchen (außer Leerzeichen und/oder Zeilenumbruch zuviel/zuwenig).
Daher sehe ich wirklich kein Argument, mit CStr's in der Msgbox zu arbeiten, außer dass dies nicht explizit in der Help erwähnt ist. Ich würde auch stark an IBM zweifeln, wenn plötzlich in ND8 ein "Msgbox coll.Count" einen "Incorrect Datatype" fehler bringen würde.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #13 am: 06.10.04 - 23:53:31 »
Gerade bei Messagebox mache ich da aber eine Ausnahme, ich musste auch noch nie Fehler in einer Messagebox suchen (außer Leerzeichen und/oder Zeilenumbruch zuviel/zuwenig).

Entweder - oder, Matthias ...

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: User Defined Error
« Antwort #14 am: 06.10.04 - 23:59:42 »
Gerade bei Messagebox mache ich da aber eine Ausnahme, ich musste auch noch nie Fehler in einer Messagebox suchen (außer Leerzeichen und/oder Zeilenumbruch zuviel/zuwenig).

Entweder - oder, Matthias ...

Wie meinst Du das jetzt, Bernhard? Bezug auf CStr und Ampersand als Verknüpfung? Oder allgemein gemeint? Wegen Ausnahme?
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: User Defined Error
« Antwort #15 am: 07.10.04 - 00:09:08 »
Allein schon wegen der Lesbarkeit hinsichtlich der Datentypen: Sauber bleiben ! Ich meine also sowohl Cstr als auch Ampersand.

Aber das ist natürlich immer eine persönliche Entscheidung. Danken würde es aber einem derjenige, der vielleicht mal mit meinem Code umgehen müsste.

Bernhard

PS: Ich habe jetzt sogar den Teamstudio Configurator über alle wesentlichen Apps gejagt, damit er "msgbox" gegen "Messagebox" austauscht (und habe mir angewöhnt, nur noch diese Notation zu verwenden), damit ich irgendwann mal nach zwei möglichen Notationen suchen muss. Aus Erfahrung ...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: User Defined Error
« Antwort #16 am: 07.10.04 - 00:20:42 »
Für mich fällt das schon fast in die Kategorie "Geschmack"  :)

Ich meine, wenn man durchgängig in (auf Ampersand basierenden) Msgboxes auf CStr verzichtet, aber Variablen eh saubere Präfixe verleiht, dann rast kein Programmierer in Probleme, wenn der meinen Code lesen und verstehen muss. Mich würde aber ein Beispiel interessieren, das mir meine Behauptung widerlegt.
Einheitlich Msgbox oder Messagebox zu verwenden (ich persönl. nehme lieber Msgbox), halte ich auch für sehr sinnvoll.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline hOtze

  • Aktives Mitglied
  • ***
  • Beiträge: 159
  • Geschlecht: Männlich
  • .:[gEHt nIt???? gIBTs nIt!!!!]:.
Re: User Defined Error
« Antwort #17 am: 07.10.04 - 08:03:31 »
Morgen Kollegen,

hui da is ja ne ganze schöne Diskussion entstanden.... gut dann werd ich die + in der Messagebox durch & ersetzen! ;)
Aber das ja eigentlich nit das Problem, die Ausgabe der Box funktioniert ja .... nur was sie mir mitteilt find ich nit in Ordnung!

Also an Rechte hatte ich auch erst gedacht, hab deshalb hab ich es auch mal mit einer ID eines Stino Users getestet.... selbst da funktioniert es! Das Shizophrene ist ja gerade das es hier bei uns einwandfrei funktioniert, nur halt in der andern Niederlassung nicht.

Sonst noch wer ne Idee?
...........::]hOtze[::...............................................

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: User Defined Error
« Antwort #18 am: 07.10.04 - 20:06:08 »
Bernhard: Ampersand UND CStr ist für mich eindeutig nicht sauber. Warum? Ampersand ruft den CStr intern auf, fügt man ihn dazu, wird er zweimal ausgeführt. Wozu?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re: User Defined Error
« Antwort #19 am: 07.10.04 - 20:50:21 »
PS: Ich habe jetzt sogar den Teamstudio Configurator über alle wesentlichen Apps gejagt, damit er "msgbox" gegen "Messagebox" austauscht (und habe mir angewöhnt, nur noch diese Notation zu verwenden), damit ich irgendwann mal nach zwei möglichen Notationen suchen muss. Aus Erfahrung ...
Ups, hoffentlich bekommst Du nie Code von mir zum Suchen  ;D
Ich habe nämlich die Messagebox verbannt: Zuviel Tipparbeit und VB verwendet ja auch Msgbox. Warum hier eine künstliche Trennung gemacht wird ist mir nicht so klar.

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz