- - PR -
VB.NETでのmdbの操作について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-17 14:12
例外うんぬんの前にこれがおかしいですよね。
これって、= で評価された結果が -1 になって挿入されてませんかね?
こうではないのですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-17 14:17
じゃんぬねっとさん、お返事ありがとうございます。
>これって、= で評価された結果が -1 になって挿入されてませんかね? そうなんです、 挿入すると、-1になってしまっています。 そうですか、書き方がおかしいんですね。 すみません、VB6・SQLServerの時は、 さっきのように書いて動かしていたので、 mdbでも同じようにできるのだと思っていました。 ご指摘ありがとうございましたm(__)m | ||||||||||||
|
投稿日時: 2006-01-17 14:23
私も SQL 云々はかなり疎いんですが、これって正しい結果が挿入されてましたか? どういう意味で「左辺値」を書いているんですか? WHERE 句に書く内容と混同していませんか? 試しに、「= 5」としてみてください。 Member.Code = 1 で抽出していますから、今度は「1 = 5」ということになり、 Entry.Code には -1 以外の値 (多分 0) が挿入されるようになりませんか? 可能であれば、SQL Server で動いていたステートメントを再度確認して頂けませんか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-17 14:36
じゃんぬねっとさん、お返事ありがとうございます。
そうですね、ちょっと今回の場合、 わかりやすいようにentryno=1,code=1と書きましたが、 これはおかしいですよね。 実際にはテキストに入力したコードを使う予定でいます。 SQLServerなんですが、一番初めの投稿で書いたのですが、 あのSQLでSQLServerでなら通るんです。 私が普段書いているのは -------------------------------- insert into table select code = a.code, name = a.name, flg = '1' from subtable as a where a.code = 1 -------------------------------- みたいな感じで、 (これが正しいのかわかりませんが、通用しています) tableのすべての列に挿入する場合は selectの前の列挙を省略して左辺を書いています。 ある列だけに書くような時は列の列挙をしてから 同じように左辺を書いているんです。 また固定の値(この場合はフラグの1)も使います。 きっと普通はこういうやりかたはしないんでしょうね ![]() もう少しいろいろ自分で調べて勉強してみます。 いろいろとアドバイスいただきありがとうございましたm(__)m | ||||||||||||
|
投稿日時: 2006-01-17 14:51
最後に、ですが、
みなさんお返事ありがとうございましたm(__)m じゃんねっとさんに指摘していただいたように、 フィールド名=データという風に select内を書くのをやめたところ、 ちゃんと更新できました。 また固定値の更新も同じようにできました。 たくさんのアドバイスありがとうございました(*^-^)v | ||||||||||||
|
投稿日時: 2006-01-17 14:53
今回、それでやっても -1 とか 0 が入ってくるような気がします。
SQL Server の場合、a.code の値が code に入り code が挿入される。 今回の場合は、左辺値と右辺値の評価結果が生成されて、それが挿入される。 ... のかなぁ。(^^;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-01-17 14:53
便乗して質問させて下さい。 select 以降の式の = は代入を意味するのですか? じゃんぬねっとさんの回答を見る限りだと、比較の = として評価されると言う意味だと解釈したのですが。 代入の = だとすると
この machine = member.machine は、自分自身に値を入れることになるのか、entry テーブルに値が入ることになるのかが明確にならないといけないですよね。 そして更にちぇびさんの仰っていることから、sqlサーバーとoledb の動作結果が異なることになってくる訳で・・・ 一体、どっちなんだろう? | ||||||||||||
|
投稿日時: 2006-01-17 14:57
おっと、入れ違い...
やはり、そこが原因でしたか。 で、時間さえ許されるのであれば、SQL Server でも同じ構文で書いてみて頂けませんか? 正しく更新されると思います。 # 代入構文を使うとマギラワシス。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |