Zum Inhalt springen

Primärschlüssel


MichaK

Empfohlene Beiträge

Ich habe ein Problem beim erstellen eines Datensatzes in MS Access.

Ich füge über "insert into" einen neuen Datensatz in eine Tabelle ein. Soweit ist alles in Ordnung.

Wie finde ich nun den Primärschlüssel dieses Datensatzes heraus? Den Primärschlüssel habe ich nicht selbst gesetzt da es ein "autowert" ist der von MS Access selbst eingefügt wird.

MfG

Michael Klaus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok danke aber ich wollte eigentlich nicht jedesmal die Tabelle öffnen.

Ich möchte den Primärschlüssel, wenn das möglich ist, als Rückmeldung bekommen.

Weil dieser Schlüssel dann in eine Andere Tabelle reingeschrieben werden muss.

Die "insert" Anweisung kommt aus einem VB Programm. ich brauche diesen Primärschlüssel um danach z.B. eine Update Anweisung zu senden.

MfG

Michael Klaus

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

kann es denn sein, dass du zwei datensätze hast, die komplett identisch sind bis auf den pk? (das klingt fuer mich nach einem design-fehler...)

wenn nicht, hast du doch die restlichen attribute des eingefügten datensatzes und kannst dir den pk zu diesem zurückgeben lassen.

alternativ (nur wenn transaktionssicherheit gewaehrleistet ist) kannst du dir den maximal-wert der pk-spalte ausgeben lassen. dies ist der zuletzt eingefügt datensatz...

hoffe, es hilft...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sprache / Programm: Access ab Version 95

Beschreibung

Prüft, ob die angegebene Tabelle einen Index mit diesem Namen hat.

VBA-Quelltext

Public Function IndexExistiert(TabName As String, IndexName As String) As Boolean

Dim IndexNr As Byte

' Enthält die Tabelle überhaupt Index-Felder ?

IndexExistiert = CurrentDb.TableDefs(TabName).Indexes.Count > 0

If Not IndexExistiert Then Exit Function

' Alle Namen aller Indizes vergleichen

For IndexNr = 0 To CurrentDb.TableDefs(TabName).Indexes.Count - 1

If (CurrentDb.TableDefs(TabName).Indexes(IndexNr).Name = IndexName) Then Exit Function

Next IndexNr

IndexExistiert = False

End Function

Argumente der Funktion/Prozedur

TabName

Name der Access-Tabelle

IndexName

Name des Indexes. Dieser Name in der Entwurfsansicht einer Tabelle im Menü 'Ansicht' Menüpunkt 'Indizes' in der Spalte 'Indexname' nachgesehen werden.

Verwendete Variable

IndexNr. Zähler (Laufende Nummer des Indexes)

Rückgabewert

Wahrheitswert, ob der angegebene Index in der Tabelle existiert.

Hinweis

Die Funktion 'SpalteHatIndex' liefert zu einem Tabellen- und Spaltennamen den Indexnamen.

Anwendungsgebiete, Fehler und Warnungen

Die Existenz der Tabelle und der Spalte wird nicht überprüft, so dass ein Fehler auftritt, wenn die Spalte nicht vorhanden ist. Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.

gefunden auf arstechnica.de

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. vereinfachte Tabelle "Test"

Felder:

- Test_ID => Primary Key/ Autowert

- Vorname => Text

- Nachname => Text

2. Ich füge mit "insert into Test (Vorname, Nachname) values ('Micha', 'K')" einen neuen Datensatz über ein VB Programm hinzu.

Um diesen neuen Datensatz weiterverarbeiten zu können brauche ich nun den Wert des Feldes "Test_ID".

Wie finde ich diesen heraus?

MfG

MichaK

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

entweder mittels

"select test_id from test where vorname = 'Micha' and nachname = 'K'"
oder mittels
"select max(test_id) from test"

wobei bei der zweiten möglichkeit sichergestellt sein muss, dass nicht in der zwischenzeit ein anderer datensatz eingefügt wurde...

hoffe, es hilft...

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

aus der access-hilfe durch suchen nach transaktion:

Wenn die Eigenschaft UseTransaction einer Tabellenerstellungsabfrage, Löschabfrage, Anfügeabfrage oder Aktualisierungsabfrage auf Ja eingestellt ist, speichert die Microsoft Jet-Datenbank-Engine die zurückgegebenen Datensätze in einem Cache-Speicher und, sofern erforderlich, die Ergebnisse auf der Festplatte in einer temporären Datenbank. Sobald die Abfrage beendet wurde, liest die Jet-Datenbank-Engine die Datensätze aus der temporären Datenbank und schreibt sie zurück in die ursprüngliche Datenbank.

damit kannst du sicherstellen, dass niemand in die angelegte temporäre tabelle einen datensatz einträgt, und du definitiv den von dir zuletzt eingefügten datensat mit "select max(id)" bekommst...

transaktionen manuell starten (ebenfalls aus der access-hilfe):

Syntax

Einleiten einer neuen Transaktion.

BEGIN TRANSACTION

Abschließen einer Transaktion durch Übernehmen aller Aktionen, die während der Transaktion durchgeführt wurden.

COMMIT [TRANSACTION | WORK]

Abschließen einer Transaktion durch Zurücksetzen (Rollback) aller Aktionen, die während der Transaktion durchgeführt wurden.

ROLLBACK [TRANSACTION | WORK]

sollte das gewünschte ergebnis bringen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von MichaK

gibts noch ne andere Lösung?

Liesst du auch alle Beiträge?

Das Wort Transaktion kam schon min. 2 mal vor.

Da ich mit Access nichts am Hut habe, würde ich sagen schaue einfach mal in die Hilfe von Access, wie du eine Transaction realisierst.

Gruß Jaraz

Nachtrag: Mist zu spät. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...