Visual Studio 2008で作業しています。
DetailsViewコントロールを使用してAcessDBのレコードの内容を表示しています。この画面は、他の画面で、レコードの一覧を表示し、その一覧で、あるレコードが選択されたときに呼び出されます。この画面で、そのレコードの詳細を表示したいと考えています。レコードには主キーがIDという名称で登録されています。この画面にきたとき、(他の画面で選択した)IDの値を取り出すところまでは、出来たのですが、このIDを指定して、SQL文を発行し、このレコードを取得する方法がわかりません。(現在のSQLステートメントは、select ID,項目1,項目2 ... from table_A のようになっており、 where 句をつけていません。取得したIDをテキストボックスにセットし、where (ID = TextBox1.[Text])のようにしたのですが、実行時に異常終了していまいました。)
DetaisViewで、指定されたレコードを表示する方法をご存じのかたがおりましたら教えてください。
No.2ベストアンサー
- 回答日時:
SqlCommand.CommandTextプロパティにセレクト文を設定すればよいです。
もちろん、SqlDataSource.SelectCommandプロパティにセレクト文を設定してもよいです。
No.1
- 回答日時:
現状画面遷移をどのようにしているかで違う方法になるかと思われます。
1.一覧の画面から同じ画面にポストバックして、そのあと選択していたアイテムによりDetailsViewにRedirectなりTranferなりする場合、TextBoxは一覧の画面にあるオブジェクトなので、DetailsViewのページからはそのままではアクセスできず、エラーで終了になっている可能性がある。
もしこれに当てはまるのであれば、SessionオブジェクトにIDの値を代入しておきDetailsViewの画面でそのSessionの値を使用してSelectする。
2.一覧からはリンクでどのレコードか選択してDetailsViewにする場合は、リンクを作成する時に一緒にIDも抜き出しておき、リクエストパラメータとして、
http://.......aspx?ID=13
という形で埋め込んでおく方法があるかと思います。
この回答への補足
回答ありがとうございました。
ネットで検索すると、
どうも、where句で指定するのではなく
データ取得する前に
SqlDataSource.SelectCommand を使用するようなことが
ことが、かいてありました。どうもこれが私が求めている
機能のような気がします。
回答ありがとうございます。
状況としては、2.に近いかと思います。
Webに関して初心者なので、ページ間のデータの受け渡しが、不慣れなので、以下の方法を採っています。
一覧画面でIDを抜き出して、その画面のテキストボックス2にその値を
セットします。(テキストボックス2は非表示)そして、一覧画面から詳細画面にポストバックしてます。詳細画面で、元の画面のテキストボックス2からIDを抜き出すことまでは、成功しています。そして、その値を、詳細画面のテキストボックス1に設定し、正しく表示できました。しかしながら、そのあと、そのIDをキーにしてDetailsViewの画面のキー(ID)を設定することが出来なくて困っています。
現在C#で、コーディングしてますが、sqlステートメントは、DetailsViewのデータソースの選択から、DBを選択したときに表示されるところへSQLのステートメントを記述しています。
そこで、select ID,項目1,項目2 ... from table_A where (ID = TextBox1.[Text])のように指定しています。
sqlステートメントをC#で記述するとき、ソースのどの場所へ記述するのかが、判らないので、いまのようにしています。
もし、明示的にC#から記述する方法がわかれば、その方法を採用したいとも思っております。
従って、再度質問をまとめますと、
1.詳細画面でIDの値を取得は出来たのですが、そのIDを指定したSQL文を指定する方法が判らない。
(where ID="取得した値"の記述をどこに書けばよいかが判らない。)
2.現在、SQL文は、データソースの指定のところで、記述していますが、もしC#のソース上で記述する方法を、ご存じでしたら、その方法も教えて下さい。(select ID,項目1,項目2,... where ID='取得した値' をどの関数に記述すればよいかが判りません)
もし、私の説明で、不明点があれば更に補足致しますので、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- PHP Q&Aサイトを作成していてURLの生成方法について迷っているのでアドバイスお願い致します 1 2023/08/10 16:42
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データセットのレコード更新が...
-
ファイル書込みで一行もしくは...
-
ACCESSで大量の更新を行うと「...
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
差し込み印刷のレコード数について
-
固有レコード識別子の選択とは
-
ヘッダレコードとトレーラレコ...
-
Accessデータシートビューの行...
-
DataGridViewの内容をDBに反映...
-
サブフォームに新規レコードを...
-
ADO VBA 実行時エラー3021
-
Javaで使用するデータベースの...
-
Access でレコードセレクタが押...
-
[VBA] ADOの Clone と AddNew
-
アクセスでレポートの1印刷内...
-
VB.netでmdbのレコードを取得
-
エラー番号=5 制約を有効にで...
-
ワードの差込印刷で教えて下さ...
-
JSPのNULLレコード表示について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
レコードが存在しなかった場合
-
アクセスでレポートの1印刷内...
-
JSPのNULLレコード表示について...
-
カレントレコードが無い事を判...
-
DataGridViewの、選択されてい...
-
差し込み印刷のレコード数について
-
ACCESSで大量の更新を行うと「...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
固有レコード識別子の選択とは
-
レコードセット(ADO.Recordset)...
-
Access を×ボタンで閉じ...
-
DataGridViewにてセル以外をク...
-
ヘッダレコードとトレーラレコ...
-
ワードの差込印刷で教えて下さ...
-
サブレンジ分割されたNDB(富士...
-
データセットのレコード更新が...
-
[VBA] ADOの Clone と AddNew
おすすめ情報