我在delphi firemonkey应用程序的实时绑定中将TFDQuery与TStringGrid连接。
我尝试在基于Editbox的TFDQuery中使用过滤器进行搜索,但它的工作正常。
但是,每当我清除Editbox时,我在TStringGrid中的一行会显示"(bcd)"因为它的价值如下图所示。
我做错了什么?我该如何解决?编辑:
我的过滤器代码
var data = {};
data.toolAccess = value1;
data.toolId = value2;
data.UAM = value3;
$.ajax({
type: "POST",
url: "IROA_StoredProcedures.asmx/Delete_AgentTools",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success:function()
{
alert("Tool has been successfully delete");
},
error: function (XMLHttpRequest)
{
alert("error in Delete_AgentTools()");
console.log(XMLHttpRequest);
}
});
我使用TFDConnection.execSQL
编辑2: 要重现我的错误,您可以:
with MainQuery do begin
Filtered := False;
OnFilterRecord := nil;
Filter := FilterValue;
Filtered := True;
end;
"select id, sum(stock) as total_stock from stocks"
答案 0 :(得分:0)
好吧,我仍然不知道究竟是什么导致了这个问题,但我发现解决方案可以避免出现这个问题。
在刷新TStringGrid.selected
之前,您需要将-1
值设置为TFDQuery
。所以代码变成了:
FilterValue:= 'garmines_id LIKE ''/' +Edit1.Text+'%'' ESCAPE ''/'' ';
StringGrid1.selected := -1;
with FDQuery1 do begin
Filtered:= false;
OnFilterRecord := nil;
Filter := FilterValue;
Filtered := True;
end;
我怀疑这个问题的原因是来自mysql sum()方法的数据类型,即FmtBCD(32)
答案 1 :(得分:0)
转到“数据映射规则”(firedac连接) 标记忽略继承的规则 创建2条新规则
规则1:来源:dtBCD /目标数据类型:dtDouble /全部最小值:0 /全部最大值:100 rule2:来源:dtfmtbcd /目标数据类型:dtDouble /全部最小值:0 /全部最大值:100
单击确定。现在这些字段将为dtDouble,并且与tgrid兼容