Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable (https://www.delphipraxis.net/189637-localsql-mit-delete-produziert-einen-fehler-mit-fdmemtable.html)

mfahs 4. Jul 2016 10:43

Datenbank: FireDAC • Version: 10.1 Berlin • Zugriff über: -

LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Hallo zusammen!

Vielleicht hat ja jemand eine gute Idee parat :-)
Ich habe in der Vergangenheit schon oft nach einer Möglichkeit gesucht, eine MemTable per SQL-Befehl bearbeiten zu können. Normalerweise arbeite ich mit SDAC von DevArt, auch in der dort mitgelieferten Virtuellen Tabelle kann man keine SQL-Statements in einer Query nutzen.

Nun habe ich gerade (...und siehe, das Gute liegt so nah'...) mit Freunden festgestellt, dass die FireDac Memtable per LocalSQL tatsächlich ganz prima mit einer FDQuery bearbeitet werden kann. Ich habe diverse Tests gemacht und nun in einem aktiven Projekt alle "VirtualTables" von DevArt gegen die FDMemTable ausgetauscht. Eigentlich lief alles gut, bis ich per "DELETE FROM memTable WHERE..." einige Daten löschen wollte. Das ging mit der Exception "VTab: Angegebene Zeile ist nicht vorhanden" daneben. Ich habe nun stundenlang nach der Ursache gesucht, denn in meiner Testumgebung klappte es problemlos.

Ursache für den Fehler ist ein Memofeld! In meinem Projekt enthält die MemTable ein Memofeld - und damit geht der DELETE-Befehl schief. Wenn ich eine MemTable OHNE Memofeld verwende, klappt es.

Was zum Geier ist da in meinem Delphi 10.1 Berlin los? Ein Bug? Oder habe ich da etwas übersehen?
Hat jemand von euch eine Idee?

Schon mal herzlichen Dank vorab!

Gruß,
Martin

mkinzler 4. Jul 2016 11:03

AW: LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Das Virtual-Dataset von DevArt ist nun ein eigenständiges Produkt mit SQL-Unterstützung. Möglicherweise wird auch die in den anderen Produkten integrierte Version dieses Upgrade erhalten.

mfahs 4. Jul 2016 11:14

AW: LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Das habe ich auch schon gesehen und auch kurz getestet. Aber das steckt noch zimelich in den Kinderschuhen - mehr als der rudimentärste Sprachschatz steht in den SQL-Abfragen noch nicht zur Verfügung. Eben noch Beta-Stadium...

mfahs 4. Jul 2016 11:16

AW: LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Ha! Ich hab's!
Mein Memofled (ftMemo) wurde in meinem Testfall in meinem Projekt niemals mit Daten gefüllt! Wenn ich die Datensätze so in die MemTable bringe, dass in dem Memo-Feld ein Leerstring ('') drinsteht, klappt es mit dem DELETE ganz wunderbar. Alternativ: Wenn ich ftBLOB verwende, klappt es auch ohne Vorbelegung des Feldes..
Da muss man erst mal drauf kommen :shock:

Grüße,
Martin

Der schöne Günther 4. Jul 2016 11:32

AW: LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Hört sich aber doch trotzdem nach einem Fehler des LocalSQL-Teils von FireDAC an, oder?

himitsu 4. Jul 2016 12:03

AW: LocalSQL mit "DELETE" produziert einen Fehler mit FDMemTable
 
Im Prinzip kannst du das LocalSQL auch mit anderen DataSets verwenden.
Mußt dann halt nur selber die Schnittstelle implementieren.

http://docwiki.embarcadero.com/RADSt..._%28FireDAC%29

Der Fehler könnte auch an anderen Stellen liegen, also im FireDAC, dem Adapter oder bei DevArt, wo diese Art der Steuerung nicht ganz richtig entgegen genommen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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