Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: CarlGustav am 03.01.03 - 10:00:40

Titel: SQL Abfrage!
Beitrag von: CarlGustav am 03.01.03 - 10:00:40

Guten Morgen Notesgemeinde und ein gutes neues Jahr nachträglich!


Ich habe eine ODBC Verbindung zu einer Access Datenbank.
Das importieren hat auch immer super funktioniert.
Nur hab ich nun feststellen müssen, daß bei Datensatz Nummer (in etwa) 2400 keine Daten mehr importiert werden...

dH ich muß in Schritten importieren! Der Abfrage irgendwie sagen, daß zuerst die ersten 200 Datensätze durchsuchen soll und dann die nächsten 200.

Nur wie mach ich das am Besten?

Hoffe man kann sich darüber was vorstellen, oder vielleicht weiß jemand was zum nachlesen irgendwo?!?


Vielen Dank im voraus,

CG
Titel: Re:SQL Abfrage!
Beitrag von: ata am 03.01.03 - 17:20:51
Hallole und ein gutes Neues...

... da ich mich mit SQL nicht so gut auskenne, habe ich das mit einem einfachen Zähler bestimmt - nicht elegant - auch nicht die Beste Möglichkeit - aber hat bislang funktioniert...

Code
Print "ODBC-Connection..."   
      ' # Neue ODBC-Connection erstellen   
   IsConnected = Con.ConnectTo(docThis.ODBC_DB(0))
   If Not IsConnected Then
      Print "Die Datenquelle konnte nicht gefunden werden"
      Exit Function
   End If   
   Set Qry.Connection = Con   
   Print "... überprüfen, ob es die Tabelle gibt"
   vTables = Con.ListTables
   If Isnull(Arraygetindex(vTables , docThis.ODBC_Table(0) )) Then
      Print {Die Datentabelle "}+docThis.ODBC_Table(0)+{" konnte nicht gefunden werden}
      Exit Function
   Else
      Print {... die Datentabelle "}+docThis.ODBC_Table(0)+{" konnte gefunden werden}
   End If   
   Print "... die Abfrage formulieren"
   Qry.SQL = {SELECT * FROM }+docThis.ODBC_Table(0)+{}      
   Print "... die Datensätze der Tabelle einlesen"   
   Set Res.Query = Qry   
   Print "... ausführen der ODBC-Anfrage"
   Res.Execute   
   Print "... die Anzahl der Datensätze ermitteln"   '# geht sicherlich auch per SQL
   IsConnected = Res.FirstRow    
   Do While IsConnected = True
      counter = counter + 1
      IsConnected = Res.NextRow
   Loop


Die Dimensionierungen mußt du noch machen...
Ich habe bestimmte Parameter in einem Dokument administriert - ggf anpassen...

ata
Titel: Re:SQL Abfrage!
Beitrag von: CarlGustav am 07.01.03 - 10:57:13


Vielen Dank ATA für die Antwort!

Bin erst jetzt wieder arbeitsmäßig aktiv!


Ich hab leider immer noch ein paar kleine troubles mit meiner DB.

Bei Datensatz 2313 wird leider nichts mehr weiter importiert, er hört einfach auf.


Hast Du Deinen Script auch schon mal  bei sovielen Datensätzen ausprobiert?


LG,

CG
Titel: Re:SQL Abfrage!
Beitrag von: CarlGustav am 08.01.03 - 10:26:47



Ich bin so frei und werfe dieses Thema nochmal auf!


Vielleicht hat ATA nochmal Zeit sich dem Problem zu widmen!



Ich schaff es einfach nicht mehr als 2313 Docs zu importieren. Der Counter hilft mir da nicht recht.


Vielen Dank im voraus,



CG

Titel: Re:SQL Abfrage!
Beitrag von: ata am 08.01.03 - 10:54:32
... ich bin mir nicht mehr ganz sicher wieviele Datensätze es bei mir waren. Im Forum gabs dazu vor kurzem bereits ein Posting:

http://www.atnotes.de/index.php?board=6;action=display;threadid=4574;start=0 (http://www.atnotes.de/index.php?board=6;action=display;threadid=4574;start=0)

Vielleicht hilft dir das weiter...

ata
Titel: Re:SQL Abfrage!
Beitrag von: Rob Green am 08.01.03 - 10:58:42
@ata
die Anzahl der Rows (Zeilen) bekommt man mit NumRows, dass heißt eine Schleife in 1er Schritten, um die Anzahl zu bekommen, ist nicht nötig.

Bsp:
qry.SQL = "SELECT * FROM STUDENTS ORDER BY LASTNAME"
     result.Execute
    result.LastRow
     msg = "Student names:" & Chr(10)
     For  i = 1 To result.NumRows
          result.CurrentRow = i
          firstName = result.GetValue("FIRSTNAME", firstName)
          lastName = result.GetValue("LASTNAME", lastName)
          msg = msg & Chr(10) & firstName & " " & lastName
     Next


@und für das eigentlich Prob sollte man mit CacheLimit und FetchBatchSize spielen, dazu mehr hier:

http://www-10.lotus.com/ldd/46dom.nsf/search?SearchView&Query=*odbc*%20and%20results*&SearchOrder=1&SearchMax=250&SearchWV=FALSE&SearchFuzzy=FALSE&Start=1&Count=100

spez. zB
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/4ca2bd1e30a9d65985256c1400140982?OpenDocument

dann von LDD/Support:
http://www-1.ibm.com/support/docview.wss?rs=475&context=SSKTWP&q=odbcresultset&uid=sim1f9a64db478d519fec12568310034e077
Titel: Re:SQL Abfrage!
Beitrag von: ata am 08.01.03 - 11:00:39
@Rob

... danke, das ist natürlich deutlich schöner...

ata
Titel: Re:SQL Abfrage!
Beitrag von: CarlGustav am 08.01.03 - 13:08:20
Vielen Dank an alle Mitwirkenden!


Unglaublich...Wie lange suchte ich eine Lösung??? Und dann sinds nur zwei Zeilen!!!

result.CacheLimit = 1000
result.FetchBatchSize = 5000   


Und schon funzts und er importiert alle Zeilen!


Ja wie gesagt - DANKE,


CG