Autor Thema: SQL Abfrage!  (Gelesen 1420 mal)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
SQL Abfrage!
« 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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:SQL Abfrage!
« Antwort #1 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
Grüßle Toni :)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:SQL Abfrage!
« Antwort #2 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

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:SQL Abfrage!
« Antwort #3 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


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:SQL Abfrage!
« Antwort #4 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

Vielleicht hilft dir das weiter...

ata
Grüßle Toni :)

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:SQL Abfrage!
« Antwort #5 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
« Letzte Änderung: 08.01.03 - 11:04:57 von Rob Green »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:SQL Abfrage!
« Antwort #6 am: 08.01.03 - 11:00:39 »
@Rob

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

ata
Grüßle Toni :)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:SQL Abfrage!
« Antwort #7 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz