Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

DB Abfrage, Verweis wird nicht gefunden..

DB Abfrage, Verweis wird nicht gefunden..
04.03.2024 13:47:46
Marc Franz
Hallo Ihr Lieben,

ich habe mal wieder ein Problem komme da nicht weiter.

Ich habe eine AccessDatenbank mit mehreren Tabellen.
(hier wichtig eine Tabelle mit Stamminformationen der MA und eine Tabelle in welchem Bereich der Mitarbeiter arbeitet und von wann bis wann)

Nun habe ich folgende Abfrage gemacht:



SQLCommand = "SELECT * FROM tbl_XistStation INNER JOIN tbl_XStamm_MA ON tbl_XistStation.SAP = tbl_XStamm_MA.SAP WHERE tbl_XistStation.Station = '" & Station & "' ORDER BY tbl_XistStation.SAP"


Die Abfrage funktioniert auch.
Aus diesen funsionierten Tabellen möchte ich folgende Werte auslesen:
aus tbl_XStamm_MA:
- SAP, Vorname, Nachname, Geburtsdatum

Diese Werte weise ich dann Zellen in der Zieltabelle zu



.Range("E" & MAEintag1) = DBrecord("tbl_XStamm_MA.SAP")

funktioniert einwandfrei,
es werden alle SAP aufgelistet, die der Station zugeordnet ist..

Möchte ich allerdings die anderen Wunschwerte zuweisen



.Range("C" & MAEintag1) = DBrecord("tbl_XStamm_MA.Nachname")
.Range("D" & MAEintag1) = DBrecord("tbl_XStamm_MA.Vorname")
.Range("F" & MAEintag1) = DBrecord("tbl_XStamm_MA.Geburtsdatum")


Kommt der Hinweis

Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden.




Hier ein Überlick der in der Tabelle genutzten Werte

Userbild

Entweder ich finde meinen Rechtschreibfehler nicht, oder ich mache einen anderen Fehler.
Ich finde da nicht den Quatsch den ich verbrochen habe...

gesamt sieht der Code so aus:



On Error GoTo DBFehler
DBcon.Open
DBcon.BeginTrans
'MA Station einladen
SQLCommand = "SELECT * FROM tbl_XistStation INNER JOIN tbl_XStamm_MA ON tbl_XistStation.SAP = tbl_XStamm_MA.SAP WHERE tbl_XistStation.Station = '" & Station & "' ORDER BY tbl_XistStation.SAP"
Set DBrecord = DBcon.Execute(SQLCommand)
Do While Not DBrecord.EOF
With Sheets("Station")
.Range("A" & MAEintag1) = MACount 'Funktioniert
.Range("C" & MAEintag1) = DBrecord("tbl_XStamm_MA.Nachname")
.Range("D" & MAEintag1) = DBrecord("tbl_XStamm_MA.Vorname")
.Range("E" & MAEintag1) = DBrecord("tbl_XStamm_MA.SAP") 'Funktioniert
.Range("F" & MAEintag1) = DBrecord("tbl_XStamm_MA.Geburtsdatum")
End With
MAEintag1 = MAEintag1 + 1
MACount = MACount + 1
DBrecord.MoveNext
Loop

DBcon.CommitTrans
DBcon.Close



Viele Grüße Marc

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DB Abfrage, Verweis wird nicht gefunden..
04.03.2024 16:30:07
Oberschlumpf
Hi Marc,

a) ich kenn mich mit Access-VBA insgesamt eher nur wenig aus
b) und wenn ich zusätzlich zu a) deine Dateien (xls + mdb) nicht kenne, wirds mit meinem Verstehen nicht unbedingt besser

Aber gefunden hab ich das hier:
https://administrator.de/forum/mysql-abfrage-ausfuehren-und-als-xls-in-bestimmten-ordner-ablegen-110033.html

schau dir mal den Codeteil zwischen...

Do While Not RS.EOF
und
Loop

...an.

Vielleicht musst du mit .Item() arbeiten.
(frag mich jetzt nicht, wieso dein Code für 2 Zuweisungen funktioniert - ich weiß es nicht :-) )

Hilfts?
Nein? Dann weiß ich auch nich weiter.

Ciao
Thorsten


Anzeige
AW: DB Abfrage, Verweis wird nicht gefunden..
04.03.2024 19:11:28
Yal
Hallo Marc,

ich sehe hauptsächlich eine Kleinigkeit, die zur Störung führen könnte (kommt auch innerhalb von Excel zur Störung):
.Range("C" & MAEintag1) = DBrecord("tbl_XStamm_MA.Nachname")
Links und Recht von "=" sind Objekte. Mindestens einer davon sollte eine Eigenschaft vorweisen:
.Range("C" & MAEintag1) = DBrecord("tbl_XStamm_MA.Nachname").Value
oder umgekehrt oder beiden.

Es fehlt in deinem Code den Header der Sub und die Deklaration der Variablen. Arbeitest Du mit ADODB oder DAO? DAO ist zwar leicht veraltet, funktioniert mit Access aber weiterhin gut und ist leichter zu implementieren. Aber ich würde eher ADODB verwenden.

Du brauchst am Ende keine "CommitTrans", weil Du nur lesend auf die DB zugreift.
Vielleicht solltest Du deine Abfrage auf die "tbl_XStamm_MA"-Felder beschränken, wenn Du die anderen nicht braucht. Es könnte dazu führen, dass durch die Beschränkung auf einer Tabelle die Abfrage auf dem Tabellennamen als Präfix verzichtet.

Zwecks Geschwindigkeit würde ich die Events unterdrücken (weil in der Zelle geschrieben wird)

Code:
Sub Daten_ablegen()

'Unter Anbindung (Extras, Verweise...) an
'"Microsoft ActiveX Data Objects 6.1 Library"
Dim DBCon As ADODB.Connection
Dim DBRecord As ADODB.Recordset
Dim i As Long
Dim j As Long

On Error GoTo DBFehler
DBCon.Open 'hier fehlt der ConnectionString
'MA Station einladen
SQLCommand = "SELECT tbl_XStamm_MA.* " _
& "FROM tbl_XistStation " _
& "INNER JOIN tbl_XStamm_MA ON tbl_XistStation.SAP = tbl_XStamm_MA.SAP " _
& "WHERE tbl_XistStation.Station = '" & Station & "' " _
& "ORDER BY tbl_XistStation.SAP"

Set DBRecord = DBCon.Execute(SQLCommand)
Application.EnableEvent = False
Do While Not DBRecord.EOF
i = i + 1
With Sheets("Station").Rows(i + 3) 'fester Versatz, weil gleichzeitig hochlaufend
.Cells(1).Value = i 'Zelle 1 von einer Zeile ist "A"
.Cells(3).Value = DBRecord("tbl_XStamm_MA.Nachname")
.Cells(4).Value = DBRecord("tbl_XStamm_MA.Vorname")
.Cells(5).Value = DBRecord("tbl_XStamm_MA.SAP")
.Cells(6).Value = DBRecord("tbl_XStamm_MA.Geburtsdatum")
End With
DBRecord.MoveNext
Loop
Application.EnableEvent = True
Set DBRecord = Nothing
DBCon.Close
End Sub


VG
Yal
Anzeige
Hmm...
04.03.2024 19:13:38
Yal
Ich sehe gerade, dass ich vergesen habe
Dim J As Long
wieder rauszuschmeissen.
:-(

VG
Yal
AW: Hmm...
06.03.2024 13:16:12
Marc
Hallo an Alle für die Hilfen und Anmerkungen,
ich habe tatsächlich einen Weg gefunden

Ich habe in DBrecord(" ") einfach den Tabellennamen jeweils weg gelassen, und schon ging es.
die anderen Anmerkungen habe ich aber Teils auch übernommen weil sie einfach gut sind.

Danke
AW: DB Abfrage, Verweis wird nicht gefunden..
04.03.2024 17:09:25
schauan
Hallöchen,

@Thorsten,
die eine Zuweisung ist der Schleifenzähler. Die zweite Zuweisung funktioniert vermutlich, weil sie die "spalte" für den Join ist.

@Marc,
1)
eventuell versuchst Du mal, mit Aliasen für die Tabellen zu arbeiten.
SELECT * FROM tbl_XistStation As tbl_a INNER JOIN tbl_XStamm_M As tbl_b ON tbl_a.SAP = tbl_b=SAP ...
dürfte aber am Ergebnis nix ändern
2)
wie sieht es denn mit DBrecord im Lokalfenster aus, sind da die Daten drin und wenn ja, wo?
3)
Beschränke die Abfrage mal nur auf die benötigten Felder statt *
4)
Probiere mal vor der Schleife DBrecord.MoveFirst
5)
...



Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige