- - PR -
VB.NETでのmdbの操作について
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-17 11:26
今VB.NETのWindowsアプリケーションで
mdbに接続してデータを挿入する、ということをやっています。 使用しているコントロールは OleDbConnectionとOleDbCommandです。 下のようなSQL文を書きました。 ------------------------------------------------ insert into entry (entryno,code,machine) select entryno = 1, code = 1, machine = member.machine from member where member.code = 1" ------------------------------------------------ テーブルはentryとmemberの二つで、 entryの主キーはentryno、memberの主キーはcodeです。 memberのなかのcodeが1のものをentryに挿入、としたいのですが、 OleDbCommand.ExecuteNonQueryで、 ----------------------------------------------------------------- 'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。 ----------------------------------------------------------------- というエラーになります。 同じ文をSqlConnectionとSqlCommandでSQLServerの接続でやってみると 問題なくinsertできたので構文は間違っていないと思うのですが・・。 このような状態を回避する方法がわかるかたいましたら 教えてください。 よろしくお願いしますm(__)m | ||||||||
|
投稿日時: 2006-01-17 11:37
回答ではないのですが、mdb で挿入ということを試すのならば、もう少し単純な SQL に書き換えて実行してみてはいかがでしょうか?
| ||||||||
|
投稿日時: 2006-01-17 11:46
R・田中一郎さん、お返事ありがとうございます。
先にmemberテーブルからmachineをselectして その後entryに入れる、ということですよね。 それでしたら簡単にできますよね。 ただ、SQLServer(VB6)で開発していたときは insert selectを使ってできたので、 VB.NETでもできるかなーと思って試しています。 また何か情報があったら教えてくださいm(__)m | ||||||||
|
投稿日時: 2006-01-17 11:56
すみません。 例外エラーの原因がどこにあるのかを特定するために、まずは簡単なものでで実行できることを確認してみたら良いんじゃないかな〜、と思っただけでした。 | ||||||||
|
投稿日時: 2006-01-17 12:02
R・田中一郎さん、お返事ありがとうございますm(__)m
いえいえ、全然大丈夫です。 お返事いただけるだけでありがたいので。 で、valueではちゃんとできます。 また、さっきのinsert文でも、codeとmachineだけにすると とりあえず動きはするんです。 ただ、値は-1になっていてなんだかおかしいんです。 また何か情報があればよろしくお願いします。 | ||||||||
|
投稿日時: 2006-01-17 12:16
そういう場合こそ、INSERT と SELECT を分けて、 SELECT だけで本当に正常に動作するのを検証すべきでしょう。 VALUES では出来るといっても、それは INSERT の検証でしかないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-17 12:18
System.Data.OleDb.OleDbException
を捕捉して、その例外の原因を教えてください | ||||||||
|
投稿日時: 2006-01-17 13:29
じゃんぬねっとさん、お返事ありがとうございます。
>そういう場合こそ、INSERT と SELECT を分けて、 >SELECT だけで本当に正常に動作するのを検証すべきでしょう。 >VALUES では出来るといっても、それは INSERT の検証でしかないです。 そうですよね、いろいろと調べないまま お返事してしまい、すみませんでした。助言ありがとうございます。 その後いろいろやってみました。 SELECTは問題ありません。きちんとmemberのcode=1のデータが取得できますし、 where文の指定なしや、*や一部のフィールドを取得、もできました。 INSERTですが、一番シンプルに、memberの主キーであるcodeだけを INSERT SELECTしてみましたが、実際の値は1ですが(whereで=1としていますので) -1が入ってきます。 SQLの構文自体は問題ないのでしょうか・・。 なにかmdbの時のSQLで注意することなどありますか?? これ以前にSQL文で全角のスペースが入っていたら動かないということがありました。 他にもなにか制限などありますでしょうか。 かるあさん、お返事ありがとうございます。 また質問になってしまって申し訳ないのですが、 捕捉、というのはどのようにするのでしょう?? VB.NETで動かしているとき、エラーの内容がわかりづらく、 どこが悪いのか探すのに手間取っています。 何かエラーの詳しい内容がわかるやりかたがあるのでしょうか。 たびたびすみませんが、 またなにか情報がありましたらよろしくお願いしますm(__)m |
1|2|3
次のページへ»