- PR -

データアダプタでの更新

1
投稿者投稿内容
初心者さん
会議室デビュー日: 2005/08/25
投稿数: 16
投稿日時: 2005-08-25 16:57
開発環境
ADO.NET、VB.NET
ORACLE10g

テーブルのデータをDataTableに読み込んでDataGridにバインディングして表示。
グリッドを直接編集し、行が変わるたびにデータアダプタのUPDATEメソッドを使ってデータベースに反映しています。

主キーが1つでも設定されているテーブルへの反映はできるのですが、主キーが設定
されていないテーブルへの反映が出来ません。
エラーメッセージ「Dynamic SQLの生成に失敗しました。キー情報が見つかりません。」
と表示されてしまいます。
主キーを1つ以上設定しないと出来ないのでしょうか?
よろしくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-08-26 11:53
CommandBuilderを使って自動的にUpdateで使われるCommandを生成しているような
場合は、テーブルに主キーがないといけないと思います。
DataAdapterのInsertCommand、UpdateCommand、DeleteCommandを自分で書けば
主キーのないテーブルでも変更は可能だと思います。
セイン
常連さん
会議室デビュー日: 2005/06/15
投稿数: 24
投稿日時: 2005-08-26 13:16
もしも数字のみの文字列を主キーにしているのならば
DBのデザイン データ型に、オートナンバー がありませんか?
それを選択すれば、自動で割り振ってくれるかもしれませんよ。
初心者さん
会議室デビュー日: 2005/08/25
投稿数: 16
投稿日時: 2005-08-26 17:44
どっとねっとふぁんさん、セインさん返信ありがとうございます。

今やっているのはテーブル上に4つの項目があり主キーがないのです。
その項目4つとも変更することが出来てしまいます。
UpdateCommandコマンドやDeleteCommandコマンドを使おうと思ったのですが、
Where句の条件に指定する項目がありません。
Select時にRowIDを追加してみたのですが、Updateはできるようになったのですが、
逆にInsertが「ここでは仮想列は使用できません。」とエラーになってしまいます。
アドバイスよろしくお願いいたします。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2005-08-27 00:29
msoです。

引用:

逆にInsertが「ここでは仮想列は使用できません。」とエラーになってしまいます。
アドバイスよろしくお願いいたします。



Insert時だけ、普通にINSERT文を生成して、実行するってのはだめですか?
初心者さん
会議室デビュー日: 2005/08/25
投稿数: 16
投稿日時: 2005-08-29 09:19
msoさん返信ありがとうございます。

結局、DBにキーを設定してもらう方向で進めることができました。
みなさまのアドバイスありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)