Domino 9 und frühere Versionen > ND8: Entwicklung

LotusScript: ODBC-Import von Kontakten

(1/4) > >>

lndsbrgr:
Hallo!

Ich möchte unsere Kundenstammdaten aus der AS400 zwecks E-Mail-Marketing in ein Adressbuch importieren. Prinzipiell funktioniert es auch, allerdings werden nie mehr als 1542 Datensätze ausgelesen und da liegt das Problem: Unsere Kundendatenbank hat mehrere tausend Einträge.

Der ODBC-Treiber stammt aus dem ClientAccess von IBM. Meines Wissen gibt es hier keine Begrenzung (wurde schon mehrfach in anderen Applikationen genutzt, um derartige Datenmengen aus unserer AS400 zu bekommen...).

Hat jemand hier schon einmal eine ähnliche Erfahrung gemacht??

Das Skript:

Option Public
Uselsx "*LSXODBC"

Sub Initialize
   Dim Session As New NotesSession
   Dim db As NotesDatabase 
   Set db = Session.currentdatabase 
   
   Dim Con As New ODBCConnection 
   Dim Qry As New ODBCQuery 
   Dim res As New ODBCResultSet
   
   
   
   RetCode% = Con.ConnectTo("AS400", "","")
   

   Set Qry.Connection = Con
   Qry.SQL = "SELECT * FROM kd.yku"
   Set Res.Query = Qry
   
   Res.Execute   
   
   Res.CacheLastRowNum = 5000
   Res.LastRow
   
   Rows% = Res.NumRows
   
   columns = res.NumColumns
   rows% = res.NumRows
   
   
   RetCode% = Res.FirstRow   
   
   
   Do While RetCode% =True
      Dim kunde As String
      Dim ansprechp As String
      Dim straße As String
      Dim plz As String
      Dim ort As String
      Dim telefon As String
      Dim bemerkung As String
      
      kunde = Cstr(Res.GetValue("kdnr") )
      'ansprechp = Cstr(Res.GetValue("ansprechp") )
      'straße = Cstr(Res.GetValue("straße") )
      'plz = Cstr(Res.GetValue("plz") )
      'ort = Cstr(Res.GetValue("ort") )
      'telefon = Cstr(Res.GetValue("telefon") )
      'bemerkung = Cstr(Res.GetValue("ort") )
      
      Dim Doc As New NotesDocument(db)   
      
      doc.form = "Person"
      doc.type = "Person"
      doc.view = "People"
      'doc.fullname = kunde
      doc.companyname = kunde
      'doc.lastname = ansprechp
      'doc.businessaddress = straße
      'doc.officezip = plz
      'doc.location = ort
      'doc.officephonenumber = telefon
      'doc.comment = bemerkung
      
      
      'Call doc.ComposeWithForms (True, False)
      Call doc.save (True, True)
      Print "datensatz",res.currentrow  , "von", rows%
      RetCode% = Res.NextRow
   Loop
   
   
   RetCode% = Res.Close(DB_CLOSE)
   RetCode% = Con.Disconnect     
   
End Sub

Cube:


Servus,

evtl. Workaround:
Versuch mal mittels dem Client-Access ODBC Treiber die Daten nach Exel oder Access auszugeben,
kommen dann alle bzw. mehr Datensätze als 1542?

Wenn ja, evtl. kannst Dir ein Skript schrieben, das ne XLS- oder TXT-Datei ausliest.


Grüße Tim

lndsbrgr:
Das wäre denkbar. Ist aber von hinten durch die Brust ins Auge, oder?! ; )

Ich würde es lieber wie geplant abbilden, als zusätzlich einen Umweg über eine weitere Datei zu gehen.

Ja, es kommen in anderen Anwendung mehr als die besagten 1542 Datensätze...

Gruß, Thies

Driri:
Ist für diese Schnittstelle eine eigene Datenquelle eingerichtet worden ? Wenn ja, vergleich mal die Einstellungen in der Datenquelle mit den anderen, bei denen es funktioniert.

Cube:


@Thies:

Wenn es nur ne einmalige Sache wäre, würde ich den Workaround versuchen, sollte die
Aktion periodisch öfter ausgeführt werden, dann richtig, ist es nur die "zweitbeste" Lösung  ;)

Kommt ne Fehlermeldung? Oder wie äußert sich das Problem?


Grüße Tim

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln