Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   ID im Datagrid -1 (https://www.delphipraxis.net/208247-id-im-datagrid-1-a.html)

Alfredo 2. Jul 2021 10:09

Datenbank: Mariadb • Version: 10.3.10 • Zugriff über: Firedac

ID im Datagrid -1
 
Ich habe in einer Testanwendung(Delphi 10.4.1) auf dem Formular

FDConnection1, FDQuery1, Datasource1, DBGrid1, DBNavigator1

Die Tabelle hat ein Feld ID(Primarykey, AUTO_INCREMENT) und NAME(Char)

Beim Einfügen(DBNavigator1 + oder FDQuery1.Insert) eines neuen Datensatzes steht in der Spalte ID -1.
Nach dem Abspeichern die richtige nächste ID.

Die Spalte ID visible no funktioniert nur im Designmodus.
Startet man das Programm ist die Spalte ID jedoch sichtbar.

hoika 2. Jul 2021 10:49

AW: ID im Datagrid -1
 
Hallo,
dann setze die Spaltenbreite zur Laufzeit doch auf 0.

DBGrid.Columns[0] := 0

oder so ähnlich

Uwe Raabe 2. Jul 2021 10:59

AW: ID im Datagrid -1
 
Zitat:

Zitat von Alfredo (Beitrag 1491766)
Die Spalte ID visible no funktioniert nur im Designmodus.
Startet man das Programm ist die Spalte ID jedoch sichtbar.

Einstellungen an dynamisch erzeugten Feldern und Spalten sind zur Laufzeit nicht wirksam. Dazu müssen die Felder statisch im Designer angelegt sein.

himitsu 2. Jul 2021 11:13

AW: ID im Datagrid -1
 
TDataSet.Insert erstellt nur "lokal" den Datensatz/Record.
Die AUTOINC- und DEFAULT-Felder werden aber erst beim INSERT-Statement in der Datenbank gefüllt, also im DataSet.Post .
DataSet.Post schickt nur die "gefüllten" Felder beim INSERT ab. Alles was nicht explizit im Statement steht (DEFAULT/AUTOINC), wird dabei von der Datenbank gefüllt.



Du kannst aber im DataSet.AfterInsert von der Datenbank diese DEFAULT/GENERATOREN abfragen und bei dir eintragen, dann sehen auch die User das schon vor dem Post.

Die Tabellen/Feld-Definition von der Datenbank abfragen, dort das nehmen, was beim DEFAULT steht,
und dann
Delphi-Quellcode:
SELECT {derTextVomDefaultDesFields} AS {FieldName}, ...
.

Bedenke aber, dass bei einem CANCEL, dann eine Lücke entsteht, wenn der AUTOINC-Wert dann doch nicht verwendet wird.

Alfredo 2. Jul 2021 14:50

AW: ID im Datagrid -1
 
Vielen Danke für eure Hinweise.

Im onCreate des Formulares eine Prozedure mit

DBGrid1.Columns[0].width := 0;

und die Spalte ist weg.:thumb:

Uwe Raabe 2. Jul 2021 16:17

AW: ID im Datagrid -1
 
Ein
Delphi-Quellcode:
FDQuery1.Fields[0].Visible := False
wäre da vielleicht etwas angemessener.

Alfredo 3. Jul 2021 00:21

AW: ID im Datagrid -1
 
:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.

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