Autor Thema: Mit Debugger gehts, ohne nicht...  (Gelesen 4552 mal)

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Mit Debugger gehts, ohne nicht...
« am: 19.09.03 - 09:50:08 »
Moin,
ich hab da wieder mal ein Problem:
Ich will in einem Script über den Workspace eine Dialogbox, in der eine Maske angezeigt wird, öffnen.
Solange, wie ich mir den Ablauf so im Debugger anschaue, funktioniert das auch super. Aber ohne Debugger, sprich wenn dieser ausgeschaltet ist, wird die Dialogbox entweder gar nicht erst geöffnet oder gleich wieder geschlossen oder was weiß ich...
Aber ich kann ja nicht gucken, woran das liegt, weils ja mit Debugger geht!!!

Kennt dieses Spielchen schon jemand und wie kann ich denn da so abhilfe schaffen???

Danke im Voraus für die Bemühungen
      Thomas
+++To be human is more important than to be important!+++

Offline g202e

  • Senior Mitglied
  • ****
  • Beiträge: 361
  • Geschlecht: Männlich
  • Was nicht tötet, härtet ab!
Re:Mit Debugger gehts, ohne nicht...
« Antwort #1 am: 19.09.03 - 10:53:21 »
Ganz schlau wäre es, wenn du uns jetzt noch ein wenig Code vorsetzen würdest!
Du weisst ja, das Hellsehen funzt nur bei Harry Potter...
Domino 5.0.11/LN 5.011(german)/NT4 + SP6a

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #2 am: 19.09.03 - 10:59:47 »
Hi,
na logen gibts da n bissel Code:

...
Set view = db.Getview("Nach Projekten")
   zaehler = view.TopLevelEntryCount
   If (zaehler = 0) Then
      Messagebox "Bitte legen Sie erst ein Projekt an!", , "Neues Teilprojekt anlegen"
   Else
      Set doccol = db.unprocessedDocuments
      count = doccol.count
      If (count = 0) Then
         Messagebox "Es muss das Dokument 'Projektbeschreibung' des gewünschten Projekts markiert sein (nicht die Kategorie)!", , "Teilprojekt anlegen"
      Else
         Set uidoc = ws.EditDocument()
         TeilKat1 = uidoc.Fieldgettext("Categories1")
         TeilKat2 = uidoc.Fieldgettext("Date")
         Call uidoc.close
         Set uidoc = ws.ComposeDocument("","","Teilprojekt")
         Set doc = uidoc.Document
         Call uidoc.Fieldsettext("Projektname", TeilKat1)
         
         temp = ws.dialogbox("Teilprojekt") <-das ist der Moment, wo Frosch ins Wasser rennt!
         
         If (temp = False) Then
            Set item = doc.ReplaceItemValue("SaveOptions", "0")
            uidoc.close
         Else
...

Wie gesagt, wenn ich das Ganze im Debugger ablaufen lasse, öffnet sich die Dialogbox, dass es nur so eine Freude ist, aber ohne eben nicht!
 ???
Thomas
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #3 am: 19.09.03 - 11:52:29 »
So, und jetzt kommts noch besser!!!!!!

Jetzt hab ich mir gedacht, ich guck mal, ob das Script überhaupt dort ankommt oder vorher schon wegfliegt!
Also ich:

...
MsgBox("Vorher")
temp = ws.dialogbox("Teilprojekt")
MsgBox("Nachher")
...

Und siehe da: Nach der Messagebox -> "Vorher" öffnet sich die Dialogbox genau so, wie ich das haben will. Nach bearbeiten und bestätigen mit OK wird alles so gespeichert, wies sein soll. Und danach die MsgBox "Nachher".

Ich also: -> nehm die MsgBox'en wieder weg, und:

!!!!!!!! Die Sch.... geht wieder nicht!!!!!!! >:(

Also das soll mal einer verstehen, ich tu's nicht!!!!
Ich geh jetzt ne Runde heulen!
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #4 am: 22.09.03 - 14:02:12 »
Mahlzeit,
also ich werde mir jetzt wirklich so behelfen, dass ich eine MsgBox vor dem Dialog öffne. Muss ich dort halt sagen, dass ich da nix für kann ;D !!
Aber das kann ja eigentlich auch nicht der Sinn des Ganzen sein.

Also wenn irgend wer da draußen in den Weiten des Raumes eine Lösung weiß oder die Ursache kennt, ich bin für jeden Hinweis dankbar!

Thomas
+++To be human is more important than to be important!+++

Driri

  • Gast
Re:Mit Debugger gehts, ohne nicht...
« Antwort #5 am: 22.09.03 - 14:23:33 »
Hi,

kannst Du nicht statt der MessageBox nen Print benutzen ? Wenigstens mal testen, das fällt nicht ganz so ins Auge  ;)

Eine Erklärung kann ich dir ansonsten auch nicht liefern.

Offline tower

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
    • Uwe Schräpler IT-Service
Re:Mit Debugger gehts, ohne nicht...
« Antwort #6 am: 22.09.03 - 14:26:41 »
Sehr ulkig,

probier mal statt uidoc zu nehmen ein doc:

Dein code: ----

         Set uidoc = ws.EditDocument()
         TeilKat1 = uidoc.Fieldgettext("Categories1")
         TeilKat2 = uidoc.Fieldgettext("Date")
         Call uidoc.close
         Set uidoc = ws.ComposeDocument("","","Teilprojekt")
         Set doc = uidoc.Document
         Call uidoc.Fieldsettext("Projektname", TeilKat1)
         
         temp = ws.dialogbox("Teilprojekt") <-das ist der Moment, wo Frosch ins Wasser rennt!
         
so würde ich das machen:

         Set uidoc = ws.EditDocument()
         TeilKat1 = uidoc.Fieldgettext("Categories1")
         TeilKat2 = uidoc.Fieldgettext("Date")
         Call uidoc.close
         Set doc = db.creatdocument
         doc.form="Teilprojekt"
         doc.projektname= teilkat1

         temp = Call ws.DialogBox"Teilprojekt",,,True,,,False,"irgendwas",doc,True,True)
_---------------------------------------------------

Die parameter bei dialogbox mußt Du entsprechend setzen, entscheidend ist das mitgegebene Doc.

Gruß  Tower        

         

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #7 am: 22.09.03 - 14:42:43 »
@tower
jau, hab ich probiert, -> gleiches Spiel!!
Is schon zum verrückt werden, so was!
trotzdem danke...
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #8 am: 22.09.03 - 14:46:37 »
@Driri
Print hilft auch nicht, der Dialogaufruf wird auch mit Print vorneweg konsequent ignoriert!
Wär ja auch zu schön gewesen...
+++To be human is more important than to be important!+++

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:Mit Debugger gehts, ohne nicht...
« Antwort #9 am: 22.09.03 - 14:53:06 »
Das Verhalten könnte an deinen nicht eingegebenen Parametern liegen. Versuchs doch mal mit dem kompletten Aufruf.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline tower

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
    • Uwe Schräpler IT-Service
Re:Mit Debugger gehts, ohne nicht...
« Antwort #10 am: 22.09.03 - 14:57:02 »
dann hab ich nur noch einen

 Set uidoc = ws.EditDocument()
 TeilKat1 = uidoc.Fieldgettext("Categories1")
 TeilKat2 = uidoc.Fieldgettext("Date")
 Call uidoc.close

gegen
 Teilkat1 = ws.currentdocument.document.Categories1(0)
 Teilkat2 = cstr(ws.currentdocument.document.date(0))

zu ersetzen.
Ich habe das uidoc close/edit in Verdacht.



Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #11 am: 22.09.03 - 14:58:51 »
@Thomas Schulte,
war echt eine nette Idee, aber auch das funzt nicht. Sind ja eigentlich auch alles optionale Parameter...
Habs aber wie gesagt trotzdem probiert und nix...
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #12 am: 22.09.03 - 15:24:03 »
@tower
funktionokelt leider auch nicht, beim Versuch, auf ein Feld des Doc's über
Teilkat1 = ws.currentdocument.document.Categories1(0)
zuzugreifen wird mir vermeldet, dass die Objektvariable nicht gesetzt ist. Wird wohl daran liegen, dass ich das UIDoc, das in der View markiert ist, nur über das EditDocument vom Workspace zu greifen bekomme. (nehm ich zumindest an)

Oder geht das etwa auch noch anders?
+++To be human is more important than to be important!+++

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #13 am: 24.09.03 - 08:53:56 »
Moin, Moin,
also eine wilde Verschwörungstheorie hab ich da noch!
Im Visual C++ tritt so ein Effekt manchmal auf, wenn irgend ein String vor dem Aufruf eines Dialogs nicht ordnungsgemäß terminiert wird. Da Notes, soweit ich das weiß, in C++ programmiert ist, könnte es doch glatt daran liegen, oder??
Was sagen denn die C-Spezialisten so dazu?
Sollte es allerdings ein Problem dieser Art sein, dann fürchte ich, dass mein Einfluss eher begrenzt ist. ::)
Na ja, wenn noch jemand eine Idee hat, was es denn so sein könnte, dann hör ich gerne zu. Das mit der MsgBox vorher is nämlich ziemlich bescheuert...
Ciao Thomas
+++To be human is more important than to be important!+++

Offline Wirsing

  • Senior Mitglied
  • ****
  • Beiträge: 283
  • Geschlecht: Männlich
    • METZ CONNECT
Re:Mit Debugger gehts, ohne nicht...
« Antwort #14 am: 24.09.03 - 10:12:44 »
hmmm,

ganz kläglicher Versuch Dir zu helfen:

Wenn Du statt der Variablen temp eine andere versuchst?

Ist nicht viel, aber auch mal ein Versuch wert, oder ???
6 Lotus Domino Server 9.0.1(FP5-7) auf Windows 2008R2 Server
ca. 450 Clients mit 8.5.x/9.0.1

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Mit Debugger gehts, ohne nicht...
« Antwort #15 am: 24.09.03 - 10:24:50 »
ich könnte mir eher vorstellen, daß das am schließen des uidoc.close liegt und wieder am Neuanlegen per uidoc compose. Mach doch mal folgendes ... deklarier ein zweites uidoc2 und generier es dann statt

Set uidoc = ws.ComposeDocument("","","Teilprojekt")
         Set doc = uidoc.Document
         Call uidoc.Fieldsettext("Projektname", TeilKat1)
         
         temp = ws.dialogbox("Teilprojekt

so

Set uidoc2 = ws.ComposeDocument("","","Teilprojekt")
         Set doc = uidoc2.Document
         Call uidoc2.Fieldsettext("Projektname", TeilKat1)
         
         temp = ws.dialogbox("Teilprojekt...
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #16 am: 24.09.03 - 10:33:39 »
@Wirsing
nee, geht ooch nich mit anderen Variablen...

@RobGreen
nö, das will auch nicht funktionieren.

Da kann man an Notes doch echt verzweifeln...

+++To be human is more important than to be important!+++

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Mit Debugger gehts, ohne nicht...
« Antwort #17 am: 24.09.03 - 11:38:08 »
Also zuerst mal zur Verschwörungstheorie: Das hat mit C ganz bestimmt nix zu tun, wenn das so wäre, gäbs ne RBOD.

Dieses Phänomen ergibt sich, wenn eine Object-Var im Code dereferenziert wird und man später auf dieses Object wieder zugreifen will. Normalerweise sieht man das auch im Debugger. Es gibt aber Fälle, da hält der Debugger selber das betreffende Objekt geöffnet, um die Variablen anzeigen zu können. Dadurch wird die Dereferenzierung im Code unwirksam und der Zugriff auf die Variable funktioniert, solange der Debugger offen ist. Typisch für solches Verhalten sind DB-Referenzen. Ês gilt jetzt für Dich, rauszufinden, welche Variable den Fehler auslöst und dann, wo die betreffende Variable dereferenziert wird (mit close oder delete oder manchmal auch implizit).

Mit ein paar Print-Statements solltest Du doch einkreisen können, welche Code-Zeile den Fehler produziert und dann bald einmal feststellen können, welche Variable nicht mehr gesetzt ist. Verteile mal ein paar Print "eindeutige Marke" in den Code und grenze ein, wo der Fehler überhaupt generiert wird.
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

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Mit Debugger gehts, ohne nicht...
« Antwort #18 am: 24.09.03 - 11:59:49 »
@Semaphoros  -> *Schulterklopf*
Du hast voll Recht und ich werde Dir auf meinem Schreibtisch einen kleinen Altar bauen!!!

Ich habe ein UIDoc in einer Funktion geschlossen und danach außerhalb der Funktion noch mal schließen wollen. Allerdings finde ich es schon komisch, dass da keine Fehlermeldung alias "Variant does not contain an Objekt" oder "Objekt variable not set" oder so auftaucht.
Sollte so was nicht eigentlich kommen??

Aber da das Problem jetzt gelöst ist, will ich mal zufrieden vor mich hin grinsen! ;D

Vielen Dank allen fleißigen Helferlein!!!!
Thomas
« Letzte Änderung: 24.09.03 - 13:39:17 von Thomator »
+++To be human is more important than to be important!+++

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Mit Debugger gehts, ohne nicht...
« Antwort #19 am: 24.09.03 - 12:06:31 »
Stimmt, normalerweise kommt die auch, muss mit der Dialogbox zu tun haben, dass die nicht kommt, die haben sonst noch so ein paar Macken wie zum Beispiel Events, die nicht zünden, wenn man eine Diabox innerhalb einer Diabox aufruft .... tja ....
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz