![]() |
ID um eins erhöhen!?!?
HI,
Ich habe mal wieder zu Delphi zurückgefunden und arbeite an einem neuen programmm. Was mich auch wieder vor neue Probleme stellt. Ich muss mich also erst einmal wieder reinfitzen und hoffe das ihr mir ein bizzl helfen könnt. Folgendes Problem: Nachdem ich einen Namen in der Combobox ausgewählt habe, lassen ich mir die anderen daten der person in einem neuen fenster anzeigen. - Soweit kein Problem - Ich möchte nun eine neue Person anlegen, dabei soll die ID automatisch um eins erhöht werden und gleich im Feld nr angezeigt werden. Ich weiß, dass es in der tabelle automatisch per autoinc um eins erhöht wird, aber erst wenn ich das ganze speichere! oda?, es soll aber gleich angezeigt werden, auch wenn noch keine anderen daten drin sind. What to do? Thx, Plautzer |
Re: ID um eins erhöhen!?!?
Hi plautzer,
ich würde in der DB schonmal einen Datensatz anlegen, bevor ich die Daten des Users ablege. Nach der Eingabe der Daten akualisierts du dann die DB. Einfach die ID des letzens Datensatzes um 1 erhöhen ist bei Datenbank-Anwendungen immer schlecht. In der Zwischenzeit kann ein anderer Benutzer ja schon einen weiteren Datensatz angelegt haben. Die IDs würden in diesem Fall nicht mehr stimmen. MfG Christian |
Re: ID um eins erhöhen!?!?
So etwas habe ich mir auch schon gedacht, ich weiss bloß wie ich das umsetzen kann!
Delphi-Quellcode:
THx,
DM.Query.Close;
DM.Query.SQL.Clear; DM.Query.SQL.Add('insert into haus.db;'); // wie erhöe ich nun die id um eins`? funzt das automatisch? DM.Query.open; plautzer |
Re: ID um eins erhöhen!?!?
das kommt drauf an, wie du die DB aufgebaut hast, wenn das Feld ID auf automatic increase (oder so ähnlich :gruebel: ) steht, dann musst du dich darum nicht kümmern. Falls es noch nicht so ist solltest du das ändern.
In meinen Augen ist es wesentlich sinnvoller soetwas von der DB verwalten zu lassen. Das hat den Vorteil das du nie die gleiche ID hast. Auch wenn zwischenzeitlich Datensätze gelöscht werden wird die ID weiter erhöht. MfG Christian |
Re: ID um eins erhöhen!?!?
Hi!
Zitat:
Ciao Frederic |
Re: ID um eins erhöhen!?!?
Ich habe das feld ID als zähler definiert, also wird es automatisch erhöht.
Ich weiß nur nicht wie da der SQL-COde der query aussehen soll, wenn ich schon einen Datensatz mit Nullwerten anlegen soll. plautzer |
Re: ID um eins erhöhen!?!?
Zitat:
Edit: @ Plautzer: schreib doch einfach einen Leerstring in irgendein Feld, das sollte nicht das Problem sein |
Re: ID um eins erhöhen!?!?
Besser gleich anständige Datenbank verwenden. Ich empfehle Interbase. :lol: Dann in DB einen Before Insert Trigger anlegen und basta ist.
|
Re: ID um eins erhöhen!?!?
Guten Morgen,
den Datensatz schreibst Du einfach mit einem Insert in die DB, in dessen Values-Bereich das ID Feld nicht enthalten ist. DB-Struktur ID, F2, F3
SQL-Code:
Das eigentliche Problem ist nun herauszufinden, welche ID von der DB vergeben wurde. Bei MSSQLServer kann man danach die Variable @@Identity abfragen. Access ab Version 2000 kann das auch. Sollte die DB dies nicht unterstützen, muß Du den erstellten Datensatz wieder einlesen, d.h. eines der anderen Felder muß ebenfall "unique" sein , weil dies sonst nicht möglich wäre.
insert into Tab(F2,F3) values (1,2)
Viel Erfolg. Niels |
Re: ID um eins erhöhen!?!?
@hansa
was ist der unterschied zwischen BDE und Interbase? Ist Interbase ebenfalls so einfach zu bearbeiten? Noch bin ich am begin meines Programmes also könnte ich mich noch umentscheiden. --- Frage zum speichern: ich habe es nun hinbekommen mit der Erstellung des neuen datensatzes, wenn der jetzt nicht nochmal gespeichert wird, soll wieder gelöscht werden. Das bekomme ich noch hin, ich weiss bloß nicht wie ich ermitteln kann ob etwas eingegeben und noch nicht gespeichert wurde, damit ich dann eine meldung vorm schließen erscheinen kann. Jm. ne idee? Plautzer |
Re: ID um eins erhöhen!?!?
Ich würde dir dann empfehlen schnell auf Interbase umsteigen. Die BDE wird von Borland nicht weiterentwickelt und bietet auch nicht so eine Funktionalität wie die Interbase.
Zitat:
Das heißt für kleine Anwendung ja aber ansonsten nein. Gerade wenn es auch im Netzwerk laufen soll ist von der BDE abzuraten. Du kannst z.Bsp. das ganze über eine Stored Procedure (Interbase) lösen und die nach dem speichern gleich die nächste ID ausgeben lassen. Das Problem dabei ist nur, dass wie schon gesagt, in der Zwischenzeit ein andere User einen neuen Datensatz anlegt und dann ist deine ID schon wieder hinfällig. Ich persönlich schreibe die Daten in die DB und lasse mir dann erst die ID zurück geben. |
Re: ID um eins erhöhen!?!?
Zitat:
|
Re: ID um eins erhöhen!?!?
HI,
wie funktioniert das eigentlich wenn man das programm auf einen anderen rechner ausführen will, muss Interbase dann auch auf diesen rechner installiert werden, oder funktioniert das auch ohne jeglicher software? Habt ihr eventuell Tuts zu Interbase? Thx, Plautzer |
Re: ID um eins erhöhen!?!?
Zitat:
Ansonsten kannst du auf dem jeweiligen Rechner ja nur den Client installieren. |
Re: ID um eins erhöhen!?!?
Ich habe jetzt schon ne kleine Vortsellung von Interbase, und sehe das famit einiges mehr möglich wird als mit BDE.
Wieauchimmer, ich habe schon das erste kleine problem. Und zwar habe ich in der IBConsole ein server erstellt. Ich kann man jedoch nur mit dem system-login anmelden, meine erstellen user kommen einfach nicht auf den lokalen server! What to do? Plautzer |
Re: ID um eins erhöhen!?!?
Plautzer bitte fange doch bitte einen neuen Thread an. Da dieser mit deiner eigentlichen Frage nichts mehr zu hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz