[英]Retrieving data with single quote from dataset (Delphi)
目前我有类似的东西,但是当数据中有单引号时,我无法从数据集中检索我的数据
procedure TForm1.AfterConstruction;
begin
inherited;
cdsMain.FieldDefs.Add('ItemCode', ftWideString, 20);
cdsMain.CreateDataSet;
cdsDetail.FieldDefs.Add('ItemCode', ftWideString, 20);
cdsDetail.FieldDefs.Add('Project', ftWideString, 20);
cdsDetail.CreateDataSet;
var S := '6x8''''';
cdsMain.AppendRecord([S]);
cdsDetail.AppendRecord([S, 'P01']);
cdsDetail.AppendRecord([S, 'P02']);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if FDConnection1.Connected then
FDConnection1.Close;
if FDLocalSQL1.Active then
FDLocalSQL1.Active := False;
FDLocalSQL1.Active := True;
FDQuery1.Open('SELECT A.ItemCode, B.Project FROM Main A INNER JOIN Detail B ON (A.ItemCode=B.ItemCode)');
end;
我的预期结果是
项目代码项目
6x8' P01
6x8' P02
使用var S:= '6x8''''
时出现的错误
源代码
从我可以从源文件中推断出来,在这种情况下,FireDAC 中有一个错误。 如果我消除 SQL 中的 ON 子句,即使使用 ASCII 单引号 (#39),它也可以工作。 如果我用 UNICODE 单引号 (#8216) 替换 ASCII 单引号 (#39) 或完全删除它,它就可以工作。
似乎 TFDLocalSQL 的解析器(我认为)在尝试解析 ON 子句并且涉及 ASCII 单引号时存在错误。
您应该在https://quality.embarcadero.com向 Embarcadero 报告错误,包括您的源代码和说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.