Public Sub SetSchedule()
Dim i As Integer, rs As DAO.Recordset
For i = 1 To 42
Me("T" & i).Caption = ""
Next
Set rs = CurrentDb.OpenRecordset( _
- "SELECT 日付, 件名 FROM T_予定 WHERE " & _
+ "SELECT 日付, 時刻, 件名 FROM T_予定 WHERE " & _
"日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "# ORDER BY 時刻", _
dbOpenForwardOnly, dbReadOnly)
Do Until rs.EOF
With Me("T" & rs!日付 - FirstDay)
- .Caption = .Caption & rs!件名 & vbCrLf
+ .Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf
End With
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub
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
(氏名マスタ LEFT JOIN 2020年10月氏名マスタ ON 氏名マスタ.氏名 = [2020年10月氏名マスタ].氏名)
LEFT JOIN 2021年10月氏名マスタ ON 氏名マスタ.氏名 = [2021年10月氏名マスタ].氏名;
クエリのデザインビューで作成してみてはどうでしょうか?
ありがとうございます。
早速上記の更新クエリを試してみました。
実際には、
テーブル=kaikei
空白埋めをしたい列
得意先=商品点数
支払方法=リソース名
になりますので、書き方を変更しています。
SQL文の画面で図Aのように記述し、実行すると、
「SQLステートメントが正しくありません。”DELETE”、”INSERT”、”PROCEDURE”、”SELECT”、または”UPDATE”を使用してくださいとなります。」
全くの素人で申し訳ありませんが、ここからどのようにすればよいか教えていただけませんか?
よろしくお願いいたします。
【図A】
SELECT
FROM Kaikei;
DLookUp("商品点数","kaikei","ID=" & DMax("ID","kaikei","ID<=" & [ID] & " AND 商品点数<>''"))
DLookUp("リソース名","kaikei","ID=" & DMax("ID","kaikei","ID<=" & [ID] & " AND リソース名<>''"))
CSVファイルをテキストインポートウィザードでテーブルとして取り込みます。ウィザードの途中で、「主キーを自動的に設定する」にチェックを入れます。これでインポートするとオートナンバー型のフィールド「ID」が自動で追加されて、それが連番になりますので、これで並び順は保持されます。
※1
※2
この更新クエリを実行すればご希望の結果になります。
マクロからは「クエリを開く」アクションで引数にこのクエリを設定すればいいでしょう。
hirotonさん、さっそくありがとうございます。
それでは、CSV取り込み時に、取込Noを採番するとして、図3のデータだった場合、
対応する方法があるのでしょうか?
大変お手数ですが、教えていただけないでしょうか?
【図3】
取込No,日付,得意先,商品名,支払方法,数量,金額
1,2021/11/2,A得意先,商品A,現金,1,500
2,2021/11/2, ,商品N," ",1,500
3,2021/11/2, ,商品X," ",2,1000
4,2021/11/2, ,商品J," ",1,500
5,2021/11/2,B得意先,商品B,VISA,1,500
6,2021/11/2,C得意先,商品A,JCB,2,1000
7,2021/11/2, ,商品H," ",2,1000
8,2021/11/2,D得意先,商品X,現金,1,500
9,2021/11/2,E得意先,商品J,現金,3,1500
10,2021/11/2, ,商品Q," ",1,500
11,2021/11/2, ,商品A," ",1,500
12,2021/11/2, ,商品Z," ",2,1000
ACCESS(データベース)の仕事じゃないです
マクロ(アクションカタログ)を駆使して実現する方法があるのかもしれませんがVBAを覚えるよりも難解な手法になるでしょう
データベースの場合、データの並び順は指定した並び順となります。指定がない場合の並び順は不定です
質問のデータの場合、ACCESSに取り込んだ瞬間前後という関係性が失われます。前後の関係性がないので、空白が出た場合の前の行といってもその行がどの行なのか特定することができません。何か前後を参照できるような仕組みが必要です
VBAであればCSVを1行ずつ取り込むことができるので、それに合わせて
取り込んだ内容を記憶しておく→次の行の取込の時に空白なら記憶しておいた内容を使う
という流れで目的が達成できます
CSVの取込参考:Access VBA:TransferTextを使用せずにVBAでCSVなどの区切り記号つきテキストファイルを既存のテーブルにインポートするサンプルプログラム(SE Life Log - VBAを中心にその他IT備忘録 -さん)
コメントありがとうございます
Windowsアップデートは随時行っておりまして・・・
申し訳ない事に、いつから出来なくなったかは正確には把握できておりません
一年前には出来ていたと認識しております
OSはWindows10、新しくAccessファイルを作成して試してみましたが
上記と同じ症状が出ます。
私の間違えに気づきました。表示できました。大変もうしわけございませんでした。ありがとうございます。
以後、自分で研究いたします。レベルを考えわかる範疇で頑張ってみます。ありがとうございました。そして初歩的な質問で皆さんにご迷惑をおかけいたしました。
hatena様
ご返事ありがとうございます。なかなかお聞きするのがハードルが高くなってしまいまして、
Formatは気づいてやってみたのですが、タグのところ F_Carendarが時間と件名の表示になって
カレンダーには一切表示がなくなってしまいました。
もしよろしければ、この件だけ教えて頂けないでしょうか?ゆくゆくは担当別に色を変える予定でおり、こちらは自力でと考えております。大変申し訳ございませんが教えて頂けないでしょうか?
あっ、すみません。タイプミスしてました。
Foramt
→Format
ご回答ありがとうございます。
ご指摘のとおりです。今VBAを勉強中です。コードの方を優先して理解するように勉強いたします。
初歩的な質問に親身にお答えくださり大変ありがとうございます。
りんごさんのご指摘のように対応できるようになるまでは、バックアップで対処していきます。
クラスオブジェクトの件はバックアップファイルから復旧できました。
.Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf
は、どうやらエラーになるようです。
赤字を緑字に修正すればいいでしょう。
一例ですので、これをヒントにして希望の形に修正してください。
それぞれのコードの意味を調べて理解するようにしましょう。
実運用に使用するなら、コードの意味を理解せずに運用開始するのは、
りんごさんも言われてますが、いろいろ危険です。
「クラスオブジェクト」というのが何か分かりませんが、
古いバックアップから作り直すか、
りんごさんの回答のようにサンプルファイルをダウンロードしなおして作り直すかですね。
テーブルが残っているなら、テーブルはそれを使えばいいでしょう。
どちらにしても定期的にバックアップを取るのは必須です。
当て推量ですが、「改行スペースを詰めて表示」に続けて、「件名と改行の間に時刻を加えて表示」
当て推量ですが、「時刻順」に続けて、「日付と件名と時刻でレコードセットを開く」
よくわからないけれど、もう一度サンプルダウンロードからやり直すのは?
運用開始するのであれば、個人使用で出来る範囲に留めておくほうが、無難でしょう。
やった事がないのであれですが、部署で運用開始とか、ものすごい覚悟が要ると思います。
ありがとうございます。
順番変わりました。ありとうございます。もうひとつの時刻と件名を同時表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?
あとですが、最初の記載が悪くリカバー時にクラスオブジェクトがすべて消えてしまいました。
こちらはどのようにリカバーすればよいでしょうか?古いバックアップはあります。
初心者で大変ご迷惑をおかけいたします。部署で動いているため困っています。
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万件くらいなので、
機能をつけすぎたのでは?という話も出ました。
完全に弱っているので、
御指南をよろしくお願い致します。
お世話になります。