日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FireDAC 中文字段过滤问题

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FireDAC 中文字段过滤问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?當使用 FireDAC?Filter? 過濾數據的時候,通常這樣寫:

FDMemTable.Filtered := False; FDMemTable1.Filter := '姓名=' + string(edtFilter.Text).QuotedString; FDMemTable.Filtered := True;

將會報錯:
[FireDAC][Stan][Eval]-107. Invalid character found [ 姓名 = '張三' ]

解決方法一:字段名稱加上書名號[]

FDMemTable1.Filter := '[姓名]=' + string(edtFilter.Text).QuotedString;

解決方法二:通過?OnFilterRecord 事件處理

procedure TForm1.OnMyFilterRecord(DataSet: TDataSet; var Accept: Boolean); beginAccept := DataSet.FieldByName('姓名').AsString = edtFilter.Text; end;

附上完整代碼,如下:

unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error,FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,FireDAC.Stan.StorageBin, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids;typeTForm1 = class(TForm)grd1: TDBGrid;ds1: TDataSource;btnFiltered: TButton;edtFilter: TEdit;procedure btnFilteredClick(Sender: TObject);procedure FormCreate(Sender: TObject);privateFilter: string;FDMemTable: TFDMemTable;procedure OnMyFilterRecord(DataSet: TDataSet; var Accept: Boolean);public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.OnMyFilterRecord(DataSet: TDataSet; var Accept: Boolean); beginAccept := Filter.IsEmpty or (DataSet.FieldByName('姓名').AsString = Filter); end;procedure TForm1.btnFilteredClick(Sender: TObject); beginFilter := edtFilter.Text;FDMemTable.Filtered := False;// 方法一FDMemTable.Filter := '[姓名]=' + Filter.QuotedString;FDMemTable.Filtered := True; end;procedure TForm1.FormCreate(Sender: TObject); beginFDMemTable := TFDMemTable.Create(Self);with FDMemTable dobeginwith FieldDefs dobeginClear;Add('姓名', ftWideString, 50);Add('年齡', ftInteger);end;CreateDataSet;AppendRecord(['張三', 35]);AppendRecord(['李四', 31]);AppendRecord(['王五', 40]);// 方法二// OnFilterRecord := OnMyFilterRecord;end;ds1.DataSet := FDMemTable; end;end.

由于開發工具都是洋大人的,對中文支持不是太友好,防止出現不可預料的BUG,建議盡量不要使用中文字段名。

?

轉載于:https://www.cnblogs.com/rtcmw/p/10811617.html

總結

以上是生活随笔為你收集整理的FireDAC 中文字段过滤问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。