N
NightMare
Unregistered / Unconfirmed
GUEST, unregistred user!
[^]
我已经看了,silicon的帖子,但是我在qrmain的afterOpen里加了如下代码,仍然不能成功
procedure TfrmniLHouse.qrMainAfterOpen(DataSet: TDataSet);
var
i: integer;
begin
//当clientdataset打开access时,widestring类型的字段不支持filter中文
for i := 0 to qrmain.FieldDefs.Count - 1do
begin
if qrmain.FieldDefs.Items.DataType = ftWideString then
begin
// showmessage(qrmain.FieldDefs.Items.Name);
qrmain.FieldDefs.Items.DataType := ftString;
end;
end;
for i := 0 to qrmain.Fields.Count - 1do
begin
if qrmain.Fields.Fields is TWideStringField then
begin
// showmessage(qrmain.FieldDefs.Items.Name);
qrmain.Edit;
qrmain.Fields.Fields := TStringField(qrmain.Fields.Fields);
qrmain.Post;
qrmain.MergeChangeLog;
if qrmain.Fields.Fields is TStringField then
showmessage(qrmain.Fields.Fields.FieldName);
end;
end;
上面两个循环将FieldDef里的wideString改成了String,Fields里的WideStringField改成了StringField
还是不能正常的进行Filter(Filter有中文的条件下哈,没有中文的时候非常正常)
我已经看了,silicon的帖子,但是我在qrmain的afterOpen里加了如下代码,仍然不能成功
procedure TfrmniLHouse.qrMainAfterOpen(DataSet: TDataSet);
var
i: integer;
begin
//当clientdataset打开access时,widestring类型的字段不支持filter中文
for i := 0 to qrmain.FieldDefs.Count - 1do
begin
if qrmain.FieldDefs.Items.DataType = ftWideString then
begin
// showmessage(qrmain.FieldDefs.Items.Name);
qrmain.FieldDefs.Items.DataType := ftString;
end;
end;
for i := 0 to qrmain.Fields.Count - 1do
begin
if qrmain.Fields.Fields is TWideStringField then
begin
// showmessage(qrmain.FieldDefs.Items.Name);
qrmain.Edit;
qrmain.Fields.Fields := TStringField(qrmain.Fields.Fields);
qrmain.Post;
qrmain.MergeChangeLog;
if qrmain.Fields.Fields is TStringField then
showmessage(qrmain.Fields.Fields.FieldName);
end;
end;
上面两个循环将FieldDef里的wideString改成了String,Fields里的WideStringField改成了StringField
还是不能正常的进行Filter(Filter有中文的条件下哈,没有中文的时候非常正常)