AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DevExpress cxGrid und LayoutControll neuer Datensatz.
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress cxGrid und LayoutControll neuer Datensatz.

Ein Thema von stOrM · begonnen am 25. Jul 2016 · letzter Beitrag vom 26. Jul 2016
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:01
Moin,
ich denke mal ich habe irgendwo in dem Wust von Einstellungen eventuell etwas falsch stehen.
Das Problem ist das ich meiner Anwendung zwei Button verwende Neu zum anlegen eines neuen Datensatzes und Edit zum editieren eines vorhandenen Datensatzes.
Beim editieren gibt es keine Probleme das Grid steht auf dem zu editierenden Datensatz im LayoutControl kann ich über diverse Editfelder die Daten beliebig ändern.

Beim hinzufügen eines neuen Datensatzes passiert folgendes:
Grid hat den Fokus, man klickt auf Neu, die Editfelder im LayoutControl sind leer, beim klick auf eines der Editfelder im LayoutControl springt das Grid plötzlich auf einen vorhandenen Datensatz (meist der erste in der Tabelle)

Lustigerweise, wenn das Grid nicht den Fokus hat sprich ich klicke bevor ich auf den Neu Button klicke erstmal auf das LayoutControl kein Problem dann bleibt das Grid auf dem neuen Datensatz stehen und wechselt nicht auf einen alten.

Nun dachte ich ok, also vor Neu klick fokus woanders hin werfen. Nöö bringt nichts.
Dann hab ich nach einigen (man kann schon sagen Stunden durch sämtliche Properties des Grids folgendes gefunden:

cxGrid1DBTableView1.DataController.DataModeController.SyncMode := False;

behebt das Problem zwar, allerdings muss ich nach dem Append selbiges wieder auf True setzen das sonst ein klick auf das Grid den Datensatz im LayoutControl nicht mehr aktualisiert.

Gut ich kann notfalls damit leben aber ich frage mich was das Problem ist bzw. wie man das ganze behebt. (Mir ist bekannt das man nicht direkt über die DatenControls auf Daten zugreifen bzw. diese ändern sollte ich werde das bei Zeiten mal in Listen umändern.)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:43
Hi

Wie ist die Grid eingestellt.

GridMode (True, False)

Was machst du beim Klick auf den Button Neu
DataSet.Append oder über das GridView -> DataController.Append

Je nach GridMode gibt es da verschiedene Fallstricke...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 19:57
Gridmode = False
Append = Uniquery.append
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:09
Ich benutze bei GridMode := False DataController.Append...
SyncMode sollte eigentlich auf True stehen.

Je nach Datenbank und Verfügbarkeit des Primary Key' s sollte das (die) PK - Feld (er) unter KeyFieldNames zugewiesen werden.
IMHO benutzt DevExpress diesen Wert zur Positionierung.

Ist KeyFieldNames gesetzt?


Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:13
Ich benutze bei GridMode := False DataController.Append...
SyncMode sollte eigentlich auf True stehen.

Je nach Datenbank und Verfügbarkeit des Primary Key' s sollte das (die) PK - Feld (er) unter KeyFieldNames zugewiesen werden.
IMHO benutzt DevExpress diesen Wert zur Positionierung.

Ist KeyFieldNames gesetzt?


Frank
KeyFieldNames nein nicht gesetzt.
Was mich wundert wieso beim editieren, das Problem nicht auftritt und beim append auch nicht wenn das Grid den Fokus verliert bzw OnExit ausgelöst wird.
DB = MySQL
Verbindung über UniDac

Also nur zur Verständnis, dass Grid benutze ich nur zur Anzeiger und Navigation durch die Datensätze, editiert wird im Grid nichts.

Geändert von stOrM (25. Jul 2016 um 20:15 Uhr) Grund: Alzheimer
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:28
Ich bin mir ziemlich sicher, dass KeyFieldNames das Problem lösen würde.

Wenn du als PK z.B. ein Feld ID hast, dann positioniert er anhand dieses Wertes.
Bei Append wäre das Null (sofern auf der DB erzeugt) oder halt eine neue ID.
Dann sollte das Sync auch ordentlich funktionieren.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 25. Jul 2016, 20:29
Ich bin mir ziemlich sicher, dass KeyFieldNames das Problem lösen würde.

Wenn du als PK z.B. ein Feld ID hast, dann positioniert er anhand dieses Wertes.
Bei Append wäre das Null (sofern auf der DB erzeugt) oder halt eine neue ID.
Dann sollte das Sync auch ordentlich funktionieren.

Frank
Hört sich logisch an, ich werd es morgen mal testen, erst mal vielen Dank bis hier her.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 26. Jul 2016, 06:02
So Keyfieldnames auf ID gesetzt, aber das Ergebnis ist das selbe, wie zuvor, scheint also nicht die Lösung des Problems zu sein.
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
193 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 26. Jul 2016, 08:26
Hast Du denn auch sicher gestellt, dass nach dem Posten (bei Append) die neue ID über die TUniQuery zurückkommt ?
Thomas Forget
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DevExpress cxGrid und LayoutControll neuer Datensatz.

  Alt 26. Jul 2016, 09:34
Ich kann das Verhalten nicht nachvollziehen.
Habe allerdings auch kein MySQL und auch kein UniDAC.

Mir Firebird und IBO verhält es sich wie erwartet, SyncMode ist und bleibt True.

Hast du mal mit dxMemData einen Test gemacht?
Wenn du dort das Verhalten nicht hast, kann es auch an den Einstellungen von UniDAC liegen.

Der Support von DevExpress ist zwar gut, aber ohne lauffähiges Testprojekt wird es sicher auch nicht einfach.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 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