以下是引用TonyDeng在2013-1-28 14:36:06的发言:
要注意调试技巧:你已经跟踪出出错行,仔细观察那条语句,错误多数出在宏替换上,用MESSAGEBOX()检查xszd的内容,把文本展开到语句上看看。这是用宏常见的错误,写这种代码要非常小心,很多时候贪图简洁用宏语法,后患是无法预料的。
谢谢。想了很久,错误的根源应该在以下这段代码:
FOR xh=1 TO THISFORM.LIST2.LISTCOUNT
IF thisform.list2.Selected(xh)
xszd=xszd+","+alltrim(THISFORM.LIST2.list(xh))
ENDIF
ENDFOR
即变量XSZD(显示字段)的赋值有误。
列表框(list2)的列表项是在表单的Init事件中定义的,它们来源于两个数据库表:qyjbxxb,qyzycpk。代码如下:
SELECT qyjbxxb
for i=1 to (FCOUNT()-1)
thisform.list2.additem(FIELD(i,'qyjbxxb',1))
ENDFOR
SELECT qyzycpk
for i=3 to (FCOUNT()-1)
thisform.list2.additem(FIELD(i,'qyzycpk',1))
endfor
列表项显示的是字段标题,变量xszd接收的应该是字段名,因此,那段给XSZD赋值的代码肯定是错误的,它不能从表中找到应该显示的字段。现在的问题是,根据这种情况,该语句应该怎样写呢?怎样将列表框中选定的项所对应的表字段名赋值给变量XSZD?