• ベストアンサー

Access2003 DateSerial関数について教えて頂けないでしょうか?

いつも助けていただき感謝しています。 また、わからないことがでてしまいまして、どなたかアドバイス 頂けないでしょうか? 現在access2003にて勤務表を作成中です。 作成中に様々なアドバイス頂き大分進んだのですが今回は、、、 勤務表テーブルとフォーム1フォームがあります。 フォームにはユーザーを選択するコンボボックスと年月を検索する コマンドボックス(例えば2008年04月分の勤務を検索したい場合に押します。) があります。(他のコントロールもあるのですが今回は影響ないと思いますので省略します。) 検索コマンドボックスを押した際、ユーザーコマンドボックスにて選択されている ユーザーを使用。空白ならインプットボックスを表示させ検索したいユーザーを入力してもらい、 そのユーザーを使用します。 その後、さらにインプットボックスを表示し検索したい月を入力してもらい ユーザーの検索したい月の勤務をフォーム内のリストボックスに表示させたいのですが、、、 インプットボックスに入力された月をどのように勤務表テーブルの日付フィールドと比較 すればよいのかわかりません。 SQL文でユーザー名から勤務表テーブルのデータを検索selectできるところまでいったのですが 条件にインプットボックスの値を使用するようにためしてもうまくいきません。 DateSerial関数を使用するなどやってはみたのですが、、、どなたかアドバイスよろしく お願いします。 Private Sub コマンド90_Click() Dim user Dim userkensaku3 Dim username Dim userkensaku2 Dim kensaku Dim tukisuu Dim saisyouti Dim gennzai If IsNull(コンボ56) = True Then user = InputBox("検索したいユーザー名を入力して下さい。 " ) userkensaku3 = DCount("*", "ユーザー", "ユーザー名='" & user & "'") Else username = コンボ56 userkensaku2 = DCount("*", "ユーザー", "ユーザー名='" & username & "'") End If kensaku = userkensaku2 Or userkensaku3 If kensaku = 0 Then MsgBox ("検索したいユーザーは登録されていません。登録をするか、入力をやり直して下さい。") Else tukisuu = InputBox("検索したい年、月を入力して下さい。" & vbCrLf & vbCrLf & "例 2008/06", "検索年月入力画面") saisyouti = Format(DMin("[日付]", "勤務表"), "yyyy/mm") gennzai = Format(Date, "yyyy/mm") End If If tukisuu = "" Then MsgBox ("値が入力されていません。") ElseIf tukisuu < saisyouti Then MsgBox ("検索対象外です。入力をやりなおして下さい。") ElseIf tukisuu > gennzai Then MsgBox ("検索対象外です。入力をやりなおして下さい。") ElseIf user = "" Then リスト42.RowSourceType = "Table/Query" リスト42.RowSource = "select ユーザー名,日付,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 " & _ "where ユーザー名 ='" & username & "' ;" End If End Sub

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

  • ベストアンサー
  • nmktksk
  • ベストアンサー率36% (75/208)
回答No.1

リスト42.RowSource = "select ユーザー名,日付,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 " & _ "where ユーザー名 ='" & username & "' and 日付 like '" & tukisuu & "%');"

leadman
質問者

補足

アドバイスありがとうございました。 また、返信遅れまして大変申し訳ありませんでした。 アドバイス頂いた内容でできました。 非常に感謝します。また、何かありましたらよろしくお願いします。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Format(DMin("[日付]", "勤務表"), "yyyy/mm")までできているのなら、 リスト42.RowSource = "select ~ from 勤務表 " & _ "where ユーザー名 ='" & username & "' and " & _ "Format([日付],""yyyy/mm"")='" & tukisuu & "'" という条件式は導き出せるはず。

leadman
質問者

補足

アドバイスありがとうございました。 また、返信遅れまして大変申し訳ありませんでした。 アドバイス頂いた内容でできました。 非常に感謝します。また、何かありましたらよろしくお願いします。

関連するQ&A

  • Access VBA

    Access2003を使用しています。 単純な質問かもしれませんがよろしくお願いします。 ログイン画面を作成しておりログイン自体はできたのですが、ログインしたときに ログイン画面を自動的に閉じたいのですが、うまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main)があり ログインに成功するとメイン画面が開くようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "IDが未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "frm_main" DoCmd.OpenForm stDocName, , , stLinkCriteria Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 長くなって申し訳ないのですが、どのようにすればログイン後にログイン画面(frm_ログイン)を閉じるようにできるのでしょうか? よろしくお願いします。

  • Accessログイン権限

    Access2003を使用しています。 ログイン画面を作成しておりログイン自体はできたのですが、 管理者とそうでないユーザーに分けて、ログイン時に管理者であればfrm_mainを、 そうでなければfrm_main2を開くようにしたいのですがうまくいきません。 現在の仕様では、ログイン画面(frm_ログイン)とメイン画面(frm_main、frm_main2)があり テーブル名:tbl_ユーザー フィールド名:ユーザー名、パスワード、アカウント アカウントで"1"が管理者、"2"が一般ユーザー このようになっています。 ーー以下VBAコードーー Private Sub rogin_Click() Dim a If IsNull(Me.[UserName]) Then MsgBox "ユーザー名が未入力です" Me.[UserName].SetFocus ElseIf IsNull(Me.[password]) Then MsgBox "パスワードが未入力です" Me.[password].SetFocus Else a = DLookup("パスワード", "tbl_ユーザー", "ユーザー名='" & Me.[UserName] & "'") If IsNull(a) Then MsgBox "該当する ユーザー名 は存在しません" Me.[UserName].SetFocus ElseIf StrComp(a, Me.[password], vbBinaryCompare) = 0 Then On Error GoTo Err_rogin_Click Dim stDocName As String Dim stLinkCriteria As String If アカウント = "1" Then stDocName = "frm_main" Else stDocName = "frm_main2" End If DoCmd.OpenForm stDocName, , , stLinkCriteria DoCmd.Close acForm, Me.Name Else MsgBox "パスワードが違います" Me.[password].SetFocus End If End If Exit_rogin_Click: Exit Sub Err_rogin_Click: MsgBox Err.Description Resume Exit_rogin_Click End Sub ーー以上ーー 現在はこのようになっているのですが、これだとなぜかアカウントが"1"でも"2"でも frm_mainが開いてしまいます。 長くなって申し訳ないのですが、アドバイスをお願いします。

  • EXEL VBAで印刷の指定をしたいのですが

    VBA初心者、勉強中です。 sheet1に2つの表がありまして下記のとおりボタンをクリックしたらインプットボックスが立ち上がって2つの表の1か2を指定したら範囲がぷれびゅーするということなんですが、1を入れても、2を入れてもMsgBox "1か2を入力して!しか表示しません。 さんざん調べまくりましたが、どなたかご教授お願いします。 Sub 印刷() Dim SentP As Integer On Error Resume Next SentS = InputBox("どちらを印刷?1売上 2材料") If SentP = 1 Then Range("a1:g32").Select Selection.printpreiew ElseIf SentP = 2 Then Range("j1:n41").Select Selection.PrintPreview Else MsgBox "1か2を入力して!" End If End Sub

  • アクセスVBA(先日の続きになります)

    前回教えていただきました検索抽出のVBAですが、抽出がうまくできなくなってしまいました。 抽出条件を入力しているにもかかわらず、全部のデータが表示されてしまいます。 どこがまずいのかわかりましたら、ぜひ教えてください。 Private Sub btn_検索02_Click() Dim kensaku As String If Not Me![t_04] = "" Then kensaku = kensaku & _ "([舗装施行年度] Like '*" & Me![t_04] & "*') AND " If Not Me![t_05] = "" Then kensaku = kensaku & _ "([舗装工事名] Like '*" & Me![t_05] & "*') AND " If Not Me![t_06] = "" Then kensaku = kensaku & _ "([舗装区間01] Like '*" & Me![t_06] & "*') AND " If Not Me![t_07] = "" Then kensaku = kensaku & _ "([舗装区間02] Like '*" & Me![t_07] & "*') AND " If Not Me![t_08] = "" Then kensaku = kensaku & _ "([改良施行年度] Like '*" & Me![t_08] & "*') AND " If Not Me![t_09] = "" Then kensaku = kensaku & _ "([改良工事名] Like '*" & Me![t_09] & "*') AND " If Not Me![t_10] = "" Then kensaku = kensaku & _ "([改良区間01] Like '*" & Me![t_10] & "*') AND " If Not Me![t_11] = "" Then kensaku = kensaku & _ "([改良区間02] Like '*" & Me![t_11] & "*') AND " If Not Me![t_12] = "" Then kensaku = kensaku & _ "([台帳作図年度] Like '*" & Me![t_12] & "*') AND " If Not Me![t_13] = "" Then kensaku = kensaku & _ "([台帳調査名] Like '*" & Me![t_13] & "*') AND " If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) DoCmd.OpenForm "検索結果", , , kensakum, acFormReadOnly DoCmd.Maximize DoCmd.Close acForm, Me.Name End If End Sub

  • Accessについて質問です。

    Win2000、Access2000を使用しています。 何件か教えて頂きたいことがあります。 1)「アプリケーションの実行」でAdobeAcrobatを起動させることは可能ですか。 2)ハイパーリンクしたオブジェクトにフォーカスした時、マウスポインタが指マークにならないで普通の矢印マークにすることは可能ですか。 3)5月頃にこのページで教えて頂いた検索をするVBのコードについてですが、 Private Sub btn_検索02_Click()   Dim kensaku As String   If Not Me![t_04] = "" Then kensaku = kensaku & _   "([舗装施行年度] Like '*" & Me![t_04] & "*') AND "   If Not Me![t_05] = "" Then kensaku = kensaku & _   "([舗装工事名] Like '*" & Me![t_05] & "*') AND "   If kensaku <> "" Then   kensaku = Left(kensaku, Len(kensaku) - 5)   DoCmd.OpenForm "検索結果", , , kensaku, acFormReadOnly   DoCmd.Maximize   DoCmd.Close acForm, Me.Name  End If End Sub 以上のコードを教えて頂いてうまく検索できるようになったんですが、 kensaku = kensaku & … イコール(=)の後の kensaku の意味と、 If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) この2行は、どのような動きをするためのコードなのか理解できませんでした。 質問がたくさんありますが、どなたか1つでもおわかりになる方いましたら、お教えください。

  • accessについて<BOFとEOFのいずれかがTUREになっているか・・・現在のレコードが必要です>

    Private Sub kensaku_Click() On Error GoTo Err_kensaku_Click Screen.PreviousControl.SetFocus Dim ss As String Dim rs As String Dim strSQL As String Dim rstType As ADODB.Recordset Set rstType = New ADODB.Recordset ss = text.text strSQL = "Select 見積日 From 見積 where 提出見積No ='" & ss & "'" rstType.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdText If ss = "" Then MsgBox ("提出見積Noを入力してください") ElseIf rstType.EOF = False Then While rstType.EOF = False rs = rstType.GetString MsgBox (rs) rstType.MoveNext Wend kikaiNo.Value = "222" Else MsgBox ("提出見積Noが存在しません") End If Exit_kensaku_Click: Exit Sub Err_kensaku_Click: MsgBox Err.Description Resume Exit_kensaku_Click End Sub 以上は書いた検索のコードですが、<BOFとEOFのいずれかがTUREになっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です>というエラーが出てきます。問題がどうかよくわかりませんので、教えていただけませんか。

  • VBSで指定した日付のファイルのみを抽出するには

    以下の内容について教えていただけないでしょうか? ○実施したいこと ・インプットボックスに日付を入力 ・指定したフォルダに移動 ・インプットボックスで入力された日付を含むファイルのみ抽出  (ファイル名: **130503**) →ファイルは0個、1個、複数個の場合あり ・抽出したファイルを別フォルダにコピー ○困っていること ・入力した日付をパラメータとして、ファイル検索を行い該当するファイルを  抽出する方法 ※入力する日付は130503のようにしたいです。 ○現在、作成中のソース Option Explicit Dim hizuke Dim fs Do '日付を入力するためのインプットボックスを表示 hizuke = InputBox("日付を入力してください。" &_ vbCR & vbCR &_ "例)2000/01/01") '「キャンセル」または未入力で終了 If hizuke = "" Then Exit Do '正しい日付が入力された場合 ElseIf IsDate(hizuke) then MsgBox "テスト(正しい日付が入力されました。)" 'オブジェクトを作成する Set fs = CreateObject("Scripting.FileSystemObject") 'ファイルをコピーする fs.CopyFile "D:\test130503.log","D:\test\" '日付でなかったら、注意を表示して、インプットボックスに戻る Else MsgBox "入力した値が不正です。" End If Loop 宜しくお願いします。

  • パラメータ入力ダイアログボックスについて

    access2003を勉強中です。 先日会社で使用する勤務表に関して質問をさせて頂き親切な方の協力によりなんとか進むことができました。 そして情けない話、またつまってしまってまして、本やネットにて調べているのですが解決できていません。 どなたかアドバイス頂けないでしょうか? 内容は ユーザー名、日付、出社、退社、勤務内容を入力するフォームが ありまして、「登録」コマンドボタンで入力した内容を勤務表 テーブルに反映させるようになっています。 フォームの中で「検索」コマンドボタンを作成し、イベントで インプットボックスを表示し、入力月のデータを勤務表テーブルから 取り出しフォームのリストボックスに表示させようとしています。 Dim inputatai as integer inputatai = inputbox("検索したい月を入力して下さい。") if inputatai => 0 AND inputatai <= 12 Then ,,,, 1から12が入力されれば勤務表テーブルから該当データを取り出し、 それ以外は再度入力を促すMsgBoxを表示しようとしていたのですが、、、 この場合条件分岐にSQLのSELECT文が使用できないことは わかったので一度コードを削除して他の部分にとりかかっていたの ですが、それ以降フォームを開くとパラーメータの入力ダイアログ ボックスが出るようになってしまい、どうしても出ないように できません。どうすれば出ないようにできるのでしょうか? どなたかご存知のかたよろしくお願いします。

  • 乱数の利用

    僕の通う中学校では、乱数を利用してプログラムを作成することになりました。そしてプログラムを作りましたがステートメントがないと出てきます。どう解決すればよいでしょうか?これがプログラムです。 Dim a,b,c,d,e,f,g a=msgbox("幸せですか?",4) if a=6 then const b="運勢" randomize b=int(rnd*10) select case b case 0,1,2 c=messagebox("吉でした。彼女はいますか?",4) if c=6 then msgbox"90%",,b elseif c=7 then msgbox"60%",,b end if case 3,4,5 d=msgbox("凶でした。友達はいますか?",4) if d=6 then msgbox"60%",,b elseif d=7 then msgbox"20%",,b end if case 6,7 e=msgbox("末吉でした。",4) if e=6 then msgbox"60%",,b elseif e=7 then msgbox"40%",,b end if case 8 f=msgbox("大凶でした。夢はありますか?",4) if f=6 then msgbox"30%",,b elseif f=7 then msgbox"10%",,b end if case else msgbox"100%",,b end if elseif a=7 msgbox"0%" end select

  • Access VBA 削除

    またお世話になります。 Access2003を使用しています。 不要になったアカウントを削除できるようなものを作成したいのですがうまくいきません。 リストボックスに表示されたアカウントを選択し、 ボタンを押すとテーブルから削除できるというものを考えています。 テーブル名: tbl_ユーザー フィールド名: ユーザー名 パスワード アカウント フォーム名: frm_Account_Delete  リストボックス: UserList  コマンドボタン: Del いろいろ調べて自分なりに作ってみたのですがエラーが出てしまいました。 ―――以下VBAコード――― Dim db As Database Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("tbl_ユーザー") If IsNull(UserList) Then MsgBox "削除するアカウントを選択してください" Else If MsgBox(UserList & "を削除しますか?", vbYesNo) = vbYes Then db.TableDefs.delete UserList     MsgBox "UserListを削除しました。" End If End If rs.Close db.Close Set db = Nothing ―――以上――― これだと”このコレクションには項目がありません”というエラーが出ます。 アドバイスをよろしくお願いします。