- PR -

[C#2005/Windowsアプリ]複数行あるDBデータの保持方法

1
投稿者投稿内容
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2007-10-16 13:00
お世話になります。
C#2005のWindowsアプリの開発です。
今悩んでる仕様があります。
A:親情報
 B:子情報1
 B:子情報2
という形で、親情報と子情報が
A textBoxA comboboxA
 B textBox1 textHoge1
 B textBox2 textHoge2
 B textBox3 textHoge3
・・・(以下B情報が複数並ぶ)
という形でフォームを作成しています。
B情報は入力するA情報によってなかったり、1行〜7行存在したりします。
当初の予定ではDB構成を
Aテーブル:A情報
Bテーブル:ANo、B枝番、textdata、hogedata
という形して開発を進めようとしていたのですが、
その場合DBからデータを取得し、データを各コントロールBOXにセットする際に
できないのではないか?という問題にあたりました。
whileでまわす→コントロール名は1,2,3となってるのですが、例えば
i=1;
SqlDataReader rdr = sqlCmd.ExecuteReader();
while (rdr.Read())
{
txtBox(i).Text = rdr["textdata"].ToString();
textHoge(i).Text = rdr["hogedata"].ToString();
i++;
}
という風にコントロール名に可変の数字を入れてもできないな・・・と。

打開策として、DBのBテーブルの構成を
Bテーブル→ANO、text1,hogedata1,text2,hogedata2・・・
と1行に全てのデータを持たせれば解決するのですが、DB構成的にこんな風に
持たせていいのだろうか?というジレンマもあります。

rdr.Readで複数ある各コントロールボックスにDBの値をセットをする方法として
何か良い案がありましたら、御教示下さい。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-16 22:24
申し訳ありません。ブログネタにさせていただきました。
ご一読願えたらと思います。
http://blogs.wankuma.com/jitta/archive/2007/10/16/102415.aspx
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2007-10-16 23:06
ちょっと方式は異なりますが、以下のサイトにDataSetを使って主+副の構成のデータを表現する方法が紹介されています。

http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_06/vsdbprog_06_01.html

マスタメンテや表示のみの画面であれば意外といいかもしれませんね。
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2007-10-17 00:05
# ちづるさんが聞きたいのはコントロール配列な事なのかな、と
# 思っていたんですが違う?

DBの構成的に・・・というのは思われている通りだと。

Visual Basic .NET と Visual C# .NET におけるコントロール配列の作成
このあたりが参考になるのではないでしょうか。
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2007-10-17 10:42
Jitta様、GENZO様、Ahf様
回答ありがとうございます。
質問に載せた例文自体もVBなんだかC#なんだかわからない例をあげてしまっていたりと
いろいろと赤面しています・・・。

Jitta様がブログで書かれた内容をみて、ハッと気がつきました・・・。
「User Interface は、魅せることに専念した方がいい」
という内容を肝に銘じて、もう一度構成を考え直してみます。

回答ありがとうございました。
1

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