テーブルにデータを入力し、カレンダーフォームの問題を解決する方法

このQ&Aのポイント
  • 前回の質問の続きですが、カレンダーで選択した日付を同じフォームのテキストボックスに入力する方法や、テーブルに氏名、日付、時間を入力する方法を教えてください。
  • また、カレンダーフォームの起動時に当日の日付を表示する方法についても教えてください。
  • さらに、フォーム内で氏名以外の入力内容を残したままレコードを移動すると、データとして保存されない問題についても解決方法を教えてください。
回答を見る
  • ベストアンサー

アクセスにて2

前回http://okwave.jp/kotaeru.php3?q=2234970にて質問させていただいたのですがその続きなのですが カレンダーはできたのですが カレンダーで選択した日付を同じフォームのテキストボックスへの 表記はできました。 テーブルの内容は氏名 日付 時間 となってます そのテーブルに入力したいのですができますでしょうか?? あとカレンダーフォームを起動後当日もっていきたいのですが Private Sub Form_Open(Cancel As Integer) Me.calendar0.Year = Year(Date) Me.calendar0.Month = Month(Date) Me.calendar0.Day = Day(Date) Me.calendar0.Value = Date End Sub to しているのですがどうもいかないのですが原因わかりますでしょうか?? フォーム内で氏名(テキストボックス)の内容を前回入力内容を残しているのですが そのままレコードの移動をすると氏名以外の内容は テーブルデータに落ちるのですが 内容を残すだけではデータとして 落ちないのでしょうか?? 質問ばかりで申し訳ありません

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

開くときのイベントではなく、読み込み時のイベントに変更 Private Sub Form_Open(Cancel As Integer) Me.calendar0.Year = Year(Date) Me.calendar0.Month = Month(Date) Me.calendar0.Day = Day(Date) Me.calendar0.Value = Date End Sub ↑これを↓これに Private Sub Form_Load() Me!calendar0.Value = Date End Sub フォーム内で氏名(テキストボックス)の内容を前回入力内容を残しているのですが そのままレコードの移動をすると氏名以外の内容は テーブルデータに落ちるのですが 内容を残すだけではデータとして 落ちないのでしょうか?? ↑フォームに氏名テキストボックスコントロールがあって そのコントロールのソースがテーブルの[氏名]なら出来ると思いますが? 推測ですが 前スレのコンボボックスの更新後処理にコンボボックスの値を 氏名コントロールに渡せば良いと思います。

mappy0213
質問者

お礼

カレンダーの当日設定ありがとうございました。 これを期にVBAw覚えていこうと思います 

関連するQ&A

  • access 2003 コマンドボタンのEnabledイベントについて

    いつもお世話になっています。 どなたかわかる方アドバイスいただけないでしょうか? 現在、会社の勤務表をaccess2003にて作成しています。 勤務状況を保存する勤務表テーブルと入力用コントロールが 複数あるフォーム1フォームがあります。 出社時間や退社時間、作業内容を入力し登録コマンドボタンの イベントで入力内容を勤務表テーブルに入力し、同時に その月1ヶ月分の勤務状況をフォーム1フォーム上のリストボックス に表示させています。 今回は 表示している1カ月分の勤務に対して前月、翌月の勤務を表示する コマンドボタンを作成しました。 前月は問題なくできたのですが、翌月に関してはシステム時間に 対して未来の月に関しては表示させない(コマンドボタンを使用不可 にする制限をつけ)ようとしているのですが、できません。 翌月コマンドボタンのイベントで未来の月を表示させようとした時に 使用不可にしようとしても翌月コマンドボタンのイベントで 翌月コマンドボタンを使用不可にはできないみたいですし、 どうにもこまっています。 なにかいい案ありませんでしょうか?どなたかお願いします。 ちなみに翌月ボタンに関するコードです。 '翌月ボタンに関するイベント Private Sub コマンド89_Click() DoCmd.SetWarnings False Dim yokugetucount Dim yokugetu yokugetucount = DCount("*", "勤務表", "[ユーザー名] = [Forms]![フォーム1]![コンボ56] AND [日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)") If yokugetucount > 0 Then Me!リスト76.RowSourceType = "Table/Query" Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;" Else yokugetu = Format(DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1), "yyyy/mm") Select Case Right(yokugetu, 2) Case 1, 3, 5, 7, 8, 10, 12 X = 31 Case 4, 6, 9, 11 X = 30 Case 2 If IsDate(yokugetu & "/29") = True Then X = 29 Else X = 28 End If End Select For C = 1 To X Work1 = yokugetu & "/" & Right("00" & C, 2) Work2 = Format(yokugetu & "/" & Right("00" & C, 2), "aaa") kakunin = DCount("*", "勤務表", "[ユーザー名] = [Forms]![フォーム1]![コンボ56] AND 日付 = #" & Work1 & "#") If (kakunin = 0) And (Me!コンボ56 <> "") Then DoCmd.RunSQL "Insert into 勤務表(ユーザー名,日付,曜日) values ([forms]![フォーム1]![コンボ56],#" & Work1 & "#,'" & Work2 & "')" End If Next End If Me!リスト76.RowSourceType = "Table/Query" Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;" Calendar6 = DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1) テキスト88 = Calendar6 DoCmd.SetWarnings True End Sub 前月ボタンはEnd Subの前に If DateSerial(Year(Calendar6), Month(Calendar6) + 1, Day(Calendar6)) > DateSerial(Year(Date), Month(Date), Day(Date)) Then コマンド89.Enabled = False Else コマンド89.Enabled = True End If を入れる事でやりたい事ができました。

  • ACCESS 日付データ

    ACCESSの初心者です。よろしくお願いします。 フォーム上のテキストボックスに今日の日付から年月を取り出して6桁の数値を作りたいと思います。 例えば本日ですと「200602」の数値です。 「年」というテキストボックスにYear(Date())を、「月」というテキストボックスにMonth(Date())を取り出しました。[年] & [月]とすると「20062」となってしまいます。 「200602」とするにはどうすれば良いでしょうか。

  • アクセスVBAの検索で。

    アクセスでカレンダーというかスケジュールを管理できるようなものをつくろうとしています。 非連結フォーム1に ・入力年 ・入力月 ・[1]-[45]まで(それぞれ年月が変わると日付がかわる) という感じで入っています。 T_用件というテーブルには ・年(数値型 ・月(数値型 ・日(数値型 ・用件(テキスト型) とあり、これをもとに「F_用件」フォームを作成してあります。 フォーム1のボタンの1つを例にとるとこんな感じです。 If Me![7].Value <> "" Then Year = "(T_用件.年=" & (Me!入力年.Value) & ")" Month = "(T_用件.月=" & (Me!入力月.Value) & ")" Day = "(T_用件.年=" & (Me![7].Value) & ")" WhereCond = WhereCond & " AND (" & Year & " AND " & Month & " AND " & Day & ")" End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "F_用件", acNormal, , WhereCond こうするとF_用件フォームは開くのですが、きちんと検索されてきません。 どこが悪いのでしょうか? よろしくお願いします。

  • ユーザーフォームで

    お世話になります。 ユーザーフォームで、ユーザーに日付を選択してもらおうと 思っており、初期値として当日の日付を入れています。 テキストボックスを年、月、日と三つに分けています。 下記の記述です。 しかし、前の日付にも戻る事が出来なく、また、年は進められる のですが、同時に月と日も進んでしまいます。 年、月、日、それぞれ別々に進めたり遅らせたりしたいのですが、 どの様に記述したらよろしいでしょうか。 ご教示頂きたく宜しくお願い申し上げます。        記 Private Sub UserForm_initialize() TextBox1.Value = Year(Date) TextBox2.Value = Month(Date) TextBox3.Value = Day(Date) End Sub Private Sub SpinButton1_Change() TextBox1.Value = Year(Date) + SpinButton1.Value TextBox2.Value = Month(Date) + SpinButton1.Value TextBox3.Value = Day(Date) + SpinButton1.Value End Sub

  • if分で複数条件の記述方法を教えてください。

    Accessの検索フォームに締日入力用のコンボボックスと請求日の日付入力ボックスを配置しました。 締日が月末の場合、コンボボックスから31を選択すると請求日日付入力ボックスに前月の月末が出て、それ以外の締日(例として25日)を選択すると、前月の25日が入るようにVBAを作成しました。 尚、コンボボックス(close1)は20や25,27等の締日が選択できます。 下記VBAは先月のみ対応します。 締日が選択できるコンボボックス名は(close1)、日付入力ボックス名は(day1)です。 Private Sub close1_AfterUpdate() Dim i As Date i = DateSerial(Year(Date), Month(Date) - 1, [close1]) If (Me!close1) <> 31 Then Me!day1 = i Else Me!day1 = DateSerial(Year(Date), Month(Date), 0) End If End Sub これを今月の締日かどうかのmsgboxを表示して、今月なら今月の請求日付、違う場合は先月の請求日付を日付入力ボックスに入れたいのですが、どうすればよいでしょうか? おそらく下の様な流れではと思うのですが、条件が少し複雑なため、どうまとめたら良いかわかりません。 Dim rc as Integer if (Me!close1) <> 0 then ‘締日が0以外ならテキストボックスを表示させたいです' rc = msgbox (今月の締日ですか?, vbYesNo) If rc = vbYes then "今月の請求日をday1に表示" else "先月の請求日をday1に表示" よろしくお願いします。

  • Accessのフォームで

    教えてください。下のようなテーブルがあり、これを元にフォームを作成したいのですがいい方法が見つかりません。 【テーブル】  品物テーブル(品物ID、品物、製作所)  社員テーブル(品物ID、社員コード、氏名) このテーブルを元にして下のようなフォームを作りたいのです。 【フォーム】  品物ID [テキストボックス]  品物 [テキストボックス]  製作所 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス] ※社員コード、氏名が3つあるのは、同じ品物を3人が作成することがあるため。(この部分で悩んでいます) このようなフォームを作ることは可能でしょうか? また参考になるようなサイトなどあれば教えてください。 よろしくお願いします。

  • Accessの絞りこみについて教えて下さい。

    Access初心者です。顧客テーブルがあり、名前で絞りこみをかけたいのですが、エラーになってしまい困っています。 顧客テーブルからフォームを作り、フォームヘッダーにテキストボックスとボタンを作成しました。 絞り込みは苗字でもHITするようにし、テキストボックスには名前を入力、ボタンで絞り込みをかけるというかたちです。。 テキストボックス名は検索用、ボタンの名前は検索にしています。 そこで下記VBAコードを入力したところ、パラメータが出てきてしまい、絞り込み出来ません。 Private Sub 検索_Click() Me.RecordSource = "select * from 顧客リスト where 氏名 like ‘*" & 検索用 & "*’" End Sub どうしたらよいでしょうか? 教えて下さい。 よろしくお願いします。

  • カレンダについて(Access2000)

    WindowsXP SP2, Access2000, Visual Basic6.5で開発しております。 Accessのフォームに複数のテキストボックスがあり、テキストボックスをクリックしたらフォームにMSCAL.Calendar.7を張り付けたをカレンダーサブウィンドウを表示して日付入力できるようにしたいです。 そこで、下記の点がうまくできなくて困っているのでご教授ください。 ・カレンダーの表示時、どのテキストボックスから呼ばれたか判別できない。(カレンダーにうまくテキストボックスオブジェクトを渡せない) ・カレンダーの表示時、呼び出し元のテキストボックスに日付が入力されていた場合はその日付をデフォルト表示したい。

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • アクセスにて

    アクセスでカレンダーを表記させて その日付をチェックすると テーブルにその日付を入力できるようにしたいんですができますでしょうか? カレンダーもウィンドウズのカレンダーのように1wで改行して表記させたいのですができますでしょうかね??  当月だけでなく月を変えると半年ぐらい先まで表記させたいのですが カレンダーのテーブルは作ります あと氏名 月 時間を入力させたいのですが 同じ氏名で数テーブル月と時間を入力していきます 普通に作れば氏名 月 時間を入力し次テーブルに移動させると 氏名が消えますが 前に打った内容を残すのはできますでしょうか

専門家に質問してみよう