Autor Thema: querysave Datumfeld  (Gelesen 3660 mal)

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
querysave Datumfeld
« am: 02.08.06 - 09:18:20 »
Hallo!

Hab im Querysave eine "Pflichtfeld-Abfrage" eingefügt, sprich: es müssen bestimmte Felder gefüllt sein, damit das Dokument gespeichert werden kann. Klappt eigentlich auch, sofern es sich um Textfelder handelt. Ist ein Pflichtfeld nicht gefüllt, springt Notes zurück zu diesem Feld, speichern ist nicht möglich. Beim Datumfeld springt Notes nicht zum Dokument (Feld) zurück, sondern schmeißt das neue Dokument weg.

Sicher sitze ich auf der Leitung - aber ihr könnt mir helfen!?  Vielen Dank!

Der Code (ok, ich gebs zu: vom Forum hier "übernommen"  ;) und modifiziert):

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
   If (source.document.VerArt(0) = "") Then
      Msgbox ("Bitte erfassen Sie die Vertragsart!")
      source.gotofield("VerArt")
      continue = False
      Exit Sub
   End If
   
   If (source.document.VerBeginn(0) = "") Then
      Msgbox ("Bitte erfassen Sie den Vertragsbeginn!")
      source.gotofield("VerBeginn")      
      continue = False
      Exit Sub
   End If
   
End Sub
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

klaussal

  • Gast
Re: querysave Datumfeld
« Antwort #1 am: 02.08.06 - 09:28:25 »
Zitat
If (source.document.VerBeginn(0) = "") Then

... würde ich so lösen:
If Trim(source.document.VerBeginn(0)) = "" then....


... sieh dir mal die Stellung der runden Klammern in der IF-Abfrage an...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: querysave Datumfeld
« Antwort #2 am: 02.08.06 - 09:29:47 »
Ist VerBeginn denn ein Textfeld? Was sagt der Debugger? Ein ErrorHandling wäre wohl auch gesprächiger ...

Wenn VerBeginn ein Datumsfeld ist:
If Not (IsDate (Source.Document.VerBeginn (0))) Then ...

Bernhard

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #3 am: 02.08.06 - 09:58:57 »
Hallo und vielen Dank für die prompte Antwort!

Also: es wird noch der Hinweis "Bitte erfassen Sie den Vertragsbeginn" ausgegeben. Heißt doch, die IF-Abfrage hat Notes gemacht!?

EDIT durch Moderator: Bild auf Bitte des Autors entfernt.
« Letzte Änderung: 02.08.06 - 17:51:28 von koehlerbv »
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: querysave Datumfeld
« Antwort #4 am: 02.08.06 - 14:40:12 »
Was passiert denn, wenn du vor dem "Exit Sub" in besagter If noch eine MsgBox ausgibst?

Das ganze hat nix mit Dialogboxen zu tun, oder? Hier gibts so einen ähnlichen Bug...

Mit
Zitat
schmeißt das neue Dokument weg
meinst du, das Doc wird normal gespeichert und geschlossen, oder?

Grüsse
Moritz

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #5 am: 09.08.06 - 08:21:58 »
Hallo!

Hab eine Msgbox vor ExitSub eingegeben, und diese wird auch ausgegeben. Es kommt somit die erste Msgbox, dann die zweite Msgbox, dann schließt sich das Dokument ohne es zu speichern - einfach weg, das erfaßte, im nirwana, niente, nothing  :-:  Vermutlich wird die Zeile gotofield.. nicht ausgeführt.

Vielen Dank für weitere Tipps! :-))
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: querysave Datumfeld
« Antwort #6 am: 09.08.06 - 08:33:05 »
Also ich hab das eben getestet und bei mir funktioniert dein Code.

Die Frage stellt sich mir, warum wird das Doc geschlossen wenn du nur speicherst?

Wie wird das QueryClose aufgerufen? Durch "Ctrl + S"?

Bitte beschreibe mal ein bisschen das Umfeld.

Grüsse
Moritz

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #7 am: 09.08.06 - 17:42:04 »
Hm, ich möchte ja speichern, aber er tus ja gar nicht. Das QueryClose wird durch Klick auf eine Schaltfläche "speichern" ausgelöst, hinter der ein "FileSave" steckt:@Command([FileSave]) und
@Command([FileCloseWindow]). Strg+S bewirkt dasselbe.

Btw: der Code für das Datumsfeld lautet dank der obigen Antworten jetzt anders:
               If Trim(source.document.VerBeginn(0)) = "" Then
      Msgbox ("Bitte erfassen Sie den Vertragsbeginn!")
      source.gotofield("VerBeginn")      
      continue = False
      Msgbox ("Testmeldung - verschwindet wieder!")
      Exit Sub
   End If

Das Umfeld beschreiben? Was meinst damit?
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #8 am: 09.08.06 - 17:48:16 »
Oh, sorry, Strg+S bewirkt nicht dasselbe. Also:

wenn ich über meine Schaltfläche "Speichern" (command(FileSave) + CloseWindow) rausgehe, treten oben beschriebene Probleme auf, wenn ich über Strg+S raus möchte, funktioniert die Formel, der Cursor geht zum Datumsfeld.

Ein erster Erfolg, juhu! Jetzt müßt ich nur noch wissen, wo ich welche "FileSave"-Kommandos ins script einbauen muß, dann hau' ich die @-Formel aus der Schaltfläche raus. Vermutlich wärs das.

Hier nochmal das ganze Script:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
   If (source.document.VerArt(0) = "") Then
      Msgbox ("Bitte erfassen Sie die Vertragsart!")
      source.gotofield("VerArt")
      continue = False
      Exit Sub
   End If
   
   If (source.document.VerTitel(0) = "") Then
      Msgbox ("Bitte erfassen Sie den Vertragstitel!")
      source.gotofield("VerTitel")
      continue = False
      Exit Sub
   End If
   
   If (source.document.VerPartner(0) = "") Then
      Msgbox ("Bitte erfassen Sie den Vertragspartner!")
      source.gotofield("VerPartner")
      continue = False
      Exit Sub
   End If
   
   If (source.document.Verantwortlich(0) = "") Then
      Msgbox ("Bitte erfassen Sie die verantwortliche Abteilung!")
      source.gotofield("Verantwortlich")
      continue = False
      Exit Sub
   End If
   
   If (source.document.Verwahrort(0) = "") Then
      Msgbox ("Bitte erfassen Sie den Verwahrort!")
      source.gotofield("Verwahrort")
      continue = False
      Exit Sub
   End If
   
   If Trim(source.document.VerBeginn(0)) = "" Then
      Msgbox ("Bitte erfassen Sie den Vertragsbeginn!")
      source.gotofield("VerBeginn")      
      continue = False
      Exit Sub
   End If
   
End Sub

Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: querysave Datumfeld
« Antwort #9 am: 09.08.06 - 17:53:22 »
Und was steht in Deiner Schaltfläche konkret? Verwendest Du @PostedCommand für FileClose Window?

Bernhard

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #10 am: 11.08.06 - 08:06:04 »
Konkret:

@Command([FileSave]);
@Command([FileCloseWindow])
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #11 am: 14.08.06 - 10:36:44 »
Hallo, Freunde des Forums!

Es liegt wohl an der Kombination von FileSave mit FileCloseWindow! Habe letzteres weggelassen und auf der Schaltfläche "Speichern" auch wirklich nur speichern, dann klappen die Abfragen und die goto's.

Vielen Dank an alle fürs mithelfen! Einfach genial dieses Forum, da findet man immer eine Lösung (wenns auch manchmal Zeit zum durchforsten kostet, aber es macht tierisch Spaß sich durchzuwühlen)!  :) :) :)
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: querysave Datumfeld
« Antwort #12 am: 14.08.06 - 11:05:10 »
Und was passiert bei der Kombination
@Command ([FileSave]);
@PostedCommand ([FileCloseWindow]) ?

Bernhard

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #13 am: 16.08.06 - 13:53:49 »
...gleiches Fänomän wie ursprünglich beschrieben...

Nachdem ich nun die Schaltflächen aufgedröselt habe in SPEICHERN und SCHLIESSEN separat, in SPEICHERN command>FileSave, in SCHLIESSEN postedcommand >FileCloseWindow und es so funktioniert, würde ich diesen Thread nicht mehr weiter vertiefen, es gibt sicher wichtigeres.

Vielen Dank nochmal!

 :)
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Glombi

  • Gast
Re: querysave Datumfeld
« Antwort #14 am: 16.08.06 - 14:13:06 »
@Command([FileSave]);
@Command([FileCloseWindow])

macht man nicht! Sondern so:

@If(
 @Command([FileSave]);
   @Command([FileCloseWindow]);
 ""
)


So kann man dann auch auf ein Continue = false im Querysave reagieren.


Andreas

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #15 am: 17.08.06 - 11:39:37 »
Wow - einfach genial - und funktioniert!


Interessant, daß eine IF-Bedingung auch ohne "Bedingung" geschrieben werden kann, also da wär ich nieeeee drauf gekommen.
 ::)
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: querysave Datumfeld
« Antwort #16 am: 17.08.06 - 11:47:22 »
So ganz Stimmt das ja nicht was Du da jetzt sagst...

Syntax
@If( Bedingung1; Aktion1 ; Bedingung2; Aktion2 ; ... ; Bedingung99; Aktion99 ; Sonst-Aktion )

Die "" sind einfach nur eine leere Anweisung.

In Nicht-Formel könnte man schreiben

--> der Code ist nur exemplarisch zu sehen <--

If FileSave then
  FileCloseWindow
else
  ' hier passiert nu nix
EndIf

Ist unschön, deswegen mache ich das nicht... Aber Kollgen würden sowas machen. Ist Philosophie.  :)

André
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: querysave Datumfeld
« Antwort #17 am: 17.08.06 - 12:02:25 »
If FileSave then
  FileCloseWindow
else
  ' hier passiert nu nix
EndIf

Mein Verständnis einer "Bedingung" in IF-Schleifen war, daß ein Operator (istgleich, ungleich, oder, usw.) dabei sein muß. Dass nur ein Kommando allein schon eine "Bedingung" ist, war mir neu.
Man lernt halt nie aus!
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: querysave Datumfeld
« Antwort #18 am: 17.08.06 - 12:06:02 »
Du kannst es auch ausschreiben: @If (@Command [Filesave]) = @True; ...)

Par definitionem geht sowohl Formelsprache als auch LotusScript davon aus, dass mit einem fehlenden @True / True eben dieses gemeint ist.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz