以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  帮助文档一页咨询  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=89497)

--  作者:kolen
--  发布时间:2016/8/23 11:57:00
--  帮助文档一页咨询
帮助文档这里,有问题吧!看不懂,请老师帮我看下,谢谢!

本页地址:http://www.foxtable.com/webhelp/scr/2410.htm

设计这样的窗口很简单,窗口插入一个CheckedListBox控件,一个“确定”按钮,一个“取消”按钮。
窗口的AfterLoad事件代码设置为:

Dim lb As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1")
lb
.ComboList = DataTables("订单").GetComboListString("产品")

“确定”按钮的代码设置为:

Dim s As String
Dim
 l As WinForm
.CheckedListBox = e.Form.Controls("CheckedListBox1")
For
 Each Index As Integer In l
.CheckedIndices
    If
 s > "" Then                  \'如果S非空那么执行
        s = s & 
","
    
End If
    s = s & 
"\'" & l
.Items(Index) & "\'"        
Next
If
 s > "" Then
    Tables
("订单").Filter = "产品 In (" & s & ")"
End
 If
e
.Form.Close()

[此贴子已经被作者于2016/8/24 9:36:32编辑过]

--  作者:大红袍
--  发布时间:2016/8/23 12:17:00
--  

 意思是,如果之前s没有数据,就不加入逗号, 这样是为了合成的字符串最前面没有逗号。

 

 你也可以不判断,最后对 s.Trim(",") 也可以


--  作者:kolen
--  发布时间:2016/8/23 12:37:00
--  
 循环第一次,S有没有数据,那么以下这个条件不成立,
If s > "" Then                 
        s = s & 
","
End If

所以执行s = s & "\'" & l.Items(Index) & "\'"  代码,假设值为a,b,c
执行完以上代码后,s = ,a,
(xun 
循环第二次: 条件成立了,
If s > "" Then                 
        s = s & 
","
End If

这时候s = ,a, ,
怎么就不对了,我的理解错在哪里了???


--  作者:大红袍
--  发布时间:2016/8/23 14:49:00
--  

 最后得到 \'a\',\'b\',\'c\' 这样的数据。

 

 不然就得到了 ,\'a\',\'b\',\'c\'


--  作者:kolen
--  发布时间:2016/8/23 16:30:00
--  

最后得到 \'a\',\'b\',\'c\' 这样的数据。

 

 不然就得到了 ,\'a\',\'b\',\'c\'

这个意思我明白了。


就是下面的代码 是专用代码吗? s > "" 能不能改成s <> "",只要不等于就行了?

If s > "" Then                 
        s = s & 
","
End If


--  作者:大红袍
--  发布时间:2016/8/23 17:24:00
--  
 都可以,一样的意思