![]() |
Änderung vom DBGrid übernehmen geht nicht
Hallo
Ich hab da ein kleines Problem, weiß aber nicht, wie cih es lösen soll. Meine Situation ist folgende. Ich hab mir in Delphi 6 Ent. eine kleine Datenbankanwendung gebastelt. Die greift auf einen mysql server zu. Das ganze hab ich mit dbexpress Komponenten zusammengebastelt. Das klappt auch alles ganz wunderbar. Nun kommt das Problem. Ich kann Änderungen, die ich in dem DBgrid vorgenommen hab nicht übernehmen. Wenn ich zum Beispiel ein Paar Zellen ändere, und dann
Delphi-Quellcode:
mache, kommt die Meldung "SQLTable1: Datenmenge weder im Editier- noch im Einfügemodus".
form2.SQLTable1.Post;
Was kann ich tun? (oder mach ich da komplett was falsch? mit "post" werden doch Änderungen in die Db geschrieben, oder?) Mfg Waltraut |
Re: Änderung vom DBGrid übernehmen geht nicht
Hallo Waltraut,
erstmal herzlich willkommen im Delphi-Forum. Zu Deinem Problem: Du musst Deine Datenmenge (hier SQLTable1) mit
Code:
zuerst in den Edit-Modus schalten. Erst danach hat ein Post-Befehl Wirkung.
form1.SQLTable1.Edit;
Gruß Frank |
Re: Änderung vom DBGrid übernehmen geht nicht
Bevor du POST verwendest solltest du testen, ob sich die Tabelle im Edit-Modus befindet.
Delphi-Quellcode:
Grüße
if SQLTable1.Status in [dsInsert, dsEdit] then // befindest sich die Tabelle im Edit- oder Insert-Modus?
SQLTable1.Post; // ja, Post durchführen. Mikhal |
Re: Änderung vom DBGrid übernehmen geht nicht
Ich nochmal,
es muss natürlich heissen
Code:
form2.SQLTable1.Edit;
Gruß Frank |
Re: Änderung vom DBGrid übernehmen geht nicht
Danke für die schnellen Antworten, ich hab das mal probiert. Da kommt, wie sollte es anders sein, auch eine schöne Meldung, die da lautet: "SQLTable11: Eine Datenmenge, die nur zum lesen ist, kann nicht geändert werden".
Das hört sich für mich nach einem readonly an, aber ich wüßte es, wenn ich sowas irgendwo eingestellt hätte. An der DB selbe kann es nicht liegen. Das müßte feststehen. |
Re: Änderung vom DBGrid übernehmen geht nicht
Hi :hi:
Welche Komponeten benutzt du für den DB-Zugriff? Die BDE & Zeos-Kmpos haben IMHO die Eigenschaft "RequestLive", damit ist es diesen Komponenten möglich einen eindeutigen Schlüssel von der DB anzufordern und damit Änderungen vorzunehmen. Wie es bei dem ADO-Zeugs ( :wink: ) ist , kann ich dir jetzt nicht mit Sicherheit sagen. :gruebel: p.s.: @fBrust schaue mal nach links oben auf der Seite... kurz lesen, einprägen und pling -> genau wir sind hier in der Delphi-PRAXIS :P |
Re: Änderung vom DBGrid übernehmen geht nicht
Was verbirgt sich hinter deiner SQLTable: Eine TTable oder eine TQuery?
Sollte es sich um eine TQuery handeln und du Local SQL (Paradox, dBase) verwenden, dann wird die Datenmenge in den ReadOnly-Modus versetzt, sobald du ein Order By Statement verwendest. Grüße Mikhal |
Re: Änderung vom DBGrid übernehmen geht nicht
Ich benutze TSQLConnection, TSQLTable, dann TClientDataSet, nen TDadasource und zum Schluß ein TDBGrid. Das ganze an einer localen Mysql Datenbank.
Wenn das alles garnicht klappt, muß ich wohl sowas wie Zeos oder so probieren, aber eigentlich würd ich gern die Delphi eigenen Sachen verwenden. |
Re: Änderung vom DBGrid übernehmen geht nicht
Hast du schon versucht, deine TSQLTable durch ein TSQLQuery zu ersetzen? Auf eine Query kannst du eigentlich immer genauso wie auf eine Table zugreifen. Und ich habe zumindest bei ADO schlechte Erfahrungen mit AdoTable gemacht. SQLTable ist meines wissens sowieso nur aus Kompatibilitätsgründen zu den alten Komponenten vorhanden.
Grüße Mikhal |
Re: Änderung vom DBGrid übernehmen geht nicht
Ich habs aufgegeben. Das dbexpress scheint wohl nicht das idealste zu sein. Deshalb hab ich mir die Zeoslib Geschichte installiet, und siehe da, es geht, und sogar ganz kompfortabel.
Noch'n schönen Tag |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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-2025 by Thomas Breitkreuz