- PR -

ASP.NET&PostgreSQLで勤務表

1
投稿者投稿内容
あぺおす
会議室デビュー日: 2007/03/17
投稿数: 5
投稿日時: 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
投稿数: 5
投稿日時: 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
投稿数: 5
投稿日時: 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
まだまだぜんぜん途中ですが、やりたい事が伝わればと思って
乗せました。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2007-03-17 22:03
msoです。

よくわからないのですが、学校の課題でしょうか?
もう少し要点を切り出していただきたいのですが、、、
まずはいくつか問題点があるようですが、
箇条書きにしてください。

どれが問題かわかりません。

あと、自分で何かやるときは小さなプログラムを作るのが
プログラマの基本です。
(学生であれば知らなくても仕方ないのですが)

ちなみに自分であればGridViewは使いません。
理由はなんでか自分で考えてみてください。
あぺおす
会議室デビュー日: 2007/03/17
投稿数: 5
投稿日時: 2007-03-17 22:16
まずはお返事有難うございます。
とにかく文章が下手で、ご迷惑お掛けします。

学校の課題ではありません。
問題点、疑問点としては以下のようなことがあります。

1.勤務日が月20日(20レコード)あったとして、
  3月であれば31日分のグリッド(表)が表示され、
  出勤していない日の行(土日など)も空白で出力することが可能か。
2.それを実現するために使用するのがGridViewで妥当か。
3.さらに、そこから更新なども行いたい。

イメージがつかみにくいかと思いますのですが、
以下のリンク先のようなWebページを作りたいのです(こんなに機能はたくさんいりませんが)

http://www.cvinc.jp/pa/images/screens/0050.jpg

GridViewについて学ぶならこの本がお勧め、などありましたら
教えていただけると助かります。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2007-03-17 23:35
msoです。

引用:

1.勤務日が月20日(20レコード)あったとして、
  3月であれば31日分のグリッド(表)が表示され、
  出勤していない日の行(土日など)も空白で出力することが可能か。
2.それを実現するために使用するのがGridViewで妥当か。
3.さらに、そこから更新なども行いたい。

イメージがつかみにくいかと思いますのですが、
以下のリンク先のようなWebページを作りたいのです(こんなに機能はたくさんいりませんが)

http://www.cvinc.jp/pa/images/screens/0050.jpg

GridViewについて学ぶならこの本がお勧め、などありましたら
教えていただけると助かります。




1.
設計がどうなっているのかわかりませんが、
技術的には可能だと思います。

2.
個人的にはリピータコントロールがいいと思いますよ。

3.
できると思います。
あぺおす
会議室デビュー日: 2007/03/17
投稿数: 5
投稿日時: 2007-03-18 00:49
msoさん。
有難うございます。

リピーターコントロールを調べましたが、
よさそうです。
これを使って作ってみます。
とっても、助かりました。
1

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