pb8.03拒绝调用函数!!!!

zoge 2002-12-16 04:03:34
我定义了一个函数,用来提取数据库数据然后逐个插入到datawindow中,
就是先 select 字段 into :变量 from 表

然后 datawindow.setitem(行好,字段,变量)

把这段代码拷贝到程序中执行可以通过,但一放到函数里面就没用了!!

程序到了这一步根本就不调用函数!跳过了函数继续执行后面的,请问怎么回事?
...全文
40 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoge 2002-12-18
  • 打赏
  • 举报
回复
问题解决,结贴,散分
zoge 2002-12-18
  • 打赏
  • 举报
回复
to :IVANY()
into :bddm, :ls_nd, :BZZS ---------少一个变量
是因为拷贝过来丢掉的

现在我还是疑惑,如何把数据窗口作为参数传递?
lyzalan 2002-12-18
  • 打赏
  • 举报
回复
定义一个函数,参数 adw_arg type: datawindow 或者是 用户对象的实例。
type: u_dw
zoge 2002-12-17
  • 打赏
  • 举报
回复
to: xlhl(顽皮兔子)
请问窗体函数和外部函数有什么区别?

我就是在向导那里点"function",然后设置名称、参数之类保存的,请问是哪种函数?可不可以直接调用?
toutou 2002-12-17
  • 打赏
  • 举报
回复
我感觉你的系统出问题了,应该把系统修理一下了(我以前有过这样的经历)再有把函数分拆成几个小的函数
zoge 2002-12-17
  • 打赏
  • 举报
回复
to: lyzalan()

代码第一行?你是否指调用函数的第一行?还是函数本身的第一行?调用函数的地方我没有放w_yby_jsxl.,因为我就是在w_yby_jsxl这个窗体中调用函数。
还有就是你说的定义一个class的方法我来试一下,这里谢了先
IVANY 2002-12-17
  • 打赏
  • 举报
回复
ll_new=tab_1.tabpage_1.dw_1.InsertRow(0) //数据窗口增加一行,ll_new为当前行号
tab_1.tabpage_1.dw_1.SetItem(ll_new,'bddm',is_bd3) //插入第一个字段,也就是bddm

select BDDM, ND, BDLB, BZZS //从数据库中获得数据
into :bddm, :ls_nd, :BZZS ---------少一个变量
from BY_YBY_BB_JSXL
where bddm=:is_bd3;

tab_1.tabpage_1.dw_1.SetItem(ll_new,'nd',ls_nd) //放入dw_1
tab_1.tabpage_1.dw_1.SetItem(ll_new,'BDLB',BDLB)
tab_1.tabpage_1.dw_1.SetItem(ll_new,'bzzs',bzzs)

保存之前用tab_1.tabpage_1.dw_1.AcceptText()
数据窗口的数据源用SQL Select
zoge 2002-12-17
  • 打赏
  • 举报
回复
to: flythinking(飞鸟)

原来这就是pb8 debug的方法,我知道了,非常感谢
zhh9999 2002-12-17
  • 打赏
  • 举报
回复
变量为空有时是不执行语句
bzlj 2002-12-17
  • 打赏
  • 举报
回复
我也遇到这该死的问题,帮你up一下
junbinguo 2002-12-17
  • 打赏
  • 举报
回复
你其中的一个变量为空,这样运行是没有反应的
zoge 2002-12-17
  • 打赏
  • 举报
回复
考,发现了一个问题,那就是我的函数不能设置断点!!!

这可能是问题所在

以前的别的函数都可以,就是那个不调用的不能!!请问大家这是什么原因?
lyzalan 2002-12-16
  • 打赏
  • 举报
回复
我想问一下你: 你代码的第一行是否有 (w_yby_jsxl.)作为前辍,如果没有是找不到任何对象的。

第二:对于你讲的绝对路径是不可取的,我建义你写成一个class,里面可以定义不同的函数,而且可以对多次调用的地方进行不同的设置。
例:在函数中可以定义类型为 window 参数(aw_window),可以将你的w_yby_jsxl对象传进来然后用window 的control[]数组。

long ll_loop
tab ltab_1
for ll_loop=1 to upperbound(aw.window.control[])
if typeof(aw.window.control[ll_loop])=tab! then
ltab_1=aw.window.control[ll_loop]
.........
end if
next

注: 对于得到数据窗口也可以用同样的方法,但最好使用用户对象去做。

xlhl 2002-12-16
  • 打赏
  • 举报
回复
不知道你定义的是窗口函数还是外部函数?
请注意你DATAWINDOW传值得方式,外部函数要用REF方式

flythinking 2002-12-16
  • 打赏
  • 举报
回复
to zoge(春暖花开):

你运行程序时,PB的开发环境最小化在任务栏上,这时点左键,就会出现一个对话框,有三个选项,选中间一个。
zoge 2002-12-16
  • 打赏
  • 举报
回复
没错,是拷贝过来丢掉的
xiaozg118 2002-12-16
  • 打赏
  • 举报
回复
奇怪 看不出什么错误
除了你的SQL 语句SELECT的列和变量的个数不一样外(当然,我想肯定是你拷贝过来的时候拷贝掉的)
没有遇见过这种情况
不行的话还是升级你的PB或者重新安装试试!
888888888888 2002-12-16
  • 打赏
  • 举报
回复
重装
zoge 2002-12-16
  • 打赏
  • 举报
回复
我的pb8一debug就非法退出,好像我的几个朋友永乐都说这样,请问“点左键,再点debug ”什么意思?在哪里点左键?
flythinking 2002-12-16
  • 打赏
  • 举报
回复
单步跟踪一下吧!

pb8的单步跟踪要在Tools->System Options...中选中Just in time Debugging

然后设置断点,运行时点左键,再点debug
加载更多回复(9)

611

社区成员

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

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