Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Grundlagen";
Aktuelles Archiv: 2003.09.11;
Herunterladen: [xml.tar.bz2];

Nach unten

QuantumGrid, MySQL - Wie kann man Zellen dazu bringen, Daten sofort zu speichern? Finden Sie ähnliche Zweige


BigError   (2003-08-18 15:34) [0]

QuantumGrid über ZeosLib interagiert mit MySQL.
Wenn Sie den Wert in einer Zelle eines Rasters ändern, wird er nur dann in die Datenbank geschrieben, wenn Sie zu einer anderen Zelle wechseln.
Wenn Sie nach der Änderung die Eingabetaste drücken und dann nur die Anwendung schließen, bleibt der Wert in der Datenbank alt.

Meine Herren, sagen Sie mir, wie Sie den Wert unmittelbar nach dem Drücken des Eingangs aufzeichnen sollen? An welchem ​​Tag kämpfe ich schon?

Versuchte EhLib - das gleiche Problem, das heißt, es ist kein Raster.
Da die Daten auch nach dem Wechsel in eine andere Zelle noch aufgezeichnet werden, ist UpdateSQL ordnungsgemäß konfiguriert.



Silla   (2003-08-18 15:41) [1]

Beim Schließen des Formulars müssen Sie verfolgen
Status der Tabelle, zum Beispiel:
if Tbl1.State in [dsEdit, dsInsert] then
Tbl1.Post;

Sie können sich viele Optionen ausdenken



BigError   (2003-08-18 15:49) [2]

Das ist etwas ja, aber es ist viel bequemer und sicherer, so dass es trotzdem sofort gemacht würde. Und dann bearbeiten Sie die Zellen, und die Leistung des Bryk-Computers blinkt. Und alle Daten gingen verloren.

Ich habe versucht, das Datenänderungsereignis in der Zelle zu posten - ein Speicherzugriffsfehler wird angezeigt und die Anwendung stürzt ab. Daten gehen verloren. :(



roottim   (2003-08-18 16:04) [3]

2BigError Sie machen einen großen Fehler .. Ihnen wird gesagt, wie und was .. und vseravno, kann nicht sein!



vuk   (2003-08-18 16:21) [4]

Hat weder mit ZEOS noch mit MySQL funktioniert, aber Sie können Folgendes vorschlagen. Ein Feld in der Datenmenge schreibt eine Aktualisierung der Daten in der Datenbank in das OnChange-Ereignis, die Datenmenge wird erneut ermittelt (oder, wenn die Bibliothek für den Zugriff auf die Datenbank dies zulässt, wird nur eine bestimmte Zeile aktualisiert) und dann abgebrochen.



Silla   (2003-08-18 16:25) [5]

Was ist Datenänderung?
Wenn ich es richtig verstehe, ist die Datenänderung die Navigation im Raster
also nach dem wechseln der leitung wird die post automatisch
und der zweite post muss nicht machen (wahrscheinlich so ein fehler)

Wenn Sie die kleinste Änderung ständig speichern möchten, sehen Sie sich das Ereignis OnKeyDown an
wenn Schlüssel = VK_RETURN dann
if Tbl1.State in [dsEdit, dsInsert] then
Tbl1.Post;



koks   (2003-08-18 16:50) [6]

Für den Anfang, was ist dein QG. Wenn 4.XX, dann gibt es eine Eigenschaft ImmidiatePost ....

Stellen Sie in jedem Fall auch sicher, dass Sie haben
SynchMode.

Nun, in den Komponenten wird Ihre Aufgabe durch Griffe gelöst ...



BigError   (2003-08-18 19:48) [7]

Roottim
Ich verstehe nicht, kannst du das erklären?

koks
QG ist meine 4.
ImmidiatePost ist True - hilft nicht.
SyncMode ist True - hilft nicht.

Legen Sie das Design des Formulars
if Tbl1.State in [dsEdit, dsInsert] then
Tbl1.Post;

Die Ereignisbehandlungsroutine OnEditValueChanged hilft nicht. Zelldaten werden nicht in der Datenbank gespeichert!
Vielleicht muss neben dieser Konstruktion noch etwas in den Handler dieses Ereignisses eingetragen werden? In der Hilfe zu GD4 habe ich im Prinzip keine Beschreibung oder ein Beispiel für die Arbeit mit diesem Ereignis gefunden.

Während aus der Situation völlig dumme Option.
Startete einen globalen Variablen-Booleschen Wert. Legen Sie den Timer mit jeder Sekunde Betrieb auf.
In der Ereignisbehandlungsroutine OnEditValueChanged habe ich diese Variable auf True gesetzt. Und im Timer-Handler überprüfe ich es und, wenn es wahr ist, poste ich.

Nun ..., aber es funktioniert. : ((

Wenn mir jemand erklärt, warum Post nicht mit OnEditValueChanged funktioniert - ein Meer von Respekten! :(

OnEditValueChanged



Vuk   (2003-08-18 20:01) [8]

zu BigError:
Versuchen Sie trotzdem, was ich Ihnen geraten habe. Bitte beachten Sie, dass der Handler genau auf OnChange um platziert ist Felder im Datensatz.



BigError   (2003-08-18 21:23) [9]

nach Vuk:
Meine Güte, die Daten werden gespeichert. Vielen Dank.

Es ist jedoch ein anderes Problem aufgetreten: Das Raster selbst bleibt jetzt im Bearbeitungsmodus und wird nicht beendet. :)



vuk   (2003-08-18 21:30) [10]

Und Abbruch wird nicht vergessen?



BigError   (2003-08-18 21:33) [11]

2 vuk:
Ich habe einfach nicht verstanden, was es bedeutet.
Mein DataSet hat keine solche Methode.
Können Sie näher erläutern, was eine Abtreibung ist?



vuk   (2003-08-18 21:43) [12]

Dies ist kein DataSet. Dies ist ein Abort-Ausnahmeaufruf. : o)
Das heißt, der Handler sieht folgendermaßen aus (mithilfe gespeicherter Prozeduren):
versuchen Sie es spUpdateData.ParamByName ("param1"). As ...: = ""; ... spUpdateData.ParamByName ("paramn"). As ...: = ""; spUpdateData.ExecProc; außer DataSet.Cancel; // um nicht im fehlerfall zu bleiben // in dsEdit erhöhen; Ende; // Verfolgen von 2-Zeichenfolgen, abhängig von der Zugriffsbibliothek // kann durch so etwas wie spGetData.RefreshRecord ersetzt werden spGetData.Close; spGetData.Open; Abbrechen;
Die Bedeutung all dessen liegt in einer "Täuschung" der Bibliothek beim Arbeiten mit Daten.



vuk   (2003-08-18 21:47) [13]

Ja immer noch Wenn die Bibliothek die erneute Anforderung einer einzelnen Zeile nicht unterstützt, empfehle ich die Verwendung einer solchen Technik für große Datenmengen nicht, da Das erneute Öffnen des Datensatzes nach jeder Feldänderung kann zu einer zusätzlichen Belastung des Servers führen.



vuk   (2003-08-18 21:50) [14]

Ich entschuldige mich stattdessen
> DataSet.Cancel;
sollte sein
Sender.DataSet.Cancel;



BigError   (2003-08-18 22:46) [15]

nach Vuk:
Nein, etwas hilft nichts.
Daten werden geschrieben, das Raster bleibt jedoch im Bearbeitungsmodus.
Dies ergibt sich aus der Tatsache, dass sich der Zeilenzeiger im "Cursor" -Modus befindet und nicht aus dem "Pfeil nach rechts". Und Sie können nur innerhalb eines Datensatzes verschieben, Sie können nicht in einen anderen Datensatz verschieben.

Etwas, was ich gerade nicht finden kann, sind die Eigenschaften (a) oder Meta, um das Raster in den "Ansicht" -Modus zu versetzen.



vuk   (2003-08-18 22:51) [16]

Ich habe es selbst überprüft - es bleibt nicht. Die Wahrheit hier hängt wahrscheinlich alles davon ab, wie es in der Datenzugriffsbibliothek implementiert ist. Die Idee ist, dass Sie nach dem Aufruf von Abort den Bearbeitungsmodus verlassen sollten. Es hat mit BDE funktioniert, es funktioniert auch mit SDAC ...



BigError   (2003-08-19 09:38) [17]

zu Vuk
Es hat alles in EhLib funktioniert, also in einem anderen Raster.
Trotzdem lag das Problem in Quantum, bei aller Kühle stellte es sich als dumm heraus und außerdem war es in diesem Teil nicht dokumentiert. : ((
Trotzdem ich im Quellcode von Quantum stöbere, kann nachvollziehen, wie er mit diesem Event umgeht.



koks   (2003-08-20 10:39) [18]

Er ist nicht dumm, nur verwirrt genug, auch im Vergleich zu QG 3.22
Wir müssen uns daran erinnern, wenn GridMode = false; (LoadAllRecords = false in QG 3.22) QG erstellt im Speicher eine KOPIE eines Datensatzes vom Typ TdxMemData und arbeitet damit. Nun, die Kopie im Hintergrund wird mit dem realen Datensatz synchronisiert (verstecktes Bild!). In QG 4.XX gibt es eine Menge Verwirrung mit diesen zahlreichen Ansichten und Controllern. EhLib erstellt keine Kopien. Daher werden Dataset-Methoden beim Ändern der Daten sofort aufgerufen - a.
Kurz gesagt, schauen Sie - wenn Sie QG verwenden möchten, müssen Sie sich wirklich daran halten ...



Silla   (2003-08-20 13:10) [19]

Siehe OptionsBehavior
am Gitter "und den Parameter EnterShowEditor oder EnterThrough
kann helfen



Seiten: 1 ganze Branche

Forum: "Grundlagen";
Aktuelles Archiv: 2003.09.11;
Herunterladen: [xml.tar.bz2];

nach oben









Speicher: 0.63 MB
Zeit: 0.034 c
4-33846
SDRAM
2003-07-11 12:34
2003.09.11
Sagen Sie mir, wie ich die Umgebungsvariable lesen soll


9-33424
Banick
2003-03-07 16:15
2003.09.11
Leute helfen, wie man jpg zu opengl hochlädt


14-33785
Ax
2003-08-22 01:36
2003.09.11
Warum ist ein leeres Formular groß?


1-33616
Pave1
2003-09-01 10:00
2003.09.11
Wie können Sie sich dynamisch an das Objekt wenden?


3-33486
unter der sonne
2003-08-20 12:57
2003.09.11
FB-Installation unter Linux erneut





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarian katalanisch Chinesisch (vereinfacht) Chinesische Tradition) kroatisch Tschechisch Dänisch Dutch Englisch estnisch Philippinisch Finnish Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italian Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegian
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Swedish Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch