Autor Thema: ReOpen wegen rtf-Feld  (Gelesen 7457 mal)

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
ReOpen wegen rtf-Feld
« am: 25.09.07 - 15:34:50 »
Hallo,

ich steh grad irgendwie auf dem Schlauch. Ich will ein rtf-Feld überprüfen, ob die Dateianhänge auch nicht zu lang sind, da die DB sonst zu groß wird.

Ich habe im Querysafe eine Funktion geschrieben. Nun muss aber bei einem neu erstellten Dokument dieses erst abgespeichert werden, sonst bekomme ich in der Überprüfung einen Fehler. Ich habe inzwischen auch von ATA das reopen gefunden. Leider stehe ich grad aufm Schlauch wie ich es so einbinde, dass er mir das auch macht, wenn das Dokument neu ist. Also hier die Frage: Wie funzt das?   ???

Hier mein Querysafe:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim rt As NotesRichTextItem
   Dim item As NotesItem
   Dim idx As Integer
   
   
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   Set rt = doc.GetFirstItem("bild")
   
   
   
   If Not doc.hasembedded Then
      Call source.FieldSetText("ok", "ok")
   Else
      
      idx = 0
      Forall o In rt.EmbeddedObjects
         Redim Preserve strdateiinfo(idx)
         strdateiinfo(idx) = Trim$(Str(o.filesize))
         If o.filesize > 515000 Then
            Msgbox ("Wie in der Schulung gelernt, müssen die Bilder verkleinert werden!")
            continue = False
            Exit Sub
         End If
         idx = idx + 1
      End Forall
      
      doc.fsize = strdateiinfo
      Call source.FieldSetText("ok", "ok")
      
   End If
   
   
   If source.FieldGetText("ok") = "" Then
      Call source.FieldSetText("ok","")
      continue = False
   Else
      Call source.FieldSetText("ok","")
   End If
End Sub

Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ReOpen wegen rtf-Feld
« Antwort #1 am: 25.09.07 - 15:45:27 »
Warum machst Du die Prüfung nicht im QueryClose? Speichern musst Du ja so oder so ...

Bernhard

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #2 am: 25.09.07 - 15:47:56 »
ganz einfach, da sind bereits hunderte Dokumente drin, deren Anhänge schon viel zu groß sind.

Und damit keine Meuterei nur beim Anzeigen dieser Dokumente ausbricht habe ich diesen Weg gewählt.

Philipp
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ReOpen wegen rtf-Feld
« Antwort #3 am: 25.09.07 - 15:55:44 »
Du brauchst doch nur den EditMode abfragen oder das LastModified ... Es gibt jedenfalls keinen Grund, warum man den Lesemodus nicht von der Prüfung ausnehmen kann.

Bernhard

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #4 am: 25.09.07 - 16:00:56 »
Ok, ist richtig. an sowas denke ich einfach noch nicht. Bin halt noch kein Profi.   ;)
Das werde ich mal probieren.

Allerdings ist das noch nicht die Antwort auf meine Frage. Ich bin ja froh, dass ich ihn überhaupt schon dazu bewegen konnte das ganze erfolgreich zu prüfen!!!

Phil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ReOpen wegen rtf-Feld
« Antwort #5 am: 25.09.07 - 16:06:13 »
Die Frage war ja falsch gestellt  ;) Ein ReOpen nützt Dir in diesem Zusammenhang nichts, da Du im Frontend herumturnst. Das ReOpen wird eingesetzt, wenn im Backend an einem RTI herumgeschraubt wird, damit dieses dann auch im Frontend sichtbar wird.

Bernhard

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #6 am: 25.09.07 - 16:17:11 »
Sensationell, ich will eine Schulung!!!

Und was kann ich da jetzt am besten machen? Hatte das auch mal mit refresh und reload probiert, allerdings ohne Ergebnis.

Phil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ReOpen wegen rtf-Feld
« Antwort #7 am: 25.09.07 - 16:28:29 »
Im QueryClose, und nur dann, wenn das Frontend-Dokument im EditMode ist und überhaupt geändert wurde (optional):
Code
	'We have to check only for documents in edit mode !
	If (uidocInventory.EditMode = False) Or (uidocInventory.ModifiedSinceSaved = False) Then
		Exit Sub
	End If

HTH,
Bernhard

PS: Refresh und Reload bringen in diesem Zusammenhang nichts. Dann wohl eher eine Schulung  ;)

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #8 am: 04.10.07 - 15:47:46 »
Hallöle,

wie bereits eben angedroht gehts jetzt hier weiter!

Ich habe mich so gut es ging mit dem ganzen auseinandergesetzt, wie es eben nur ging. Nur sind hier die Bücher und die Hilfe wenig ergiebig. Die Standardproblematik hier im Forum ist auch irgendwie immer anders als ich es brauche.

Noch einmal kurz zur Anforderung:

Der User legt eine neues Dokument an, in dem sich aller Wahrscheinlichkeit ein oder mehrere Dateinanhänge befinden; i.d.R. Bilder. Ich möchte nun direkt abfragen, wie groß der jeweilige Dateianhang ist und ggf den User daruaf hinweisen, dass er zu groß ist.  Wenn das Dokument bereits existiert funzt das schon anstandslos. Aber genau hier verzeifel ich noch an der Eigenheit der RTF-Felder. (Erst speichern dann sichtbar!)

Wie bereits oben beschrieben habe ich mir hierfür die Funktion reopen von ata eingebaut, habe jedoch im Debugger festgestellt, das mir das uidoc gar nicht gefüllt wird!!!

Wie komme ich also beim abspeichern eines neuen Dokuments an die ANhänge dran um sie zu prüfen???

Gruß
Phil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ReOpen wegen rtf-Feld
« Antwort #9 am: 04.10.07 - 15:54:13 »
Wie sieht denn dein Code nun endgültig aus?

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: ReOpen wegen rtf-Feld
« Antwort #10 am: 04.10.07 - 15:56:19 »
Hi,

malwieder das mit den Anhängen und "nicht speichern"

mein Vorschlag wäre auch hier:
Code
@AttachmentLengths
Liefert Dir die grösse der Anhänge bereits nach dem Refresh ohne Speichern!,
z.B. in der Eingabe-Validierung des Feldes, im QuerySave oder sonst wo als "Formel" verwendbar.

-> in Desinger Hilfe steht mehr dazu.

Gruss, Pete(r)

pete(r)

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #11 am: 04.10.07 - 16:09:23 »
@Axel:

Welcher Code den nu genau? Der der schon funtioniert, außer bei neuen Doks, oder der, den ich mir hier bis jetzt zusammengestopselt habe?

@pete_bla:

Ich schau es mir mal an

Gruß
Phil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ReOpen wegen rtf-Feld
« Antwort #12 am: 04.10.07 - 16:12:16 »
Den Code mit der ReOpen-Funktion, bei dem uidoc nicht gefüllt wird.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #13 am: 04.10.07 - 16:21:25 »
Das ist einfach. Den habe ich nämlich nur heir aus dem Forum "geklaut"!!! (Und ich stehe dazu  ;) )

Function ReOpen(doc As NotesDocument) As Integer
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim dbThis As NotesDatabase
   Dim unid As String
   
   ReOpen = 0
   Set dbThis = doc.ParentDatabase
   Call doc.Save(True , True)
   unid = doc.UniversalID
   doc.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
   Set uidoc = ws.CurrentDocument
   Call uidoc.Close
   Set doc = dbThis.GetDocumentByUNID(unid)
   Set uidoc = ws.EditDocument(True , doc)
   Set doc = uidoc.Document
   If doc.HasItem("SaveOptions") Then 
            ' # ... das Feld SaveOptions wieder entfernen...
      doc.RemoveItem("SaveOptions")
      Call doc.Save( True , True )
   End If
   ReOpen = 1
   Print "Das Dokument wurde erneut geöffnet"
End Function

Wie gesagt, der ist von hier bzw ata. Uidoc bleibt leer ???

Gruß
Phil


Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #14 am: 04.10.07 - 16:48:05 »
So. Jetzt füllt er mir auch wieder mein uidoc. Zum Glück.

Jetzt wäre nur noch schön, wenn ich an die Bilder irgendwie rankommen würde.

*Ich bin der König des Konjunktivs!!!*

PHil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: ReOpen wegen rtf-Feld
« Antwort #15 am: 04.10.07 - 17:01:06 »
Hi,

@AttachmentLengths: schau mal BITTE hier, da hab ichs schonmal beschreiben:

http://atnotes.de/index.php?topic=37822.msg238256#msg238256

ganz einfach:
Feld - Berechnet einbauen
-> Refresh (F9)
Grösse ist da.

ohne Purzelbaum und hinundher....  ;)

Gruss, Pete(r)
pete(r)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ReOpen wegen rtf-Feld
« Antwort #16 am: 04.10.07 - 17:05:01 »
Ich verstehe immer noch nicht, warum in diesem Zusammenhang dieser Aufstand mit dem ReOpen gemacht wird. Das braucht man doch überhaupt nicht (hatte ich bereits geschrieben) ...

Bernhard

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: ReOpen wegen rtf-Feld
« Antwort #17 am: 04.10.07 - 17:23:25 »
Ich auch nicht.
pete(r)

Offline LUSBernd

  • Aktives Mitglied
  • ***
  • Beiträge: 117
Re: ReOpen wegen rtf-Feld
« Antwort #18 am: 05.10.07 - 10:18:08 »
Guten Morgen,

Ich habe jetzt die Lösung mit der Formel ausprobiert. Sie funktioniert wirklich ganz einfach. Vieldn Dank schon einmal dafür an dieser Stelle!!!

Ich habe dazu allerdings noch eine frage, wenn mehrere Werte in dem Feld stehen:

Im Feld steht ja dann "Zahl; Zahl"; mit Trim steht dann "Zahl, Zahl".

Aber wie bekomme ich die Zahlen einzeln zu fassen um mit ihnen zu arbeiten?

Gruß
Phil
Früher dachte man: "Ich denke, also bin ich", heute denkt man: "Och, geht auch so!!!"

Notes: Irgendwas ist immer!!!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ReOpen wegen rtf-Feld
« Antwort #19 am: 05.10.07 - 10:22:12 »
Was willst du mit den Zahlen machen?

Formel oder Script?


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz