Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBNavigator problem (https://www.delphipraxis.net/107483-dbnavigator-problem.html)

steppo 28. Jan 2008 15:08

Datenbank: MSSQL2000 • Zugriff über: AdoQuery,DataSource,DBGrid,DBEdit

DBNavigator problem
 
Hallo zusammen,

die Navigation über Dbnavigator funktioniert einwandfrei. Auch die Aktualisierung der DBEdit beim Datensatzwechsel ist in Ordnung.

Mein Problem liegt in folgender Vorgehensweise.

Ich möchte über Dbnavigator einen Datensatz anlegen(nbInsert)| Funktioniert!

Beim Anlegen des Datensatzes wird direkt ein DBEdit mit einem Wert vom Datentyp Boolean gefüllt. Funktioniert!

Wenn ich nun den Datensatz (aus versehen wechsele), passiert nichts.|O.K.

Nun habe ich einen neuen Datensatz im DBGrid, indem ein Feld den Wert False hat, was so auch richtig ist.

Ich bemerke nun, dass ich den neuangelegten Datensatz doch nicht brauche und wechsele zu diesem Datensatz.| kein Problem

Wenn ich nun aber auf Datensatz löschen klicke, bekomme ich den Fehler, dass der zu löschende Datensatz nicht vorhanden ist!
Ich habe in der Tabelle nachgesehen, und er ist wirklich nicht vorhanden.

Beende ich das Programm und starte es erneut, so ist der Datensatz mit dem einen Eintrag in der Datenbank vorhanden und kann auch ganz normal gelöscht werden!

Wie kommt es zu dieser Konstellation?

DBgrid zeigt Datensatz.
Tabelle hat diesen Datensatz nicht.

Wie behebe ich dieses Problem

Gruß Steppo

shmia 28. Jan 2008 15:16

Re: DBNavigator problem
 
Zitat:

Zitat von steppo
Ich möchte über Dbnavigator einen Datensatz anlegen(nbInsert)| Funktioniert!

Falsche Vorgehensweise.
Einen neuen Datensatz legt man so an:
Delphi-Quellcode:
   ADOQuery1.Append;
Ein DBNavigator ist nur für den Benutzer gedacht.
Änderungen an der Tabelle werden programmiertechnisch direkt über das TDataset (TADOQuery oder TADOTable) vorgenommen.

steppo 28. Jan 2008 15:18

Re: DBNavigator problem
 
Dieses Programm soll dem User ja die Möglichkeit geben, einen neuen Datensatz in der Tabelle anzulegen. Ich teste die funktionalität.

Gruß Steppo

RavenIV 28. Jan 2008 15:40

Re: DBNavigator problem
 
Irgendwo zwischen DBNavigator und Datenbank wirst Du j wohl ein Query-Objekt oder Table-Objekt haben.
Versuch mal, dort das RequestLive auf True zu setzen.

Ansonsten musst Du beim Wechseln des Datensatzes ein Commit absetzen.

steppo 28. Jan 2008 20:59

Re: DBNavigator problem
 
Hallo RavenIV

die Verbindung läuft über ein Adoquery, Datasource, DBNavigator. Bei der Adoquery gibt es keine RequestLive!

Gruß Steppo

marabu 29. Jan 2008 06:21

Re: DBNavigator problem
 
Moin,

TADOQuery und TADPTable sind die ADO-Äquivalente zu TQuery und TTable. Wenn du mit ADO arbeitest verwendest du in der Regel TADODataSet für das Arbeiten mit einem Cursor (ResultSet) oder TADOCommand resp. TADOConnection beim Arbeiten ohne Cursor. Probiere es aus - es lohnt sich.

Grüße vom marabu

steppo 29. Jan 2008 10:44

Re: DBNavigator problem
 
Guten morgen marabu,

wie ich schon schrieb benutze ich TAdoQuery, Datasource,DBGrid und meherere DBEdits. Alles soll "natürlich" alles können. Also Aktualisierungen sofort übernehmen, DebEit soll sich die Werte aus verschiedenen Edits zusammen holen, usw..

Hat alles wunderbar funktioniert, bis auf das geschilderte Problem. Habe auch das in den Griff bekommen.

Delphi-Quellcode:
ADOQuery1.Requery();
Dieses automatische Aktualisierung der Komponente hat das Problem gelöst.

Danke für deine Antwort. Werde die von dir vorgeschlagene Vorgehensweise mal testen.

Gruß Steppo

P.s.: Danke auch für alle anderen Antworten


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 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