PDA

Vollständige Version anzeigen : Update // Insert Datenbankzugriff Problem


Dirk1523
26.05.2012, 01:33
Hallo zusammen...ich habe da eine Problem: "syntaxfehler in update-anweisung"
Ich versuche eine Änderung bzw. eine Einfügen von neuen Daten aus VBA in eine Access Datenbank zu vollziehen. Ich habe das ganze jetzt in einen Private Sub gelegt, und seitdem funktioniert das ganze nicht mehr....
Wenn ich nur das reine "Insert" versuche, klappt es Problemlos, nur die kombination macht mir jetzt probleme.
Selbst wenn ich die Update variante einzeln versuche, klappt es auch nicht mehr. kann mir jemand sagen wo ich in dem quellcode evtl n fehler habe???

Dim ID_Pnum As String
Dim P_name, P_vname, P_ktn, P_blz As String

ID_Pnum = Listbox_Personalnummerp.Value
P_name = TextBox1.Value
P_vname = TextBox2.Value
P_ktn = TextBox3.Value
P_blz = TextBox4.Value


Dim con As New ADODB.Connection
Dim cmd As String
Dim rs As New ADODB.Recordset
'Pfad zur Access DB
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"

If ID_Pnum <> "" Then
'Befehl zum Überschreiben der Daten in der DB
cmd = "UPDATE P_Daten " & _
"P_name = '" & P_name & "', " & _
"P_Vname = '" & P_vname & "', " & _
"p_KTN = '" & P_ktn & "', " & _
"P_BLZ = '" & P_blz & "', " & _
"WHERE ID = " & ID_Pnum

con.Open
Set rs = con.Execute(cmd)
con.Close
Else
'Befehl ausführen & Daten in die DB schreiben
cmd = "insert into P_Daten " & " (P_Name, P_Vname, P_KTN, P_blz) values ('" & P_name & "', '" & P_vname & "', '" & P_ktn & "', '" & P_blz & "') "

con.Open
MsgBox ("Kunde erfolgreich geändert")
Set rs = con.Execute(cmd)
con.Close
End If


Vielen Dank bereits im Voraus.

Gruß
Dirk

Lanz Rudolf
26.05.2012, 08:16
Hallo
Wilkommen im Forum :hands:

1. evtl. kannst Du den Code so darselen wie es hier beschrleben ist: (Darstellung von Code-Abschnitten)
http://www.ms-office-forum.net/forum/showthread.php?t=102899#usec
ist einfach schönner / Besser zum Lesen ;)

2. noch was zum Codehier:
Dim P_name, P_vname, P_ktn, P_blz As String

sind nicht alle Felder als String Definiert !
P_name, P_vname, P_ktn sind als Variant (default (Vorgabewert))

Werden Variablen innerhalb einer Zeile Definiert, so muss der Typ hinter jede Variable gesetzt werden. Das Beispiel
nebenan ist falsch, da so nur die letzte Variable als String und die ersten zwei Variablen als Variant deklariert
werden:
Dim strVariable1, strVariable2, strVariable3 As String

Besser so:
Dim strVariable1 As String, strVariable2 As String, strVariable3 As String

Du kannst Dazu auch Hier:
http://dl.dropbox.com/u/46590638/ACC/ACCESS%202000BU%20%20Begleitunterlagen.zip

auf Seite 22 Lesen
auch Das liest Du Da:

Zudem sollte bei möglichen Überschneidungen von Variablentypen zwischen
unterschiedlichen Verweisen explizit die betreffende Bibliothek davor gesetzt werden.
Der letztgenannte Punkt trifft vor allem ab Access 2000 und dort speziell bei der
Deklaration von Recordsets zu, da der Typ Recordset in ADO und DAO vorhanden ist
Dim rs As Recordset
Es ist besser so
Dim rs As DAO.Recordset
In allen Modulen (Allgemene/Klassen) sollte darauf geachtet werden das die Option "Option Explicit" gesetzt ist.

3.
Die Felder die Du in der Function/Sub
definierst solltenNicht Gleich heissen wie in der Tabelle z.B.
Dim P_name as String
evtl. Besser
Dim StrName as String
dann natürlich:
StrName = TextBox1.Value
und
cmd = "UPDATE P_Daten " & _
"P_name = '" & StrName & "', " & _

Auch das "TextBox1" ist nicht ein optimaler Name (automatisch von Access Vergeben
dazu Lies auf Seite 27 in meiner DOC/PDF-Datei

Anne Berg
26.05.2012, 09:14
Hallo,

im Update-Code fehlt das SET:cmd = "UPDATE P_Daten SET " & _
"P_name = '" & P_name & "', " & _
"P_Vname = '" & P_vname & "', " & _
"p_KTN = '" & P_ktn & "', " & _
"P_BLZ = '" & P_blz & "' " & _
"WHERE ID = " & ID_Pnum
und am Ende ist ein Komma zu viel.

Lass dir den generierten Code mit Debug.Print cmd im Direktfenster anzeigen, dann findest du den Fehler auch selbst.
Oder kopiere den dort gezeigten Code in eine Abfrage und teste diese, dann bekommst du meist einen konkreteren Hinweis.

EU-Parts.com
26.05.2012, 09:28
Untestützt Acc2010 jetzt auch Excel-Variablen?
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"
Bisher war in Access eigentlich nur
CurrentProject.Path
gültig ;)

Siehe auch:
Donkarl FAQ: 2.5 Pfad und Name der aktuellen Datenbank (http://www.donkarl.com/FAQ/FAQ2Allgemein.htm#2.5)

Lanz Rudolf
26.05.2012, 09:49
Hallo
Anschliesend an Anne's sehr Guten Vorschlag mit:
Debug.Print cmd

Öffnen Direktfenster (Stgr+G / Ctrl+G) oder im von Ms-Visual Basic Editor Ansicht Direktfenster

ebs17
26.05.2012, 11:10
Untestützt Acc2010 jetzt auch Excel-Variablen?
Mit Access hat der gezeigte Code nur zu tun, indem man von einer dritten Seite (in dem Fall Excel) per ADODB und Abfrage auf eine Access-Datenbank zugreift.
Trotzdem ist die Fragestellung hier im Access-Forum sinnvoller platziert als bei den Kollegen in Excel, weil diese mit Datenbankzugriffen deutlich weniger zu tun haben.

Dirk1523
26.05.2012, 11:37
Mahlzeit...vielen Dank erstmal für alle Hilfestellungen.

allerdings bekomme ich immer noch den gleichen Fehler. "Syntaxfehler in der Update anweisung"

@lanz: Zudem sollte bei möglichen Überschneidungen von Variablentypen zwischen
unterschiedlichen Verweisen explizit die betreffende Bibliothek davor gesetzt werden.
Der letztgenannte Punkt trifft vor allem ab Access 2000 und dort speziell bei der
Deklaration von Recordsets zu, da der Typ Recordset in ADO und DAO vorhanden ist
Woher weiß ich was ich davon nutzen soll? Hab bisher immer nur mit ADO gearbeitet, und speichern und auslesen hat damit bisher immer geklappt.

@anne, lanz: Debug.print cmd
wo gebe ich das an um einen Fehlerhinweis zu erhalten? habe das vor "End Sub" geschrieben, bekomme aber nicht wirklich eine Hilfestellung damit...

Desweiteren frage ich mich warum die Funktion
con.open
Set rs = con.execute(cmd)
con close

nach dem befehl des überschreiben stehen soll?
an der stelle bekomme ich nämlich auch immer eine Fehlermeldung...

anbei nochmal der Code...vielen Dank bereits im Voraus


Private Sub cmd_ändern_Click()
'Button in Userformanmeldung um Personaldaten zu ändern bzw. neu anzulegen

Dim Pnum As String
Dim name As String
Dim Vname As String
Dim Ktn As String
Dim blz As String

Pnum = Listbox_Personalnummerp.Value
name = txtname.Value
Vname = txtvname.Value
Ktn = txtktn.Value
blz = txtblz.Value


Dim con As New ADODB.Connection
Dim cmd As String
Dim rs As New ADODB.Recordset
'Pfad zur Access DB
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"


If Pnum <> "" Then
'Befehl zum Überschreiben der Daten in der DB
cmd = "UPDATE P_Daten" & _
"set" & _
"P_name = '" & name & "', " & _
"P_Vname = '" & Vname & "', " & _
"p_KTN = '" & Ktn & "', " & _
"P_BLZ = '" & blz & "' " & _
"WHERE ID = " & Pnum


con.Open
Set rs = con.Execute(cmd)
con.Close
Else
'Befehl ausführen & Daten in die DB schreiben
cmd = "insert into P_Daten " & " (P_Name, P_Vname, P_KTN, P_blz) values ('" & name & "', '" & Vname & "', '" & Ktn & "', '" & blz & "') "

con.Open
MsgBox ("Kunde erfolgreich geändert")
Set rs = con.Execute(cmd)
con.Close
End If

Debug.Print cmd


End Sub


Adios, gruß
Dirk

Lanz Rudolf
26.05.2012, 11:40
Hallo
mach es einmal hier: (nach dem auffüllen)
cmd = "UPDATE P_Daten" & _
"set" & _
"P_name = '" & name & "', " & _
"P_Vname = '" & Vname & "', " & _
"p_KTN = '" & Ktn & "', " & _
"P_BLZ = '" & blz & "' " & _
"WHERE ID = " & Pnum

Debug.print cmd

und Zeige uns was Du dann im Direkt-Fenster hast ! :)

Dirk1523
26.05.2012, 11:46
Danke...klappt soweit, dann bekomme ich die Fehlermeldung (also gelb-hinterlegt) in der Zeile mit "SET rs = con.Execute(cmd)"

aber dieser befehl ist meiner meinung nach richtig und auch an der richtige Stelle...


Debug.Print cmd

con.Open
Set rs = con.Execute(cmd)
con.Close

Dirk1523
26.05.2012, 11:49
ich korrigiere mich sorry:

folgende Fehlermeldung wird angezeigt

UPDATE P_DatensetP_name = 'sdf', P_Vname = 'Joachim', p_KTN = '47892165', P_BLZ = '10056000' WHERE ID = 4


aber was sagt mir das?

Lanz Rudolf
26.05.2012, 11:50
Hallo
Schön
nur das Fehlt noch:
Zeige uns was Du dann im Direkt-Fenster hast

Sorry habe Korrektur noch nicht Gesehen :(

Lanz Rudolf
26.05.2012, 11:54
Hallo
Schon wieder ich ;)

Sind die Feld p_KTN und P_BLZ als Test (String) Definiert
oder etwa doch als Zahl ?

soll das der Tabellen Name Sein ?

Dirk1523
26.05.2012, 12:03
selbstverständlich als Zahl ;) Danke dir...
hab das in Integer abgeändert...

der Syntaxfehler ist auch weg damit, allerdings kommt jetzt ein "Laufzeitfehler '6' Überlauf"

Lanz Rudolf
26.05.2012, 12:05
Hallo
Du hast evtl. das noch nicht gelesen:
soll das "P_DatensetP_name " der Tabellen Name Sein ?

ebs17
26.05.2012, 12:06
aber dieser befehl ist meiner meinung nach richtig
Ich wäre anderer Meinung: Ein Recordset erzeugt man mit einer Auswahlabfrage. Aktionsabfragen wie hier eine Aktualisierungsabfrage führt man einfach aus, ein Recordset(objekt) benötigt man dazu nicht.

Dirk1523
26.05.2012, 12:12
Das hatte ich überlesen:

P_DatensetP_name ist nicht der tabellenname, der heißt eigentlich nur P_Daten, hab ich da die ' vergessen, so dass er SET und P_name mit hinzugefügt hat???

@ebs17: soll ich dann den Recordset komplett weglassen an der Stelle oder durch einen anderen Befehl ersetzen???

ebs17
26.05.2012, 12:34
soll ich dann den Recordset komplett weglassen
Das kommt darauf an, was Du sonst noch vorhast. Ein Recordsetobjekt versetzt Dich in die Lage, einzelne Werte in der definierten Datensatzgruppe zu lesen oder zu schreiben.

Für eine Aktionsabfrage sollte genügen:
con.Execute cmd

Dirk1523
26.05.2012, 12:49
ich will ja schon daten Ändern und diese dann unter der gleichen ID wieder in der Datenbank speichern... d.h. ich bräuchte dann ja schon n recordsetobjekt.

Kann mir jemand sagen wie ich den folgenden Fehler wegbekomme?
UPDATE P_DatensetP_name = 'sdf', P_Vname = 'Joachim', p_KTN = '47892165', P_BLZ = '10056000' WHERE ID = 4

Meine Tabelle in der Datenbank heißt einfach nur "P_Daten" und er verbindet in dem Code unten mehrere Angaben miteinander...

cmd = "UPDATE P_Daten" & _
"set" & _
"P_name = '" & name & "', " & _
"P_Vname = '" & Vname & "', " & _
"p_KTN = '" & Ktn & "', " & _
"P_BLZ = '" & blz & "' " & _
"WHERE ID = " & Pnum

ebs17
26.05.2012, 13:04
Du darfst die Leerzeichen nicht vergessen, in VBA ersetzt ein Zeilenumbruch nicht ein Leerzeichen:
cmd = "UPDATE P_Daten" & _
" set " & _
"P_name = '" & name & "', " & _
"P_Vname = '" & Vname & "', " & _
"p_KTN = '" & Ktn & "', " & _
"P_BLZ = '" & blz & "' " & _
"WHERE ID = " & Pnum

Debug.print cmd
ich will ja schon daten Ändern
Eine Aktionsabfrage macht das auf einen Rutsch (Massendatenverarbeitung) und ist somit schneller. Einzeln ist da mühselig.

Dirk1523
26.05.2012, 13:23
Ok, Danke, das hab ich jetzt erledigt und der Fehler ist auch weg, stattdessen meckert er jetzt bei der Zeile


Ktn = txtktn.value



Ktn ist als Integer deklariert und in der Datenbank ist das später eine Zahl.
ist das .value dann fehl am Platz ?

Mit der Aktionsabfrage klappt das nun auch einwandfrei...danke.

gruß

Lanz Rudolf
26.05.2012, 15:08
Hallo
evtl. vessuchst Du es so wenn p_KTN eine Zahl ist:
"p_KTN = " & Ktn & ", " & _
solte dann z.B. das geben wenn Ktn = 4 ist:
p_KTN = 4

Thomas Möller
26.05.2012, 15:18
Hallo Dirk,

stattdessen meckert er jetzt bei der Zeile
Code:
Ktn = txtktn.value

wenn Du jetzt noch schreibst, welche Fehlermeldung erscheint, kann man Dir auch Hinweise geben. ;)

CU

ebs17
26.05.2012, 15:39
stattdessen meckert er jetzt bei der Zeile ...
Diese Zeile gab es im eingangs genannten Code noch nicht. Manchmal hilft es schon, den ordentlich formatierten Code zu betrachten, um Rückschlüsse zu erhalten.

Wenn eine Integervariable bei der Wertübergabe meckert, sollte man prüfen, was man da übergibt.

Dirk1523
26.05.2012, 16:16
Also, dann fasse ich nochmal das Problem zusammen:
@lanz: da R_ktn und R_BLZ zahlen bzw. Integervariablen sind, habe ich die ' rausgenommen. Das scheint auch soweit zu klappen....zumindest läuft der teil reibungslos.

in dem Bereich wo ich den Integervariablen die textboxen zuweise, gibt es einen
"Laufzeitfehler '6': Überlauf"
an.
Den bemängelt er mir an der Stelle Ktn = txtktn.value
Es soll eine Zahl welche aus der Datenbank abgerufen worden ist, verändert werden können und dann wieder in Acces unter der gleichen Personalnummer (P_num) abgespeichert werden.
bzw. neu angelegte Daten (name vorname ktn blz) in acces gespeichert werden.

eine weitere Fehlererläuterung im Direktbereich wird mir in diesem Fall nicht angezeigt...obwohl ich wieder "Debug.Print cmd" dahinter stehen habe...

Anbei nochmal der kompllette Code...


Private Sub cmd_ändern_Click()
'Button in Userformanmeldung um Personaldaten zu ändern bzw. neu anzulegen

Dim Pnum As String
Dim name As String
Dim Vname As String
Dim Ktn As Integer
Dim blz As Integer
Dim cmd As String



Pnum = Listbox_Personalnummerp.Value
name = txtname.Value
Vname = txtvname.Value
Ktn = txtktn.Value
blz = txtblz.Value

Debug.Print cmd


Dim con As New ADODB.Connection

Dim rs As New ADODB.Recordset
'Pfad zur Access DB
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"


If Pnum <> "" Then
'Befehl zum Überschreiben der Daten in der DB
cmd = "UPDATE P_Daten " & _
" set " & _
" P_name = '" & name & "', " & _
" P_Vname = '" & Vname & "', " & _
" p_KTN = " & Ktn & ", " & _
" P_BLZ = " & blz & " " & _
"WHERE ID = " & Pnum


con.Open
con.Execute (cmd)
con.Close


Else
'Befehl ausführen & Daten in die DB schreiben
cmd = "insert into P_Daten " & " (P_Name, P_Vname, P_KTN, P_blz) values ('" & name & "', '" & Vname & "', '" & Ktn & "', '" & blz & "') "

con.Open
MsgBox ("Kunde erfolgreich geändert")
Set rs = con.Execute(cmd)
con.Close
End If

End Sub

ebs17
26.05.2012, 16:21
Datentypen haben auch Wertebereiche, für Integer (vgl. Hilfe) gilt ein Wertebereich von -32.768 bis 32.767. Bei größeren Zahlen läuft es halt über.

Welche Zahl genau übergibst Du?

Dirk1523
26.05.2012, 16:34
also bei Ktn können das schon 10 stellige Zahlen und bei blz 8 stellige zahlen....

wenn ich das speichern in access einzeln versuche, klappt es mit diesn anweisungen. obwohl die zahlen größer sind als der wertebereich des integers.

ebs17
26.05.2012, 17:20
Dann siehe mal genau in die Tabellendefinition. Wenn Du dort Long Integer eingestellt hättest, können dort Zahlen bis etwa 2,14 Mrd. erfasst werden, also zehnstellige Zahlen im unteren Bereich.

Da man mit Kontonummern und Bankleitzahlen nicht wirklich rechnet, wäre hier Text als Datentyp recht geeignet, auch unter Anbetracht der Tatsache, dass die kommenden internationalen Kontonummern dann über 20 Stellen haben werden.

Dirk1523
26.05.2012, 17:54
Ja, sind beide als long integer eingestellt.

Ich stell alles mal auf Text um und guck mal ob ich die Fehlermeldung damit wegbekomme...vielleicht klappts ja.

Vielen Dank erstmal...

Dirk1523
29.05.2012, 15:37
Moin zusammen....

leider funktioniert die Änderungsfunktion immer noch nicht.

an dem Quelltext habe ich nichts mehr geändert, bzw. die Änderungen die ich vorgenommen habe, sind wieder rückgängig gemacht worden, da die mich nicht weiter gebracht haben.

Kann mir bitte wer sagen was an dem quellcode noch falsch ist?

Vielen dank bereits im Voraus

Private Sub cmd_ändern_Click()
'Button in Userformanmeldung um Personaldaten zu ändern bzw. neu anzulegen

Dim Pnum As String
Dim name As String
Dim Vname As String
Dim Ktn As Integer
Dim blz As Integer
Dim cmd As String



Pnum = Listbox_Personalnummerp.Value
name = txtname.Value
Vname = txtvname.Value
Ktn = txtktn.Value
blz = txtblz.Value

Debug.Print cmd


Dim con As New ADODB.Connection

Dim rs As New ADODB.Recordset
'Pfad zur Access DB
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"


If Pnum <> "" Then
'Befehl zum Überschreiben der Daten in der DB
cmd = "UPDATE P_Daten " & _
" set " & _
" P_name = '" & name & "', " & _
" P_Vname = '" & Vname & "', " & _
" p_KTN = " & Ktn & ", " & _
" P_BLZ = " & blz & " " & _
"WHERE ID = " & Pnum


con.Open
con.Execute (cmd)
con.Close


Else
'Befehl ausführen & Daten in die DB schreiben
cmd = "insert into P_Daten " & " (P_Name, P_Vname, P_KTN, P_blz) values ('" & name & "', '" & Vname & "', '" & Ktn & "', '" & blz & "') "

con.Open
MsgBox ("Kunde erfolgreich geändert")
Set rs = con.Execute(cmd)
con.Close
End If




End Sub

Josef P.
29.05.2012, 15:56
Hallo!
an dem Quelltext habe ich nichts mehr geändert, bzw. die Änderungen die ich vorgenommen habe, sind wieder rückgängig gemacht worden, da die mich nicht weiter gebracht haben.
Dann wirst du weiterhin Probleme haben, in die Integer-Variablen "Ktn" und "blz" Werte zu speichern, die größer als 32.767 sind. ;)

dim x as Integer
x = 32767 ' => passt noch
x = 32768 ' => Überlauf

mfg
Josef

ebs17
29.05.2012, 16:10
leider funktioniert die Änderungsfunktion immer noch nicht
Ich würde mich primär an der durch den Debugger bemängelten Stelle orientieren. Diese teilst Du aber nicht mit.

Geraten:
'Befehl zum Überschreiben der Daten in der DB
cmd = "UPDATE P_Daten " & _
" set " & _
" P_name = '" & name & "', " & _
" P_Vname = '" & Vname & "', " & _
" p_KTN = " & Ktn & ", " & _
" P_BLZ = " & blz & " " & _
"WHERE ID = " & Pnum
Hier ist von einer Umstellung auf Text noch nichts zu sehen.

Insgesamt wirkt der Code sehr unaufgeräumt. Als Variante mit Verwendung eines Recordsets, da das Ändern sicher nur einen Datensatz betrifft:

Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sQuery As String
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & "\ReisekostenDB.accdb"
con.Open

sQuery = "SELECT P_Name, P_Vname, P_KTN, P_blz FROM P_Daten" & _
" WHERE ID = " & Listbox_Personalnummerp.Value

With rst
.Source = sQuery
.ActiveConnection = con
.Open

If .EOF Then .AddNew
.Fields("P_Name") = txtname.Value
.Fields("P_VName") = txtvname.Value
.Fields("P_KTN") = txtktn.Value
.Fields("P_blz") = txtblz.Value
.Update
.Close
End With
con.Close
Set rst = Nothing
Set con = Nothing
Sichtbar ist vielleicht, dass einige problembehaftete Variablen schlicht entfallen sind.

Dirk1523
29.05.2012, 16:19
Das macht sinn...aber laufen tuts immer noch nicht, stattdessen werden die fehlermeldungen absurder ;)

Laufzeitfehler '-2147217904 (80040e10)'
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

Dirk1523
29.05.2012, 17:17
Moin ebs17,

bekomme allerdings immer noch den Fehler
Laufzeitfehler '-2147217904 (80040e10)'
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

an der Stelle


con.Open
con.Execute (cmd) <-------
con.Close


selbst wenn ich deine Version benutze, bekomme ich eine Fehlermeldung:
"Laufzeitfehler '-2147217904 (80040e10)'
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben"


With rst
.Source = sQuery
.ActiveConnection = con
.Open <---------------------


vielen dank bereits im Voraus

gruß
Dirk

ebs17
29.05.2012, 17:26
Da wird sichtbar die SQL-Anweisung gechecked.
Heißen denn die Felder genau so wie geschrieben?
Wird denn für die ID ein (in Wert und Datentyp) gültiger Parameter übergeben?

Dirk1523
29.05.2012, 17:38
Die felder heißen genauso wie beschrieben, bis auf das ich in deinem quellcode kein "P_num" für die Personal ID finde....

Die ID ist in Access als Felddatentyp "Autowert" gespeichert und übergibt mir überall die korrekten Werte, auch wenn ich die aus Access auslese.

Was du jetzt genau mit Wert meinst ist mir nicht klar....sorry.