Autor Thema: Mehrere Werte in ein Feld schreiben  (Gelesen 2442 mal)

Offline mariab

  • Aktives Mitglied
  • ***
  • Beiträge: 123
Mehrere Werte in ein Feld schreiben
« am: 14.08.07 - 11:03:20 »
Hallo,

habe folgenden Code der die Dateigrösse ermittelt. Nun möchte ich die Grösse nicht mittels Messagebox ausgeben sondern in ein Feld (D_Info) schreiben.

Code
Sub Click(Source As Button)
	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
	
	Set uidoc = ws.CurrentDocument
	Set doc = uidoc.Document
	Set rt = doc.GetFirstItem( "D_Doku" )
	
	If rt Is Nothing Then
		Msgbox "Kein Dateianhang vorhanden"
		Exit Sub
	End If
	
	Forall o In rt.EmbeddedObjects
		werte = o.Filesize
		doc.D_Info = werte
	End Forall
	
End Sub

Wenn ich nun zwei Dateianhänge habe so erscheint die Größe des ersten Anhangs, dann wird dieser vom zweiten überschrieben. Wie kann ich beide Werte anzeigen?

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: Mehrere Werte in ein Feld schreiben
« Antwort #1 am: 14.08.07 - 11:11:49 »
Du musst die Werte in ein Array oder eine Liste schreiben.


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

Offline mariab

  • Aktives Mitglied
  • ***
  • Beiträge: 123
Re: Mehrere Werte in ein Feld schreiben
« Antwort #2 am: 14.08.07 - 11:42:55 »
Ok, aber wie. Hast du hier ein paar Lösungshilfen. Bin gerade dabei mich etwas mehr mit LS auseinanderzusetzen

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: Mehrere Werte in ein Feld schreiben
« Antwort #3 am: 14.08.07 - 11:55:00 »
Mal so ins Balue gedacht und ungetestet.

Sub Click(Source As Button)
   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 sizes() As long
                Dim idx As Integer
   
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   Set rt = doc.GetFirstItem( "D_Doku" )
   
   If rt Is Nothing Then
      Msgbox "Kein Dateianhang vorhanden"
      Exit Sub
   End If
   
                idx = 0
   Forall o In rt.EmbeddedObjects
                                Redim Preserve sizes(idx) = o.Filesize
                                idx = idx + 1
   End Forall
   
            doc.D_Info = sizes

End Sub

Das Redim Preserve ist zwar ein Performance-Killer, aber in Anbetracht das wahrscheinlich nie hunderte von Anhängen vorhanden sind, ist das hier nicht so kritisch.

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

Offline mariab

  • Aktives Mitglied
  • ***
  • Beiträge: 123
Re: Mehrere Werte in ein Feld schreiben
« Antwort #4 am: 14.08.07 - 12:14:39 »
Danke, erhalte aber im Designer einen Fehler bei der Zeile:
Code
Redim Preserve sizes(idx) = o.Filesize

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: Mehrere Werte in ein Feld schreiben
« Antwort #5 am: 14.08.07 - 12:20:30 »
Sorry.   :-\  So kann das auch nicht gehen

...
Forall o In rt.EmbeddedObjects
                                Redim Preserve sizes(idx)
                                sizes(idx) = o.Filesize
                                idx = idx + 1
End Forall
...

So muss es aussehen.


Axel

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

Offline mariab

  • Aktives Mitglied
  • ***
  • Beiträge: 123
Re: Mehrere Werte in ein Feld schreiben
« Antwort #6 am: 14.08.07 - 12:28:49 »
OK, danke jetzt klappts.

Eine Frage noch zum Array bzw. zu ForAll.
Könnte man anstelle der Forall Anweisung auch eine For Schleife einbauen um auf das Filesize zu gelangen? Habe es versucht aber irgendwie Blick ich noch nicht ganz durch

klaussal

  • Gast
Re: Mehrere Werte in ein Feld schreiben
« Antwort #7 am: 14.08.07 - 12:30:54 »
Definiere bitte "irgendwie"...

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: Mehrere Werte in ein Feld schreiben
« Antwort #8 am: 14.08.07 - 12:31:17 »
Nein. Man hat keine Möglichkeit die Anzahl der Objekte auszulesen. Somit hast du keinen Maximalwert für die For - Schleife.

Die ForAll-Schleife ist hier schon das Mittel der Wahl.

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

Glombi

  • Gast
Re: Mehrere Werte in ein Feld schreiben
« Antwort #9 am: 14.08.07 - 12:47:31 »
Wenn die Anhänge nur in einem Rich Text Feld sind, ginge es auch so:

Dim s As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
dim ret_eval as variant

Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document

ret_eval = Evaluate( |FIELD D_Info := @AttachmentLengths;@True|, doc )


Andtreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz