以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  将一列的字符串全排列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87304)

--  作者:lur320
--  发布时间:2016/7/7 20:26:00
--  将一列的字符串全排列
Dim arr() As String

Dim a,ind As Integer
a= Tables("表A").Find("", 0, 0, False, True, True)
For ind = 0 To a-1
arr(Ind) =Tables("表A").Rows(ind)("第一列")
Next ind
\'
\'\'求排列
\'Dim lst_Permutation As List(Of String()) = PermutationAndCombination(Of String).GetPermutation(arr)
\'
\'Dim s1 As String = ""
\'For Each ary As String() In lst_Permutation
   \'s1 &= ary(0) & ary(1) & ary(2) & ary(3)  & ary(4)
\'Next
MessageBox.Show(arr(1))

以上是我的代码,借鉴了部分狐表大大提供的全排列代码。
但是在赋值阶段总是提示“未将对象引用设置到对象的实例。”
即使将全排列部分注释掉也是如此


--  作者:大红袍
--  发布时间:2016/7/7 20:41:00
--  
Dim arr(Tables("表A").Rows.count-1) As String
For Each r As Row In Tables("表A").Rows
    arr(r.Index) = r("第一列")
Next

--  作者:lur320
--  发布时间:2016/7/7 21:00:00
--  
。。。
为毛这种搭配总是猜不透。。。好几次了
记得有一次就是e.datarow可以用在findrow里面。。。

Dim wz As Integer = Tables("订单").FindRow(e.DataRow)


--  作者:lur320
--  发布时间:2016/7/7 21:03:00
--  
就是arr(x)里面的X可以用行的index。而不能直接用数字。。。
--  作者:大红袍
--  发布时间:2016/7/7 23:49:00
--  
以下是引用lur320在2016/7/7 21:03:00的发言:
就是arr(x)里面的X可以用行的index。而不能直接用数字。。。

 

肯定可以直接用数字。但是这个数字,必须在0到arr元素个数-1这个范围内。


--  作者:lur320
--  发布时间:2016/7/8 8:53:00
--  
以下是引用大红袍在2016/7/7 23:49:00的发言:

 

肯定可以直接用数字。但是这个数字,必须在0到arr元素个数-1这个范围内。

For ind = 0 To a-1
arr(Ind) =Tables("表A").Rows(ind)("第一列")
.......
MessageBox.Show(arr(1))
 
 
那么为什么这里按照这样赋值不行?
最后arr(1)总是没有值
 

--  作者:lur320
--  发布时间:2016/7/8 8:55:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:capture.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/7/8 9:40:00
--  

要定义数组的数量

 

Dim arr(Tables("表A").Rows.count-1) As String

 

http://www.foxtable.com/webhelp/scr/0216.htm

 


--  作者:lur320
--  发布时间:2016/7/8 20:30:00
--  
Dim a,ind As Integer
a= Tables("表A").Find("", 0, 0, False, True, True)
Dim arr(a-1) As String
For ind = 0 To a-1
arr(Ind) =Tables("表A").Rows(ind)("第一列")
Next ind

我更新了下代码,加入判断空行的数字a。再定义好数组的数量后就没有报错了