Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Excel VBA Insert-Befehl auf Datenbank mit Rückgabe der ID des neuen Datensatzes

Mitglied: KgFmB

Wer kann helfen.

Hallo zusammen,

folgendes müsste ich noch realisieren.

Ich habe eine Excelsheet, in dem ich Daten aus einer Datenbank lese.
Wegen mehrfachzugriff.

Nun speichere ich mir die ID des Datensatzes beim Auslesen in die erste Spalte.
Ich bin soweit, auch einen neuen Datensatz in die Datenbank zu erstellen.
Jetzt würde ich aber gerne im nächsten Schritt auch gleich die neue erstellte ID auszulesen.

Weil ich per VBA bei jeder Zelländerung eine Speicherung erzeuge und vor Update die erste Zelle der Spalte (steht ja die ID)
auslese und auf dieser ein Update mache.

Welche Möglichkeiten gibt es, dies zu realisieren.

Vielleicht kann mir einer weiterhelfen.

MfG
KgFmB

Content-Key: 101527

Url: https://administrator.de/contentid/101527

Ausgedruckt am: 04.08.2021 um 02:08 Uhr

Mitglied: KgFmB
KgFmB 11.11.2008 um 14:10:35 Uhr
Goto Top
So hab mich jetzt erstmal damit beholfen, das ich nach dem INSERT gleich ein SELECT mit dem TOP 1 bzw. Limit 1 befehl.

wenn jedoch einer eine Alternativlösung hat.
Ich bin offen für alles.

MfG
KgFmB
Mitglied: solverone
solverone 11.11.2008 um 15:31:10 Uhr
Goto Top
Hallo,
falls du noch einen weiteren primary key als "ID" in der tabelle hast, dann würde ich darauf ein SELECT mit Where-Klausel machen.

Mike
Mitglied: KgFmB
KgFmB 11.11.2008 um 15:45:01 Uhr
Goto Top
Wäre auch eine Idee.
Aber wie erhalte ich von VBA aus den Key?
Ich mach einen einfaches "INSERT" und würd von dem erzeugten Datensatz die ID wieder zurückgeben.

Also mit dem Versuch TOP 1 bzw LIMIT 1 funktioniert es einwandfrei, muss halt hoffen, das nicht zwei User gleichzeitig einen Datensatz anlegen.
User A speichert
User B speichert
User A frägt den letzten Datensatz ab -> erhält die ID von User B
User B frägt den letzten Datensatz ab -> erhält die ID von User B

MfG
KgFmB
Mitglied: solverone
solverone 11.11.2008 um 15:49:17 Uhr
Goto Top
Also
insert into <tablename>(ID,Key2) Values(null,'was weiß ich')
so in der art sieht deine insert anweisung aus, wobei key2 der weitere primary key ist...
die ID bekommst du dann mit
SELECT ID FROM <tablename> WHERE Key2='was weiß ich'

und dann ist es wurscht, welcher benutzer inzwischen datensätze angelegt hat...

mike
Mitglied: KgFmB
KgFmB 18.11.2008 um 14:25:33 Uhr
Goto Top
Stimmt hast recht. Darauf bin ich gar nicht so gekommen. Ich kann dem si verwenden.
Danke.
Mitglied: Biber
Biber 18.11.2008 um 20:33:00 Uhr
Goto Top
Moin KgmB,

ich finde das zu kompliziert und die Vorstellung von zwei redundanten PrimaryKeys in einer Tabelle schlichtweg gruselig.
Es gibt doch in der Datenbank (Access? mySQL? Oracle? DB2?) offensichtlich ein Feld "ID" mit einer automatisch erzeugten eindeutigen Nummer (AutoWert oder AutoIncrement oder Sequence oder Identity oder wie es die Datenbank nennen mag.)
Und "normalerweise" oder zumindest wählbar kann dieser autmatisch generierte Wert doch aufsteigend festgelegt werden.

Wenn du also in der Datentabelle noch ein Feld "Username" anfügst mit dem Defaultwert des Usernamens (sei es des Datenbankusers oder des unter Windows angemeldeten Users =%username%), dann bekommst Du doch immer den jüngsten von diesem Benutzer angelegten Satz mit einer Abfrage:
"gib mit die höchste ID mit dem Usernamen des angemeldeten Users, oder auf SQLisch:
[wenn es denn über VBA-Krams und den %username% der Windows-Umgebung sein soll.]
Oder bei "richtigen Datenbanken halt über das special register USERID, also den Datenbank-User.]

[Edit] Ergänzung:
Den ganzen neu(est)en Datensatz würdest Du z.B. so erhalten:
[/Edit]

Grüße
Biber
Heiß diskutierte Beiträge
question
Backup-Konzept für HeimgebrauchmossoxVor 1 TagFrageBackup13 Kommentare

Guten Tag zusammen, ich bin mir nicht sicher, ob ich das richtige Unterforum gewählt habe, denn meine Frage berührt auch den Bereich Hardware und Netzwerke. ...

question
Günstiges Open-Source NAS für HeimgebrauchpanguuVor 1 TagFrageSAN, NAS, DAS10 Kommentare

Hallo, mit NAS-Systemen hatte ich bisher gearbeitet: Synology, QNAP, Buffalo, etc. Dabei kommen proprietäre Betriebssysteme zum Einsatz, die sich natürlich von Hersteller zu Hersteller unterscheiden ...

question
Domains, die mir gehören gelöst IT-EinsteigerVor 1 TagFrageInternet Domänen5 Kommentare

Hi, Ich habe verschiedene Domain, bei verschiedenen Hostern. Da ich hier und da nur eine Domain gekauft habe, um den Hoster zu testen, habe ich ...

question
Ipv6 RouterliodiceVor 1 TagFrageDSL, VDSL10 Kommentare

Hallo zusammen, ich hoffe ihr könnt mir weiterhelfen, ich benötigen einen ADSL Router (Kabelgebundenen) der IPv4 und IPv6 kann, also Dual Stack (DHCP Extern und ...

question
PC geht ohne Vorwarnung aus und fährt wieder hochWasserstrahlbiegezangeVor 1 TagFrageHardware14 Kommentare

Hi, vor einiger Zeit hat mein PC angefangen sich merkwürdig zu verhalten. Er stürzte einfach ab, ging dabei teilweise ohne Vorwarnung aus, und fuhr wieder ...

question
Server 2019 std. auf deutsch umstellenBender999Vor 11 StundenFrageWindows Server19 Kommentare

Hallo, kann mir einer erklären wie um alles in der Welt ich meinen Server 2019 std. auf deutsch umstellen kann? ...

question
Prozess bzw. Programm zu Verbindung auf IP herausfinden gelöst dcmindenVor 1 TagFrageWindows Netzwerk8 Kommentare

Wir bekommen bei diversen Kunden regelmäßig (alle 6 - 8 Tage) Alarmmeldungen von der Firewall zu einer geblockten Verbindung zu 68.183.140.225 Port 443. Jetzt möchten ...

question
Textdatei anhand xy-Koordinaten auslesen gelöst LeaX55Vor 1 TagFrageBatch & Shell11 Kommentare

Hallo Gemeinde, gibt es in Powershell eine Möglichkeit ein Text/Zahl aus einer Textdatei auszulesen anhand xy-Koordinaten? Als Beispiel habe ich eine Textdatei, aus der ich ...