DBGrid Zellen Wert Problem :-(
-
Wie kann Ich die Werte in der Zelle beeinflussen ohne Edit / Post machen zu müssen, Ich will nicht die Werte in die Datenbank speichern/verändern. Hab hier die Suchfunktion(16 Seiten SearchResult) und Google benutzt, finde nix zu dem Problem. Die Datenbank ist eine Mysql.
Mein Versuch:
TDataSet *pDS = Form11->DBGrid1->DataSource->DataSet; int i=0; while(i < pDS->RecordCount) { sourceFile=pDS->Fields->Fields[6]->AsString; //pDS->Edit(); //pDS->Fields->Fields[3]->Value = "* "+pDS->Fields->Fields[3]->Value; //pDS->Post(); pDS->Fields->Fields[10]->Text="irgendwas anderes"; pDS->Next(); i++; }
Wenn es nicht anders gehen würde würde Ich im Notfall auch das Edit()/Post gedöhnse nutzen so wie Ich es im Code hab hat es einmalig nur funktioniert, jetzt sagt er immer die Daten wurden ggfs geändert und er findet die Zelle nicht mehr? Denke das irgendwie ein Update, Commit auf der Datenbank fehlt, Ich weiss es leider nicht wie Ich das wieder canceln kann.
Am liebsten wäre es ohne das Edit/Post da Ich die Werte nur zum Anzeigen abändern will.
-
Hallo
TDBGrid ist eine Komponente die darauf ausgelegt ist Werte aus Datenbanken anzuzeigen. Du könntest allenfalls noch in den Optionen von TDBGrid einstellen das es das Bearbeiten von Werten durch den Benutzer erlaubt, aber auch hier werden alle Änderungen in die Datenbank gespeichert.
bis bald
akari
-
Schad das das nicht geht, dachte das man irgendwie die Zellen Text Ausgabe noch beeinflussen kann.
Kann mir dann einer mal posten wie das mit dem Edit() Post() richtig funktioniert? Wenn Ich das einmalig auf nen Datensatz angewandt habe und noch mal das DBGrid Form aufrufe kommt immer eine Fehler Meldung: "Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einiger Werte wurden seit dem letzten Lesen ggf. geändert." Exception. Hab die DB neu gestartet den Rechner neugestartet und die Fehlermeldung kommt immer wieder, hab den verdacht das die Datenbank noch auf irgendwas wartet?
Ich hab in dem DBGrid1 kein Primary Key Spalte eingebunden, kann es damit zu tun haben ?
-
Die Fehlermeldung kommt wenn die Anzahl durch das Update manipulierter DB-Zeilen == 0 ist. Das hat etwas mit den fehlemenden Primkey zu tun.
BTW. Wieso läßt du es nicht einfach bei Edit()? Du mußt sdoch kein Post() absetzen oder sehe ich da was falsch?
-
witte schrieb:
Die Fehlermeldung kommt wenn die Anzahl durch das Update manipulierter DB-Zeilen == 0 ist. Das hat etwas mit den fehlemenden Primkey zu tun.
BTW. Wieso läßt du es nicht einfach bei Edit()? Du mußt sdoch kein Post() absetzen oder sehe ich da was falsch?hab es auch nur mal mit Post probiert, hat auch nicht funktioniert, das Problem ist das Ich die betroffenen Datensätze nicht zurücksetzen kann, wie gesagt Rechner neu gestartet, DB restartet und die Fehlermeldung kommt immer noch? Wenn mir einer mal sagen könnte wie Ich das Post()/Update canceln kann wäre schon super.
Hab irgendwie das Gefühl das irgendwo noch Ado/BDE sich gemerkt hat das die Datensätze geupdatet werden müssen, nur wo?
Kann man dem Edit/Post den Primary Key irgendwie sagen oder muss Ich den im DBGird hinzufügen, die Tabelle hat ja ein Primary Key, nur den zeig Ich halt nicht an.
-
Ich habe geschrieben, dass Du Edit() verwenden sollst nicht Post(). Du willst doch ein Grid aus der DB befüllen und danach einzelne Spalten programmatisch ändern ohne diese Änderungen in die DB schreiben zu müssen richtig? Warum setzt du dann nicht die aktuelle Zeile in den Bearbeitungsmodus mit Edit() und verzichtest auf Post()?
-
witte schrieb:
Ich habe geschrieben, dass Du Edit() verwenden sollst nicht Post(). Du willst doch ein Grid aus der DB befüllen und danach einzelne Spalten programmatisch ändern ohne diese Änderungen in die DB schreiben zu müssen richtig? Warum setzt du dann nicht die aktuelle Zeile in den Bearbeitungsmodus mit Edit() und verzichtest auf Post()?
Ich bin so froh das Ich dieses Forum kenne, echt !
das mit dem nur Edit() funktioniert
juhu.
Danke für Eure bzw. deine Hilfe