关于数据窗口中编辑sql的问题??各位高手指点!

zx_maoer 2002-11-30 09:41:33
我用dw_1.getsqlselect()得到sql语法,如:
PBSELECT( VERSION(400) TABLE(NAME="Orders" ) COLUMN(NAME="Orders.OrderID") COLUMN(NAME="Orders.CustomerID") COLUMN(NAME="Orders.CompanyName") COLUMN(NAME="Orders.PayBy") COLUMN(NAME="Orders.BusinessMan"))
但是,我想在上面句子中加上where 条件就不知道如加?
其实,只要这样:
SELECT Orders.OrderID,
Orders.CustomerID,
Orders.CompanyName,
Orders.PayBy,
Orders.BusinessMan
FROM Orders
where .....
再用selsqlselect()可使用,但是就不成为通用的了!!
请各位多帮忙!!!
...全文
42 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx_maoer 2002-12-05
  • 打赏
  • 举报
回复
我的问题已解决了,你们说的都没有错,
主要是:我没有从graphic 转到conver to syntax
这可是关键的一步

laoli950217 2002-12-03
  • 打赏
  • 举报
回复
在使用getsqlselect()函数时,在建立数据窗口对象时不能在WHERE中设置任何条件,否则就是你得到的那种形式,去掉你数据窗口对象中的条件,再试一下。
toutou 2002-12-03
  • 打赏
  • 举报
回复
在使用getsqlselect()函数时,前提条件是你的where中没有定义检索参数。
然后查找、定位where的位置,之后截取、替换就不用我说了
zx_maoer 2002-12-02
  • 打赏
  • 举报
回复
我得到了这样的句子:
PBSELECT( VERSION(400) TABLE(NAME=~"Orders~" ) COLUMN(NAME=~"Orders.OrderID~") COLUMN(NAME=~"Orders.CustomerID~") COLUMN(NAME=~"Orders.CompanyName~") COLUMN(NAME=~"Orders.PayBy~") COLUMN(NAME=~"Orders.BusinessMan~") COLUMN(NAME=~"Orders.OrderNO~")) WHERE (Orders.CustomerID = 'sd')
我用setsqlselcet()设置,再用dw_1.retrieve()
出现错误,提示为:select error:line1:incorrect syntax near "version"
zx_maoer 2002-12-02
  • 打赏
  • 举报
回复
我是用pb8.0的,
上面我试过,也错误
zx_ali 2002-12-02
  • 打赏
  • 举报
回复
不是呀
pobosskey 2002-12-02
  • 打赏
  • 举报
回复
你是不是dw的dataobject是动态加上去的!

??

zx_maoer 2002-12-02
  • 打赏
  • 举报
回复
是这样的,可是就得不想要的结果
booksfount 2002-12-02
  • 打赏
  • 举报
回复
你的前后顺序对么?应该先settransobject然后getsqlselect.
看帮助!
888888888888 2002-12-02
  • 打赏
  • 举报
回复
关注
zx_maoer 2002-12-02
  • 打赏
  • 举报
回复
好象就是去了VERSION(400) ,其它都一样的
zx_maoer 2002-12-02
  • 打赏
  • 举报
回复
我已经settransobject,可是得到结果还是一样的?
andyzq 2002-12-02
  • 打赏
  • 举报
回复
不写settransobject(),得到的sql语句如下格式
PBSELECT( VERSION(400) TABLE(NAME="Orders" ) COLUMN(NAME="Orders.OrderID") COLUMN(NAME="Orders.CustomerID") COLUMN(NAME="Orders.CompanyName") COLUMN(NAME="Orders.PayBy") COLUMN(NAME="Orders.BusinessMan"))

写了以后就是下面的格式
SELECT Orders.OrderID,
Orders.CustomerID,
Orders.CompanyName,
Orders.PayBy,
Orders.BusinessMan
FROM Orders

这是你再使用getsqlselect()得到的就是正常的sql语句了
如:
string ls_old_sql, ls_new_sql
dw_1.settransobject(sqlca)
ls_old_sql = dw_1.getsqlselect()
ls_new_sql = ls_old_sql + space(1) + 'where' + space(1) &
'OrderID='+ '01'
dw_1.setsqlselect(ls_new_sql)
dw_1.retrieve(参数)
booksfount 2002-12-02
  • 打赏
  • 举报
回复
你得到的PBSELECT打头的sql 语句,是因为没有dw_1.settransobject(sqlca)
应该首先settransobject然后再getsqlselect()这样就是正确的了。帮助里有说明,你可详细看看
szpqq 2002-12-02
  • 打赏
  • 举报
回复
可以先用实例变量得到开始的is_sql = dw_1.getsqlselect() (open事件中)
以后检索时用is_sql加上你的检索条件就可以了,不用再设回初始的sql
qieyj 2002-12-01
  • 打赏
  • 举报
回复
仔细看看下面的代码:很完善的
s_syntax=dw.getsqlselect()
if pos(s_syntax,"order")=0 then
s_order=""
else
s_order=" " + mid(s_syntax,pos(s_syntax,"order"))
s_syntax=mid(s_syntax,1,(pos(s_syntax,"order")-1))
end if
if pos(s_syntax,"where")=0 then
s_where=""
s_inti_syntax =mid(s_syntax,pos(s_syntax,"FROM"))
else
s_where=" " + mid(s_syntax,pos(s_syntax,"where"))
s_syntax=mid(s_syntax,1,(pos(s_syntax,"where")-1))
s_inti_syntax =mid(s_syntax,pos(s_syntax,"FROM"))
End IF
s_where = " where " + str_condition
dw.Modify('DataWindow.Table.Select= "' + s_syntax + '"')
dw.SetTransObject(sqlca)
dw.retrieve()
george77 2002-12-01
  • 打赏
  • 举报
回复
这样试试:
string ls_old,ls_new
ls_old = dw.getsqlselect()
long ll_pos
ll_pos = pos(ls_old,'where ')
if ll_pos<=0 then
ls_new = ll_old + 'where ...'
else
ll_pos = ll_pos + len('where ')
ls_new = left(ls_old,ll_pos) + '... and ' + right(ls_old,ll_pos+1)
end if
dw.setsqlselect(ls_new)
dw.retrieve()
dw.setsqlselect(ls_old)

609

社区成员

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

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