ID zur Laufzeit auslesen / ermitteln?



  • Vielleicht kann jemand helfen?

    Ich erstelle gerade unter VC6 eine Db als SDI. Die zu erstellende Db(unter Access) enthält 3 Tabellen die in keinsterweise eine direkte Beziehung haben. Jetzt habe ich das Problem, das ich einen neuen Datensatz in der 1.Tabelle anlegen will und gleichzeitig in der 2.Tabelle die weiteren Kreterien zum Datensatz. Die ID der 1.Tabelle wird per AutoWert angelegt (funzt). Diese kann ich aber nicht gleichzeitig auslesen und an die 2.Tabelle übergeben. Das alleinige anlegen der einzelnen Datensätze in den Tabellen ist ohne weiteres möglich. Was muß ich aber tun um dies gleichzeitig generieren zu können?

    Danke für Eure Hilfe.
    Thomas D.



  • Ich hab zwar nur mit dem Zugriff auf Tabellen über PHP erfahrung und da sind es MySQL tabellen gewesen, aber ich würde als Lösungsvorschlag folgendes anbringen:

    1. schreib die informationen in die 1. Tabelle der Datenbank
    2. lies die 1. Tabelle falsch herum aus, damit du den letzen Wert der ID-Spalte hast
    3. Diesen Wert mit den weiteren werten in die 2. Tabelle der Datenbank schreiben

    dann schreibst du am besten eine neue Funktion, die die zuständigen Funktionen der oben aufgelisteten Punkte aufruft, damit das unmittelbar hintereinander passiert und es beim schreiben durch weitere funktionen nicht zu programmfehlern kommt !

    Hoffe ich konnte dir helfen !



  • Danke für deine Information, habe da nur ein Problem es müsste zu gleich erfolgen (das schreiben in beide Tabellen), und da ich nicht sagen kann ob die letzte ID auch die neue ID ist und nicht eine zwischen geschriebene (zBsp. ein gelöschter Datensatz wird überschrieben)habe ich da so meine Bedenken.Vielleicht kennst du ja noch eine Möglichkeit, die gerade generierte ID auszulesen.

    MfG
    Thomas D



  • Hallo,

    aus der ACCESS(2002/XP)-Hilfe:

    Um den letzten Wert zu ermitteln, der für eine automatisch inkrementierte Spalte verwendet wurde, können Sie die folgende Anweisung verwenden: SELECT @@IDENTITY. Sie können keinen Tabellennamen angeben. Der zurückgegebene Wert stammt daher aus der zuletzt verwendeten Tabelle, die eine automatisch inkrementierte Spalte enthält, die aktualisiert wurde.

    wenn ich das richtig verstanden habe, sollte das weiterhelfen, ich weiß aber nicht, ab welcher ACCESS-Version das bereits funktioniert...

    MfG



  • Danke ersteinmal Euren Antworten, vielleicht habe ich mich oben etwas falsch ausgedrückt. Ich habe kein Problem mit Datenbanken allgemein. Mein Problem ist, das ich eine Datenbank unter der MFC mit "Visual C++ 6.0 Studio" erstellen will. Auch das ist soweit kein Problem. Nur wenn ich gleichzeitig in 2 Tabellen schreiben will gibt es Probleme mit der zu übergebenen ID.

    MfG
    Thomas D 😞 😕


Anmelden zum Antworten