none
DataViewからの行の削除について RRS feed

  • 質問

  • 現在、2つのテーブルを連結したものをグリッドビューで表示しているのですが

    DELETE文を追加し、削除ボタンを追加しても削除できません。

     

     

    セレクト文(社員テーブルから社員名、残業テーブルから残業に関するデータを結合しています。)

     

    SELECT Acc_Table.Name, Zangyo_Table.Account, Zangyo_Table.OverWorkDay, Zangyo_Table.Ap_Start, Zangyo_Table.Ap_End, Zangyo_Table.Result_Start, Zangyo_Table.Result_End, Zangyo_Table.Reason FROM Acc_Table FULL OUTER JOIN Zangyo_Table ON Acc_Table.Account = Zangyo_Table.Account

    WHERE (Zangyo_Table.OverWorkDay = @OverWorkDay)

     

    デリート文(残業テーブルの社員番号と残業日を指定して削除)

     

    DELETE FROM Zangyo_Table

    WHERE (Account = @Account) AND (OverWorkDay = @OverWorkDay)

     

    単一のテーブル(Zangyo_Table)をセレクトしてデリートする操作はできました。

    どこか間違っている箇所がありましたらご教示ください。

     

    よろしくお願いします。

    2008年6月26日 2:25

回答

  •  

    > 現在、2つのテーブルを連結したものをグリッドビューで表示しているのですが

    > DELETE文を追加し、削除ボタンを追加しても削除できません。

     

    使用している製品や環境が書かれていないので、DBMSがSQL Server 2000もしくは2005、

    開発環境がVisual Studio 2005でWebアプリケーションを開発していると考えていいでしょうか?

     

    その場合、GridViewコントロールのDataKeyNamesプロパティにキーとなる項目(今回の場合AccountとOverWorkDay)は

    設定してありますか?

     

    あと、SQL Profilerを実行してデータベースサーバーにどのようなクエリーが発行されるか確認すると、原因の調査に

    役立つと思います。

     

    2008年6月26日 3:39

すべての返信

  •  

    > 現在、2つのテーブルを連結したものをグリッドビューで表示しているのですが

    > DELETE文を追加し、削除ボタンを追加しても削除できません。

     

    使用している製品や環境が書かれていないので、DBMSがSQL Server 2000もしくは2005、

    開発環境がVisual Studio 2005でWebアプリケーションを開発していると考えていいでしょうか?

     

    その場合、GridViewコントロールのDataKeyNamesプロパティにキーとなる項目(今回の場合AccountとOverWorkDay)は

    設定してありますか?

     

    あと、SQL Profilerを実行してデータベースサーバーにどのようなクエリーが発行されるか確認すると、原因の調査に

    役立つと思います。

     

    2008年6月26日 3:39
  • 返信ありがとうございます。

    使用している環境はVisual Studio2005のVisual BasicでデータベースはSQL Server 2005を使っています。

     

    DataKeyNameプロパティは設定していなかったのでやってみようと思います。

    ひとつ疑問なのは投稿したSQL文と以下のSELECT文のみが違うソースにおいては

    削除がうまくいくので、これがなぜうまくいくのかがわかりません。

     

    セレクト文

    SELECT * FROM [Zangyo_Table]
    WHERE OverWorkDay = @OverWorkDay

     

    デリート文

    DELETE FROM Zangyo_Table

    WHERE Account = @Account AND OverWorkDay = @OverWorkDay

    2008年6月26日 4:05
  • DataKeyNameプロパティを設定した結果、

    きちんと思ったとおりに行を削除することができました。

     

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

     

    2008年6月26日 4:32