- - PR -
ASP.NET&PostgreSQLで勤務表
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-17 21:23
初めて投稿いたします。
この度、Web上で勤務表の管理が出来るようにと言われ、 作成に取り掛かりましたが、分からないことが多く、質問させて頂いた次第です。 基本は、年月を指定してボタンを押せば、その月の日数分の枠ができ、 その枠の中に、同じ日付のデータがデータベースにあった場合に、 勤務時間などを表示させたいのです。 現在作ってみたプログラムは、 まずOdbcDataReaderでSQLの結果を取得し、保持しておきます。 (何レコード取得できるかはわからないとして) 指定月の最終日の数のループを開始し、 ループのインデックスと、データベースから取得した日付が一致すれば、 そのデータを書き出しreader.read()で次のレコードへ、 一致しなければ空白の行として表示させたいのです。 このような処理を行いたい場合、GridViewを使うのは適切でしょうか? いったんreader.read()しなければ、ループインデックスとの比較が出来ず、 一致した場合に、 (例: gridview1.DataSource = reader gridview1.DataBind() ) とやっても、何も表示されません。 最初にreader.read()など行わず、 直接 gridview1.DataSource = reader とすれば出力されるのですが、 レコードの存在しない日の行などが作成されないので、 方法を考えておりました。 何かいい案、もしくは参考となる本やホームページがありましたら 教えてください。 どうぞよろしくお願いします。 | ||||
|
投稿日時: 2007-03-17 21:27
追伸です、字だけの説明が苦手なのでソースを載せます。
For idx = 1 To iDaysInMonth Step 1 If read_flg Then '最初の一回だけ先に読む If sw = 0 Then reader.Read() sw = 1 End If '日付と一致したら書き出したい If idx = CInt(reader.Item(0)) Then GridView1.DataSource = reader GridView1.DataBind() '書き出したら、次のレコードに移り、 'レコードの有無も判断 If reader.Read() Then read_flg = True Else read_flg = False End If Else End If Else End If Next idx SQLで取得したデータは、日付順に並べています。 1行ずつGridViewを増やしながら書き足しを行うなどできるのでしょうか。 | ||||
|
投稿日時: 2007-03-17 21:31
インデントがうまくいきませんでしたので、もう一度書きます。
For idx = 1 To iDaysInMonth Step 1 'データがあるときだけ処理 If read_flg Then '最初の一回だけ先に読む If sw = 0 Then reader.Read() sw = 1 End If '日付と一致したら書き出したい If idx = CInt(reader.Item(0)) Then GridView1.DataSource = reader GridView1.DataBind() '書き出したら、次のレコードに移り、 'レコードの有無も判断 If reader.Read() Then read_flg = True Else read_flg = False End If Else End If Else End If Next idx まだまだぜんぜん途中ですが、やりたい事が伝わればと思って 乗せました。 | ||||
|
投稿日時: 2007-03-17 22:03
msoです。
よくわからないのですが、学校の課題でしょうか? もう少し要点を切り出していただきたいのですが、、、 まずはいくつか問題点があるようですが、 箇条書きにしてください。 どれが問題かわかりません。 あと、自分で何かやるときは小さなプログラムを作るのが プログラマの基本です。 (学生であれば知らなくても仕方ないのですが) ちなみに自分であればGridViewは使いません。 理由はなんでか自分で考えてみてください。 | ||||
|
投稿日時: 2007-03-17 22:16
まずはお返事有難うございます。
とにかく文章が下手で、ご迷惑お掛けします。 学校の課題ではありません。 問題点、疑問点としては以下のようなことがあります。 1.勤務日が月20日(20レコード)あったとして、 3月であれば31日分のグリッド(表)が表示され、 出勤していない日の行(土日など)も空白で出力することが可能か。 2.それを実現するために使用するのがGridViewで妥当か。 3.さらに、そこから更新なども行いたい。 イメージがつかみにくいかと思いますのですが、 以下のリンク先のようなWebページを作りたいのです(こんなに機能はたくさんいりませんが) http://www.cvinc.jp/pa/images/screens/0050.jpg GridViewについて学ぶならこの本がお勧め、などありましたら 教えていただけると助かります。 | ||||
|
投稿日時: 2007-03-17 23:35
msoです。
1. 設計がどうなっているのかわかりませんが、 技術的には可能だと思います。 2. 個人的にはリピータコントロールがいいと思いますよ。 3. できると思います。 | ||||
|
投稿日時: 2007-03-18 00:49
msoさん。
有難うございます。 リピーターコントロールを調べましたが、 よさそうです。 これを使って作ってみます。 とっても、助かりました。 |
1