Ich habe eine Situation, in der ich eine Pass-through Append/einfügen Abfrage von Werten aus MS-Access 2010 VBA zu SQL Server 2012, die ich gut funktionieren muss, aber das kann in Zukunft Punkt muss mit mehr als 1000 Datensätze arbeiten, so muss ich sicherstellen, dass mein Code das unterbringen wird. Meine Idee war, Modulo zu verwenden, um zu bestimmen, wann ich den 1000. Rekord treffe, um einen neuen ; insert ....
hinzuzufügen, nicht sicher, ob es der beste Ansatz ist, aber ich habe Probleme mit .AbsolutePosition
zu arbeiten.MS Access VBA arbeitet mit AbsolutePosition
Bisher habe ich:
Dim rs As DAO.Recordset
Dim strsql As String
Set rs = CurrentDb.OpenRecordset("MyTable")
strsql = "insert into [dbo].[SomeTable](field1, field2) values"
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
Do Until rs.EOF = True
msgbox rs.AbsolutePosition 'error with whatever I do here
'Something like the below is what I actually want to get to
'If rs.AbsolutePosition Mod 999 = 0 Then strsql = Left(strsql, Len(strsql) - 1) & "; insert into [dbo].[SomeTable](field1, field2) values"
strsql = strsql & " (" & rs!field1 & "," & rs!field2 & "'),"
rs.MoveNext
Loop
strsql = Left(strsql, Len(strsql) - 1) & ";"
Else
MsgBox "No Data"
Exit Sub
End If
Ich erhalte eine Fehleroperation nicht für diese Art von Objekt unterstützt, wenn entweder versuchen, eine Berechnung mit rs.AbsolutePosition
Ich tippte meine Antwort, als Ihr Schnitt erschien und sie sahen im Grunde gleich aus, werden später als Pass definiert, ich baue nur eine Saite. Aber ich übertreibe es trotzdem und werde deine Antwort verwenden, werde mich nicht darum kümmern, warum die überkomplizierte Version nicht funktioniert. Vielen Dank –