读书人

求大神求调试求运作!

发布时间: 2013-06-19 10:26:41 作者: rapoo

求大神,求调试,求运行!!
VFP一个小型程序初步做好了(算是吧~~),但是很多错误,不会调试。求高手帮忙调试或者指教!!万分感激。。。好着急~~~求大神,求调试,求运作!求大神留邮箱。。。。 调试 VFP
[解决办法]
会做不会调试,不应该吧。
[解决办法]
运行->修改错误->运行没有提示出错,检查运行结果->再进行检查,直到结果正确为止
[解决办法]
我这类似的...

sqfph="SELECT yh_qx.yh_id, yh_qx.cd_id, sys_cd.cd_mc, yh_qx.qx, sys_cd.cd_jb, sys_cd.cd_jb2, sys_cd.sxh FROM yh_qx INNER JOIN sys_cd ON yh_qx.cd_id = sys_cd.cd_id WHERE (sys_cd.cd_jb > 0) AND (yh_qx.yh_id = "+ thisform.yhid.Caption +") ORDER BY sys_cd.sxh"
sqfph2="SELECT yh_qx.yh_id, yh_qx.cd_id, sys_cd.cd_mc, yh_qx.qx, sys_cd.cd_jb, sys_cd.cd_jb2, sys_cd.sxh FROM yh_qx INNER JOIN sys_cd ON yh_qx.cd_id = sys_cd.cd_id WHERE (sys_cd.cd_jb > 0) AND (yh_qx.yh_id = 0) ORDER BY sys_cd.sxh"
SET TALK OFF
SQLSETPROP(0,"DispLogin",3) &&登录失败时不显示ODBC对话框
*!* lnhandle=sqlconnect(&lcConnStr)
lnhandle=sqlconnect('hpxt','sa','')
IF lnhandle < 0 && 连接失败
MESSAGEBOX("无法连接sql数据库!",0+48,"异常情况")
RETURN
ELSE
SQLEXEC(lnHandle,sqfph,'sql_cx')
thisform.text1.value="YES"
IF EOF()
SQLEXEC(lnHandle,sqfph2,'sql_cx')
thisform.text1.value="NO"
ENDIF
RELEASE sqfph
=SQLDISCONNECT(lnhandle) &&关闭连接
SELECT sql_cx
*-- 程序开始 ------------------------------------------
priv I,cn,L_i
i=1
L_i=1
*-- 用于对象的唯一性标记用
thisform.oletreeview.Nodes.Clear &&清除所有节点
*!* thisform.OleTreeView.nodes.add(,0,"top",allt(sql_cx.xm))
thisform.OleTreeView.nodes.add(,0,"top","权限设置- "+ thisform.yhm.Caption)
thisform.list1.List(L_i)=thisform.yhid.Caption
L_i=L_i+1


*-- 先建立一个顶层的目录

SELECT cd_mc,cd_jb,qx,cd_id FROM sql_cx WHERE (cd_id IN (SELECT MIN(cd_id) FROM sql_cx GROUP BY cd_jb)) ORDER BY sxh into cursor temp_xk
*-- 查询出该表的第一层目录的记录,通过group分组,可以保证结果的数据是唯一的

do while not eof()
thisform.OleTreeView.nodes.add("top",4,"xk"+allt(str(i)),allt(cd_mc))
IF ALLTRIM(temp_xk.qx)=='Y'
thisform.oletreeview.Nodes(thisform.oletreeview.nodes.Count).Checked= .T.
ELSE
thisform.oletreeview.Nodes(thisform.oletreeview.nodes.Count).Checked= .F.
ENDIF
thisform.list1.List(L_i)=ALLTRIM(STR(temp_xk.cd_id))
L_i=L_i+1
*-- 以循环的方式将这个系科的层目录,放到顶层目录的下面,并根据变量i得到顺序的排列
i=i+1
skip
ENDDO
PUBLIC c_d
c_d=i-1

*-- 至此,第一层排列放置结束,下面进行第二层的放置


*-- 下面的思路是,按照第一层所得的结果的记录集合,以次来放置他们各自的下一层
select temp_xk
go top
i=1
do while not eof()
cn=allt(str(recn())) && 此处的记录号可以与第一层变量i所产生的顺序号吻合
select cd_mc,qx,cd_id from sql_cx where cd_jb2==temp_xk.cd_jb order by sxh into cursor temp_xm
*-- 将属于某个第一层的下属名单查出来,得到一个新的记录集合
do while not eof()
thisform.OleTreeView.nodes.add("xk&cn",4,"xm"+allt(str(i)),allt(temp_xm.cd_mc))
IF ALLTRIM(temp_xm.qx)=='Y'
thisform.oletreeview.Nodes(thisform.oletreeview.nodes.Count).Checked= .T.
ELSE
thisform.oletreeview.Nodes(thisform.oletreeview.nodes.Count).Checked= .F.
ENDIF

IF i>0
thisform.list1.List(L_i)=ALLTRIM(STR(temp_xm.cd_id))
L_i=L_i+1
ENDIF
*-- 再以循环方式对第二层的姓名,分别放置,
*-- 此处,变量i因重新赋值为1,"xm"+allt(str(i)) 正好重新记数,
*-- 对它的理解只在于这个"xm"+allt(str(i))所反应的值在整个树中是唯一的。
select temp_xm
i=i+1
skip
enddo
select temp_xk
skip
*-- 进入第一层的下一个循环
ENDDO
thisform.oletreeview.Nodes(1).Expanded = .T. &&节点是否展开
thisform.oletreeview.Nodes(2).Expanded = .T. &&节点是否展开
ENDIF
use in temp_xm
use in temp_xk
use in sql_cx
RELEASE ALL

读书人网 >VFP

热点推荐