gerhardsw
20-08-10, 14:13
Hallo zusammen,
ich muss gleich vorweg sagen, dass ich noch neu auf dem Gebiet der Abfragen in VBA auf den AS/400 bin.
Habe dazu folgende Frage:
Wenn ich direkt aus VBA heraus auf eine AS/400 zugreife und das Selektionskriterium kein Indexiertes Feld auf der AS/400 ist, dann dauert die Abfrage ewig lange (ca. 6 Minuten bei einer Datei mit ca. 16 Mio Datensätzen).
Diese Abfrage sieht dann folgendermaßen aus:
__________________
Public Sub as400_Connect()
Dim MyConn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim DB As DAO.Database
Dim STR As String
Dim strFakturnummer as String
strFakturnummer = inputbox("Bitte geben Sie die Fakturnummer ein:")
Set DB = CurrentDb
Set MyConn = New ADODB.Connection
MyConn.Open "Provider=IBMDA400;Data Source=xxxx;", "xxxx", "xxxx"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = MyConn
Set DB = CurrentDb
With MyConn
sql = "SELECT * from FPRDDTA.LFSVHD13 where HDNFAK = "
& strFakturnummer
rs.Open sql
Do Until rs.EOF
Debug.Print rs.Fields("hdnauf")
rs.MoveNext
Loop
End With
rs.Close
End Sub
__________________
Gibt es eine oder mehrere Möglichkeiten, diese Abfrage in Access deutlich zu beschleunigen - vielleicht indem man das Feld über SQL irgendwie indexiert? Sicher haben Sie diverse Lösungsansätze parat.
Vielen Dank im voraus!
Grüße,
Wilfried
ich muss gleich vorweg sagen, dass ich noch neu auf dem Gebiet der Abfragen in VBA auf den AS/400 bin.
Habe dazu folgende Frage:
Wenn ich direkt aus VBA heraus auf eine AS/400 zugreife und das Selektionskriterium kein Indexiertes Feld auf der AS/400 ist, dann dauert die Abfrage ewig lange (ca. 6 Minuten bei einer Datei mit ca. 16 Mio Datensätzen).
Diese Abfrage sieht dann folgendermaßen aus:
__________________
Public Sub as400_Connect()
Dim MyConn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim DB As DAO.Database
Dim STR As String
Dim strFakturnummer as String
strFakturnummer = inputbox("Bitte geben Sie die Fakturnummer ein:")
Set DB = CurrentDb
Set MyConn = New ADODB.Connection
MyConn.Open "Provider=IBMDA400;Data Source=xxxx;", "xxxx", "xxxx"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = MyConn
Set DB = CurrentDb
With MyConn
sql = "SELECT * from FPRDDTA.LFSVHD13 where HDNFAK = "
& strFakturnummer
rs.Open sql
Do Until rs.EOF
Debug.Print rs.Fields("hdnauf")
rs.MoveNext
Loop
End With
rs.Close
End Sub
__________________
Gibt es eine oder mehrere Möglichkeiten, diese Abfrage in Access deutlich zu beschleunigen - vielleicht indem man das Feld über SQL irgendwie indexiert? Sicher haben Sie diverse Lösungsansätze parat.
Vielen Dank im voraus!
Grüße,
Wilfried