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

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Dokument suchen und Daten ändern
« am: 04.06.08 - 15:06:53 »
Hallo Leute,
bräuchte bitte mal Eure Hilfe.

Ich hab in der Ansicht "Aufträge" ca. 200 Dokumente mit Auftragsnummer usw.

Am Ende des Tages (bzw. in der Nacht) wird von einer anderen Anwendung im Haus, eine Datei (csv) mit ca. 20 Dokumente erstellt, die alle ebenfalls die gleichen Auftragsnummern enthalten.

Nun soll am nächsten Morgen verglichen werden und das Feld "Status" in meiner DB bei allen Dok´s geändert werden, die in dieser über Nacht erhaltenen csv-Datei enthalten sind.

Jemand einen Tipp wie ich es angehen könnte?



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 #1 am: 04.06.08 - 15:09:59 »
Ich geh mal davon aus, das Du Zugriff auf die Datei hast.
Durchiterieren und gut ist.

Sowas gab es glaub ich schonmal hier im Forum.
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 lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #2 am: 04.06.08 - 15:14:36 »
Ich geh mal davon aus, das Du Zugriff auf die Datei hast.
Durchiterieren und gut ist.

Sowas gab es glaub ich schonmal hier im Forum.

Hab schon gesucht und nix gefunden.

DB 1 -> Ansicht Aufträge-> ca. 4000 Doks mit den Feldern "Name, Auftragsnummer,Erledigt"

csv-Datei mit ca. 20 Zeilen und den Feldwerten "Name und Auftragsnummer".
In dieser CSV steht Herr Huber drinnen.
Nun soll im Hauptdok das Feld "erledigt" auf "1" geändert werden.
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 #3 am: 04.06.08 - 15:22:27 »
Das ist aus der Hilfe:

' Display the contents of c:\config.sys a line at a time.
Dim text As String, fileNum As Integer
fileNum% = FreeFile()
Open "c:\config.sys" For Input As fileNum%
Do While Not EOF(fileNum%)
   Line Input #fileNum%, text$
   Print text$          ' Prints one line of config.sys
Loop
Close fileNum%

Dann musst Du Dir die Sachen besorgen die Du brauchst, damit das Doc suchen und ändern.
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 lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #4 am: 04.06.08 - 15:34:31 »
Das ist ja schon mein Import Agent, der ja auch funzt. Aber beim Suchen da happert es genau.


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
   Set db = session.currentdatabase
   
   fileNum% = Freefile()
   
       ' Dateipfad
   fileName$ = "C:\Ordner 123\123\test.csv"
   
 ' Trennzeichen
   delimiter = ";"
   
   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)
      Call CreateDocument(db, FieldArray)
      
   Loop
   Close fileNum%
   Exit Sub
   
End Sub

Sub CreateDocument(db As notesdatabase, FieldArray As Variant)
   Dim doc As New notesdocument(db)
   
   doc.Form = "Auftrag"
   doc.Name = FieldArray(0)
   doc.Nummer = FieldArray(1)
   doc.erledigt = FieldArray(2)
   
   Call doc.save(1,0)
   
End Sub


Das ist aus der Hilfe:

' Display the contents of c:\config.sys a line at a time.
Dim text As String, fileNum As Integer
fileNum% = FreeFile()
Open "c:\config.sys" For Input As fileNum%
Do While Not EOF(fileNum%)
   Line Input #fileNum%, text$
   Print text$          ' Prints one line of config.sys
Loop
Close fileNum%

Dann musst Du Dir die Sachen besorgen die Du brauchst, damit das Doc suchen und ändern.
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 #5 am: 04.06.08 - 15:37:13 »
Was klappt nicht?
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 )

klaussal

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #6 am: 04.06.08 - 15:41:12 »
Mach dir eine Ansicht nach Auftragsnummer (die sollte wohl eindeutig sein) und dann ein
Getdocumentbykey und den Wert updaten.

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #7 am: 04.06.08 - 15:47:04 »
Mach dir eine Ansicht nach Auftragsnummer (die sollte wohl eindeutig sein) und dann ein
Getdocumentbykey und den Wert updaten.

Ja, wie aber such ich zuerst in der neu übermittelten csv-datei zunächst die Auftragsnummer raus und ändere das Hauptdokument mit der gleichen Auftragsnummer in der DB?
Gruß Jason

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #8 am: 04.06.08 - 15:49:20 »
Das Split liefert Dir doch einen Array zurück und einer der Werte im Array ist die Auftragsnummer. Du mußt also einfach nur innerhalb der While-Schleife jeweils die Auftragsnummer aus dem Array holen und  mit dieser das passende Dokument aus der Datenbank heraussuchen und updaten.

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 #9 am: 04.06.08 - 15:50:38 »
Ganz einfach in dem du Zeile für Zeile die csv-Datei einliest und guckst, ob die eingelesene Zeile die entsprechende Auftragsnummer enthält.


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

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokument suchen und Daten ändern
« Antwort #10 am: 04.06.08 - 15:54:34 »
Ich schreib es jetzt nicht auch noch...  ;)
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 )

klaussal

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #11 am: 04.06.08 - 15:58:32 »
Zitat
Ja, wie aber such ich zuerst in der neu übermittelten csv-datei zunächst die Auftragsnummer raus und ändere das Hauptdokument mit der gleichen Auftragsnummer in der DB?

Andersrum: Du liest die in csv-Datei den 1. Datensatz, schnappst die Auftragsnummer und suchst damit in der Ansicht; wenn gefunden, updaten, dann nächster Datensatz aus der csv-Datei usw usw

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #12 am: 04.06.08 - 16:00:30 »
Ganz einfach in dem du Zeile für Zeile die csv-Datei einliest und guckst, ob die eingelesene Zeile die entsprechende Auftragsnummer enthält.


Axel

 ;D

Vielleicht steh ich auch brutal auf der Leitung.
Ich les die csv-Datei Zeile für Zeile ein. Insgesamt sind dies ca. 20.
An jedem Zeilenanfang ist die Auftragsnummer.
Die benötige ich ja auch. Nun muss in den ca. 5000 Dok´s in der DB das Dok mit genau dieser Auftragsnummer gesucht werden und ein Feldinhalt geändert werden.
Danach das gleiche Spiel mit der 2. Auftragsnummer (2.Zeile CSV-Datei).

Ganz leicht. Leider nur für Euch Profis. :-\  Aber irgendwie muss es laufen.

Jetzt hab ich grad die Mitteilung bekommen, dass die Datei keine csv sondern ne txt ist.
« Letzte Änderung: 04.06.08 - 16:04:59 von lotus blue »
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 #13 am: 04.06.08 - 16:04:36 »
Genau so.

Das GetDocumentByKey macht das Suchen.

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 )

Driri

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #14 am: 04.06.08 - 16:12:36 »
Du hast doch den Code schon ansatzweise zur Verfügung. So in etwa sieht das aus, Errorhandling solltest Du allerdings auf jeden Fall auch einbauen.

Achtung, aus dem hohlen Bauch geschrieben. Syntax müßtest Du auf jeden Fall auch prüfen !

Zitat
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)
      Set doc = view.GetDocumentByKey(FieldArray(0))
      Call doc.ReplaceItemValue("XYZ", "ABC")
      Call doc.Save
Loop

Offline lotus blue

  • Aktives Mitglied
  • ***
  • Beiträge: 223
  • Geschlecht: Männlich
Re: Dokument suchen und Daten ändern
« Antwort #15 am: 04.06.08 - 16:57:52 »
Zunächst mal vielen Dank für die schnelle Hilfe. Seid ja schneller wie die Feuerwehr.
Ist halt ein geiles Forum.

Aber nochmal zurück zum Thema.
Meine Scriptkenntnisse sind, wie ihr bestimmt schon bemerkt habt, sehr übel.

Der Inhalt des Felds: Status soll auf erledigt gesetzt werden, bei allen Dokumenten die bereits vorhanden und den gleichen Wert im Feld "Auftragsnummer" haben.

Hier nochmal die Formel die ich derzeit hab für den Agenten:

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
   Set db = session.currentdatabase
   
   fileNum% = Freefile()
   
       ' Dateipfad
   fileName$ = "C:\Ordner Archiv\Erledigung\Archiv.csv"
   
 ' Trennzeichen
   delimiter = ";"
   
   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)
      Set doc = view.GetDocumentByKey(FieldArray(0))
      Call doc.ReplaceItemValue("Status", "erledigt")
      Call doc.Save(True,True)
   Loop
   Close fileNum%
   Exit Sub
   
End Sub



Fehler: Variant does not contain an Object.
Was hab ich da vergessen.
« Letzte Änderung: 04.06.08 - 17:11:49 von lotus blue »
Gruß Jason

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Dokument suchen und Daten ändern
« Antwort #16 am: 04.06.08 - 17:44:10 »
Dir fehlt die view?

Dim view As NotesView
Set view = db.GetView(namedeinerview )

Boris

s_Old

  • Gast
Re: Dokument suchen und Daten ändern
« Antwort #17 am: 04.06.08 - 18:31:47 »
Dir fehlt die view?
...
Das wäre der nächste Fehler (Object Variable Not Set), der angegebene Fehler lässt vermuten, dass der Aufruf von Split das Array nicht füllt...

Code
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 ("NAME")
	
	fileNum% = Freefile()
	
     'Dateipfad
	fileName$ = "C:\Ordner Archiv\Erledigung\Archiv.csv"
	
	'Trennzeichen
	delimiter = ";"
	
	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")
			Call doc.Save(True,True)
		End If
	Loop
	Close fileNum%
End Sub
« Letzte Änderung: 04.06.08 - 18:39:12 von S.O.L.D »

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Dokument suchen und Daten ändern
« Antwort #18 am: 05.06.08 - 08:16:13 »
Dann schau Dir auch gleich noch den Best Practices: Error Handling an
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 #19 am: 05.06.08 - 08:24:05 »
Dir fehlt die view?
...
Das wäre der nächste Fehler (Object Variable Not Set), der angegebene Fehler lässt vermuten, dass der Aufruf von Split das Array nicht füllt...

Das glaube ich eher weniger. Dann müsste die Fehlermeldung anders lauten.

Die Meldung "Variant does not contain an Object." weist in diesem Fall eindeutig auf die nicht gesetzte Variable view hin.

Mit einer vernüftigen Fehlerbehandlung wäre es wesentlich einfacher die Stelle im Code zu ermitteln an der der Fehler auftritt.


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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz