ado recordset nicht in sql Anweisungen nutzbar

17/03/2008 - 17:34 von uwe | Report spam
Hallo zusammen,

Ich versuche schon geraume Zeit mein Access 2007 zu überreden, ein
voll funktionierendes ADO-Recordset als Tabelle in einer SQL Anweisung
zu akzeptieren. Bisher weigert es sich standhaft mit der Fehlermeldung
" Fehler 3078 Das Microsoft Office Access-Datenbankmodul findet die
Eingabetabelle oder Abfrage 'adrs' nicht."

Hier der zugörige Code:

Private Sub Form_Load()
Dim adrs As ADODB.Recordset
Dim conn As ADODB.Connection
Dim löschabfrage As QueryDef
Dim strSQL As String
Set conn = New ADODB.Connection
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"
Set adrs = conn.Execute("SELECT mail,givenName, sn,sAMAccountName"
_
& " FROM 'LDAP://cn=users,dc=meine,dc=domàne,dc=de'" _
& " WHERE memberOf = 'CN=mitarb,CN=Users,DC=meine,DC=domàne,DC=de'
AND objectCategory = 'person'" _
& " AND givenName = '*' AND l = '*'" _
& " ORDER BY sAMAccountName")
'alte Eintràge in Tabelle AD löschen
Set löschabfrage = CurrentDb.QueryDefs("LöschenAD")
löschabfrage.Execute
'Personaltabelle mit aktuellen Eintràgen im Active Directory
synchronisieren
strSQL = "INSERT INTO AD ([Kürzel],[Nachname],[Vorname],[Mail])
SELECT * FROM adrs"
' While Not adrs.EOF
' With adrs
' strSQL = "INSERT INTO AD " & _
' "([Kürzel],[Nachname],[Vorname],[Mail]) " & _
' "VALUES ('" & .Fields("sAMAccountName") & "', " & _
' "'" & .Fields("sn") & "', " & _
' "'" & .Fields("givenName") & "', " & _
' "'" & .Fields("Mail") & "');"
CurrentDb.Execute strSQL, DB_FAILONERROR < Fehler bei
Ausführung
' End With
' adrs.MoveNext
' Wend
End Sub

Mit den auskommentierten Zeilen bekomme ich die Tabelle "AD" zwar
gefüllt, jedoch mit deutlicher (inakzeptabler) Zeitverzögerung. Hat
jemand eine Idee, wie man ADO-Recordsets für Access "sichtbar" macht,
so das man sie auch wirklich in Abfragen nutzen kann?

Besten Dank im voraus.
Gruß
Uwe
 

Lesen sie die antworten

#1 Michael Zimmermann
17/03/2008 - 17:53 | Warnen spam
Hallo!

uwe:
Ich versuche schon geraume Zeit mein Access 2007 zu
überreden, ein voll funktionierendes ADO-Recordset als
Tabelle in einer SQL Anweisung zu akzeptieren.



Das geht nicht. Ein Recordset kann nicht Datenherkunft
in einem FROM-Abschnitt in SQL sein.

Du kannst aber fogendes machen:

SELECT
Wasauchimmer
FROM
(
SELECT
Allerleizoich
FROM
AllerleiTabellenGejoint
WHERE
...
) As Tmp
WHERE
...

Das heißt, Du kannst das SQL, das Deinem Recordset
zugrundeliegt, prinzipiell nach obigem Muster in einem
anderen SQL wie eine Tabelle behandeln. Entgegen
anderslautenden Behauptungen heißt das aber nicht
Subquery, sondern Derived Table.

Gruß aus Mainz
Michael

Ähnliche fragen