怪了,在pb下好用查出1条,编译就查出0条了!!!

smjack 2004-01-01 01:55:16
我在pb环境下,写dw_1.setfilter
skrid='admin' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='2003-12-05 13:07:35'
查出一条记录
messagebox("",dw_1.rowcount(),QUESTION!)报1条记录
可奇怪的是我编译成exe后,就查不出来,报为0条了
救命!!!!!!!!!
...全文
263 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
smjack 2004-01-01
  • 打赏
  • 举报
回复
解决了,谢谢你,问题是这样的,可能是我的pb8的问题,动态给数据窗口控件以数据窗口对象,编译后就出错,不显示数据,静态用ide给的就好使,所以我就不动态给了,多托几个数据窗口控件就行了,麻烦一点.应该是我的pb8环境的问题.谢谢,给分
smjack 2004-01-01
  • 打赏
  • 举报
回复
是一个数据库,数据库中有记录,我现在发现我唯一好使的那个数据窗口是我静态写的数据窗口对象,别的我动态用程序写的就都坏掉了,我怀疑是pb的编译环境有问题,我现在试试多放个数据窗口控件.
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复
在Pb环境中,Profile里设置的数据库与运行Exe文件时是连接的同一个数据库么?
数据库中有这条记录么?
去掉检索参数,Retrieve()能检索到数据么?
smjack 2004-01-01
  • 打赏
  • 举报
回复
编译后,去掉日期的过滤,就skr='admin'也查不出来了?!骇
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复
多个数据窗口对象共用一个数据窗口控件应该没问题的,你的代码不存在这方面的错误。
另外,检索不到数据,是不是因为输入的检索值在数据库中没有与之相匹配的记录?
另外,可以查找一下为什么只有一个数据窗口管用的原因?
再者,你可以简化查询条件,先去掉日期类型的检索参数,只保留一个检索参数,看看结果是否正确?如果正确,可能是日期类型的检索参数没设置好。
smjack 2004-01-01
  • 打赏
  • 举报
回复
网络老断,不好意识

可以连接成功,但是一共有四个数据窗口,在pb下运行都好使,发现在exe中只有一个好用,别的都没有数据了,我把好几个数据窗口对象都关联到一个数据窗口控件上了,难道和这有关系吗?
要释放??
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复
是这样的,你的意思是:
在Pb开发环境中,执行下面这条语句

dw_1.setfilter
skrid='admin' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='2003-12-05 13:07:35'
得到的结果为1;

如果编译为Exe文件,直接运行这个Exe文件,结果又变为0,是这样的吧?

那么直接运行这个Exe文件时,数据库连接是否成功呢?

smjack 2004-01-01
  • 打赏
  • 举报
回复
谢谢你
我是都在一个窗口,当他选择一个记录的时候,我记录到实例变量,is_Datetime
然后我判断一下
string ls_ret_string,t_string
string ls_code1,ls_code2


string sqlstr

integer li_x,li_y

if is_hk="h" then
dw_phmx.DataObject="dw_hy1" //货车
dw_phmx.DataObject="dw_ky1" //客车
end if
dw_phmx.settransobject(sqlca)

dw_phmx.setredraw(false)



dw_phmx.setfilter("skrid='"+gs_user_id +"' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='"+is_Datetime+"'"); //收款人和收款日期
dw_phmx.filter()

dw_phmx.retrieve()
dw_phmx.setredraw(true)
//pb下这时候显示1,编译后就0
messagebox("",dw_phmx.rowcount(),QUESTION!)
//以下是根据记录数,如果=1就一种格式,》1就打两种格式
if dw_phmx.rowcount()=1 then
dw_phmx.print()
// messagebox("",'1',QUESTION!)
elseif dw_phmx.rowcount()>1 then
if is_hk="h" then
dw_phmx.DataObject="dw_hy2"
else
dw_phmx.DataObject="dw_ky2"
end if
dw_phmx.settransobject(sqlca)
dw_phmx.setredraw(false)
dw_phmx.setfilter("skrid='"+gs_user_id +"' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='"+is_Datetime+"'");
dw_phmx.filter()
dw_phmx.retrieve()
dw_phmx.setredraw(true)
dw_phmx.print()
// messagebox("",'2',QUESTION!)
if is_hk="h" then
dw_phmx.DataObject="dw_hy3"
else
dw_phmx.DataObject="dw_ky3"
end if
dw_phmx.settransobject(sqlca)
dw_phmx.setredraw(false)
dw_phmx.setfilter("skrid='"+gs_user_id +"' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='"+is_Datetime+"'");
dw_phmx.filter()
dw_phmx.retrieve()
dw_phmx.setredraw(true)
dw_phmx.print()
// messagebox("",'3',QUESTION!)
end if

if dw_phmx.rowcount()>0 then
dw_phmx.setfocus()
dw_phmx.selectrow(0,false)
dw_phmx.selectrow(1,true)

end if
//messagebox("",dw_phmx.rowcount(),QUESTION!)

// dw_phmx.print()
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复
你的意思是在第一个界面中可以检索出数据。
我想问一下,在Pb环境中,你是怎么执行下面这条语句的?

dw_1.setfilter
skrid='admin' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='2003-12-05 13:07:35'
smjack 2004-01-01
  • 打赏
  • 举报
回复
连上了,第一个界面是登陆呀,这都是第二个页了
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复
数据库连上了么?
smjack 2004-01-01
  • 打赏
  • 举报
回复
to CodeMagic(写错了吧):
jfdate='2003-12-05 13:07:35'
这样写就说表达史错误了,我用的是pb8
smjack 2004-01-01
  • 打赏
  • 举报
回复
dw_phmx.setfilter("skrid='"+gs_user_id +"' and string(jfdate,'yyyy-mm-dd hh:mm:ss')='"+is_Datetime+"'");
dw_phmx.filter()
dw_phmx.retrieve()

gs_user_id =admin is_Datetime='2003-12-05 13:07:35'

help me!!
jdsnhan 2004-01-01
  • 打赏
  • 举报
回复
不是吧!怪了!
把语句写全了试试:

skrid = "...."
dw_1.setfilter(skrid)
dw_1.filter()
messagebox("",string(dw_1.rowcount()))
CodeMagic 2004-01-01
  • 打赏
  • 举报
回复

string(jfdate,'yyyy-mm-dd hh:mm:ss')='2003-12-05 13:07:35'
改为
jfdate='2003-12-05 13:07:35'
试试?

609

社区成员

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

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