Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: lotus blue am 04.06.08 - 15:06:53

Titel: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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?



Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 04.06.08 - 15:37:13
Was klappt nicht?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 04.06.08 - 15:54:34
Ich schreib es jetzt nicht auch noch...  ;)
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 04.06.08 - 16:04:36
Genau so.

Das GetDocumentByKey macht das Suchen.

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Kadlec am 04.06.08 - 17:44:10
Dir fehlt die view?

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

Boris
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: s_Old 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 05.06.08 - 08:16:13
Dann schau Dir auch gleich noch den Best Practices: Error Handling (http://atnotes.de/index.php?board=3%3baction=display%3bthreadid=11980%3bstart=14) an
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 08:44:28
"Option Declare" nicht vergessen und den Debugger benutzen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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?

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 05.06.08 - 09:06:29
Du hast Dir die Frage selber schon beantwortet.

Im Quelltext steht der Feldname ohne Anführungszeichen...
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: MadMetzger 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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ß
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.  :-:
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri am 05.06.08 - 14:19:05
Dann hat er kein Dokument gefunden.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Kadlec 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel 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
 
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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.

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri 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 ?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre 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?

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue 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 :(
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 05.06.08 - 15:31:52
Also findet er kein Dokument.

Ich die Ansicht, die du für die Suche verwendest in der ersten Spalte sortiert oder kategorisiert? Enthält diese erste Spalte einen Textwert?


Axel
 
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 15:32:09
Dann würde ich mir den Suchschlüssel genauer anschauen. Entweder ist das Feld falsch gefüllt oder es gibt in der Notes-DB kein Dokument mit entsprechendem Schlüssel.

Ich gehe jetzt davon aus, dass die View richtig sortiert ist, etc pp....
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 05.06.08 - 15:32:21
Funktioniert es nun generell nicht?

Wenn ja, dann:

Was steht in FieldArray(0)

Wie sieht die View aus?
Ist die erste Spalte mit den Auftragsnimmern sortiert?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 15:41:10
Hallo Leute,

die entsprechende Ansicht ist in der ersten Spalte mit den gewünschten Werten gefüllt, nicht sortiert, nicht kategorisiert und ist ein Textfeld.

Im Debugger stehen unter FieldArray insgesamt drei Werte in [] ; die Werte von Array 0, 1 und 2

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 15:42:18
, nicht sortiert,

Da haben wir's....

Designer-Hilfe:

Zitat
Finds a document based on its column values within a view. You create an array of keys, where each key corresponds to a value in a sorted column in the view. The method returns the first document whose column values match each key in the array.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 15:44:28
Zitat
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)

Das stand schon in #25.......
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 05.06.08 - 15:45:33
Hallo Leute,

die entsprechende Ansicht ist in der ersten Spalte mit den gewünschten Werten gefüllt, nicht sortiert, nicht kategorisiert und ist ein Textfeld.



Bei genauen Lesen der Designer-Hilfe hätte es dir auffallen müssen:

Auszug aus der entsprechenden Stelle:

GetAllDocumentsByKey method

Finds documents based on their column values within a view. You create an array of keys, where each key corresponds to a value in a sorted column in the view. The method returns all documents whose column values match each key in the array.


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 05.06.08 - 15:46:50
Ach Menno... (http://atnotes.de/index.php?topic=41339.msg264306#msg264306)
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri am 05.06.08 - 15:47:26
Sach ich doch  ;D
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 15:50:14
Sorry Jungens und Mädels,
habs echt verbummelt, doch leider ist der Fehler nicht behoben, denn ich hatte den Code auch mit ner sortierten Spalte heute Morgen schon mal ausprobiert.

Und auch jetzt funzt es wieder nicht.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 15:52:55
Dann würde ich mir den Suchschlüssel genauer anschauen. Entweder ist das Feld falsch gefüllt oder es gibt in der Notes-DB kein Dokument mit entsprechendem Schlüssel.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 15:54:36
Sorry Jungens und Mädels,
habs echt verbummelt, doch leider ist der Fehler nicht behoben, denn ich hatte den Code auch mit ner sortierten Spalte heute Morgen schon mal ausprobiert.

Und auch jetzt funzt es wieder nicht.

Du schreibst "mit 'ner". Es sollte nicht irgendeine, sondern die 1. Spalte sein, die sortiert ist.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 15:56:06
.... und aufsteigend.....
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 05.06.08 - 15:57:31
Ok, wer fällt alles vom Stuhl?

Was funzt nicht?

Heute Morgen konnte meiner Meinung nach auch nix laufen...
Hängen wir jetzt u.U. in einem Cache Problem?
Notes zu, cache löschen neu starten!

Und zeig mal jetzt den ganzen Code

Suchschlüssel = 1. Spalte und sortiert?

Gibt es die Nummer(n) wirklich nicht?

Noch was vergessen...? Keine Ahnung langsam wird es mühsam.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 05.06.08 - 15:57:51
.... und aufsteigend.....

Das spielt glaube ich keine Rolle.

Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 16:04:09
Das ist der Inhalt meiner CSV-Datei:
54321;Test;Robert
1234;Mustermann;Anton

Das ist der Inhalt der Ansicht "Alle Dokumente" mit einer sortierten 1.Spalte
Nummer             Name
1234                  Test Robert
54321                Mustermann Anton

und das ist der Code der im Agenten ausgeführt wird:
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")
   
   fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "C:\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))
         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
   Loop
   Close fileNum%
End Sub

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 16:08:30
Ist das Feld in der 1. Spalte der View ein Text oder Zahlenfeld ?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 16:09:18
Wenn Du im Debugger bist und die FieldArray(0) anschaust, ist das dann vom Typ Text oder Zahl?

Evtl. macht ja Notes da eine Zahl draus.

Dann müsstest du im doc.GetDocumentByKey mit Cstr(FieldArray(0)) arbeiten.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 16:18:55
Das Feld der ersten Spalte ist ein Textfeld

Also im Debugger: FieldArray0 ist ein String

Was mir grad aufgefallen ist und wohl der Knackpunkt m.E. ist, dass der Rückgabewert von Array0 so aussieht: ""54321"

FieldArray   [""54321","Mustermann","Anton""]
FieldArray 0 ""54321"
FieldArray 1 "Mustermann"
FieldArray 2 "Anton""
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 16:20:44
Da hast Du wohl absolut Recht.

Die Suchabfrage lautet dann auf "54321, statt auf 54321.

So kann Notes nichts finden.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 16:23:16
Da hast Du wohl absolut Recht.

Die Suchabfrage lautet dann auf "54321, statt auf 54321.

So kann Notes nichts finden.

Ja aber dann liegt es an der bekac.... csv-Datei.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 16:30:54
Yo. EXCEL.

Mach doch ein Replace(FieldArray(0),""","")
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Kadlec am 05.06.08 - 16:31:35
Mag sein das es an der Datei liegt, hättest Du aber,wie ich es geschrieben hatte, Deinen Suchwert mal in eine Temp gegeben hättest Du gleich gesehen das Dein erwarteter Wert nicht gleich dem der Datei ist.
Entsprechend hättest Du den Wert nur noch formatieren brauchen (Replace) und....
Du hättest längst die Lösung.
So aber drehen wir uns schon seit Stunden im Kreis.

Boris
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 17:09:24
Mag sein das es an der Datei liegt, hättest Du aber,wie ich es geschrieben hatte, Deinen Suchwert mal in eine Temp gegeben hättest Du gleich gesehen das Dein erwarteter Wert nicht gleich dem der Datei ist.
Entsprechend hättest Du den Wert nur noch formatieren brauchen (Replace) und....
Du hättest längst die Lösung.
So aber drehen wir uns schon seit Stunden im Kreis.

Boris

 :love: :-X ja ich weiß :-\ Sorry
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 17:10:57
Hat sich die Mühe der Kollegen denn wenigstens gelohnt? Sprich: tut es nu?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 17:21:17
Hat sich die Mühe der Kollegen denn wenigstens gelohnt? Sprich: tut es nu?

Die Mühe von EUch allen hat sich aber dermaßen von gelohnt.
Ob es tut kann ich Dir aber noch nicht sagen, weil ich gerade erst dran bin Replace  einzubauen.  Lese grad die Hilfe
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 17:33:28
Sorry finde null, Null über Replace(Field....) 
Wo soll ich das einbauen und anstatt was?

Ich muss doch den Split drinlassen, das Set.doc und dann war es das.
 :-: :-:

   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))
         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
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 17:36:16
So ungefähr :

Dim StrKey as string

StrKey = Replace(FieldArray(0),""","")
Set doc = view.GetDocumentByKey(StrKey)

Ungetestet.....
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: tks am 05.06.08 - 17:38:49
Ich würde mir eine zusätzliche Variable (z.B. strSearch) machen (Dim nicht vergessen)

Dann

strSearch = Replace(FieldArray(0),""","")

und beim GetDocumentByKey statt FieldArray(0) eben strSearch

Set doc = view.GetDocumentByKey(strSearch)

Steht alles auch in der Designer-Help. Replace findest Du unter "Lotus Script Language" -  "Language Reference"

* * * Nur Zweiter geworden * * *
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 17:58:37
str Search ist doch ein Variant. Müsste passen
die zwei anderen Zeilen auch.
Dennoch kommt "Variant enthält keinen Container".


Dim strSearch As Variant
   
   strSearch = Replace(FieldArray(0),"","")   <- je zwei " passen oder?
   
   Set db = session.currentdatabase
   Set view = db.GetView ("Alle Dokumente")
   
   fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "V:\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(strSearch)
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 18:01:03
Warum Variant und kein String ?

Zitat
Replace(FieldArray(0),""","")

Sehe ich da nicht drei ?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 05.06.08 - 18:08:20
Warum Variant und kein String ?

Zitat
Replace(FieldArray(0),""","")

Sehe ich da nicht drei ?

Weil ich... achso ist ja ein Textfeld. Ahhh jetzt ja, eine Insel ;D

Drei hab ich auch gesehen, bekam aber den Fehler:
Unterminated string constant
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 05.06.08 - 18:23:11
Replace(FieldArray(0),""","")

müsste vielleicht so aussehen:
Replace(FieldArray(0),|"|,"")
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 06.06.08 - 07:25:50
Replace(FieldArray(0),""","")

müsste vielleicht so aussehen:
Replace(FieldArray(0),|"|,"")

Hat wieder den "Variant enthält keinen Container" Fehler zur Folge.
Genau bei dieser Zeile.
EDIT
Hab mir mal die als txt geholt und siehe da, es funzt (natürlich mit dem Script ohne Replace).
Gruß
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 06.06.08 - 07:46:41
Versuch mal:

if isArray(FieldArray) then Replace(FieldArray(0),|"|,"")

Kann es sein, das im CSV-File irgendwo was nicht gefüllt ist? Leerzeilen oder sowas?


Hm, wird ja mit isempty abgefragt...

Was ist die???

Da würde ich sagen, Variant war es schuld.
Variant sollte man nur in Ausnahmefällen benutzen. Denn dieser Typ kann alles sein und dann passieren solche Sachen wie mit dem Anführungszeichen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 06.06.08 - 08:05:08
Wie ist denn jetzt Stand der Dinge ?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 06.06.08 - 08:21:45
Sodala. Der Stand der Dinge.
Es läuft. Teste gerade mit mehr Auftragsnummern.

Den Wert den ich in der txt suche, ist lt. Debugger jetzt im FieldArray(2).
In der csv war es halt noch die 0.

EditHier den endgültige Code, der auch funzt:
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")
   
   fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "C:\PROTOKOLL.TXT"
   
   '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(2))
         If Not doc Is Nothing Then
            Call doc.ReplaceItemValue("Status", "erledigt")
            Call doc.Save(True,True)
         End If
      End If
   Loop
   Close fileNum%
End Sub


Kann ich eigentlich ein Problem bekommen, wenn die Auftrags/kundennummer in der txt mehrfach enthalten ist?

Anstatt der Messagebox muss ich halt jetzt noch einbauen, dass er nix macht wenn er nichts findet.
Kann evtl. vorkommen, dass in der zu durchsuchenden Ansicht die von der txt übermittelte Auftragsnummer nicht vorhanden ist.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Kadlec am 06.06.08 - 08:27:44
Wieso er/es macht doch nichts....musst nur die Messagebox (die Du ja nur aus Testzwecken hattest) rausschmeissen.

Welches Problem solltest Du bekommen wenn er eine Nr. mehrfach findet, er Nudelt halt immer wieder übers gleiche Dok.
Könnte mann natürlich ändern wenn man sagt "...bist Du schon auf erledigt mache nichts", oder Du liesst erst alle Nummern in eine Liste die dann Unique und dann wieder gegen die Ansicht prüfen.

Boris
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 06.06.08 - 08:37:24
Möcht ich mich bei Allen bedanken, die mir unglaublich weitergeholfen haben.

 :love:  :knuddel: :love: Ich trink ne halbe auf Euch am Sonntag beim EM-Sieg über Polen :love:  :knuddel: :love:
Einfach ein Klasseforum.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 06.06.08 - 08:38:32
Was Du der einfachheit halber machen kannst, wenn Du willst.

Abfrage ob doc.Status(0) <> "erledigt" then...

Aber Notes ist es im Prinzip egal, wie oft er auf einem Doc rumnudelt.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: s_Old am 09.06.08 - 10:01:20
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.
Schande über mein Haupt, du hast Recht. Ich habe vergessen, dass view hier nicht deklariert wurde und somit natürlich ein Variant ist.

Option Declare!
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 11:59:26
EditHier den endgültige Code, der auch funzt:
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")
   
   fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "C:\PROTOKOLL.TXT"
   
   '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(2))
         If Not doc Is Nothing Then
            Call doc.ReplaceItemValue("Status", "erledigt")
            Call doc.Save(True,True)
         End If
      End If
   Loop
   Close fileNum%
End Sub


Hallo Leute muss das Thema leider nochmal aufgreifen.
Das ganze LS funzt ja (dank Eurer Hilfe ;D ) nur will ich es nun ein wenig umbauen.
Hab jetzt ein Config-Dok angelegt in dem ich den Server und den Dateinamen eingetragen hab.
Anstatt fileName$ = "C:\Test.TXT" sollte nun die Datei aus dem Config-Dok ausgelesen werden.
Doch da steh ich vor nem Prob. Hoffe das es dieses Jahr noch mit nem LS-Kurs klappt.

Ich meine, dass ich

Dim doc As Notesdocument, profdoc As Notesdocument,
Dim servername As String, dateipfad As String
Set db = se.currentdatabase
Set profdoc = db.getprofiledocument("Config")
servername = profdoc.Server(0)
dateipfad = profdoc.Verzeichnis(0)
filenum = Freefile()
aktfile = Dir$( servername & "\" & dateipfad & "\*.*",0)

hinzufügen muss. (oder so in der Art)

Aber wie schreibe ich die folgenden Zeilen um?
fileNum% = Freefile()
   
     'Dateipfad
   fileName$ = "C:\Test.TXT"
   
   'Trennzeichen
   delimiter = ";"
   
   Open fileName$ For Input As fileNum%
   Line Input #1,  InputStr$   
   Do While Not Eof(fileNum%)


Irgendwas paßt natürlich überhaupt nicht.
Kann mir Bitte jemand weiterhelfen?

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 17.07.08 - 12:36:40
Das sieht doch gar nicht mal so schlecht aus.

So kann' weitergehen.

...
Set profdoc = db.getprofiledocument("Config")
servername = profdoc.Server(0)
dateipfad = profdoc.Verzeichnis(0)
filenum = Freefile()

'Trennzeichen
delimiter = ";"

aktfile = Dir$( servername & "\" & dateipfad & "\*.*",0)

If aktfile <> "" Then
   Open aktfile For Input As fileNum%
   Line Input #1,  InputStr$   
   Do While Not Eof(fileNum%)
Else
   Messagebox "Datei nicht vorhanden", 16, "Fehler"
End If
...


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 13:35:37
JA da bin ich schon mal froh, dass ich auf dem richtigen Weg bin. ;D

Aber bekomm da ein Prob mit dem "Else". -->Unexpected Else, Expected Loop.
Kann das sein?

Gruß


Das sieht doch gar nicht mal so schlecht aus.

So kann' weitergehen.

...
Set profdoc = db.getprofiledocument("Config")
servername = profdoc.Server(0)
dateipfad = profdoc.Verzeichnis(0)
filenum = Freefile()

'Trennzeichen
delimiter = ";"

aktfile = Dir$( servername & "\" & dateipfad & "\*.*",0)

If aktfile <> "" Then
   Open aktfile For Input As fileNum%
   Line Input #1,  InputStr$   
   Do While Not Eof(fileNum%)
Else
   Messagebox "Datei nicht vorhanden", 16, "Fehler"
End If
...


Axel

Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 17.07.08 - 13:46:05
Dem While fehlt das wend
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 17.07.08 - 13:46:53
Aber bekomm da ein Prob mit dem "Else". -->Unexpected Else, Expected Loop.
Kann das sein?

Ja, dass kann nicht nur sein, dass muss in diesem Fall auch so sein. Alles andere würde mit auch sehr stark wundern.   ;)

Sorry, dass da noch was fehlt, hab' ich übersehen.

If aktfile <> "" Then
   Open aktfile For Input As fileNum%
   Line Input #1,  InputStr$  
   Do While Not Eof(fileNum%)
     ...
     'hier fehlt noch der Code zum Verarbeiten der Daten
     ....
   Loop

Else
   Messagebox "Datei nicht vorhanden", 16, "Fehler"
End If
...

Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 17.07.08 - 13:48:14
Dem While fehlt das wend

Im dem Fall das Loop. Es heißt doch Do While...


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 17.07.08 - 13:51:19
Jajajaja, falsche Sprache Sorry...  ::)
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 14:06:34
Grazie für die Tips.Leider tut es noch nicht.
Mühsam ernährt sich das ..../der Entwickler ;D

erhalte einen ungültigen Funktionsaufruf bei
aktfile = Dir$( servername & "\" & dateipfad & "\*.*",0)

Jemand einen Tip?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: m3 am 17.07.08 - 14:07:57
Ja. Backslashes sollte man escapen oder anstelle der Anführungszeichen { und } verwenden.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: koehlerbv am 17.07.08 - 14:26:30
In LS ist das escapen hier unnötig.
Interesse wäre zu wissen, was in den Variablen steht - da könnte der Hund begraben liegen.

Bernhard
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: m3 am 17.07.08 - 14:35:47
Ah, danke Bernhard. Ich hüpfe derzeit etwas zu viel zweischen unterschiedlichen Sprachen.

Was mir beim Lesen gerade aufgefallen ist:
Dir$( servername & "\" & dateipfad & "\*.*",0)
stinkt für mich sehr nach einem UNC-Netzwerkpfad a la "\\SERVER002\VERZ\Datei".
Und da gibts mit Domino - wie man über die Forensuche schnell herausfindet - Probleme, wenn der Code auf dem Server läuft.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 15:33:04
Also es scheint als würde es funzen.
Leider hängt er sich noch auf mit "Unable to open File".
Was aber wohl eher was mit der Berechtigung auf das Laufwerk zu tun hat oder?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 17.07.08 - 15:36:09
Also es scheint als würde es funzen.
Leider hängt er sich noch auf mit "Unable to open File".
Was aber wohl eher was mit der Berechtigung auf das Laufwerk zu tun hat oder?

Dann "funzt" es also doch noch nicht.

Es ist durch aus möglich, dass es mit der Berechtigung zu tun hat. Wo läuft den der Agent und wie sieht denn der Dateiname aus?

Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 15:41:20
Hallo hier mein Script
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As Notesdocument, profdoc As Notesdocument
   Dim servername As String, dateipfad As String, aktfile As String
   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 profdoc = db.getprofiledocument("(Konfiguration)")
   servername = profdoc.Server(0)
   dateipfad = profdoc.Dateiname(0)
   fileNum = Freefile()
   Set view = db.GetView ("Test")
   
'Trennzeichen
   delimiter = ";"
   
   aktfile = Dir$( servername & "\" & dateipfad & "*.*",0)
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(2))
            If Not doc Is Nothing Then
               Call doc.ReplaceItemValue("Bestelldatum", Today)
               Call doc.Save(True,True)
            End If
         End If
      Loop
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
End Sub


Die Datei heist Test.txt und liegt auf nem Laufwerk W:
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 17.07.08 - 15:50:03
Du hast meine Frage nicht beantwortet.  Wo läuft denn der Agent, Server oder lokal beim Client?


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 15:51:27
Du hast meine Frage nicht beantwortet.  Wo läuft denn der Agent, Server oder lokal beim Client?


Axel


Oh sorry. Auf dem Sever . Mann bin ich  8)
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: m3 am 17.07.08 - 16:00:52
Ich bin geneigt einen Merkbefreiungsschein auszustellen.

Ich verweise nochmal auf mein Posting von oben:

Was mir beim Lesen gerade aufgefallen ist:
Dir$( servername & "\" & dateipfad & "\*.*",0)
stinkt für mich sehr nach einem UNC-Netzwerkpfad a la "\\SERVER002\VERZ\Datei".
Und da gibts mit Domino - wie man über die Forensuche schnell herausfindet - Probleme, wenn der Code auf dem Server läuft.

Das gesagte gilt natürlich auch für verbundene Netzlaufwerke. Nur weil Du als Admin,... auf dem Server das Laufwerk "W" hast, heißt das noch lange nicht, dass der Domino-Server, der unter dem "SYSTEM" Account läuft, dieses Laufwerk auch hat.

Geh bitte zu Deinen Windows-Admins und lass Dir helfen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 17.07.08 - 16:14:06
Ich bin geneigt einen Merkbefreiungsschein auszustellen.

Ich verweise nochmal auf mein Posting von oben:

Was mir beim Lesen gerade aufgefallen ist:
Dir$( servername & "\" & dateipfad & "\*.*",0)
stinkt für mich sehr nach einem UNC-Netzwerkpfad a la "\\SERVER002\VERZ\Datei".
Und da gibts mit Domino - wie man über die Forensuche schnell herausfindet - Probleme, wenn der Code auf dem Server läuft.


Das gesagte gilt natürlich auch für verbundene Netzlaufwerke. Nur weil Du als Admin,... auf dem Server das Laufwerk "W" hast, heißt das noch lange nicht, dass der Domino-Server, der unter dem "SYSTEM" Account läuft, dieses Laufwerk auch hat.

Geh bitte zu Deinen Windows-Admins und lass Dir helfen.

Ja wird wohl an dieser Sache liegen. Red mal morgen mit dem Windows Admin.Meld mich dann wieder und berichte Euch. Vielen Dank und Gruß
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri am 17.07.08 - 16:16:33
Was steht denn überhaupt im Profildokument drin ?

Zitat
...
servername = profdoc.Server(0)
dateipfad = profdoc.Dateiname(0)
...
aktfile = Dir$( servername & "\" & dateipfad & "*.*",0)
...
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 18.07.08 - 10:40:20
Hallöchen, :D
hab noch ein wenig rumgebastelt, da die Berechtigung vorhanden war.
Und siehe da -> ein \ fehlte.

So weit so gut. Das Script läuft nun fehlerfrei drüber, jedoch müsste es lt. Vorgaben einen Feldwert ändern, tut dies aber noch nicht.

Hab mal debugt und nach
aktfile = Dir$( servername & "\" & dateipfad & "*.*",0)
   If aktfile <> "" Then

hüpft er gleich auf End if.
Das heißt doch, dass er zwar den Pfad aber die Datei nicht findet oder?
Gruß
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 18.07.08 - 10:46:59
Das heißt doch, dass er zwar den Pfad aber die Datei nicht findet oder?

Genau das heißt das.

Mit *.* findet er eigentlich jede x-beliebige Datei. Außerdem fehlt zwischen dateipfad und *.* ein Backslash. Wenn du prüfen willst, ob eine bestimmte Datei vorhanden ist, solltest du einen Dateinamen angeben.


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri am 18.07.08 - 10:56:18
Eine Antwort auf meine Frage steht noch aus. Ist sichergestellt, daß im Profildokument die korrekten Werte stehen ?

Wenn servername und dateipfad leer sind, dürfte er im Root nach einer Datei suchen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 18.07.08 - 13:20:42
Eine Antwort auf meine Frage steht noch aus. Ist sichergestellt, daß im Profildokument die korrekten Werte stehen ?

Wenn servername und dateipfad leer sind, dürfte er im Root nach einer Datei suchen.

Alos hier die Daten vom Profildok
Feld Server ist gefüllt mit -> \\Filename
Dateinname ist gefüllt mit -> laufwerksname/Ordnername


Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Driri am 18.07.08 - 13:28:40
Zitat
Feld Server ist gefüllt mit -> \\Filename
Dateinname ist gefüllt mit -> laufwerksname/Ordnername

Ähm, wenn ich das richtig verstehe, steht dann z.B. so etwas da drin ?

Server = "\\test.txt"
Dateiname = "C:\test\"

Weil wenn dem so ist, dann würde Dir in folgendem Pfad suchen :

\\test.txt\C:\test\*.*

Ich würde vorschlagen, Du schaust Dir mal im Debugger an, was da überhaupt in den Variablen "servername" und "dateipfad" steht, wenn Du das Script ausführst.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 18.07.08 - 13:47:45
Zitat
Feld Server ist gefüllt mit -> \\Filename
Dateinname ist gefüllt mit -> laufwerksname/Ordnername

Ähm, wenn ich das richtig verstehe, steht dann z.B. so etwas da drin ?

Server = "\\test.txt"
Dateiname = "C:\test\"

Weil wenn dem so ist, dann würde Dir in folgendem Pfad suchen :

\\test.txt\C:\test\*.*

Ich würde vorschlagen, Du schaust Dir mal im Debugger an, was da überhaupt in den Variablen "servername" und "dateipfad" steht, wenn Du das Script ausführst.

Also im Debugger steht
bei Servername: "\\Filename"
bei Dateipfad: "laufwerksname/Ordnername"
bei Aktfile: "test.txt"
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 18.07.08 - 14:12:06
Also mal ganz ehrlich, bei den Variableninhalten ist das doch ganz offensichtlich, dass das nicht funktionieren kann.

Heißt euer Server wirklich Filename?
Der Dateipfad heißt auch berstimmt nicht laufwerksname/Ordnername.
Der Inhalt von aktfile passt auch nicht so ganz.

Sorge erstmal dafür, dass das vernüftige Werte drinstehen und sehen wir weiter.


Axel
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 18.07.08 - 14:18:50
Also mal ganz ehrlich, bei den Variableninhalten ist das doch ganz offensichtlich, dass das nicht funktionieren kann.

Heißt euer Server wirklich Filename?
Der Dateipfad heißt auch berstimmt nicht laufwerksname/Ordnername.
Der Inhalt von aktfile passt auch nicht so ganz.

Sorge erstmal dafür, dass das vernüftige Werte drinstehen und sehen wir weiter.


Axel

Also unser Server heißt in echt \\A13_File
und der Pfad notes/Bestellungen
Hab es nur fürs Forum mit ähnlichen Werten ersetzt.
Beim Debugger steht in echt:
bei Servername: "\\A13_File"
bei Dateipfad: "notes/Bestellungen"

Es muss eigentlich so stimmen, denn er findet als Aktfile ja die test.txt obwohl ich ausser den o.g. Daten nichts angegeben hab.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: m3 am 18.07.08 - 14:42:23
Ich würd mal den "/" durch einen "\" ersetzten. Ist ja Windows.

Ansonsten hab ich ja schon 2x geschrieben, woran es noch liegen kann.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 21.07.08 - 13:53:27
So. Hab noch weiter rumgebastelt und das Config nochmal geändert.
Dort musste ja zuerst der Server und der Dateiname getrennt in zwei Felder eingegeben werden. Was ja Käse ist und gleich in das Feld Dateipfad reinpaßt.
Hab dann den SCode geändert, dass er nur noch auf das Feld Dateipfad (mit dem kompletten Namen) zugreift.
Nun funzt es auch.
Hier der Code:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As Notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   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 profdoc = db.getprofiledocument("(Konfig)")
   Dateipfad = profdoc.Dateipfad(0)
   fileNum = Freefile()
   Set view = db.GetView ("Alle Bestellungen")
   
'Trennzeichen
   delimiter = ";"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(2))
            If Not doc Is Nothing Then
               Call doc.ReplaceItemValue("Bestelldatum", Today)
               Call doc.Save(True,True)
            End If
         End If
      Loop
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
End Sub


Wo ich aber noch auf der Leitung steh. Er sucht alle Daten der zugewiesenen txt-Datei durch und wenn er was findet, setzt er auch das Bestelldatum auf Today.
Wenn er alle durchsucht hat, schließt er aber immer mit "Datei nicht vorhanden", 16, "Fehler".

Kann mir jemand auf die Sprünge helfen?

Gruß
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DerAndre am 21.07.08 - 14:01:05
Ja, denn die Ausgabe der Fehlermeldung erfolgt im wahrsten Sinne des Wortes Bedingugslos

Nach dem loop ein else.
Wenn dann aktfile = "" dann kommt die Meldung
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DAU-in am 21.07.08 - 14:01:19
Aber gerne!!!

   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(2))
            If Not doc Is Nothing Then
               Call doc.ReplaceItemValue("Bestelldatum", Today)
               Call doc.Save(True,True)
            End If
         End If
      Loop
      Messagebox "Datei nicht vorhanden", 16, "Fehler"   End If
   Close fileNum%
End Sub



Klassischer Abstauber  ;D

grüsse

Dau-in
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 21.07.08 - 15:26:41
Ja, denn die Ausgabe der Fehlermeldung erfolgt im wahrsten Sinne des Wortes Bedingugslos

Nach dem loop ein else.
Wenn dann aktfile = "" dann kommt die Meldung

Ah jetzt ja eine Insel  ;D ;D :-X

Grazie es funzt
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 30.10.08 - 14:40:33
Hi Leute.
Das Script läuft ja seit Wochen ach was seit Monaten  ;D ;D
nun will/muss ich es noch ein wenig umbauen, da die Datenmenge zugenommen hat.

Zunächst:
Das Script holt sich die zu überprüfende TXT und überprüft Zeile für Zeile ob eine Produktnummer vorhanden ist, wenn ja setzt es in dem Dok mit der Produktnummer einen Feldwert.
Dann überprüft das Script die nächste Zeile usw.

Die importierende Datei ist so aufgebaut, dass
in einer Zeile die Produktnummer und der Name Lager steht.
In den Folgezeilen jeweils die gleiche Produktnummer und ein Zahlencode.
Beim Nächsten Produkt dann wieder die Nummer und Lager.

quasi so:
123456789=Lager
123456789;589QERC568996699
123456789;58322UZRD255D22D
123456789;5633366DACC22222
123456789;DS55663771111563
081508150=Lager
081508150;66589555ERTV5523
.......
Im Grunde muss er sich mit den Folgezeilen nicht lange aufhalten.
1.Wie realiesiere ich es am Besten, dass er nur immer die Zeilen, in der "Lager" steht , die Nummer holt und im Dok den Feldwert ändert?
Da würde ich doch ne Menge an Performance sparen.

2.In dem Ordner in dem die zu überprüfende TXT liegt gibt es mehrere Dateien,
die soll er alle der Reihe nach abarbeiten. Bisher war es nur eine.


Hier das bisher eingesetzte Script:
Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As Notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   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 profdoc = db.getprofiledocument("(Konfiguration)")
   Dateipfad = profdoc.Dateipfad_1(0)
   fileNum = Freefile()
   Set view = db.GetView ("Alle Bestellungen")
   
'Trennzeichen
   delimiter = ";"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter, -1, 0)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(2))
            If Not doc Is Nothing Then
               Call doc.ReplaceItemValue("Bestelldatum", Today)
               Call doc.ReplaceItemValue("History", Today)
               Call doc.Save(True,True)
            End If
         End If
      Loop
   Else


Gruß Jason
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: klaussal am 30.10.08 - 14:49:38
Zu 1: If....... = "Lager" then tue irgendetwas else weiterlesen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: Axel am 30.10.08 - 15:11:30
zu 2:

Lagere den Import der Daten in eine Funktion oder Routine aus. Dann holst du dir in einer Schleife der Reihe nach alle Textdateien und rufst dann für jede diese Funktion/Routine auf.

Sinnigerweise sollten dann in diesem Verzeichnis nur solche Dateien enthalten sein. So kannst du alle Dateien verarbeiten. Sonst musst du da noch irgendwie die entsprechenen Dateien filtern.

Axel
   
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 30.10.08 - 15:36:42
Zu 1: If....... = "Lager" then tue irgendetwas else weiterlesen.
Also so in der Art?
Dim suchbegriff As Variant
suchbegriff = uidoc.FieldGetText("lager")
If suchbegriff = "lager" Then
     
nur an welcher Stelle bau ich das ein?
Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
fällt ja dann weg.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 30.10.08 - 15:55:21
zu 2:

Lagere den Import der Daten in eine Funktion oder Routine aus. Dann holst du dir in einer Schleife der Reihe nach alle Textdateien und rufst dann für jede diese Funktion/Routine auf.

Sinnigerweise sollten dann in diesem Verzeichnis nur solche Dateien enthalten sein. So kannst du alle Dateien verarbeiten. Sonst musst du da noch irgendwie die entsprechenen Dateien filtern.

Axel
   

Die Dateinamen sind mir aber vorher nicht bekannt. Macht das was aus? Bzw. nimmt er er dann die erste, dann die zweite usw.?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: m3 am 30.10.08 - 16:19:11
Im Grunde muss er sich mit den Folgezeilen nicht lange aufhalten.
1.Wie realiesiere ich es am Besten, dass er nur immer die Zeilen, in der "Lager" steht , die Nummer holt und im Dok den Feldwert ändert?
Da würde ich doch ne Menge an Performance sparen.
Nein, weil "Performance" kostet das Lesen von der Platte. Der check, ob da nun "Lager" steht oder nicht, fällt da nicht mehr ins Gewicht, IMHO.
Zitat von: Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

Zitat
2.In dem Ordner in dem die zu überprüfende TXT liegt gibt es mehrere Dateien,
die soll er alle der Reihe nach abarbeiten. Bisher war es nur eine.
Ja? Wie lautet das Problem? Entweder sind die Dateinamen bekannt, dann stehen sie in einem Array, über das Du iterieren kannst, oder Du musst sie mit Dir() auslesen.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 03.11.08 - 08:59:05
Hallo Spezialisten.
Zunächst vielen Dank für Eure Rückmeldung.
Das Script von oben funktionierte bis dato einwandfrei. Nun wollte ich es ja noch umbauen.
Jetzt gibt es aber seit heute morgen ein größeres (anderes) Prob.
Die Datei ich bis dato ausgelesen hab (eine txt) war so aufgebaut, dass es leicht war den Wert zu finden (Delimeter #):
123456789#Waltraud#1255588558#Bestellung#Erich usw.
Hab nur die Artikelnummern rausgelesen.
Seit heute bekomm ich aber eine txt in folgendem Format geliefert:

123456789=Success
123456789.00000001.pdf={458968-1111-Test-Test};{Test123-1234-9999-1234-0815}


Kann mir bitte jemand weiterhelfen, wie ich das hinbekommen soll. ??? ??? :-:
Ich benötige die Artikelnummer "12345689"
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: DAU-in am 03.11.08 - 12:18:10
String zerlegen mit Left und Midfunction?
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 03.11.08 - 13:11:28
String zerlegen mit Left und Midfunction?
Danke für den Tipp, hat sich nun erledigt.

 :knuddel:
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 11.11.08 - 17:46:56
Hi bräuchte bitte nochmal kurz euren Rat.

Die Datei (txt) die ich jetzt zur Verfügung gestellt bekomm ist so aufgebaut, dass in einer Zeile jeweils die Produktnummer, das Bestelldatum und die Lagernummer aufgeführt ist. Jeweils durch ; getrennt.

Mein Script funktioniert ja soweit, dass ich die Datei öffne Zeile für Zeile vergleiche ob in der Ansicht "offene Bestellungen" die Produktnummer vorhanden ist.
Wenn ja setzt er das Datumsfeld "Test" auf @today.
Nun will ich aber folgendes realisieren:
Zusätzlich soll das Script, sobald es das Dok mit der Produktnummer in der Ansicht gefunden hat, das Bestelldatum (aus der TXT) in das Feld Bestelldatum und die Lagernummer (aus der TXT) in das Feld Lager schreiben.
Wo setzt ich am besten an?
Dacht da an "WRITE"Funktion nach dem "Call doc.ReplaceItemValue("Test", Today)"

 :-: :-:
Hier mein Script:

Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As Notesdocument, profdoc As Notesdocument
   Dim Dateipfad As String, aktfile As String
   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 profdoc = db.getprofiledocument("(Config)")
   Dateipfad = profdoc.Dateipfad_1(0)
   fileNum = Freefile()
   Set view = db.GetView ("Offene Bestellungen")
   
'Trennzeichen
   delimiter = ";"
   
   aktfile = Dateipfad
   If aktfile <> "" Then
      Open aktfile For Input As fileNum%
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         
         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("Test", Today)
               Call doc.Save(True,True)
            End If
         End If
      Loop
   Else
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
   
End Sub
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: koehlerbv am 11.11.08 - 17:56:33
Bist Du sicher, dass Du wirklich zum Programmierer geeignet bist, Jason? Die Frage mag brutal und / oder unhöflich klingen, aber wenn ich sehe, dass Du
- es nach Hilfestellung geschafft hast, den ersten Wert aus einer Importzeile als Suchkriterium herzunehmen,
- es aber nicht schaffst, den zweiten Wert herauszulösen, um ihn als Datumswert zu konvertieren und einzusetzen,
dann bleibt mir einfach kein anderer Schluss.

Das sind doch allersimpelste logische Zusammenhänge, die man auch als Anfänger einfach erkennen MUSS - wenn einem nicht diese Art von Denke so vollkommen fremd ist und die Stärken dann eindeutig auf anderen Gebieten liegen.

Aus diesem Grunde sehe ich auch keinen Zweck darin, Dir zu erklären, wie man nicht nur das erste Element, sondern simpel auch das zweite aus einem Array zieht - bei der nächsten absoluten Kleinigkeit wird es ja wieder hapern.

Bernhard
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 11.11.08 - 18:03:29
@Bernhard

Denke schon. Man kann m.E. Alles erlernen wenn man will. Auch wenn man sich erst am Anfang befindet und "allersimpelste logische Zusammenhänge" erkennt, nur noch nicht umsetzen kann.
Andererseits liegt Deiner Ansicht nach meine Stärke wohl darin, blöde Fragen zu stellen  8).
Dann wirst Du wohl recht haben. :love:
Aus diesem Grunde sehe ich auch keinen Zweck darin, Dir zu erklären,warum ich entwickle
Paßt schon.  :knuddel: :knuddel: O0

Ich such mir halt den FieldArray(1) und möchte anschließend den Wert ins Feld setzen.
Nur mit Call doc.ReplaceItemValue("Lager", FieldArray(1))
bin ich halt noch nicht weitergekommen. Deshalb wollte ich höflichst fragen.
Aber mein Fall ist ja nicht der erste, wo ein .... Kommentar kommt, darum ist es auch nicht so tragisch.
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: koehlerbv am 11.11.08 - 18:17:07
Man kann m.E. Alles erlernen wenn man will.

Nein, Jason. Mir würde es sehr leicht fallen, eine Liste aufzumalen, was man mir bestimmt nicht beibringen kann. Und genauso bin ich mir sicher, dass es da noch viel mehr Dinge gibt, die ich nie beherrschen könnte - von denen ich nur noch nichts weiss.

Andererseits liegt Deiner Ansicht nach meine Stärke wohl darin, blöde Fragen zu stellen
Nochmals: Nein, Jason. Ich bin zwar der Meinung, dass es doch dumme (blöde) Fragen gibt, aber es ist selten. Du erkennst vielmehr gar nicht, was Du eigentlich fragen solltest. Und *das* ist der Knackpunkt.

Ich schlage Dir folgendes vor: Du erarbeitest Dir jetzt streng logisch (!! Nicht wieder stochern und probieren!!), wie Du jetzt schon an das erste Element einer Importzeile herankommst. Und wenn es Dir dann nicht wie Schuppen aus den Haaren fällt: Okay - dann solltest Du den Job wirklich hinschmeissen - da hilft Dir nämlich dann auch kein noch so guter Lehrgang mehr.

Bernhard (der Dir nicht zu nahe treten möchte und der in seinem Freundeskreis fast nur Nichtprogrammierer hat und auch familiär "aus der Art geschlagen" ist  ;))
Titel: Re: Dokument suchen und Daten ändern
Beitrag von: lotus blue am 12.11.08 - 14:21:58
Also Ratschläge befolgt.
Wie Schuppen ist es nicht gerade geflogen ;D aber fast.

Hab das Ganze jetzt so gelöst:
..............
'Trennzeichen
   delimiter = ";"
   aktfile = Dateipfad
   If aktfile <> "" Then 
      Open aktfile For Input As fileNum%   
      Line Input #1,  InputStr$   
      Do While Not Eof(fileNum%)
         Line Input #1,  InputStr$
         FieldArray = Split(InputStr$,delimiter)
         If Not Isempty(FieldArray) Then
            Set doc = view.GetDocumentByKey(FieldArray(0))
            If Not doc Is Nothing Then
               Call doc.ReplaceItemValue("Bestelldatum", (FieldArray(1)))
               Call doc.ReplaceItemValue("Test", (FieldArray(2)))
               Call doc.Save(True,True)
            End If
         End If
      Loop
   Else
      Messagebox "Datei nicht vorhanden", 16, "Fehler"
   End If
   Close fileNum%
   
End Sub

Was soll ich sagen -> es funktioniert.
Hab mich halt aufgehalten, wie ich beim Call doc.ReplaceItemValue den FieldArray 1 bzw. 2 übergeben kann.
Grüße Jason