Autor Thema: Dokument suchen und Daten ändern  (Gelesen 67589 mal)

klaussal

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #20 am: 05.06.08 - 08:44:28 »
"Option Declare" nicht vergessen und den Debugger benutzen.

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #21 am: 05.06.08 - 08:57:59 »
Hi Leute,
kann mich nur nochmalig bedanken für Eure Hilfe.

Hab Gestern noch den Debugger laufen lassen.
Hier bricht er mir ab.
Call doc.ReplaceItemValue("Status", "erledigt")

Hier nochmal das Script. Könnt ihr mich bitte berichtigen wenn ich da was falsch verstehe:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument
   Dim fileNum As Integer, cells As Integer, k As Long
   Dim fileName As String
   Dim InputStr As String, delimiter As String
   Dim FieldArray As Variant
   Dim view As NotesView
   
   Set db = session.currentdatabase
   Set view = db.GetView ("Alle Dokumente")   <-die View in der gesucht werden soll
   
   fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "V:\Archiv.csv"   <- Pfad u. Name der zu durchsuchenden Datei   
   'Trennzeichen
   delimiter = ";"   <- das Trennzeichen innerhalb der csv
   
   Open fileName$ For Input As fileNum%
   Line Input #1,  InputStr$   
   Do While Not Eof(fileNum%)
    'Zeile für Zeile einlesen
      Line Input #1,  InputStr$
      FieldArray = Split(InputStr$,delimiter, -1, 0)
      If Not Isempty(FieldArray) Then
         Set doc = view.GetDocumentByKey(FieldArray(0))
         Call doc.ReplaceItemValue(Status, "erledigt")  <- das zu ändernde Feld mit dem Wert
         Call doc.Save(True,True)
      End If
   Loop
   Close fileNum%
End Sub


Muss ich eigentlich nicht den Maskennamen irgendwo unterbringen, oder passiert das über die View?

Gruß Jason

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokument suchen und Daten ändern
« Antwort #22 am: 05.06.08 - 09:06:29 »
Du hast Dir die Frage selber schon beantwortet.

Im Quelltext steht der Feldname ohne Anführungszeichen...
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 MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Dokument suchen und Daten ändern
« Antwort #23 am: 05.06.08 - 09:22:52 »
Und mit Option Declare, was man grundsätzlich einschalten sollte, wäre hier schon im Designer ein Fehler hochgekommen...  ;D

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #24 am: 05.06.08 - 14:02:42 »
Declare hab ich in der Tat vergessen.
Auch die ""  >:D Mann Mann.
Aber es funzt immer noch nicht. Stoppt immer noch bei Call doc.ReplaceItemValue("Status", "erledigt").

Wie sieht es aus?
*Muss ich nicht irgendwo übergeben was für einen Wert er überhaupt in den Dokumenten suchen muss?
*Den Maskennamen angeben?

Gruß
« Letzte Änderung: 05.06.08 - 14:05:10 von lotus blue »
Gruß Jason

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #25 am: 05.06.08 - 14:08:05 »
Zitat
Muss ich nicht irgendwo übergeben was für einen Wert er überhaupt in den Dokumenten suchen muss?

Tust Du doch mit dieser Zeile :

Set doc = view.GetDocumentByKey(FieldArray(0))


Voraussetzung dafür ist natürlich :

a) Die verwendete View ist nach dem Suchkriterium sortiert
b) Es ist wirklich der erste Wert, nach dem gesucht werden soll (FieldArray(0) = 1. Wert im Array)


Zitat
Den Maskennamen angeben?

Wozu ? Beim Neuanlegen von Dokumenten sollte man das Item "Form" setzen, damit beim Öffnen später die korrekte Maske gezogen wird.
Bei vorhandenen Dokumenten sollte man eigentlich davon ausgehen, daß die Form gesetzt ist.

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #26 am: 05.06.08 - 14:11:55 »
Tust Du doch mit dieser Zeile :
Set doc = view.GetDocumentByKey(FieldArray(0))

Voraussetzung dafür ist natürlich :
a) Die verwendete View ist nach dem Suchkriterium sortiert
b) Es ist wirklich der erste Wert, nach dem gesucht werden soll (FieldArray(0) = 1. Wert im Array)

Wozu ? Beim Neuanlegen von Dokumenten sollte man das Item "Form" setzen, damit beim Öffnen später die korrekte Maske gezogen wird.
Bei vorhandenen Dokumenten sollte man eigentlich davon ausgehen, daß die Form gesetzt ist.
Paßt dann eigentlich alles. Aber wo hängt es dann noch.
Ist sicher nur ein kleines Details aber finde es nicht.  :-:
Gruß Jason

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #27 am: 05.06.08 - 14:14:16 »
Was sagt denn der Debugger ? Wird überhaupt ein Dokument gefunden ?

Du solltest vor dem ReplaceItemValue auf jeden Fall eine Prüfung einbauen, ob überhaupt ein Dokument gefunden wurde. Wenn z.B. in der Importdatei eine Titelzeile enthalten ist, möchte ich mal darauf wetten, daß für den Wert kein Dokument gefunden wird.
« Letzte Änderung: 05.06.08 - 14:16:06 von Driri »

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #28 am: 05.06.08 - 14:18:15 »
Was sagt denn der Debugger ? Wird überhaupt ein Dokument gefunden ?

Ja die Dok´s findet er, aber bei Call doc.replaceItem bricht er mit nem "Objekt variable not set" ab.
Gruß Jason

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #29 am: 05.06.08 - 14:19:05 »
Dann hat er kein Dokument gefunden.

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokument suchen und Daten ändern
« Antwort #30 am: 05.06.08 - 14:23:33 »
Mach auf jeden Fall noch ein

if not doc is nothing

drumherum. Kannst Dir dann ja mittels Print im Else-Zweig die nicht gefundenen Nummern ausgeben lassen.
Oder in einer Messagebox am Ende oder oder oder

Den Rest hat Ingo schon zum besten gegeben
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 Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Dokument suchen und Daten ändern
« Antwort #31 am: 05.06.08 - 14:39:06 »
Ich hatte mal ein gleiches Problem.
Hatte mir dann den Wert (FieldArray(0)) mal im Script in eine Temp schreiben lassen.
Evt. ist noch ein führendes, nachfolgendes Leerzeichen da.

Boris

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #32 am: 05.06.08 - 14:53:25 »
Alos im Debugger bei den Variablen sieht es so aus, dass er
*Filename
*Inputstr
*Delimeter
*Fieldarray 0,1,2

richtig füllt.

Gruß Jason

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: Dokument suchen und Daten ändern
« Antwort #33 am: 05.06.08 - 14:59:36 »
Alos im Debugger bei den Variablen sieht es so aus, dass er
*Filename
*Inputstr
*Delimeter
*Fieldarray 0,1,2

richtig füllt.

Das war eigentlich klar nach der Antwort:

Ja die Dok´s findet er, aber bei Call doc.replaceItem bricht er mit nem "Objekt variable not set" ab.

... und weiter?    ???

Was ist mit doc?


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

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #34 am: 05.06.08 - 15:04:59 »
Es kann doch nur daran liegen, dass er nicht weiß wohin er was schreiben soll oder?
Call doc.ReplaceItemValue("Status", "erledigt")

Er soll ja in dem bereits in der DB existierenden Dok beim Feld "Status" erledigt reinsetzen. Das heißt er findet das Feld nicht oder so ähnlich.
Lieg ich da richtig. Will ja keine Lösung und weiß nicht wie das Teil arbeitet.

Gruß Jason

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #35 am: 05.06.08 - 15:05:33 »
Nein, falsch. ReplaceItemValue legt das Item einfach an, wenn es denn nicht existiert. Ich denke immer noch, daß doc nicht sauber ist.


Prüf doch bitte einfach ab, ob das Dokument existiert. Andre hat ja schon geschrieben, wie es geht. Du kannst dann ja z.B. einfach im Else-Zweig testweise per Print etwas ausgeben lassen. Wenn Du dann in der Statuszeile das Print-Ergebnis bekommst, wurde kein Dokument gefunden.

Boris hat Dir auch noch nen Tipp gegeben. Prüf mal nach, ob da wirklich der korrekte Wert enthalten ist. Zur Not schreib Dir den Wert aus FieldArray(0) in eine temporäte Variable und laß Dir diese auch einfach ausgeben. Idealerweise mit nem Sonderzeichen davor und dahinter, dann sieht man auch direkt, ob da ggf. Leerzeichen oder so drin sind.

Also so was hier :

Dim tmp As String
...
tmp = CStr(FieldArray(0))
Print "|" & tmp & "|"
...


Edit :

Ist das View-Objekt eigentlich korrekt ? Also, siehst Du im Debugger, daß das View-Objekt auch gefüllt ist oder bleibt es leer ?
« Letzte Änderung: 05.06.08 - 15:09:42 von Driri »

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokument suchen und Daten ändern
« Antwort #36 am: 05.06.08 - 15:08:42 »
Aus der Hilfe:

ReplaceItemValue

Replaces all items of the specified name with one new item, which is assigned the specified value. If the document does not contain an item with the specified name, the method creates a new item and adds it to the document.

Das ist doch eindeutig, oder?

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 Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dokument suchen und Daten ändern
« Antwort #37 am: 05.06.08 - 15:09:11 »
Das heißt er findet das Feld nicht oder so ähnlich.

Er findet das Dokument nicht.

Daher nochmal meine Frage. Was sagt der Debugger zur Variable doc ???

Du musst eine vernüftige Fehlerbehandlung einbauen. Sonst fällst du immer wieder auf die Nase. Entsprechende Infos, wie man so was macht, wurden dir hier bereits mehrfach gegeben.


Axel
« Letzte Änderung: 05.06.08 - 15:11:12 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #38 am: 05.06.08 - 15:24:21 »
Sodala, wieder einen Schritt weiter:
Hab den Code umgebaut:
.................
'Zeile für Zeile einlesen
      Line Input #1,  InputStr$
      FieldArray = Split(InputStr$,delimiter, -1, 0)
      If Not Isempty(FieldArray) Then
         Set doc = view.GetDocumentByKey(FieldArray(0))
         If Not doc Is Nothing Then
            Call doc.ReplaceItemValue("Status", "erledigt")
            Call doc.Save(True,True)
         Else
            Messagebox"Test Nachrichtenbox",0,"Test"
         End If
      End If


Tja und es erscheint in der Tat die Box mit Nachrichtenbox.

Grazie für eure Tips.  :love: Jetzt hab ich das auch schon mal
Gruß Jason

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #39 am: 05.06.08 - 15:27:45 »
Daher nochmal meine Frage. Was sagt der Debugger zur Variable doc ???
Axel

Wie sollte es anders sein, die Zeile bleibt leer :(
Gruß Jason

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz