2012-01-11 14 views
0

VB.NETを使用してMS-Accessレコードセットを更新するにはどうすればよいですか?VB.NETを使用してアクセスレコードセットを更新する

私は基本的にidが1のフィールドを更新し、 'ticker'のフィールド値は 'UKX'です。

更新するデータは「値」フィールドにあり、パブリックサブから来ます。 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

まず、しかしこの

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() 

のように、あなたの更新を行う続いので

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 

のような機能にあなたのサブを変更します。私は現在、コードを持っている

これを行う方がはるかに効率的です。

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

getftsetock()からdLastの値を適用するにはどうすればよいですか? – bear

+0

@shamil私の更新答えを見てください。 – JohnFx

+0

ああ、多くの感謝 - それはそれがそのように格納されていたことを知らなかった。 VB2008Expressは自分のSetキーワードを削除するのが好きです。私はそれらを戻します。 – bear

0

データベースオブジェクトのExecuteメソッドを呼び出す必要があります。

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

あなたはVB.NETではなくDAOのADO.NET Oledbプロバイダを使用する必要があります。

関連する問題