Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zugriff aus Excel auf Access

81 views
Skip to first unread message

Alexander

unread,
Dec 11, 2003, 4:20:23 AM12/11/03
to
Hallo,
Ich habe ein Excelsheet in dem ein verschiedene Namen
eingetragen werden. In einer Tabelle einer Accessdatenbank
ist eine ID zu diesem Wert hinterlegt.
Wie kann ich nun auf die Access-Tabelle zugreifen und die
entsprechende ID auslesen um diese in eine Variable zu
legen ?

MfG
Alex

stefan onken

unread,
Dec 11, 2003, 5:20:47 AM12/11/03
to
hallo Alex,
für Datenbanken gibt es 2 Wege, ADO und DAO. DAO ist
älter und funktioniert "eigentlich" nur noch aus
Kompatibilitätsgründen.
Da ich mich jedoch mit ADO noch nicht beschäftigt habe,
hier eine DAO-Möglichkeit:

im VBA-Editor einen Verweis (Extras/Verweise) auf MS-DAO
Object Library

in ein Modul:
Sub AccessID()
Dim db As Database, rs As Recordset, n, suche
Set db = OpenDatabase("D:\test\db1.mdb")
Set rs = db.OpenRecordset("Tabelle1", dbOpenDynaset)
n = ActiveCell.Value 'der zu suchende Name
suche = "Name = '" & n & "'"
rs.FindFirst suche
MsgBox rs!ID
Set rs = Nothing
Set db = Nothing
End Sub

Gruß
stefan

>-----Originalnachricht-----

>.
>

Martin Fischer

unread,
Dec 11, 2003, 6:24:46 AM12/11/03
to
stefan onken wrote:
Hallo Stefan,

> Da ich mich jedoch mit ADO noch nicht beschäftigt habe,
> hier eine DAO-Möglichkeit:

Als Beispiel dasselbe mit ADO:
Sub DBAbfrage()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim n As Long
Dim i As Long
Const DATEN_QUELLE As String = "c:\test.mdb"
Const TABELLE As String = "Tabelle1"
Set cnn = New ADODB.Connection

'Verbindung herstellen mittels OLE DB Data Provider
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DATEN_QUELLE

'1. Datensatz der Tabelle öffnen
Set rst = New Recordset
rst.Open TABELLE, cnn, adOpenDynamic, adLockReadOnly

'Datensatz, welcher den gleichen Namen besitzt finden.
rst.Find "Name = '" & ActiveCell.Value & "'"

'ID des 1. Gefundenen Datensatzes ausgeben.
MsgBox rst.Fields("ID").Value
End Sub

Natürlich muss ein Verweis auf die MS-ADO Bibliothek vorliegen damit
das ganze funktioniert.

Gruss
Martin Fischer

Alexander

unread,
Dec 11, 2003, 7:01:06 AM12/11/03
to
Danke für die schnelle Antwort, aber wenn ich den Pfad
durch meinen erstze und dann starte bringt er mir den
Fehler:
Laufzeitfehler 3343
Unrecognized database format: 'H:\MyDB\testdb.mdb'.
Ich hab den Namen aber auf jedenfall richtig.
Was ist da der Fehler?

MfG
Alex

stefan onken

unread,
Dec 11, 2003, 7:23:07 AM12/11/03
to
hallo Martin,
ich hatte eben schon ein wenig rumexperimentiert, war
aber bei rec.Open "Tabelle1",conn wegen Fehlermeldung
hängengeblieben.

Ich werd dein Bsp "zu den Akten" (sprich zu meiner VBA-
Sammlung) nehmen als Anschauungsbeispiel für später.

Vielen Dank!
stefan

>-----Originalnachricht-----

>.
>

Martin Fischer

unread,
Dec 11, 2003, 7:25:28 AM12/11/03
to
Alexander wrote:
Hallo Alex,

> Fehler:
> Laufzeitfehler 3343
> Unrecognized database format: 'H:\MyDB\testdb.mdb'.
> Ich hab den Namen aber auf jedenfall richtig.
> Was ist da der Fehler?
Ich gehe davon aus, dass Du die DAO-Variante von Stefan genommen hast,
gemäss folgendem KB-Artikel von Microsoft
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q238/4/01.asp&NoWebContent=1
taucht der Fehler auf, wenn Du einen Verweis (im VBA-Editor
Extras/Verweise) auf die Objektbibliothek "Microsoft DAO 3.51 Object
Library" legst, wähle diesen Verweis wieder ab und nimm stattdessen den
folgenden "Microsoft DAO 3.6 Object Library", dann sollte es
hoffentlich klappen. In diesen Zusammenhang wäre noch gut zu wissen,
welche Access Version Du hast.

Gruss
Martin Fischer

stefan onken

unread,
Dec 11, 2003, 7:40:49 AM12/11/03
to
hallo Alex,
ich habe mal nach der Fehlermeldung gegoogelt. Das
Problem scheint für Access2000 nicht unbekannt:

http://groups.google.de/groups?hl=de&lr=&ie=ISO-8859-
1&q=Unrecognized+database+format&btnG=Google+Suche&meta=gr
oup%3Dmicrosoft.public.de.*

(link zusammensetzen)

Anscheinend brauchst du die Microsoft DAO 3.6 Object
Library (welche hast du in den Verweisen ?)


Gruß
stefan

>-----Originalnachricht-----

>.
>

Alexander

unread,
Dec 11, 2003, 7:54:40 AM12/11/03
to
Danke für die Hilfe hab jetzt DAO und den Verweis auf 3.6.
So funktioniert es.

MfG
Alex

Alexander

unread,
Dec 11, 2003, 9:07:28 AM12/11/03
to
Hab noch ein kleines Problem wie ist es nun möglich die ID
des letzten Datensatzes zu bekommen.

MfG
Alex

Martin Fischer

unread,
Dec 11, 2003, 9:22:00 AM12/11/03
to
Alexander wrote:
Hallo Alex,

> Hab noch ein kleines Problem wie ist es nun möglich die ID
> des letzten Datensatzes zu bekommen.
zum letzten Datensatz springst Du mit:
rs.MoveLast
Danach kannst Du wie gewohnt die ID, z. B. mit
MsgBox rs!ID
ausgeben.

Gruss
Martin Fischer

Alexander

unread,
Dec 11, 2003, 9:27:54 AM12/11/03
to
Danke für die Hilfe.

MfG
Alex

0 new messages