我一直在研究这段代码,并且我得到了这个语法错误,有人知道什么了吗?
Dim sql As String
Dim con As New OleDb.OleDbConnection
Dim da As OleDb.OleDbDataAdapter
Dim ds As New DataSet
con.ConnectionString = "PROVIDER = Microsoft.Jet.OLEDB.4.0; Data Source = G:\school\Thespellingbee\Resources\Spelling Bee1.mdb"
con.Open()
sql = "SELECT * FROM [Words + Definitions]"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "Words + Definitions")
con.Close()
Dim cb As New OleDb.OleDbCommandBuilder(da)
ds.Tables("Words + Definitions").Rows(0).Item(1) = WordTextBox.Text
ds.Tables("Words + Definitions").Rows(0).Item(2) = DescriptionTextBox.Text
da.Update(ds, "Words + Definitions")
MsgBox("It's working", MessageBoxButtons.OK)
End Sub
我知道我越来越近了,但是在da.update部分的最后我得到了这个问题,即使对vbasic来说还是相当新的,任何人都可以帮忙吗?谢谢:))
好的,所以我做了hans告诉我要做的事情,但现在当我到达结尾附近的ds.tables部分时,我得到这个“对象引用未设置为对象的实例。”。数据库位置是正确的,文本框是正确的名称,那么什么可能是空引用?
我的表中包含内容,三列和10行数据
答案 0 :(得分:0)
没有合适的空间。 ds.Tables("Words + Definitions")
为空。
您可以在选择查询中为表名设置别名:
sql = "SELECT * FROM [Words + Definitions] [wd]"
...
da.Fill(ds, "wd")
然后访问:
ds.Tables("wd").Rows(0).Item(1) = WordTextBox.Text
ds.Tables("wd").Rows(0).Item(2) = DescriptionTextBox.Text
尽管如此,您始终可以按索引访问该表。
ds.Tables(0).Rows(0).Item(1) = WordTextBox.Text
ds.Tables(0).Rows(0).Item(2) = DescriptionTextBox.Text