procedure TForm1.FormShow(Sender: TObject);
begin
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Text :='select [id],proid,fid,banci,BigClassID,SmallClassID,cast(fxbm as varchar(500)) '
+'from info where cast(fxbm as varchar(500))<>cast(hsbm as varchar(500)) '
+'and cast(hsbm as varchar(500)) is not null order by proid,fid ';
adoquery1.Open ;
end;
大家帮我看看这段代码错在哪里。是这样的,delphi连接access数据库的info表,表里的hsbm是备注字段类型的,如果select hsbm from info的结果是(memo),没有任何数据,但实际上是有数据的,现在我要进行比较,所以我要强制转换成varchar类型,但是出错了,大家帮我改一下。
begin
adoquery1.Close ;
adoquery1.SQL.Clear ;
adoquery1.SQL.Text :='select [id],proid,fid,banci,BigClassID,SmallClassID,cast(fxbm as varchar(500)) '
+'from info where cast(fxbm as varchar(500))<>cast(hsbm as varchar(500)) '
+'and cast(hsbm as varchar(500)) is not null order by proid,fid ';
adoquery1.Open ;
end;
大家帮我看看这段代码错在哪里。是这样的,delphi连接access数据库的info表,表里的hsbm是备注字段类型的,如果select hsbm from info的结果是(memo),没有任何数据,但实际上是有数据的,现在我要进行比较,所以我要强制转换成varchar类型,但是出错了,大家帮我改一下。
----------------------------------
1, 改用其他第三方数据表控件
2, 在query中绑定自定义过程{
TForm13是窗体类名
qry1是query名称
}
procedure TForm13.DemoGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text := Sender.AsString;
end;procedure TForm13.qry1AfterOpen(DataSet: TDataSet);
begin
DataSet.FieldByName('col1').OnGetText := DemoGetText;
end;3, 给query提前加好列, 然后在备注字段的OnGetText事件中写 Text := Sender.AsString;
我一般都是定义其为varchar()类型,长度要估算。
不知这样合适否
+'cstr(fxbm) as fxbm1,fxrq,cstr(hsbm) as hsbm1,hsrq '
+'from info where fxbm<>hsbm and hsbm is not null order by proid,fid' ;这是答案!