参考数据库错误

时间:2014-04-24 07:39:30

标签: function dataset visual-studio-2013

我是视觉基础的新手,请提前原谅我。 我正在尝试从模块引用数据表,我得到“引用不是共享成员需要对象”错误。我无法弄清楚原因。

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

1 个答案:

答案 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