我是视觉基础的新手,请提前原谅我。 我正在尝试从模块引用数据表,我得到“引用不是共享成员需要对象”错误。我无法弄清楚原因。
Public Module myFuncs
Public Function get_name()
Dim lotto As Integer
Dim counter As Integer
Dim first As String
Dim last As String
Dim fullname As String
counter = Database11DataSet.Tbl_names.Rows.Count
lotto = Int((counter - 1 + 1) * Rnd() + 1)
Dim nameq = From n In Database11DataSet.Tbl_names.AsEnumerable()
Where n.ID = lotto
Select n
For Each n In nameq
first = n.first
Next
lotto = Int((counter - 1 + 1) * Rnd() + 1)
...'为姓氏做同样的事情
Return fullname
End function
答案 0 :(得分:0)
正如你所提到的,你的问题出现在以下几行:
Database11DataSet.Tbl_names
在您的代码中,Database11DataSet
似乎是一种类型而不是一种对象;可以在类型上调用的唯一方法是共享的(或者,取决于语言,静态)。来自http://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods:
静态方法既不需要类的实例也不能隐式访问此类实例的数据(或此类,self,Me等)。静态方法在某些编程语言中区别于静态关键字放在方法签名的某处。
在您的情况下,您应该可以通过在代码顶部创建Database11DataSet
的实例,然后使用它代替类型来解决此问题:
Public Function get_name()
...
Dim data as new Database11DataSet()
counter = data.Tbl_names.Rows.Count
lotto = Int((counter - 1 + 1) * Rnd() + 1)
Dim nameq = From n In data.Tbl_names.AsEnumerable()
Where n.ID = lotto
Select n
...
End Function