看看是不是SQL写错了

leon2008go 2013-03-24 10:26:49
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类型,但是出错了,大家帮我改一下。
...全文
1503 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon2008go 2013-03-27
  • 打赏
  • 举报
回复
adoquery1.SQL.Text :='select proid,fid,banci,BigClassID,SmallClassID, ' +'cstr(fxbm) as fxbm1,fxrq,cstr(hsbm) as hsbm1,hsrq ' +'from info where fxbm<>hsbm and hsbm is not null order by proid,fid' ; 这是答案!
xxzqbxxzqb 2013-03-26
  • 打赏
  • 举报
回复
我一般都是定义其为varchar()类型,长度要估算。 不知这样合适否
simonhehe 2013-03-26
  • 打赏
  • 举报
回复
access里没有cast函数. 你是用dbgrid显示数据的? 如果是, 解决办法如下: ---------------------------------- 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;
张得一 2013-03-25
  • 打赏
  • 举报
回复
access里有varchar类型吗?
Oraclers 2013-03-24
  • 打赏
  • 举报
回复
你首先要确定备注型字段是否可以转换成字串,在SQL中不是任何类型都可以相互转换的。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧