Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ID um eins erhöhen!?!? (https://www.delphipraxis.net/35617-id-um-eins-erhoehen.html)

plautzer 9. Dez 2004 19:21


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

Chris1986 9. Dez 2004 19:25

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

plautzer 9. Dez 2004 19:40

Re: ID um eins erhöhen!?!?
 
So etwas habe ich mir auch schon gedacht, ich weiss bloß wie ich das umsetzen kann!

Delphi-Quellcode:
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;
THx,


plautzer

Chris1986 9. Dez 2004 19:45

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

fkerber 9. Dez 2004 19:48

Re: ID um eins erhöhen!?!?
 
Hi!

Zitat:

Zitat von Chris1986
das kommt drauf an, wie du die DB aufgebaut hast, wenn das Feld ID auf automatic increase (oder so ähnlich :gruebel: ) steht

Ein solches ID-Feld sollte auf AutoIncrement stehen. Je nach verwendeter DB hat man da mehrere Auswahlmöglichkeiten.


Ciao Frederic

plautzer 9. Dez 2004 19:52

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

Chris1986 9. Dez 2004 19:52

Re: ID um eins erhöhen!?!?
 
Zitat:

Zitat von fkerber
Hi!
Ein solches ID-Feld sollte auf AutoIncrement stehen

So heißt die Eigenschaft, genau :lol:

Edit:
@ Plautzer: schreib doch einfach einen Leerstring in irgendein Feld, das sollte nicht das Problem sein

Hansa 9. Dez 2004 20:41

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.

nieurig 10. Dez 2004 06:44

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:
insert into Tab(F2,F3) values (1,2)
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.

Viel Erfolg.
Niels

plautzer 10. Dez 2004 15:43

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz