Set rs = CurrentDb.OpenRecordset( _
"SELECT 日付, 件名 FROM T_予定 WHERE "& _
"日付>#"& FirstDay &"# AND 日付<=#"& FirstDay +42&"# ORDER BY 時刻", _
dbOpenForwardOnly, dbReadOnly)
SELECT [datatalbe].key, MAX([datatalbe].ymd) INTO 003
FROM [datatalbe]
WHERE EXISTS (SELECT * FROM [002] WHERE [datatalbe].key = [002].key AND [datatalbe].ymd < [002].ymd) GROUP BY key;
SELECT
氏名マスタ.氏名,[2020年10月氏名マスタ].氏名番号,[2021年10月氏名マスタ].氏名番号
FROM(氏名マスタ LEFTJOIN2020年10月氏名マスタ ON 氏名マスタ.氏名 =[2020年10月氏名マスタ].氏名)LEFTJOIN2021年10月氏名マスタ ON 氏名マスタ.氏名 =[2021年10月氏名マスタ].氏名;
設定は、プロバイダーでリストから「Microsoft Office 12.0 Access Database Engine OLE DB Provider」を選択し「次へ」、接続で「データソース」にAccessファイルのフルパスを入力すればOKです。
プロバイダーのリストに上記がないのであれば、32bitのACE.OLEDB.12.0がインストールされていないのだと思います。
当方の環境では、64bitのACE.OLEDBがインストールされており、udlファイルを64bitで実行するとMicrosoft Office 12.0 Access Database Engine OLE DB Providerがプロバイダーのリストに表示されましたが、32bitで実行すると表示されませんでした。
そこで、以下のページから、accessdatabaseengine_X64.exeをダウンロードし、インストールしてみたところ、32bit・64bitどちらにもMicrosoft Office 12.0 Access Database Engine OLE DB Providerが表示されるようになりました。
SetSchedule()
内のSQLにORDER BY 時刻
を追加すればいいでしょう。お世話になっております。また、ご教示ください。
左のカレンダーの件名の表示ですが、時刻順に表示することは可能でしょうか?時刻と件名を表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?
当て推量ですが、下記の情報があれば回答が付き易くなるかもしれません。
1年前までは、5月までは、10月までは、先週までは、昨日までは、出来ていたのに、昨日今日から出来なくなった?Windows10ですか?急にできなくなる前に、Windowsアップデートがありましたか?
新しいAccessファイルを適当に作って試したらどうなりますか?
下記で構文エラーが出なくなりました!
SELECT [datatalbe].key, MAX([datatalbe].ymd) INTO 003
FROM [datatalbe]
WHERE EXISTS (SELECT * FROM [002] WHERE [datatalbe].key = [002].key AND [datatalbe].ymd < [002].ymd) GROUP BY key;
とにかく、エラーが出なくなるまで数値のワークテーブルを[]で括ってみようと思い、試していたら解決しました。
hatenaさん、りんごさん、この度はありがとうございました、勉強になりました。
てか、仮称とはいえ、tableをtalbeと記載ミスしてますね…。そりゃ、どこかが全角になってないか?って思いますよね。失礼しました。
SQLマネジメントスタジオでSQL文投げた時と比べて、リクエスト投げても全くレスポンス返ってこないですが、それは別問題なのでなんとかします。SQLマネジメントスタジオ使えない環境のオペレーターが月次の作業をするのでAccessでなんとかしたくて…。今日はぐっすり寝られそうです。ありがとうございました!
無事に表記させることができました。ありがとうございます。
また不明な箇所がありました時はよろしくお願いをいたします。
ご教授ありがとうございます。
早速このやり方をもとに実施してみます。
hatenaさん
追加でご教示いただきありがとうございます。
なるほど、勉強になります。
FROM句では必要ないですが、それ以外では[]で括る必要があります。
(SELECT [002].key, [002].ymd, FROM 002 WHERE [datatalbe].key = [002].key AND [datatalbe].ymd < [002].ymd)
括らないと、数値と区別がつかないので。FROM句には数値が来ることはないのでエラーにならないのだと思います。
hatenaさん
ご教示ありがとうございます。本日確認してみます。たしかに[]で括っていなかったですが、他のアクセスのデザインビューで作成したインナージョインのクエリをSQLビューで確認した時、ローカルのワークテーブルは[]で括ってなかったのでそれに合わせた記憶があります。どちらにしても一度確認してみます。あと、実際のSQLを貼り付けた方が…との由、ごもっともかと存じます。ご教示いただいた解決策でクリアにならない場合は、エラーのキャプチャも含めてそのまま貼付して解決策を仰ぎたいと思います。取り急ぎ返信まで。
りんごさん
ご教示ありがとうございます。本日確認してみます。取り急ぎ返信まで。
とりあえず、
001
とか002
のような数字が始まるテーブル名は、SQL内では[]
で囲む必要があります。[001]
[002]
というように。とのことなので、実際は違うのかもしもませんが。
りんごさんも指摘してますが、全角とか全角空白もエラーの原因になることがありますので、
できれば実際のSQLをコピーしてそのまま貼り付けてもらった方が原因の特定がしやすいですけどね。
提示のSQLにはシングルクォーテーションはないですけど。
例えば、テーブル『2020年』ー テーブル『氏名マスタ』ー テーブル『2021年』のように紐付ける。
紐付けたところを右クリックして、結合プロパティを選択。(マウスカーソルの照準合わせが難しければ、結合線を左クリック、『2020年』ー『氏名マスタ』ー『2021年』、からの右クリック。)
結合プロパティが、◉「両方のテーブルの結合フィールドが同じ行だけ含める」となっているので、◉「テーブル『氏名マスタ』の全レコードと…」に変更する。
こんな感じでどうでしょう?
テーブル名とかフィールド名が不明瞭なので、勝手に下記のようだと仮定して回答します。
氏名マスタ
2021年10月氏名マスタ
あるいは、SQLビューに下記のようにSQLを記述してください。
上記クエリの出力結果
当て推量ですが、アルファベットやカギ括弧が全角になっていませんか?エラーはWHERE EXISTS句ですが、念のため、SELECT INTO FROM句から確認してみて下さい。Wordにコピペすると見やすいかも。
何回もすいません 再再送致します これが質問内容です
具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・2020年10月氏名マスタ・2021年10月氏名マスタを作成し
Accessにインポートして操作してリレーションの紐づけとクエリ抽出してみました。
氏名マスタ
A
B
C
D
2020年10月氏名マスタ 2020年10月氏名番号
A 1
B 2
C 3
D 4
2021年10月氏名マスタ 2021年10月氏名番号
A 1
B 2
D 4
表示させたいものが下記なのですが、
氏名マスタ 2020年10月氏名番号 2021年10月氏名番号
A 1 1
B 2 2
C 3
D 4 4
リレーション・クエリ設定で表示させると氏名マスタのCが消えてしまいます。
氏名マスタ 2020年10月氏名番号 2021年10月氏名番号
A 1 1
B 2 2
D 4 4
時系列に表示して推移を見たいので、C列も表示させておきたいのですが、
Accessの設定・特性上無理なのでしょうか・・・
具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・2020年10月氏名マスタ・2021年10月氏名マスタを作成し
Accessにインポートして操作してリレーションの紐づけとクエリ抽出してみました。
氏名マスタ
A
B
C
D
2020年10月氏名マスタ 2020年10月氏名番号
A 1
B 2
C 3
D 4
2021年10月氏名マスタ 2021年10月氏名番号
A 1
B 2
D 4
表示させたいものが下記なのですが、
氏名マスタ 2020年10月氏名番号 2021年10月氏名番号
A 1 1
B 2 2
C 3
D 4 4
リレーション・クエリ設定で表示させると氏名マスタのCが消えてしまいます。
氏名マスタ 2020年10月氏名番号 2021年10月氏名番号
A 1 1
B 2 2
D 4 4
時系列に表示して推移を見たいので、C列も表示させておきたいのですが、
Accessの設定・特性上無理なのでしょうか・・・
具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・2020年10月氏名マスタ・2021年10月氏名マスタを作成し
Accessにインポートして操作してリレーションの紐づけとクエリ抽出してみました。
氏名マスタ
A
B
C
D
2020年10月氏名マスタ 2020年10月氏名番号
A 1
B 2
C 3
D 4
2021年10月氏名マスタ 2021年10月氏名番号
A 1
B 2
D 4
表示させたいものが下記なのですが、
氏名マスタ 2020年10月氏名番号 2021年10月氏名番号
A 1 1
B 2 2
C 3
D 4 4
リレーション・クエリ設定で表示させると氏名マスタのCが消えてしまいます。
氏名マスタ 2020年10月氏名マスタ 2021年10月氏名マスタ
A 1 1
B 2 2
D 4 4
時系列に表示して推移を見たいので、C列も表示させておきたいのですが、
Accessの設定・特性上無理なのでしょうか・・・
エクセルにはどのようなレイアウトで出力したいのか、図示できませんか。
また、「うまくいきません」とのことですが、具体的にどのような手順を試して、どこでどのようにうまくいかなかったのでしょうか。
当然、Access2003のパソコンで確認されてますよね。
まあ、Access2003はとっくの昔にサポートが切れてますので、何が起きても不思議ではないですが。
当て推量です。Access2019のパソコンでほにゃららを参照していたので、Access2003のパソコンでも参照しようとするが、見つからない。つまり、MSOUTL.OLB"version9.6をインストールするか、存在しない参照設定を外して参照不可にしないといけないのかも。
カーニングは文字間隔ですね。
文字の縦横の比率を変えるのは長体・平体ですね。
ワードならできますが、Accessでは無理です。
画像をつかうか、
エクセルやワードのワードアートで作成して、それを貼り付けることはできます。
ご返信ありがとうございます。
りんごさんの教えてくださったように、
一度調べてみたいと思います。
当て推量ですが、Windowsアップデート、セキュリティソフト関連、officeアップデート、そのためMicrosoft関連で、何かなかったかなぁと推理していく感じになるでしょう。使用率50%、ウィルス感染、Access不具合にフォーカスするよりは。
取り敢えず、Windowsアップデートの履歴に、直近の更新履歴があるかないか。
なっていました!日にかえたところ無事解決できました
ありがとうございました
日付フィールドのグループ間隔が「日」以外になってませんか。
ありがとうございました
調整がんばってみます
追記です。
親にAccessの話をしたら、
Accessは稼働できる容量が1万件くらいなので、
機能をつけすぎたのでは?という話も出ました。
完全に弱っているので、
御指南をよろしくお願い致します。
お世話になります。
計算値通りで問題なければそれでもいいのですが、設定のmm単位と実際のレポートでのtwip単位での変換誤差がありますので、用紙幅より印刷幅が大きくなる場合があり、そのとき、2列目が表示されなります。
まず、計算値通りに設定してみて、プレビューして2列目が表示されなければ、0.01ミリ単位で減らしていって、2列表示になるまで繰り返してください。
1のやり方で試しました
解説の画像ではピッタリあってますが
うまくできませんでした
「サイズ」の「幅」は (用紙幅-左余白-右余白)÷列数 より少し小さめにします。
とありますが少し小さめにする理由はなぜですか?
1.参照設定について
ActiveX DataObjects 6.1Libraryの参照設定はそのままのほうが良いと思います。複数個所でADOを使用されるなら参照設定しておいた方がメリットが大きいです。
2.UDLファイルの設定について
確認が足りず申し訳なかったのですが、64bitのWindowsで起動すると、データリンクプロパティも64bitで起動するようです。32bitのcmd.exeからudlファイルを開いてみると、32bitのプロバイダーのリストが表示されます。
1.C:\Windows\SysWOW64\cmd.exeを開く
2.udlファイルのパスを入力(またはudlファイルをドラッグ&ドロップ)
3.エンターキーでコマンドを実行すると32bitのデータリンクプロパティが開く
設定は、プロバイダーでリストから「Microsoft Office 12.0 Access Database Engine OLE DB Provider」を選択し「次へ」、接続で「データソース」にAccessファイルのフルパスを入力すればOKです。
プロバイダーのリストに上記がないのであれば、32bitのACE.OLEDB.12.0がインストールされていないのだと思います。
3.32bitのACE.OLEDB.12.0のインストール
知らなかったのですが、クイック実行形式のOffice(2019はクイック実行形式のみ)の場合、別途インストールしなければOLEDBで接続できないようです。
当方の環境では、64bitのACE.OLEDBがインストールされており、udlファイルを64bitで実行するとMicrosoft Office 12.0 Access Database Engine OLE DB Providerがプロバイダーのリストに表示されましたが、32bitで実行すると表示されませんでした。
そこで、以下のページから、accessdatabaseengine_X64.exeをダウンロードし、インストールしてみたところ、32bit・64bitどちらにもMicrosoft Office 12.0 Access Database Engine OLE DB Providerが表示されるようになりました。
Microsoft Access データベース エンジン 2016 再頒布可能コンポーネント
https://www.microsoft.com/ja-JP/download/details.aspx?id=54920
うまくいくと良いのですが・・・。
私も速度、安定性、セキュリティ、設定の容易さから有線が大好きなのですが、
IT担当の私以外はスマホともどもWiFiが当然という空気です……(苦笑)。
本日スリープ周りの設定をいじってみたところ、とりあえず良さそうでした。
ありがとうございました。
また何かあったら、相談させて下さい。
リンク先では2つの方法を紹介していますが、どちらの方法を使ってますか。
どちらにしても計算で求めることもできます。
分からなければ、印刷してみて、何ミリずれているか計測して、その分ずらせばいいのでは。
砂上楼閣のリスクを理解する為に、データモデリングの勉強から始めると吉ですよ。ネットニュースで話題になっているように、絵に描いた餅になると大変です。
あれはもう、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、ね。
原因が、ネットワークの切断と分かっているので、切断しないような設定、運用をすることになります。
原因はスリープではなく、無線LAN接続の不安定さが原因かも知れません。可能なら、有線接続にした方が安定するでしょう。
当方では、ディスクトップ、有線LANでの運用しかしたことがないのですが、
スリープ復帰後にネットワークの切断されましたとなることが、たまにあります(めったにないですが)。
そのときは、Accessを再起動するように、ユーザーにいってます。
お返事ありがとうございます。
書き忘れましたが、Windows 10 + Access 2019 + 無線LAN接続です。
閉じた時にスリープされます。ただ、必ずエラーになるわけではない(?)ようなのが不思議です。
・カバーを閉じた時にスリープしない
・退勤時は Windows の操作により、または時間経過によりスリープさせる
あたりが唯一の解決になりそうでしょうか。
tone様
夜分遅くに失礼します。仰って頂いた通り、URLファイルでデータリンクプロパティを確認してみたのですが…申し訳ありません、当方の入門的な技術力では各項目の設定が上手くいかず参照することが出来ませんでした…今一度知識を改めて挑もうと思います。また、これも完全な初歩的な問題で質問とするには大変お恥ずかしい限りなのですが、ActiveX DataObjects 6.1Libraryはこのままでいいのでしょうか。
また、Dim cn As New ADODB.Connectionについて、シンプルでわかり易いです。
これはぜひ参考に致します。ご回答心から感謝申し上げます。
また、当方の回答が的を射ず、もしかしたら混乱されているかも知れません。その場合は何卒ご容赦ください。知識も浅はかですが、とにかく今はトライアンドエラーで解決を目指してみます。
りんご様
夜分遅くに失礼します。先程までそれについて確認をしておりました。
どうやらPC環境がWindows10 64bitなのに対しOfficeが32bitで、ACE.OLEDBが64bitになっている可能性がありそうです(素人な為この予測が合ってるかはわかりませんが)
この問題に対しどうアプローチをするか今一度学習、検討をしてみます。ご回答心から感謝申し上げます。
りんご様 tone様
当方の的を射ない質問にご回答くださり心から感謝申し上げます。
当方保険会社社員でございまして、先日の地震対応において時間的リソースを割き過ぎた結果今のお返事となりました事、まずはこの場を持ちましてお詫び申し上げます。
「ノートパソコンのカバーを開閉する」ことで、「ネットワークが切断された」というエラーがでるということは、
ノートパソコンを閉じることで、電源が切れるかスリープになる設定になっていませんか。
(ノートバソコンの場合、バッテリーが減るのを防ぐためにデフォルトではそのような設定になってます。)
まずは、その設定を変更することですね。すくなくとも、Accessを開いている間は。
udlファイル(ユニバーサルデータリンクファイル)を作成し、有効な接続プロバイダーと接続文字列を確認されてはいかがでしょうか?
新規テキストファイルを作成し、拡張子をtxtからudlに変更してから開くと、データリンクプロパティのダイアログボックスが表示されます。ここで、使用可能なプロバイダーの確認や接続テストを行うことができます。
各項目を設定してからOKで閉じます。このファイルをメモ帳などのテキストエディタで開く(例えば、メモ帳を開いてメモ帳のウィンドウ内へudlファイルをドラッグ&ドロップする)とダイアログで設定した接続内容の接続文字列が記載されています。
もしかすると、OLEDB.12.0ではなく、OLEDB.16.0がインストールされているのではないかと思いますが、上記の方法で確認してみてください。
また、蛇足ですが、せっかくADOを参照設定されているのであれば、
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
のところは、
Dim cn As New ADODB.Connection
としたほうが、インテリセンスも構文チェックも有効になるので、コーディングが楽になると思います。