- - PR -
CheckBoxをレコードに常時書き込むには・・・
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-08-31 09:00
Visual Web Developer 2008 EEにて、VBでWeb開発はじめました初心者です。
データベースはAccessを利用してます。 作りたいものは商品の検索システムです。 AccessをGridViewで表示して検索できるところまではすぐ出来ました。 追加機能として、各商品にフラグをつくり管理したいと考えているんですが、フラグは常時変更できるものにしたいと考えています。 それで、Accessに「Yes/No型」の項目を作って、GridViewにはcheckboxテーブルで表示させるところまで作りました。 そのCheckBoxをクリックすると即Accessの該当レコードを書き換えるプログラムを書きたいと思っているのですが、上手く行きません。 自動PostBackして、表示を変えたりは出来ましたが、データベースが更新されません。 CheckBoxをクリックしたときのハンドラで記述するのかなと思ったのですが、アクセスのレコードを編集するのはどうすればいいのでしょう? [ メッセージ編集済み 編集者: HM 編集日時 2008-08-31 21:53 ] | ||||||||
|
投稿日時: 2008-08-31 15:52
Web アプリケーションで Access (というか MDB)... 大丈夫でしょうか。
"思った" だけで試していないのでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-08-31 18:27
MDBってまずいんですかね?
もともとASP + MDBで作りはじめてたんだけど、「時代遅れだ、VWDにしなさい」って助言を受けてはじめました。 グリッドビューとデータベースの配置しただけでページングが出来るということに非常に感動しました。 Accessがそのまま読み込めて、もとのデータベースは隠蔽してくれるようだったんでそのまま作っています。 時間が取れたらSQLに移そうと思っていますが、Accessの入ってる出先のPCで見れる必要もあるんで、そのまま使ってます。 一応いろいろ試してみたり、一昨日からずっとgoogleで検索して探してるんですが、コレっていう記事に出会えず・・・ [ メッセージ編集済み 編集者: HM 編集日時 2008-08-31 21:15 ] | ||||||||
|
投稿日時: 2008-08-31 19:25
いちばん引っかかってるのはGridViewの中のCheckboxが、何行目のcheckboxなのかが分からないことです。
CheckBoxの値そのものは DirectCast(sender, CheckBox).Checked で取得できることがわかりました。 チェックされたレコードをあらわすユニークな値はどこで取得すればよいのでしょう? コードとしては下のような感じで実装できると考えています。 Dim updatestr As String = _ "UPDATE table1 SET チェック = " & DirectCast(sender, CheckBox).Checked _ & " WHERE ( ID = " _ & ( --- IDが取得できればいいんだけど --- ) & ");" Me.AccessDataSource1.UpdateCommand = updatestr Me.AccessDataSource1.Update() 結局、WHEREに指定する変数をどうやって求めるかで止まっています。 [ メッセージ編集済み 編集者: HM 編集日時 2008-08-31 21:41 ] | ||||||||
|
投稿日時: 2008-08-31 22:39
AccessDataSource(またはそれ以外のDataSource)を使ってますよね?
データソースの構成ウィザードのSelectステートメントを生成する箇所で、 [詳細設定]からUpdate文を自動生成できますよね。 これによって、C#のコードを一切書く必要はないなずです。 (GridView側では「編集を有効にする」をonにします)
SQL Serverに移行したときに、若干変更を加える必要があるかもしれません。 | ||||||||
|
投稿日時: 2008-08-31 22:58
返信ありがとうございます。
すみません。その方法の場合、 編集→チェック→更新 と、3回クリックする必要がありますよね?? フラグを立てる作業を10000のアイテムに対して連続して3000回行う使い方を想定しているので、クリック数はチェックボックスをクリックする1回だけにとどめたいと考えています。 そのため、自動postbackとクリック時のハンドラを利用してVBのコードで記述する必要があると考えています。 [ メッセージ編集済み 編集者: HM 編集日時 2008-08-31 22:59 ] | ||||||||
|
投稿日時: 2008-09-01 00:20
想定しているケースが異常に思える。インターフェ−スなり 設計を見直したほうがいいような ちなみにUPDATE分は複数行の更新ができるのは 理解してますよね | ||||||||
|
投稿日時: 2008-09-01 01:03
想定しているケースですが、
「検索して該当するレコードにチェックをすける」 作業を複数人でやり続けることを目的としてWebアプリを製作しています。 みなさんの助言を基にしながらコードを書いてみました。 グローバル変数を使ったりもしてるんですが・・・。 問題はすでにチェックが入っているチェックボックスをチェックしたときに正常にレコードは書き換えられるのに、ちゃんと表示されない点。 更にちゃんと表示されていないときに更にチェックをいじると次は完全にデータが破壊する点です。
何かアドバイスいただけないでしょうか? [ メッセージ編集済み 編集者: HM 編集日時 2008-09-01 01:07 ] |