2012-01-11 123 views
0

如何使用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 

回答

1

首先,改變你的子成一個函數,像這樣

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

0

您必須調用數據庫對象的Execute方法。

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

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