Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: ReinhardR am 27.11.02 - 09:54:19
-
Hallo,
mein Problem ???: Ich muß jeden Freitag 52000 Datensätze nach Notes einlesen (Grundbestandsdaten die nur Ausgetauscht werden- sie werden in Notes nicht verändert). Die Daten liegen im DB2 format vor. Ich könnte sie nach Excel bzw. DB-Base exportieren. Derzeit gehe ich den Umweg über die Smart-Suite und schreibe in Notes direkt. Das ganze soll aber automtiesiert über ein Agenten oder ähnliches laufen. Mit den Importfunktionen von Notes bi ich gescheitert (WKS-Format, strukt. Text usw.) In Skript bin ich nicht so fit. Hat jemand eine Lösung für mich?.
Reinhard
-
was ist denn mit einem direkten Connect auf die DB2 über ODBC ??
-
ich habe einen Agenten, der aus AS400 / MAS90 die Kostenstellen nach Notes importiert:
Client Access auf dem NotesServer installiert, Verbindung eingerichtet; Agent starten, fertig !!
Sub Initialize
Dim Session As New NotesSession
Dim db As NotesDatabase
Set db = Session.currentdatabase
Dim view As NotesView
Dim Del As NotesDocument
Dim Con As New ODBCConnection
Dim Qry As New ODBCQuery
Dim res As New ODBCResultSet
' alle KST Dokumente vor einem neuen Import löschen
Dim collection As NotesDocumentCollection
Set collection = db.AllDocuments
If collection.Count <> 2 Then
Call collection.RemoveAll ( True )
End If
'Verbindungsaufbau zur AS/400
RetCode% = Con.ConnectTo("AS/400","TRANSFER","KARL")
Set Qry.Connection = Con '
Qry.SQL = "SELECT * FROM Costing.COAS01"
Set Res.Query = Qry
Res.Execute
RetCode% = Res.FirstRow
Do While RetCode% =True
ret$ = Trim(Cstr(Res.GetValue("S01001")))
If ret$ = "90" Then
Dim Doc As New NotesDocument(db)
doc.form = "KST"
doc.KSTNR = Cstr(Res.GetValue("S01006") )
doc.KSTBEZ = Cstr(Res.GetValue("S01042"))
doc.KSTVERANTW = Cstr(Res.GetValue("S01097"))
doc.KSTWERK = Cstr(Res.GetValue("S01002"))
doc.KSTGUELTIG = Cstr(Res.GetValue("S01090"))
Call doc.save (True, True)
End If
RetCode% = Res.NextRow
Loop
RetCode% = Res.Close( DB_CLOSE )
RetCode% = Con.Disconnect
End Sub
eknori
-
Hallo eknori,
direkt auf die DB2 darf ich nicht drauf. Deshalb der Export in eine Dbase III Datei. Ich könnte aber eine Anbindung nach Acess bzw. Excel nutzen. Hilft das weiter?
-
wenn du dir eine Access DB als "Zwischenmedium" erstellst, kannst du ja dort auch mit ODBC drauf zugreifen.
Ich verstehe nur nicht, warum du das mit Access machen kannst und mit Notes nicht; aber man muß ja auch nicht alles verstehen.
eknori
-
die Daten werden in eine aus DB2 - Anbindung über IntranNet Host on Demand - in eine Dbase Datei exportiert. Mit der Dbase Datei kann ich machen was ich will. Was müßte ich im Script ändern? Wo kann ich die Einstellungen für die ODBC Anbindung nachlesen?
Reinhard
-
Wieso machst Du das nicht einfach mit DECS??!!
Das ist beim Lotus Domino dabei und ein genau das richtige Tool für solche regelmässigen Importe. Und einfach ist es auch noch!
(DECS = Domino Enterprise Connection Services)
DECS ist ein Task auf dem Domino Server, der von einer Datenbank aus verwaltet wird. Dort wird die Verbindung von - nach in Masken definiert. Wichtig ist nur, dass Du genügend Rechte hast beim Einrichten.
-
Hört sich gut an. Wie geht das. Wo finde ich Infos. Hab keine Ahnung davon?
-
@Isa, yoo, habe ich jetzt gar nicht dran gedacht.
hier noch der Kram für SQL
http://www.eknori.de/downloads/NotesSQL300.exe (http://www.eknori.de/downloads/NotesSQL300.exe)
-
Hallo Eknori,
??? ???
erstmal Danke.
Ich habe versucht das Script auf meine Belange anzupassen. Ich Versage. Meine Ansicht in die ich importieren muß heißt "AdminInventar". Meine DBASE-Import- Datei heißt Bestand.dbf. Meine Maske heißt Inventar. Die Felder kann ich selber anpassen. Könntest du mir nochmal bei der ODBC-Anbindung und der Script Anpassung helfen.
Reinhard
-
Vielleicht hilfts ja...
http://www-10.lotus.com/ldd/sandbox.nsf/ByDateNJ/8b194f7939abc34f85256b6e004ec0be?OpenDocument (http://www-10.lotus.com/ldd/sandbox.nsf/ByDateNJ/8b194f7939abc34f85256b6e004ec0be?OpenDocument)
-
Hi Eknori,
ich habe den Agenten jetzt endlich soweit das es bei mir fast funktioniert. Mein Problem: Du löscht alle Dokumente vor dem Import. Ich müßte nur die Dokumente einer bestimmten Ansicht "AdminImport" löschen. Kannst Du mir nochmal helfen.
Reinhard
Sub Initialize
Dim Session As New NotesSession
Dim db As NotesDatabase
Set db = Session.currentdatabase
Dim view As NotesView
Dim Del As NotesDocument
Dim Con As New ODBCConnection
Dim Qry As New ODBCQuery
Dim res As New ODBCResultSet
' alle KST Dokumente vor einem neuen Import löschen
Dim collection As NotesDocumentCollection
Set collection = db.AllDocuments
If collection.Count <> 2 Then
Call collection.RemoveAll ( True )
End If
'Verbindungsaufbau zur AS/400
RetCode% = Con.ConnectTo("AS/400","TRANSFER","KARL")
Set Qry.Connection = Con '
Qry.SQL = "SELECT * FROM Costing.COAS01"
Set Res.Query = Qry
Res.Execute
RetCode% = Res.FirstRow
Do While RetCode% =True
ret$ = Trim(Cstr(Res.GetValue("S01001")))
If ret$ = "90" Then
Dim Doc As New NotesDocument(db)
doc.form = "KST"
doc.KSTNR = Cstr(Res.GetValue("S01006") )
doc.KSTBEZ = Cstr(Res.GetValue("S01042"))
doc.KSTVERANTW = Cstr(Res.GetValue("S01097"))
doc.KSTWERK = Cstr(Res.GetValue("S01002"))
doc.KSTGUELTIG = Cstr(Res.GetValue("S01090"))
Call doc.save (True, True)
End If
RetCode% = Res.NextRow
Loop
RetCode% = Res.Close( DB_CLOSE )
RetCode% = Con.Disconnect
End Sub
-
Anstelle von
Dim collection As NotesDocumentCollection
Set collection = db.AllDocuments
If collection.Count <> 2 Then
Call collection.RemoveAll ( True )
End If
nimmst du :
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("AdminImport")
Set vc = view.AllEntries
Call vc.RemoveAll(true)
eknori