setsqlselect??????

xizhouhawk 2003-04-27 11:13:54
connect using sqlca;
string ls_oldsql
string ls_newsql
ls_oldsql=dw_1.getsqlselect()
ls_newsql=ls_oldsql+" where no='2'"
if dw_1.setsqlselect(ls_newsql)=-1 then
beep(5)
messagebox("error")
else
dw_1.settrans(sqlca)
dw_1.retrieve()
dw_1.setsqlselect(ls_oldsql)
end if

ERROR:
select error:sqlstate=37000
[microsoft[odbc microsoft access driver]无效的sql语句;
期待'DELETE','INSERT','PROCEDURE','SELECT'或者'update'.
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xizhouhawk 2003-04-29
  • 打赏
  • 举报
回复
谢谢!是char型的,那怎么解决?
cooltnt 2003-04-28
  • 打赏
  • 举报
回复
你的no是查char型吗?这种类型是定长的,不足是可是会自动补空格的哦
xizhouhawk 2003-04-28
  • 打赏
  • 举报
回复
谢谢!
那个问题是因为我没有设置update属性!
现在又出现问题了.明明记录里有这条记录却查不到.
比如 no(文本) name(文本) address(文本)
2 hawk china

怪就怪在把no='2' 改成name='hawk'或者address='china'就能搜索到这条记录了'...
lihuihit 2003-04-27
  • 打赏
  • 举报
回复
同意cooltnt(甜甜粥)
因为你的oldsql中已经含有了where子句
当然绘出错的
另外一种方法就是重新构造整个sqlselect语句
不使用getsqlselect()方法
也可以解决同样的问题
cooltnt 2003-04-27
  • 打赏
  • 举报
回复
ls_oldsql=dw_1.getsqlselect()

if pos(ls_oldsql,"where")<>0 then
ls_newsql=ls_oldsql+" and no='2'"
else
ls_newsql=ls_oldsql+" where no='2'"
end if
cooltnt 2003-04-27
  • 打赏
  • 举报
回复
dw_1.setsqlselect(ls_oldsql) 这句好像也有问题,应该是ls_newsql
cooltnt 2003-04-27
  • 打赏
  • 举报
回复
原:
dw_1.settrans(sqlca) //去掉这句,好像没有必要
dw_1.retrieve()
dw_1.setsqlselect(ls_oldsql)

改为:
dw_1.setsqlselect(ls_oldsql)
dw_1.retrieve()
xizhouhawk 2003-04-27
  • 打赏
  • 举报
回复
connect using sqlca;
string ls_oldsql
string ls_newsql
ls_oldsql=dw_1.getsqlselect()
if pos(ls_oldsql,"where")<>0 then
ls_newsql=ls_oldsql+" and no='2'"
else
ls_newsql=ls_oldsql+" where no='2'"
end if
if dw_1.setsqlselect(ls_newsql)=-1 then
beep(5)
messagebox("error")
else
dw_1.settrans(sqlca)
dw_1.retrieve()
dw_1.setsqlselect(ls_oldsql)
end if

同样的错误:
开始我的dataobject中的数据源我看了一下没有where条件.

611

社区成员

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

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