使用VB.NET更新访问记录集

使用VB.NET更新访问记录集

问题描述:

如何使用VB.NET更新MS-Access记录集?使用VB.NET更新访问记录集

我基本上已经更新了id为1的字段,并且'ticker'的字段值是'UKX'。

要更新的数据位于“值”字段中,并且来自Public Sub。 dLast是我需要输入的数据来更新当前值。

目前我已经得到了代码:

Function update_db() 
    ' need to update the database 
    Dim daoengine As DAO.DBEngine 
    Dim dbs As DAO.Database 
    Dim rst As DAO.Recordset 
    daoengine = New DAO.DBEngine 
    dbs = daoengine.OpenDatabase("Project.mdb") 
    rst = dbs.OpenRecordset("ftsedata", DAO.RecordsetTypeEnum.dbOpenDynaset) 
    rst.Edit() 
    ' what do I do here to edit the field "value" where ticker=UKX ? 
    rst.Close() 
    dbs.Close() 
End Function 

Public Sub getftsestock() 
    Dim sAPIUrl As String = "http://www.google.com/ig/api?stock=UKX" 
    Dim oDocument As XDocument = XDocument.Load(sAPIUrl) 
    Dim dLast As Double = CDbl(GetData(oDocument, "last")) 
End Sub 

首先,改变你的子成一个函数,像这样

Public function getftsestock() as double 
    Dim sAPIUrl As String = "http://www.google.com/ig/api?stock=UKX" 
    Dim oDocument As XDocument = XDocument.Load(sAPIUrl) 
    getftsestock = CDbl(GetData(oDocument, "last")) 
End Sub 

然后做您的更新这样

rst = dbs.OpenRecordset("select * from ftsedata where (ticker='UKX')", DAO.RecordsetTypeEnum.dbOpenDynaset) 
    while not rsy.eof 
     rst.Edit 
     rst("value").value = getftsestock() 
     rst.update 

     rst.movenext 
    wend 

    rst.Close() 

然而,这样做会更有效率。

daoengine.Execute "Update ftsedata SET value='" & getftsestock() & "' WHERE ticker='UKX'" 
+0

我将如何应用来自getftsetock()的dLast的值? – bear 2012-01-11 01:19:54

+0

@shamil看到我更新的答案。 – JohnFx 2012-01-11 01:31:44

+0

啊,非常感谢 - 清除了 - 不知道它是以这种方式存储的。 VB2008Express喜欢删除我的Set关键字。我会让他们回来。 – bear 2012-01-11 01:33:55

您必须调用数据库对象的Execute方法。

daoengine.Execute "Update TableName set Col1=Value1 Where Ticker='UKX'" 

你应该使用ADO.NET Oledb提供商,而不是DAO在VB.NET。