|
▼小僧 さん:
遅くなり申し訳ありません。
>For i = 1 to 17
> Me.Controls("日" & Format(i, "00")).ControlSource = "日" & Format(i, "00")
> Me.Controls("DD" & Format(i, "00")).ControlSource = "DD" & Format(i, "00")
> Me.Controls("CC" & Format(i, "00")).ControlSource = CC" & Format(i, "00")
>Next i
Formatを使ってコントロールをまとめる方法があるんですね。
大変、勉強になりました。ありがとうございました。
>当方であれば、T_連 の 日01 フィールドのデータ型を日付型にして
>テキストボックスの書式で m/d(aaa) と設定し表示させ、
>VBA のコードでは日付型で受ける方法を取ると思います。
T_連の、日01フィールド型は12/25(木)という表示形式であれば、
本来は、日付型ですが、以下の理由によりテキスト型にしています。
7/25(水) 7/26(木) 7/27(金) 7/28(土) という表示形式<日01〜日04>もあれば、
連休の事情により、
●:7/25(水) 7/26(木) 7/27(金) 7/28(土) という表示形式にしたい場合も
ありますので、テキスト型にしています。
----------------------------------------------
あと、別件で申し訳ありませんが、スケジュールの記入/閲覧画面に対して
実はイメージをフォームに表示する方法色を表示させるためのテーブル構成に
ついていろいろ考えてみて、以下のホームページの内容の通り変更した。
※ERROR:本文に禁止語句が含まれているため、URLを貼り付けられない
ようなので、大変申し訳ありませんが、
Googleで、「[ACC97] イメージをテーブルに保存せずフォームに表示する方法」と
入れて検索したら、1番目に表示されますので、ご確認下さい。
そのURLのように変更しました。
変更前:
CC CD 説明
−−−−−−−−−−−−−−−−−−
1 ビットマップイメージ 出社日
2 ビットマップイメージ 連休対象日
−−−−−−−−−−−−−−−−−−
変更後:
CC P 説明
−−−−−−−−−−−−−−−−−−
1 C:\color1.bmp 出社日
2 C:\color2.bmp 連休対象日
−−−−−−−−−−−−−−−−−−
記入画面は、以下の画面構成ですが、上記のようにテーブル構成にしたため、
色を表示させるものは、日付を表示させるためのテキストボックスの後ろに、
イメージを表示させるためのコントロールを置き、C:\ の下に置いた色ファイルを
読み込む方法でプログラムを作成しました。
そうすることで、以下のサイトのように、Access のテーブルにイメージデータを
保存せずにファイルサイズを小さくできることで対応させて頂きました。
● 画面の内容:単票フォーム
◇記入画面の詳細 No_連休,ユーザID ← 不可視
−−−−−−−−−−−−−−−−−−−−−−−−−−−
場所: [保存:コマンドボタン]
姓名: [閉じる:コマンドボタン]
−−−−−−−−−−−−−−−−−−−−−−−−−−−
過去の連休名 [夏休み |▼] ← コンボボックスで過去の連休を参照する。(cmb_連休)
−−−−−−−−−−−−−−−−−−−−−−−−−−−
日 月 火 7/25(水) 7/26(木) 7/27(金) 7/28(土) ←日付を表示
[ ] [ ] [ ] [ ] [ ] [ ] [ ] ←スケジュールを記入
7/29(日) 7/30(月) 7/31(火) 8/1 (水) 8/2 (木) 8/3 (金) 8/4 (土)
[ ] [ ] [ ] [ ] [ ] [ ] [ ] ←スケジュールを記入
8/5 (日) 8/6 (月) 8/7 (火) 8/8 (水) 8/9 (木) 8/10(金) 土
[ ] [ ] [ ] [ ] [ ] [ ] [ ] ←スケジュールを記入
日 月 火 水 木 金 土
[ ] [ ] [ ] [ ] [ ] [ ] [ ] ←記入不要
−−−−−−−−−−−−−−−−−−−−−−−−−−−
No_連休 ユーザID 組織名 姓名 連休 日01 D01 CC01 T_色_1.P 日02
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
60 a000001 □aa○cc AA 盆07 12/27(水) 1 C:\color1.bmp 12/28(木)・・(略)
65 a000001 □aa○cc AA 夏季07 4/25(水) 1 C:\color1.bmp 4/26(木)・・(略)
65 a000002 □aa○cc SS 夏季07 4/25(水) 1 C:\color1.bmp 4/26(木)・・(略)
70 a000001 □aa○cc AA 秋07 7/25(水) 1 C:\color1.bmp 7/26(木)・・(略)
75 a000001 □aa○cc AA 冬07 8/11(土) 2 C:\color2.bmp 8/12(日)・・(略)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
日01〜日17:日付表示
D01〜D17:スケジュール記入用
CC01〜CC17:1を選択したらC:\color1.bmp、2を選択したらC:\color2.bmp
以下プログラムです。
小僧さんのプログラムを参考に、1画面1レコード分に対して、以下、やりたい4点ができるように
色を区別できるように表示できました。
しかし・・・・・・問題が発生。閲覧画面は一覧表示のため、色を
区別できません。
新規ページへ続く・・
Option Compare Database
Dim flgSaveOK As Boolean
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not flgSaveOK Then
Cancel = True
End If
End Sub
Private Sub Form_Current()
Dim No_holi As Long
Dim inc01 As Variant
Dim days01 As Variant
Dim i As Integer
Dim lngGrey As Long
For i = 1 To 28
Me.Controls("txt日" & Format(i, "00")).ControlSource = ""
Me.Controls("txtD" & Format(i, "00")).ControlSource = ""
Me.Controls("txtD" & Format(i, "00")).Locked = False
Me.Controls("txtD" & Format(i, "00")).BackColor = RGB(255, 255, 255)
Me.Controls("連結" & Format(i, "00")).Picture = ""
Next i
No_holi = Me.No_連休
inc01 = DLookup("[日01]", "T_連", "No_連休 =" & No_holi)
days01 = Left(Right(inc01, 2), 1)
lngGrey = RGB(219, 215, 218)
If days01 = "日" Then
For i = 1 To 17
Me.Controls("txt日" & Format(i, "00")).ControlSource = "日" & Format(i, "00")
Me.Controls("txtD" & Format(i, "00")).ControlSource = "D" & Format(i, "00")
Me.Controls("連結" & Format(i, "00")).Picture = Me.Controls("txtP" & Format(i, "00"))
Next i
For i = 18 To 28
Me.Controls("txtD" & Format(i, "00")).Locked = True
Me.Controls("txtD" & Format(i, "00")).BackColor = lngGrey
Me.Controls("連結" & Format(i, "00")).BackColor = lngGrey
Next i
ElseIf days01 = "月" Then
・・・(略)
End Sub
Private Sub cmb_連休_AfterUpdate()
On Error GoTo Err_cmb_連休_AfterUpdate
Me.Filter = "ユーザID = '" & str1 & "' And 連休対象 = '" & Me.cmb_連休.Column(0) & "'": Me.FilterOn = True
Exit_cmb_連休_AfterUpdate:
Exit Sub
Err_cmb_連休_AfterUpdate:
MsgBox "編集中は 検索機能は使えません。", vbExclamation, "通知"
Resume Exit_cmb_連休_AfterUpdate
End Sub
Private Sub Form_Open(Cancel As Integer)
Me.ShortcutMenu = False
DoCmd.MoveSize 2000, 300, 9900, 7500
Me.RecordSource = "SELECT ・・・略"
Me.cmb_連休 = DLookup("[連休名]", "T_連", "No_連休 = " & DMax("No_連休", "T_連"))
Me.Filter = "ユーザID = '" & str1 & "' And 連休対象 = '" & Me.cmb_連休.Column(0) & "'": Me.FilterOn = True
End Sub
Private Sub btn_閉じる_Click()
・・略
End Sub
Private Sub btn_保存_Click()
・・略
End Sub
Private Sub Form_Error(DataErr As Integer, Response As Integer)
・・略
End Sub
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
やりたいことは、以下4点です。
(1)記入画面が開いた時に最初に表示されるスケジュールは、「No_連休」が一番
大きい数字で、なおかつ、ログインしたユーザのレコードが表示されるものとする。
(2)スケジュール記入の最初の日を、曜日位置に合わせて第1週に埋め込む。
例えば、夏休みのスケジュール記入の最初の日は、7/25(水)です。
それを第1週の、4番目の位置〜17日分表示させたい。
日 月 火 7/25(水) 7/26(木) 7/27(金) 7/28(土) ←4番目の位置に表示したい
で、過去の連休名というコンボボックスでは、過去の連休を参照するわけですが、
もし、「冬休み」を選択した場合は、最初の日は、12/25(木)です。
したがって、
日 月 火 水 12/25(木) 12/26(金) 12/27(土) ←5番目の位置に表示したい
という風に表示したい。
(3)スケジュール記入対象日以外の日は日付を埋め込まない。
(4)画面を閉じる時は非連結に元に戻す。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
|
|