Nach dem DelphiXE2 nach Delphi Seattle 10 Update zu aktualisieren 1 haben wir Probleme Ausführung TClientDataSet
ApplyUpdates
Anrufe, wenn die SQLDirect components Version 6.4.5TClientDataset.ApplyUpdates nicht mit ‚SQL nicht unterstützt‘, wenn SQLDirect Komponenten
mit machte ich eine kleine Test-App
Komponenten: TDBGrid -> TDataSource -> TClientDataSet -> TDataSetProvider -> TSDQuery -> TSDDatabase
Abfrage ist select * from tt_plan_task
, Provider hat UpdateMode=upWhereAll
, ClientDataset hat IndexFieldName=tt_plan_task_id
.
Wir ändern einen Wert für das Feld tt_plan_task.tt_prj
.
Wenn ApplyUpdates(0)
Ausführung zeichnet der Code in TSQLResolver.InternalDoUpdate
in DataSnap.Provider
(für UpdateKind=ukModify
).
Dort sehen das generierte SQL und die Parameter wie erwartet aus.
Der Code springt dann auf
procedure TSQLResolver.DoExecSQL(SQL: TStringList; Params: TParams);
var
RowsAffected: Integer;
begin
RowsAffected := (Provider.DataSet as IProviderSupportNG).PSExecuteStatement(SQL.Text, Params);
Diese Aussage Abstürze mit Fehler SQL not supported
(SProviderSQLNotSupported in Data.DBConsts)
aber da dieses eine Schnittstelle, kann ich nicht weiter verfolgen.
Ich weiß nicht, wie ich hier vorgehen soll, um das Problem zu lösen. Irgendwelche Vorschläge wie oder was könnte los sein?
Zusätzliche Informationen:
- SELECT und (parametrisierte) UPDATE-Abfragen durch eine TSDQuery Komponente funktioniert Ausführen.
- eine ClientDataSet mit allen FireDac Komponenten (
TDBGrid -> TDataSource -> TClientDataSet -> TDataSetProvider -> TFDQuery -> TDFConnection
) (verschiedene testapp) arbeitet Fein
- Diese mit Datenbank-Dialekt 3
- Firebird-Version eine Firebird-Datenbank ist 2.5.3.26778
- Delphi 10 ohne die Interbase installiert wurde Komponenten
- Dies ist alles in einer Win7 VM, wo Delphi XE2 entfernt wurde (alles "Borland/CodeGear/Embarcadero" gereinigt), und Seattle installiert. Mein Kollege hat ähnliche Probleme mit einer sauberen Seattle-Installation in einer sauberen Win10-VM.
- Apps und Firebird Win32 sind, OSes Win64 sind
[Hinweis: Selbst der Beantwortung dieser Frage, weil es mich einige Zeit ganz nahm dies herauszufinden. Es kann anderen helfen.]