コマンドボタンClickでリストボックスの内容をmdbへ保存させたいのですがどうやるんでしょうか?
わかる方おられましたらアドバイスお願いします。
workspace.OpenDatabase, database.OpenRecordset を
使用して解決したっていうことは、
DAO を使っているのですよね。
mdb に保存する場合も同じように、
database.Execute を使って
追加 (insert) ・更新 (update) ・削除 (delete) の
クエリ (SQL) を実行するだけです。
Executeの使い方はOpenDatabaseやOpenRecordsetと同じなんですよね?
OpenDatabaseで指定のmdbを開くのは理解できたのですが、その後のExecuteを使うところがうまく理解できていません。
簡単な例みたいなものがあれば助かるのですが・・・、無理でしょうか?
それにリストの行の内容をMIDを使い、複数の項目として保存するつもりなのですが可能です?
更新に際して次のようなコードを作ってみました。
Dim DB As Database
Dim WS As Workspace
Dim RS As Recordset
Set WS = DBEngine.Workspaces(0)
Set DB = WS.OpenDatabase("mdbまでのパス")
Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset)
Call Form1.datData.Recordset.MoveFirst
Dim i As Integer
For i = 0 To Form1.lstList.ListIndex
Call Form1.datData.Recordset.MoveNext
Next
Call Form1.datData.Recordset.Update("フィールド名", txtText.)
ですが、最後のCallの行で方が一致しないというエラーが出てしまうのですがどこが悪いのでしょうか?
環境はWin95,VB6.0,Access97で行っています。
Updateのヘルプ見ました?
編集 削除あなたのコードを見ると、 SQL は使わないみたいですね。
SQL を使わないならば、
Call Form1.datData.Recordset.Update(...)
を
With Form1.datData.Recordset
.Edit
.Fields("フィールド名") = "新しい値"
.Update
End With
のような感じに変えれば、良いのでは?
# ところで、 RS って、どこかで使ってますか?
>とろさん
どうもありがとうございます。
RSはSetのRecordsetでしか使ってないですけど・・・。
置かないといけないのかなと思ったんですがこれは無くても良いものなのですか?
>> Dim DB As Database
>> Dim WS As Workspace
>> Dim RS As Recordset
>> Set WS = DBEngine.Workspaces(0)
>> Set DB = WS.OpenDatabase("mdbまでのパス")
>> Set RS = DB.OpenRecordset("テーブル名", dbOpenDynaset)
>
> どうもありがとうございます。
> RSはSetのRecordsetでしか使ってないですけど・・・。
> 置かないといけないのかなと思ったんですがこれは無くても良いものなのですか?
上の場所以外で、 RS や DB や WS を使っていないならば、
この6行は不要です。
どうもありがとうございます。
Call Form1.datData.Recordset.MoveFirst
Dim i As Integer
For i = 0 To Form1.lstList.ListIndex - 1
Call Form1.datData.Recordset.MoveNext
Next
With Form1.datData.Recordset
.Edit
.Fields("フィールド1") = txtText1.Text
.Fields("フィールド2") = txtText2.Text
.Fields("フィールド3") = txtText3.Text
.Fields("フィールド4") = txtText4.Text.Update
End With
でできました。
ごめんなさい。
.Updateの位置がおかしかったですね。
Call Form1.datData.Recordset.MoveFirst
Dim i As Integer
For i = 0 To Form1.lstList.ListIndex - 1
Call Form1.datData.Recordset.MoveNext
Next
With Form1.datData.Recordset
.Edit
.Fields("フィールド1") = txtText1.Text
.Fields("フィールド2") = txtText2.Text
.Fields("フィールド3") = txtText3.Text
.Fields("フィールド4") = txtText4.Text
.Update
End With
が正しいコードです。