• ベストアンサー

モジュール作成に関して

引数を日付型と整数型にして テーブルのデータを取り出すモジュールを作成したいと思っています 日付別、時間別のアクセス数データベースがあり 例えば日付型引数(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

  • a68
  • お礼率58% (64/109)

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

  • ベストアンサー
  • 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/17068)
回答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

  • Accessのマクロでモジュールを実行させたい。

    Access2002を勉強中の初心者です。 AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。 マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。 しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」 根本的に方法が間違っているのでしょうか? アドバイスをよろしくお願いします。

  • アクセス97でモジュールを使用したい

    基本的な内容かもしれませんがアクセスで テーブルの中のフィールドに 入っているデータを関数を用いて変換させたいのです。 その関数はモジュールに登録しています。 マクロを使えば モジュールを開くとありますが フィールドの中の値を全てに摘要させたい場合 どうすればいいのでしょうか? モジュールの中に該当テーブルからデータを1つ目から取得し それをフィールドの最後まで繰り替えす 内容でいいのでしょうか? 具体的には 1.53 を 1   にしたいのです。 以上、宜しくお願いします。 2.43   2 6.85   7 

  • Accessのパスワード保護されたモジュールのコピー

    Access2000でレポートを作成しています。 レポートの実行前にモジュールで集計をしてから レポートが実行されるようになっています。 このレポートを他のデータベースでも使いたくて、 コピーをしたいのですが、このモジュールはパスワードで保護されているため、コピーをするとエラーが でます。どうしたら簡単にコピーできますか? モジュールのパスワードはわかっています。 よろしくお願いします。

  • Accessの日付/時刻型のデータ変換について

    Accessで日付/時刻型で持っているデータを整数型に変換したいと思っておりますがうまくいきません。 日付/時刻型の「時刻(S)」でテーブル上にデータを入れています。これを整数に変換したいと思っています。 例)10:20 → 1020 そこで、 CInt([変換したいフィールド名]) をクエリで実行してみたのですが、結果は「0」、「1」、「#エラー」が表示され、変換したい形に変換することができませんでした。 どのようにしたら、例にある変換の仕方ができるのか教えて頂けますでしょうか。宜しくお願いいたします。

  • ACCESS テーブル作成クエリ

    ACCESS2000で、別のデータベースAのテーブルを定期的に最新のものにするために、データベースBにテーブル作成クエリを作成します。Aを開くときにはパスワードが設定されているので、テーブル作成クエリでそのパスワードの入力を求められるため、正しく入力して実行するのですが、パスワードが正しくありませんとエラーになってしまいます。 Aのパスワードを解除して実行すればテーブルが作成できますが、パスワードを解除しないで作成する方法はないでしょうか。

  • ACCESSのモジュールでのUNION

    ACCESS超初心者です。 モジュールでテーブルAとBテーブルBを結合しテーブルCを作成したいのですが、 DoCmd.RunSQL " SELECT * FROM TABLE_A UNION SELECT * FROM TABLE_B INTO TABLE_C; " でRunSQL実行時のエラー(2342)となってしまいます。 きっと基本的なことだと思うのですが・・・ どうぞお教えください。

  • テーブル作成クエリとデータベースの分割

    当方、Accessは全くの素人ですが、急遽Accessにて連絡先台帳を 作ることとなりました。 参考書を片手に、なんとかそれ相応のものになってきましたが、 表題部分にて四苦八苦しております。 どうぞ、ご教授のほどよろしくお願いします。 まず、連絡先テーブルを作成しました。 この中には個人名、会社名、住所などを入力するようにしました。 会社名の中には複数のレコードがあるため、個人向けではなく、会社向けの 送付用のラベルを作成したいと思い、テーブル作成クエリを用いて 会社テーブルを作成しました。 上記テーブルから、ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 また、この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、新たな連絡先が 追加されたときなど、再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。 できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか? 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、できればコード等を記載して いただけると助かります。 Access2007を用いております。 どうぞよろしくお願いします。

  • 【アクセス】 クエリの使用方法

    現在アクセスを使用してデータベースを作成して いるですが、複数のテーブルを一つのクエリに まとめたいのですが 例えば (Aテーブル) (Bテーブル) (Cテーブル)   日付      日付      日付 上記A~Cのデータの日付をクエリで一つにする ことはできますか? アクセス超初心者で基本的な質問かもしれませんが よろしくお願いします。

  • Access97作成のデータベースを2000で

    教えてください! Access97で作成したデータベースにLAN内の他のPCからAccess2000で開いて入力していたのですが、コード入力で分類を引っ張る部分でデータが文字化けしたり欠損したりという不具合が出ました。 よい解決法はあるでしょうか? また、このデータベースをコピーして元のテーブルとリンクさせてAccess2000からの入力用データベースを作ろうとしたのですが、テーブルの新規作成がグレーになっていてできませんでした。 こちらの解決法があれば併せてお教え願います。 仕事上とても困っています。 どうかよろしくお願いします。

  • ACCESSエラー「モジュールがありません」

    ACCESS2000でテーブルとフォームを作っていたら下記のエラーメッセージが出てきました。 「実行時エラー'2001';直前の操作はキャンセルされました。」 その後、 「イベントプロパティに指定した式 クリック時でエラーが発生しました:モジュールがありません。※マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。※関数、イベント、マクロの評価でエラーが発生しました。」 というメッセージもでてきました。また、フォームが開かなくなり誤作動をし始めたのですが原因がわかりません。どなたか回避策をご存知ないでしょうか?

専門家に質問してみよう