我正在为呼叫建立投票系统,并尝试在VB中构建它。到目前为止,这就是我所拥有的:
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = C:\PhonePoll.mdb"
con.ConnectionString = dbProvider & dbSource
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\PhonePoll.mdb"
con.Open()
'sql = "SELECT * FROM voting"
'da = New OleDb.OleDbDataAdapter(sql, con)
'da.Fill(ds, "voting")
If inc <> -1 Then
Dim cb As New OleDb.OleDbCommandBuilder(da)
Dim dsNewRow As DataRow
dsNewRow = ds.Tables("voting").NewRow()
dsNewRow.Item("voted") = RadioButton1.Checked.ToString
dsNewRow.Item("voted") = RadioButton2.Checked.ToString
dsNewRow.Item("voted") = RadioButton3.Checked.ToString
dsNewRow.Item("voted") = RadioButton4.Checked.ToString
ds.Tables("voting").Rows.Add(dsNewRow)
da.Update(ds, "voting")
MsgBox("New Record added to the Database")
End If
MsgBox("Phone call has been logged")
con.Close()
此代码包含在“录制通话”按钮中。在表单上,有四个单选按钮,所有按钮都有不同的文本值,应输入“投票”表。
我的问题是,当我选择一个单选按钮并单击“录制按钮”时,它会显示以下错误:
NullReferenceException:未将对象引用设置为对象的实例。
此错误显示在
行上dsNewRow = ds.Tables("voting").NewRow()
我不确定我做错了什么。
欢呼帮助!
答案 0 :(得分:2)
我在实际代码中假设您没有注释掉数据集的SQL和Fill()方法,这只是上面代码中的拼写错误 - 对吗?如果我错了,并且该代码块已被注释掉,那么您的数据集为空,这就是问题......
答案 1 :(得分:0)
不要将所有代码放在一行 - 将其拆分。 ds是null,或者 ds.Tables(“voting”)返回null,但你永远不会知道,因为它是暂时的。你无法检查它,因为你没有将它存储在变量
中这就是我试图永远不会打电话太久的原因:
A b = me.foo.bar.baz.fuz.bom()&lt; - 只是在找麻烦!
答案 2 :(得分:0)
ds是null
,未初始化
也许你不引用:
'sql = "SELECT * FROM voting"
'da = New OleDb.OleDbDataAdapter(sql, con)
'da.Fill(ds, "voting")