Autor Téma: MyDAC, ClientDataset a zracené memofieldy  (Přečteno 583 krát)

Offline jbd

  • Nováček
  • *
  • Příspěvků: 5
  • Karma: 0
MyDAC, ClientDataset a zracené memofieldy
« kdy: 21-06-2024, 12:35:21 »
Mám ClientDataset připojený přes DatasetProvider a MyQuery do MySQL.
Select je jenom na jeden řádek tabulky, podle id záznamu:
 "select id, jmeno, poznamka from tabulka where id=:id".

Pokud v záznamu opravím "jmeno" a na poznámku nešáhnu, po ApplyUpdates mám v tabulce nulovou poznámku.
Pokud však opravím i poznámku, ApplyUpdates vše pošle do databáze bez problémů.
Zatím to obcházím zapamatováním poznámky v proměnné a opětovnou editací poznámky. dbMonitor ukazuje při zápisu parametr "poznamka" = <null>, DatasetProvider.DeltaDS.FieldByName('poznamka') je při BeforeUpdateRecord taky nulový.
Netuším co mám nastaveno špatně...
 :-[

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 442
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:MyDAC, ClientDataset a zracené memofieldy
« Odpověď #1 kdy: 21-06-2024, 19:07:03 »
Jakeho typu je poznamka?
Pokud na poznamku nesahnes, posilas ji v update take?

Offline jbd

  • Nováček
  • *
  • Příspěvků: 5
  • Karma: 0
Re:MyDAC, ClientDataset a zracené memofieldy
« Odpověď #2 kdy: 21-06-2024, 22:57:12 »
Poznamka je v Mysql Text a v ClientDatasetu TMemoField.
V myquery mám vygenerované  příkazy na Update k aktualizaci všech sloupců. Bez update příkazu myquery na Mysql4.1 neprojde ApplyUpdate (i když dbMonitor ukazuje vše OK), na vyšší mysql (10.1.16-MariaDB) to bez update příkazu projde - Myquery vygneruje vlastní a aktualizuje jenom změněné sloupce a poznámku nevymaže.

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 442
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:MyDAC, ClientDataset a zracené memofieldy
« Odpověď #3 kdy: 22-06-2024, 10:26:41 »
Text je blob field a podle toho se k nemu musis chovat.

Offline jbd

  • Nováček
  • *
  • Příspěvků: 5
  • Karma: 0
Re:MyDAC, ClientDataset a zracené memofieldy
« Odpověď #4 kdy: 24-06-2024, 08:56:07 »
Ptal jsem se, co dělám špatně. Nevím jakým jiným způsobem bych to měl dělat. Teda vím, zálohuji poznámku, a pokud se po ApplyUpdate neshoduje , zapíši zálohu. Ale je to určitě náročnější pro server.
Poradíš mi něco lepšího?

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 442
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:MyDAC, ClientDataset a zracené memofieldy
« Odpověď #5 kdy: 24-06-2024, 19:01:41 »
Psal jsi, ze aktualizujes vsechna pole, nejen zmenene hodnoty.
Pokud yo chces optimalizovat, tak aktualizuj prikazem pouze zmenena pole nebo vypust poznamku z update prikazu, pokud nedoslo k jeji zmene
« Poslední změna: 24-06-2024, 19:10:58 od Jan Fiala »