• 締切済み

access 横型カレンダーを使用したデータベース

access2003で、シフト表を作成したいと考えております。カレンダーについて作成したことがなく、情報を絞り込めなかったためご質問させていただきます。以下がシフト表のイメージです。   |        1月      |     2月 名前| 1日|2日|3日|4日|5日|・・・・|1日|2日 鈴木| 出|休 |休|出・・・・・・ 山田| 休|出 |休|出・・・・・・ といった形のマトリクス型式にしたいと存じます。 月のテーブルで日付ごとにレコードを作製し、サブフォームで埋め込むといった方法も考えたのですが、長期的な運用を考えた際に、実用的でないと思ったためほかのアイデアをお伺いできればと思いました。 ご経験がある方、アイデアをお持ちの方がいらっしゃいましたらお伺いできればと存じます。よろしくお願いいたします

みんなの回答

noname#140971
noname#140971
回答No.5

X CNNExecute "DELETE * FROM 出勤表 WHERE ID=1;" O CNNExecute "DELETE * FROM 出勤表 WHERE ID=1 AND 日付=XXXXXXX;" まあ、SQL文は例示ですので、少々のミスはと思いましたが一応訂正しておきます。 訂正のついでに CNNExecute関数を紹介しておきます。 一応、ADO関係の関数の基本形に忠実に作成したつもりです。 Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)    MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & CnnErrors.Description & Chr$(13) & _       "・Err.Number=" & CnnErrors.Number & Chr$(13) & _       "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _       "・SQL Text=" & strSQL, _       vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute    Dim isOK As Boolean    Dim cnn As ADODB.Connection       isOK = True    Set cnn = CurrentProject.Connection    With cnn      .Errors.Clear      .BeginTrans      .Execute strSQL      .CommitTrans    End With Exit_CnnExecute: On Error Resume Next    cnn.Close    Set cnn = Nothing    CnnExecute = isOK    Exit Function Err_CnnExecute:    isOK = False    If cnn.Errors.Count > 0 Then      ErrMessage cnn.Errors(0), strSQL      cnn.RollbackTrans    Else      MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"    End If    Resume Exit_CnnExecute End Function

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.4

同様の勤務シフト の質問に 回答してます。 やって出来ないことは有りませんが相当に苦労しました。 ヒントも転がってると思いますので ご覧下さい。 工事の現場と派遣職人の予定を ガントチャートで 管理してます。

参考URL:
http://oshiete1.goo.ne.jp/qa3707410.html
puzzleman
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきます。

noname#140971
noname#140971
回答No.3

社員名__2008/01/01__2008/01/02__2008/01/03__2008/01/04__2008/01/05__2008/01/06 鈴木____________________0_________________0________________X________________0________________0_________________1 中村____________________X_________________0________________0________________X________________X_________________0 こういうデータ入力フォームを用意した場合、 O->Xへ X->Oへ で、テーブルの更新要領は違います。 前者は、DELETE文の発行、後者はINSERT文の発行。 CNNExecute "DELETE * FROM 出勤表 WHERE ID=1;" CNNExecute "INSERT INTO 出勤表 SET (日付, 社員_ID) VALUES ('2008/01/01', 1);" ところで、この場合、入力ではエクセル風のグリッドコントロールを利用することになろうかと思います。 確かに、現場からはかようなエクセルまがいの入力仕様を要求する向きがあります。 この場合、 [イミディエイト] ? DBSelect("SELECT 出勤表.日付, 出勤表.社員_ID, 社員.略称 FROM 社員 RIGHT JOIN 出勤表 ON 社員.ID = 出勤表.社員_ID ORDER BY 出勤表.日付, 社員.整列順位;") 2008/01/01;1;鈴木; 2008/01/02;1;鈴木; 2008/01/02;2;中村; とデータを簡単に取得できることが課題になろうかと思います。 次に、 SetGridValue "XXX", 2, 2, "O" SetGridValue "XXX", 2, 3, "X" と、取得したデータに基づいて翻訳表示する関数もないと実にややこしいです。 こういう関数があれば、For ループで回すだけです。 これができりゃ、後は、CNNExecute関数の類を利用してグリッドデータの変更をテーブルに反映するだけです。 まあ、やって出来ないことじゃないでしょうが、所詮は、プログラマのマスターベーションじゃないですか? No2さんの推奨されるやり方で事足りる訳ですから・・・。

puzzleman
質問者

お礼

No5のご回答含めありがとうございます。 ただ今開発環境がないため、後ほど試してみたいと存じます。 >所詮は、プログラマのマスターベーションじゃないですか? おっしゃっていただいている事はご尤もです。現在すでにEXCELベースで複数の管理用ファイルが手元にあるのですが、作成者によって統一されていない、できない点が多々発生したため、一括管理を検討いたしました。私が担当するまで、会社の管理ファイルが統一されていなかったのが原因です。 そのため1つの機能として、今回のご質問をさせていただきました。 ソースもありがとうございました。大変助かります。 まずはお礼まで

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>といった形のマトリクス型式にしたいと存じます。 これが条件ならAccessをやめExcelでやりましょう Accessでやる場合は日付は縦に展開し インタフェースにはメイン・サブフォームを使います

puzzleman
質問者

お礼

ご回答ありがとうございます。EXCELで組むのもいいのですが、すべてVBAで組むのであれば、ACCESSの方がいいかと存知ます。 表面的に使用するだけであれば、社員データのテーブルと、カレンダーの様なテーブルを作成、2つを組み合わせたクエリを作成し、横型のカレンダーのような内容はすでに作成済みですが、 定期的にカレンダー作成の作業が必要になってしまうため、長期的に使用したいとも思いません。 DAOかADOで作成可能というお話を伺ったことがあったもので、ご質問いたしました。最初の質問文が言葉足らずで申し訳ございません。

noname#140971
noname#140971
回答No.1

表の体裁(フォーマット)とテーブル設計は無関係かと思います。 稼動日程表: 日付:2008/01/29 曜日:1,2,3,4,5,6.7 稼動:Yes,No 社員: ID_________:1 社員番号:101 整列順位:1 名前______:鈴木 一郎 略称______:鈴木 出勤表: 日付____:2008/01/29 社員_ID:1 出勤____:Yes, No <------ 不要! こういうテーブル設計で事足りると思います。 この設計でエクセル風の入力と表示を実現するのはフォームとレポートの課題。

puzzleman
質問者

お礼

ご回答ありがとうございます。 仰っていただいた内容については存じ上げております。 フォームで、表示させたくご質問させていただきました。 以前DAOやADOを使用することで表示可能というお話をお伺いきましたもので、具体的にどうすればいいかがわからずご質問した次第です。

関連するQ&A

  • EXCEL VBAの記述をお願いします

    添付ファイル1.の表は一カ月のシフト表です各記号で役割があります上段(1)(1)が午前、下段が午後(2)(2)です。お願いしたいのはこのシフト表から2.の表に実績として1日の(1)はだれ(1)はだれ、(2)はだれと代入したいのです。 お願いは代入する式をお願いしたい。 1.の表です 1月  1日 2日 3日 4日 鈴木 (1)  (1)  (2) (2)    これらは縦横の罫線が引いてあります 佐藤 (1)  (1)  (2)  (2) 山田  (1) (1)  (2) (2) 伊藤  (1)  (1)  (2)  (2) 2.の表です 1月 1日  2日 3日  4日 (1) 鈴木 伊藤 山田  山田 (1) 佐藤 鈴木 伊藤  佐藤 (2) 山田  佐藤 鈴木  伊藤 (2) 伊藤  山田 佐藤  鈴木 このように1.の表から代入するVBAでの式をお願いいたします 画像添付ファイルもあります

  • Word2007でカレンダーを作りたい。

    Word2007でカレンダーを作りたい。 挿入タブ 表 → クイック表作成のカレンダーでは カレンダー1が12月で1日が日曜日から カレンダー2が5月で 1日が火曜日からとなっています。 この日付を自動的に今年の月に合わせて日付を変更する方法が あれば教えていただきたい。 また、テンプレートをダウンロードしたのですが2008年で これを今年のカレンダーに自動的に変更する方法があれば教えて下さい。

  • カレンダーの作り方

    PHPで簡単なカレンダーを作成しようと思っています。やりたいことは下のようなカレンダーを作成したいです。forループで表自体は作れるのですが、最後の行に何もデータ(日付)が入っていない場合は最後の行は表示しないという処理にしたいです。この場合、31より後ろの4つのセルはあっても問題ありません。あくまで、最後の行が空の場合は最後の行は表示しない、もしくは表示させないという処理です。 これだとforループで表を作るには難しいような気がしますが、何かよいアイディアをご教授ください。 ┏━━━━━━━━━━━━━┓ ┃********2006年10月********┃ ┣━┳━┳━┳━┳━┳━┳━┫ ┃Su┃Mo┃Tu┃We┃Th┃Fr┃Sa┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃01┃02┃03┃04┃05┃06┃07┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃08┃09┃10┃11┃12┃13┃14┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃15┃16┃17┃18┃19┃20┃21┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃22┃23┃24┃25┃26┃27┃28┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃29┃30┃31┃--┃--┃--┃--┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃--┃--┃--┃--┃--┃--┃--┃ ┗━┻━┻━┻━┻━┻━┻━┛

    • ベストアンサー
    • PHP
  • エクセルで。。。

    エクセルで。。。 変則的な星取表を作成したいと思っておりますが、いいアイデアが浮かびません。 やりたいことは (例)   A  B  C  D  E  F 1鈴木 山田 2佐藤 佐々木 3鈴木 山本 4佐藤 山田 とした時に、以下のような星取表を作成したいと思っております。    山田  佐々木  山本 鈴木  1        1 佐藤  1    1 要するに、組合せの回数を星取表にペア回数として数字を入れたいのです。 皆さん、いいアイデアをご教示お願い致します。

  • Excel2003 カレンダー表 → 表・グラフで累計表示したい

      | 1月  2月  3月 ~ ------------------------ 1日 | 10 2日 |     30   20   3日 | 20 4日 |     30 といった カレンダー系の X軸 Y軸で 表をつくったのですが、ここから 1月1日 10 1月3日 20 2月2日 30   ~ という表を別ワークシートに自動作成するにはどうすればいいでしょうか? (逆に 表→ カレンダー) 関数で可能でしょうか。マクロや スクリプトを作成しないといけないでしょうか。  また、この「カレンダー」から直接 グラフ (累計)を作成することは可能でしょうか。  Excel2003を使用しております。どうかアドバイスいただければ幸いです。よろしくお願いいたします。

  • カレンダーの作成

    エクセルにて カレンダーというか年と月を入力すると 下の表に1~31 と その曜日が出せるようにしたいのですが そのような式わかる方いらっしゃいますでしょうか A1 年(年号表示なので今なら18) A2 月 A3~34(その月の日) B3~34(その月の曜日) ってな感じで表を作成したいのですが・・・ 各セルを&でくっつけたとかしてみたんですが・・・だめでした お願いします。

  • 年間スケジュールカレンダー作成ソフト?について

    説明がうまくできないのですが、 子供の予防接種時期やスケジュールを月ごとに書き込んでいきたいのですが、月ごとのカレンダー(日付が書いてないもの)を作成するソフトやそのようなカレンダーをダウンロードできるところはあるでしょうか。 たとえば、「1月 ○結婚記念日 ○健康診断 」 とか書けるもの・・・  エクセルなどで表を作って作成してしまえば簡単なのはわかっているのですが、使いやすいものがあれば参考にしたいなぁ、と思って質問しました。

  • excelかaccessでカレンダー

    カレンダーのような物を作りたいのですが、少々条件があります。 よく事務所にあるような31日がズラーっと横に並んでいる予定表 のような物を作りたいのですが、土日は表示したくないのです。 かつ、一ヶ月分作れば、あとは月の数字を変えるだけで12ヶ月分 作れるようにしたいのです。 月が変わると土日がずれてしまうので、困っています。条件によって セルの幅を変えることは無理でしょうし、やはりマクロなどを組まないと ダメでしょうか?(マクロでも不可能?) で、accessで可能ならaccessでもいいと思っています。 よろしくお願いします。

  • エクセル 数式を教えてください

    エクセル数式の本をみても、どうしても設定できない数式があります。 (そもそも、やりたい内容に対応する数式があるのかすら わからないのですが・・) 店舗運営用で係設定をしているのですが、係だけを抽出した 別の表を作成したいと思っています。 A列には日付が1~31日・1行目には人名(全店員分)がはいった表 があります。 例:閉店業務当番を☆マークでシフトの表に設定しています。   エクセルではないですが、雰囲気はこんな感じです。     山田 鈴木 森    1 早  遅  ☆   2 ☆  早  遅   3 休  ☆  遅   4 ☆  早  休   5 遅  ☆  早  ↑ 上記のような表とは別に☆だけついている人のシートを   作成したいです。            ☆       1 森       2 山田       3 鈴木       4 山田       5 鈴木  現在のところ、目でさがしてて入力しています。  ⇒日付を入力すると、その行から☆をさがして、そこに対応する   人名を表示させる数式を知りたいと思っています。  説明が分かりにくいとは思いますが、宜しくお願いいたします!!        

  • 続:excel日付データからカレンダーを作成・色塗

    http://okwave.jp/qa/q8796983.html こちらの質問の続きです。 出席データからカレンダーを作成することができました。 ただ、出席日に「出」マークの表示だけだと、 該当する生徒の「そもそも通うべき曜日」がわからないので、 カレンダーsheetの日~土(A4~G4)に、「そもそも通うべき曜日」を色塗り(カレンダーsheetをパッとみて各生徒の「そもそも通うべき曜日」がわかる方法)したいと考えています。 添付図の、参考.xlsx:1に、データsheetがあります。 通うべき曜日が、L~R列に表示されており、 月=1、火=2、水=3、木=4、金=5、土=6、日=7 と表記しています。 鈴木さやか のカレンダーの「水 (D4) 」を色塗り(もしくはほかの方法)したいです。 伊藤裕であれば、「木」「土」に色塗り・・・ということです。 上記のようなことは可能でしょうか? よろしくお願いいたします。