Einzelnen Beitrag anzeigen

MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: FDQuery und Kleinschreibung

  Alt 23. Jul 2016, 12:10
Das von dir beschriebene Verhalten ist in Berlin nicht zu reproduzieren. So ich das verstanden habe. Möglw. ist eine Einstellung bei der Query geändert. Deswegen sollten wir mal schauen was ankommt usw...

Monitore einfach das Statement im FireDAC Monitor. Ich habe die TFDQuery einfach genommen wie sie in der Tool Palette verweilte.

rd = TFDMoneRemoteClientLink. Der macht die Verbindung zwischen Applikation und FireDAC Monitor. Du kannst aber genauso ein File mitschreiben. Dann siehst du was ankommt bei der DB.

Delphi-Quellcode:

procedure TForm1.bnMemTabClick(Sender: TObject);
begin

  if not fdc.Connected then fdc.Connected:=true;
(*  cmd.Active:=true;
  cmd.CommandText.Clear;
  cmd.CommandText.add('select * from Customer');
  if not memt.Active then memt.Active:=true;
  lbx.Items.Add(IntToStr(memt.RecordSize));*)

  qry.Close;
  qry.SQL.Clear;
  qry.SQL.Add('select * from customer');
  qry.Active:=true;
  if not cds.Active then cds.Active:=true;

Delphi-Quellcode:

procedure TForm1.bntestClick(Sender: TObject);
begin
  try
    if not rcl.Tracing then rcl.tracing:=true;
    cds.Insert;
    cds.FieldByName('CUST_NO').AsString:='9990';
    cds.FieldByName('CUSTOMER').AsString:='Bunny';
    cds.Post;
    cds.ApplyUpdates(-1);
  finally
    rcl.tracing:=false;
  end;
end;

Ich kann zwar das Problem umgehen, aber ich würde es gern verstehen:

Ich tausche gerade in einem Projekt TSQLQuery durch TFDQuery. An der Query hängt ein Datasetprovider mit Clientdataset. Mein sql-Statement lautet (alles klein geschrieben)

select * from moule

Also ziemlich simpel und einfach. Im Projekt wird irgendwo ein Clientdataset.insert gefolgt von einem Post gemacht. Dabei kommt eine Exception Tabelle nicht gefunden und im Call stack sehe ich, im SQL Statement steht ein:

Insert into "moule" ...

Also Tabellenname in Kleinschrift mit Anführungszeichen. Firebird macht per Default immer Großschrift, daher Tabelle nicht gefunden.
Nun mach ich einen Unit-Test für das Insert, und siehe da, der Test läuft durch. In dem SQL Statement steht

Insert into "MOULE"

Nun stellt sich die Frage: Warum? Projekt und Test benutzen die selbe Verbindung, die selben Parameter.
Angehängte Dateien
Dateityp: 7z Trace_160723_1123.7z (1,3 KB, 3x aufgerufen)
Dateityp: zip Trace_160723_1123.zip (1,5 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat