• ベストアンサー

モジュール作成に関して

引数を日付型と整数型にして テーブルのデータを取り出すモジュールを作成したいと思っています 日付別、時間別のアクセス数データベースがあり 例えば日付型引数(02/06/01)、整数型引数(1)として 関数を実行すると02/06/01の1時のデータ(20)を 返すものを作りたいのです 日付    0時  1時  2時 …(23時まで) ―――――――――――――――― 02/06/01  10  20  30 … 02/06/02  20  20  40 … … ―――――――――――――――― 出来たらそのモジュールの例をあげてもらえると 非常に助かります 宜しくお願いしますm(_ _)m

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>>アクセス数:=DLookup("[" & [時間] & "時]","テーブル1","日付=" & [日付]) >こちらで試してみたのですがうまくいきませんでした >なぜかNullを返してしまいます 日付はどのように引数で指定していますか? Accessの標準の日付文字列の形式は#で囲む必要があります。 #2002/02/01#のような感じで指定する必要があります。

a68
質問者

お礼

taka_tetsuさん 何度も回答ありがとうございました なんとか解決することが出来ました 引数の[日付]は"yyyy/mm/dd"でフォーマットした文字列にしました "yyyy"にするところがポイントだったみたいです アクセス数:=DLookup("[" & [時間] & "時]","テーブル1","日付=#" & [日付] & "#") taka_tetsuさんには何度も回答してもらって 非常に助かりました これからも宜しくお願いしますm(_ _)m

a68
質問者

補足

taka_tetsuさん 回答ありがとうございます >日付はどのように引数で指定していますか? 引数の日付は"yy/mm/dd"でフォーマットして これをDatevalueで日付型にしたものです (もともとのデータが 02/06/01 12:34:56 という形なので 日付部分を文字列で取り出しそれを日付型に変換していました)

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

テストデータとして下記を作りました。テーブル名=小口現金1 番号 日付 名前 使途 金額 1 H14.3.3 中山 光雄 電話料 \2,000 2 H14.3.3 大田 昌雄 文具費 \3,000 3 H14.3.4 小暮 文他 印紙代 \250 4 H14.3.2 大宮 訓哉 文具費 \300 5 H14.3.3 小中 公次 印紙代 \2,100 6 H14.3.1 国元 間   交通費 \3,200 7 H14.3.2 山川 仁   コピー代 \3,400 というテストデータ(アクセスのテーブル)を作り、アクセスのモジュールに下記を入力しました。 Sub test01() Dim db As DAO.Database Dim rs As DAO.Recordset Dim hiduke As String Dim name As String Dim mysql As String hiduke = InputBox("日付=") name = InputBox("名前=") Set db = CurrentDb() mysql = "select * from 小口現金1 where 日付='" & hiduke & "' and 名前='" & name & "';" ' MsgBox mysql Set rs = db.OpenRecordset(mysql, dbOpenDynaset) Do Until rs.EOF MsgBox rs!日付 & " " & rs!名前 & " " & rs!使途 rs.MoveNext Loop rs.Close Set rs = Nothing End Sub 本件質問に当てはめると、どこをどう変えれば良いかは判ると思います。ほとんど同じタイプです。 ただし上記InputboxとMsgbox rs!日付....は、通常はフォームやサブフォームに表示するのでしょうが、必要知識を最小限にするため、上記の様にしました。ここはご存知なければ調べてください。会社の他の方に使ってもらうには不満でしょうが済みません。

a68
質問者

お礼

imogasiさん 回答ありがとうございます とりあえずモジュールのほうを変更して 試してみたいと思います 分からないところが出てきたら補足したいと思いますので その時は宜しくお願いします

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>DLookup関数を使えば出来ると思っていたのですが >出来なくて困っていました(下のようにしていました) > >アクセス数:=DLookup([時間] & "時","テーブル1","日付=" & [日付]) フィールド名の先頭が数字であるためです。 []で生成したフィールド名を囲む必要があります。 アクセス数:=DLookup("[" & [時間] & "時]","テーブル1","日付=" & [日付]) これでOKなはずです。

a68
質問者

補足

taka_tetsuさん 回答ありがとうございます >アクセス数:=DLookup("[" & [時間] & "時]","テーブル1","日付=" & [日付]) こちらで試してみたのですがうまくいきませんでした なぜかNullを返してしまいます アクセス数:=DLookup("[" & [時間] & "時]","テーブル1")にしたところ 設定したフィールドから適当な数値を取得していたので 条件の部分がおかしいのかなとおもっているのですが… ちなみにそのフィールドは日付型データ(yy/mm/dd)で入っています

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

元データは何に入っているのでしょうか? Excel?Access?テキストファイル?他のデータベース? データベースだったらバージョンは?各フィールドのデータ型は? モジュールって?Accessの標準モジュールのこと?他に開発している何かのモジュール? 答えようにも情報が少なすぎです。もっと詳細な情報を記述しないと誰も答えられませんよ。 #ちなみに、時間別になっていない生のアクセスログは利用可能ですか?

a68
質問者

補足

taka_tetsuさん 回答ありがとうございます >もっと詳細な情報を記述しないと誰も答えられませんよ。 その通りですね、スイマセン ACCESS2000のデータベースです モジュールはAccessの標準モジュールのことです 選択クエリでフィールド名のところに アクセス数:=関数名([日付],[時間]) と入力して モジュールで日付(日付型)と時間(整数型)から アクセス数を求めたいのです DLookup関数を使えば出来ると思っていたのですが 出来なくて困っていました(下のようにしていました) アクセス数:=DLookup([時間] & "時","テーブル1","日付=" & [日付])

関連するQ&A