mdbへ保存

解決


小飛  2002-12-17 15:38:30  No: 76646  IP: [192.*.*.*]

コマンドボタンClickでリストボックスの内容をmdbへ保存させたいのですがどうやるんでしょうか?
わかる方おられましたらアドバイスお願いします。

編集 削除
とろ  2002-12-17 15:53:21  No: 76647  IP: [192.*.*.*]

workspace.OpenDatabase, database.OpenRecordset を
使用して解決したっていうことは、
DAO を使っているのですよね。

mdb に保存する場合も同じように、
database.Execute を使って
追加 (insert) ・更新 (update) ・削除 (delete) の
クエリ (SQL) を実行するだけです。

編集 削除
小飛  2002-12-17 16:34:20  No: 76648  IP: [192.*.*.*]

Executeの使い方はOpenDatabaseやOpenRecordsetと同じなんですよね?
OpenDatabaseで指定のmdbを開くのは理解できたのですが、その後のExecuteを使うところがうまく理解できていません。
簡単な例みたいなものがあれば助かるのですが・・・、無理でしょうか?
それにリストの行の内容をMIDを使い、複数の項目として保存するつもりなのですが可能です?

編集 削除
小飛  2002-12-18 10:00:42  No: 76649  IP: [192.*.*.*]

更新に際して次のようなコードを作ってみました。
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で行っています。

編集 削除
七氏  2002-12-18 11:30:23  No: 76650  IP: [192.*.*.*]

Updateのヘルプ見ました?

編集 削除
とろ  2002-12-18 11:34:31  No: 76651  IP: [192.*.*.*]

あなたのコードを見ると、 SQL は使わないみたいですね。

SQL を使わないならば、
Call Form1.datData.Recordset.Update(...)

With Form1.datData.Recordset
    .Edit
    .Fields("フィールド名") = "新しい値"
    .Update
End With
のような感じに変えれば、良いのでは?

# ところで、 RS って、どこかで使ってますか?

編集 削除
小飛  2002-12-18 11:55:13  No: 76652  IP: [192.*.*.*]

>とろさん
どうもありがとうございます。
RSはSetのRecordsetでしか使ってないですけど・・・。
置かないといけないのかなと思ったんですがこれは無くても良いものなのですか?

編集 削除
とろ  2002-12-18 13:27:34  No: 76653  IP: [192.*.*.*]

>> 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行は不要です。

編集 削除
小飛  2002-12-18 13:36:42  No: 76654  IP: [192.*.*.*]

どうもありがとうございます。

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
でできました。

編集 削除
小飛  2002-12-18 13:42:49  No: 76655  IP: [192.*.*.*]

ごめんなさい。
.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
が正しいコードです。

編集 削除