Page 89 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ADOをコードしてUpdateとDelete とも 02/11/2(土) 10:30 ┗Re:ADOをコードしてUpdateとDelete 孫悟空 02/11/3(日) 17:18 ┗Re:ADOをコードしてUpdateとDelete とも 02/11/4(月) 5:53 ─────────────────────────────────────── ■題名 : ADOをコードしてUpdateとDelete ■名前 : とも ■日付 : 02/11/2(土) 10:30 -------------------------------------------------------------------------
今、ADOをコードで設定してプログラムを作成しているのですが、どうしても、UpdateとDeleteをしようとすると、「キーフィールドがNull」というエラーがでます。コードも何度もチェックしましたし、データベース(アクセス2000)のほうもフィールドをチェックしたりしましたが、問題はないのです。一体何が原因で、どのようになおせばいいのでしょうか? まずフォームロードイベントで以下のように設定(テキストボックス以外にコンボボックスにデータをロードしてます) Dim strSQL As String Set conVideo = New ADODB.Connection Set rsVideo = New ADODB.Recordset strSQL = "SELECT Studio.[Studio Name], Video.[Movie Number]," & _ "Video.Title, Video.Category, Video.Length " & _ "FROM Studio INNER JOIN Video ON Studio.[Studio ID] = Video.[Studio ID]" With conVideo .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Persist Security Info=False;Data Source = " & App.Path & _ "VBVideo2000.mdb;Mode = readwrite" .Open End With With rsVideo .CursorLocation = adUseClient .Open strSQL, conVideo, adOpenDynamic, adLockOptimistic, adCmdText End With Call AssignData With rsVideo Do Until .EOF If ![Movie Number] <> "" Then cboNum.AddItem ![Movie Number] cboTitle.AddItem !Title cboStudio.AddItem ![Studio Name] cboCategory.AddItem !Category End If .MoveNext Loop .MoveFirst End With そしてAddコマンドボタンで rsVideo.AddNew として、Saveコマンドボタンで rsVideo.Update としています。Deleteも同様です。 考えられる、原因はなんでしょうか? |
▼とも さんこんにちは、 >一体何が原因で、 > strSQL = "SELECT Studio.[Studio Name], Video.[Movie Number]," & _ > "Video.Title, Video.Category, Video.Length " & _ > "FROM Studio INNER JOIN Video ON Studio.[Studio ID] = Video.[Studio ID]" >そしてAddコマンドボタンで >rsb.AddNew エラーメッセージの直接の原因は、よくわかりませんが、上記SQLは、複数のテーブルを参照していますので、もし レコードセット rsb と rsVideo が同じものなら編集は直接編集は出来ないのではないでしょうか? >どのようになおせばいいのでしょうか? 各々のテーブルを追加、更新、削除するようにすればいかがでしょう? 例えば、テーブルVideoのレコードセットreVと、テーブルStudioのレコードセットrsSを作成して各々更新するとか。 外れでしたらごめんなさい。 |
ていねいにお返事ありがとうございます。わたしの掲示板へのミススペルで、レコードセットはrsVideoしかないです。 Addは rsVideo.Addnewとしています。 互いのテーブルのキーはVideoテーブルはMovie NumberでStudioテーブルはStudioID。 Movie Numberのためのテキストボックスにデータを入力してUPdateボタン をクリックしているにも限らず、エラーがでてしまいます。Breakして、チェックしてみると他のフィールドにはデータがはいっているのに、Movie Numberフィールドにだけ値がはいっていません。 これはVBよりもアクセス側に問題があるのでしょうか? >>一体何が原因で、 >> strSQL = "SELECT Studio.[Studio Name], Video.[Movie Number]," & _ >> "Video.Title, Video.Category, Video.Length " & _ >> "FROM Studio INNER JOIN Video ON Studio.[Studio ID] = Video.[Studio ID]" >>そしてAddコマンドボタンで >>rsb.AddNew > >エラーメッセージの直接の原因は、よくわかりませんが、上記SQLは、複数のテーブルを参照していますので、もし レコードセット rsb と rsVideo が同じものなら編集は直接編集は出来ないのではないでしょうか? > >>どのようになおせばいいのでしょうか? > >各々のテーブルを追加、更新、削除するようにすればいかがでしょう? >例えば、テーブルVideoのレコードセットreVと、テーブルStudioのレコードセットrsSを作成して各々更新するとか。 >外れでしたらごめんなさい。 |