DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データグリッドとSQL

環境/言語:[VB.NET]
分類:[.NET]

はじめまして。お力を貸していただきたいです。
現在VB.NETでデータベースに検索したり登録したり編集したりするソフトを作ろうと思っています。

データグリッドにチェックボックスを配置して、
チェックを入れたあと自分で作った編集などのボタンを押すと
別窓(EditFrom.vb)を開きSQLでアクセスからデータを呼び出し、
テキストボックスにチェックされたレコードの個々の項目を表示するようにさせたいです。

その場合EditFrom.vbのフォームロードのところにプログラムを書き込むと思うのですが、
どうやってチェックボックスがこれを選んでますよ〜のように書くのか調べてもわからずで・・・
ヒントだけでもよろしいので教えてください。
厚かましいですが・・・よろしくお願いします。
  • 題名: Re[1]: データグリッドとSQL
  • 著者: なおこ(・∀・)
  • 日時: 2005/10/21 12:36:26
  • ID: 13387
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2005/10/21(Fri) 12:36:55 編集(投稿者)

お世話になります。

■No13385に返信(あいさんの記事)
EditFrom.vbにpublicでアクセスできるプロパティを作るか
引数付きコンストラクタを追加するなどして、外部からの口を作って
チェックした値を渡し、

それら(プロパティとか引数付きコンストラクタ)の中で
引数なりを、EditFrom.vbのメンバ変数に値をセットして
そのメンバ変数の値を見てLoadの中でごにょごにょやるとか…
ありがとうございます!

グローバル変数でedという変数を作りました。
そして、
Private Sub EditForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim iRows As Integer ' レコード件数
Dim i As Integer ' レコードカウンタ
Dim SQL As String ' SQL文

' SQL文の生成
SQL = "SELECT 番号 " _
& "FROM アドレス" _
& "where 番号=" & ed

' 選択コマンド実行プロシージャの呼び出し
iRows = ExecSelect(SQL, "T_アドレス")


' 先頭レコードから最終レコードまで繰り返し
For i = 0 To iRows - 1
' 名前コンボボックスのリストに T_コンボテーブルの i行目の名前を追加
ed = (ds.Tables("T_アドレス").Rows(0)("番号"))
Next


'アドレステーブルでチェックボックスがついてるデータを表示する。
TextBox1.Text = (ds.Tables("T_アドレス").Rows(0)("フリガナ"))

End Sub
という感じで書いて呼び出そうとしました。
しかしなぜかエラーが・・・何かおかしいところがあるのでしょうか?
何度も見直してるのですがよくわかりません。もう少しお付き合いお願いします・・・。
■No13385に返信(あいさんの記事)
> データグリッドにチェックボックスを配置して、
> チェックを入れたあと自分で作った編集などのボタンを押すと
> 別窓(EditFrom.vb)を開きSQLでアクセスからデータを呼び出し、
> テキストボックスにチェックされたレコードの個々の項目を表示するようにさせたいです。

選択するためだけにチェックボックスを配置するのは、操作性の観点から言って無駄が多いと思います。普通に行選択して別窓を開くのではダメなんでしょうか?
チェックを複数付けた後、まとめて編集かとも思ったのですが、そうではなさそうな気がしますし・・・。
> 選択するためだけにチェックボックスを配置するのは、操作性の観点から言って無駄が多いと思います。普通に行選択して別窓を開くのではダメなんでしょうか?
> チェックを複数付けた後、まとめて編集かとも思ったのですが、そうではなさそうな気がしますし・・・。

お返事ありがとうございます!
削除ボタンも同じフォームについていて、こちらは複数選択→削除という操作にしてあります。
なので、こちらもチェックボックスで選択できればと思いました。
整理されていないプログラムですみません・・・見ずらいですがよろしくお願いします。
  • 題名: Re[3]: データグリッドとSQL
  • 著者: なおこ(・∀・)
  • 日時: 2005/10/21 18:01:02
  • ID: 13404
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
お世話になります。

■No13392に返信(あいさんの記事)
> グローバル変数でedという変数を作りました。
できれば、グローバル変数でなく、
private変数にして、PublicなPropertyを作ってやった方が
後々何かあった時に楽です。

> そして、
> Private Sub EditForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
> Dim iRows As Integer ' レコード件数
> Dim i As Integer ' レコードカウンタ
> Dim SQL As String ' SQL文
>
> ' SQL文の生成
> SQL = "SELECT 番号 " _
> & "FROM アドレス" _
> & "where 番号=" & ed
>
> ' 選択コマンド実行プロシージャの呼び出し
> iRows = ExecSelect(SQL, "T_アドレス")
>
>
> ' 先頭レコードから最終レコードまで繰り返し
> For i = 0 To iRows - 1
> ' 名前コンボボックスのリストに T_コンボテーブルの i行目の名前を追加
> ed = (ds.Tables("T_アドレス").Rows(0)("番号"))
> Next
>
>
> 'アドレステーブルでチェックボックスがついてるデータを表示する。
> TextBox1.Text = (ds.Tables("T_アドレス").Rows(0)("フリガナ"))
>
> End Sub
> という感じで書いて呼び出そうとしました。
> しかしなぜかエラーが・・・何かおかしいところがあるのでしょうか?
> 何度も見直してるのですがよくわかりません。もう少しお付き合いお願いします・・・。

エラーと言われましても、ちょっと回答しかねます…。
とりあえず、Try〜Catch構文を使ったり、ステップ実行
どんな例外がどこで発生しているか、場所の特定をしてみませんか?

あと、ExecSelectってご自身で作成された関数でしょうか?

関数の詳細がわからないので、多分ですけど…、
> SQL = "SELECT 番号 " _
> & "FROM アドレス" _
> & "where 番号=" & ed
で項目”番号”しかとっていないのに、

>TextBox1.Text = (ds.Tables("T_アドレス").Rows(0)("フリガナ"))
これで、項目”フリガナ”を取得しようとしているから
そんな項目ないよ、と怒られてしまうのでは。

DOBON.NET | プログラミング道 | プログラミング掲示板