Microsoft Access 掲示板

views
4 フォロー
6,283 件中 3,041 から 3,080 までを表示しています。
5
hatena 2021/11/04 (木) 00:31:38 修正

クエリのデザインビューで作成してみてはどうでしょうか?

画像1

4
apple 2021/11/03 (水) 12:01:18 f825d@28017

ありがとうございます。
早速上記の更新クエリを試してみました。
実際には、
テーブル=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 リソース名<>''"))

3

それでは、CSV取り込み時に、取込Noを採番するとして、図3のデータだった場合、
対応する方法があるのでしょうか?

CSVファイルをテキストインポートウィザードでテーブルとして取り込みます。ウィザードの途中で、「主キーを自動的に設定する」にチェックを入れます。これでインポートするとオートナンバー型のフィールド「ID」が自動で追加されて、それが連番になりますので、これで並び順は保持されます。

  1. 上記のテーブルをもとに下記のような更新クエリを作成します。
フィールド得意先支払方法
テーブル取込テーブル取込テーブル
レコードの更新※1※2

 
※1

DLookUp("得意先","取込テーブル","ID=" & DMax("ID","取込テーブル","ID<=" & [ID]   & " AND 得意先<>''")) 

※2

DLookUp("支払方法","取込テーブル","ID=" & DMax("ID","取込テーブル","ID<=" & [ID] & " AND 支払方法<>''"))

この更新クエリを実行すればご希望の結果になります。

マクロからは「クエリを開く」アクションで引数にこのクエリを設定すればいいでしょう。

2
apple 2021/11/02 (火) 23:47:20 f825d@28017

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

1
hiroton 2021/11/02 (火) 17:28:15 225e3@f966d

ACCESS(データベース)の仕事じゃないです
マクロ(アクションカタログ)を駆使して実現する方法があるのかもしれませんがVBAを覚えるよりも難解な手法になるでしょう

データベースの場合、データの並び順は指定した並び順となります。指定がない場合の並び順は不定です

質問のデータの場合、ACCESSに取り込んだ瞬間前後という関係性が失われます。前後の関係性がないので、空白が出た場合の前の行といってもその行がどの行なのか特定することができません。何か前後を参照できるような仕組みが必要です

VBAであればCSVを1行ずつ取り込むことができるので、それに合わせて
取り込んだ内容を記憶しておく→次の行の取込の時に空白なら記憶しておいた内容を使う
という流れで目的が達成できます

CSVの取込参考:Access VBA:TransferTextを使用せずにVBAでCSVなどの区切り記号つきテキストファイルを既存のテーブルにインポートするサンプルプログラム(SE Life Log - VBAを中心にその他IT備忘録 -さん)

2
ビギナー 2021/11/01 (月) 09:52:50 60939@d3c82

コメントありがとうございます
Windowsアップデートは随時行っておりまして・・・
申し訳ない事に、いつから出来なくなったかは正確には把握できておりません
一年前には出来ていたと認識しております

OSはWindows10、新しくAccessファイルを作成して試してみましたが
上記と同じ症状が出ます。

18
CROSS 2021/10/31 (日) 07:28:00 dd71f@d523b

私の間違えに気づきました。表示できました。大変もうしわけございませんでした。ありがとうございます。
以後、自分で研究いたします。レベルを考えわかる範疇で頑張ってみます。ありがとうございました。そして初歩的な質問で皆さんにご迷惑をおかけいたしました。

17
CROSS 2021/10/30 (土) 17:31:39 dd71f@d523b

hatena様

ご返事ありがとうございます。なかなかお聞きするのがハードルが高くなってしまいまして、
Formatは気づいてやってみたのですが、タグのところ F_Carendarが時間と件名の表示になって
カレンダーには一切表示がなくなってしまいました。

もしよろしければ、この件だけ教えて頂けないでしょうか?ゆくゆくは担当別に色を変える予定でおり、こちらは自力でと考えております。大変申し訳ございませんが教えて頂けないでしょうか?

16

.Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf

は、どうやらエラーになるようです。

あっ、すみません。タイプミスしてました。 ForamtFormat

.Caption = .Caption & Format(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf
15
CROSS 2021/10/30 (土) 07:46:17 dd71f@d523b

ご回答ありがとうございます。
ご指摘のとおりです。今VBAを勉強中です。コードの方を優先して理解するように勉強いたします。
初歩的な質問に親身にお答えくださり大変ありがとうございます。
りんごさんのご指摘のように対応できるようになるまでは、バックアップで対処していきます。

クラスオブジェクトの件はバックアップファイルから復旧できました。

 .Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf

は、どうやらエラーになるようです。

14

赤字を緑字に修正すればいいでしょう。

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

一例ですので、これをヒントにして希望の形に修正してください。
それぞれのコードの意味を調べて理解するようにしましょう。

実運用に使用するなら、コードの意味を理解せずに運用開始するのは、
りんごさんも言われてますが、いろいろ危険です。

こちらはどのようにリカバーすればよいでしょうか?古いバックアップはあります。

「クラスオブジェクト」というのが何か分かりませんが、
古いバックアップから作り直すか、
りんごさんの回答のようにサンプルファイルをダウンロードしなおして作り直すかですね。
テーブルが残っているなら、テーブルはそれを使えばいいでしょう。

どちらにしても定期的にバックアップを取るのは必須です。

13
りんご 2021/10/29 (金) 23:17:27 c564b@0e907

時刻と件名を同時表示… VBAをどう書いたらよいでしょうか?

 当て推量ですが、「改行スペースを詰めて表示」に続けて、「件名と改行の間に時刻を加えて表示」
 当て推量ですが、「時刻順」に続けて、「日付と件名と時刻でレコードセットを開く」

クラスオブジェクトがすべて消えてしまいました。

 よくわからないけれど、もう一度サンプルダウンロードからやり直すのは?

初心者で大変ご迷惑をおかけいたします。部署で動いているため困っています。 

 運用開始するのであれば、個人使用で出来る範囲に留めておくほうが、無難でしょう。
 やった事がないのであれですが、部署で運用開始とか、ものすごい覚悟が要ると思います。

12
CROSS 2021/10/29 (金) 18:45:52 dd71f@d523b

ありがとうございます。
順番変わりました。ありとうございます。もうひとつの時刻と件名を同時表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?

あとですが、最初の記載が悪くリカバー時にクラスオブジェクトがすべて消えてしまいました。
こちらはどのようにリカバーすればよいでしょうか?古いバックアップはあります。

初心者で大変ご迷惑をおかけいたします。部署で動いているため困っています。

11

SetSchedule()内のSQLに ORDER BY 時刻を追加すればいいでしょう。

    Set rs = CurrentDb.OpenRecordset( _
        "SELECT 日付, 件名 FROM T_予定 WHERE " & _
        "日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "# ORDER BY 時刻", _
        dbOpenForwardOnly, dbReadOnly)
10
CROSS 2021/10/29 (金) 13:57:28 dd71f@d523b

お世話になっております。また、ご教示ください。
左のカレンダーの件名の表示ですが、時刻順に表示することは可能でしょうか?時刻と件名を表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?

1
りんご 2021/10/29 (金) 00:14:38 c564b@0e907

 当て推量ですが、下記の情報があれば回答が付き易くなるかもしれません。

以前までは出来ていたのですが、急にできなくなりました。

 1年前までは、5月までは、10月までは、先週までは、昨日までは、出来ていたのに、昨日今日から出来なくなった?Windows10ですか?急にできなくなる前に、Windowsアップデートがありましたか?

レポート作成時、ActiveX コントロールの挿入…

 新しいAccessファイルを適当に作って試したらどうなりますか?

7

下記で構文エラーが出なくなりました!

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でなんとかしたくて…。今日はぐっすり寝られそうです。ありがとうございました!

8
yokohama 2021/10/27 (水) 16:49:18

無事に表記させることができました。ありがとうございます。
また不明な箇所がありました時はよろしくお願いをいたします。

7
yokohama 2021/10/27 (水) 14:56:37

ご教授ありがとうございます。
早速このやり方をもとに実施してみます。

6

hatenaさん
追加でご教示いただきありがとうございます。
なるほど、勉強になります。

5

FROM句では必要ないですが、それ以外では[]で括る必要があります。

(SELECT [002].key, [002].ymd, FROM 002 WHERE [datatalbe].key = [002].key AND [datatalbe].ymd < [002].ymd)

括らないと、数値と区別がつかないので。FROM句には数値が来ることはないのでエラーにならないのだと思います。

4

hatenaさん
ご教示ありがとうございます。本日確認してみます。たしかに[]で括っていなかったですが、他のアクセスのデザインビューで作成したインナージョインのクエリをSQLビューで確認した時、ローカルのワークテーブルは[]で括ってなかったのでそれに合わせた記憶があります。どちらにしても一度確認してみます。あと、実際のSQLを貼り付けた方が…との由、ごもっともかと存じます。ご教示いただいた解決策でクリアにならない場合は、エラーのキャプチャも含めてそのまま貼付して解決策を仰ぎたいと思います。取り急ぎ返信まで。

3

りんごさん
ご教示ありがとうございます。本日確認してみます。取り急ぎ返信まで。

2
hatena 2021/10/27 (水) 00:44:14 修正

とりあえず、001 とか 002 のような数字が始まるテーブル名は、SQL内では [] で囲む必要があります。
[001][002]というように。

(※テーブル名やカラム名などは仮称)

とのことなので、実際は違うのかもしもませんが。
りんごさんも指摘してますが、全角とか全角空白もエラーの原因になることがありますので、
できれば実際のSQLをコピーしてそのまま貼り付けてもらった方が原因の特定がしやすいですけどね。

SQLビューに戻ると、シングルクォーテーションの箇所だけが黒のバックカラーで反転され、白抜き文字の表示となっています。

提示のSQLにはシングルクォーテーションはないですけど。

6
りんご 2021/10/26 (火) 23:26:25 c564b@0e907

 例えば、テーブル『2020年』ー テーブル『氏名マスタ』ー テーブル『2021年』のように紐付ける。
 紐付けたところを右クリックして、結合プロパティを選択。(マウスカーソルの照準合わせが難しければ、結合線を左クリック、『2020年』『氏名マスタ』『2021年』、からの右クリック。)
 結合プロパティが、◉「両方のテーブルの結合フィールドが同じ行だけ含める」となっているので、◉「テーブル『氏名マスタ』の全レコードと…」に変更する。
 こんな感じでどうでしょう?

5

テーブル名とかフィールド名が不明瞭なので、勝手に下記のようだと仮定して回答します。

氏名マスタ

氏名
A
B
C
D
 
2020年10月氏名マスタ
氏名氏名番号
A1
B2
C3
D4

 
2021年10月氏名マスタ

氏名氏名番号
A1
B2
D4
---
クエリのデザインビューで下記のように設定してください。

画像1


あるいは、SQLビューに下記のようにSQLを記述してください。

SELECT
 氏名マスタ.氏名,
 [2020年10月氏名マスタ].氏名番号,
 [2021年10月氏名マスタ].氏名番号
FROM
 (氏名マスタ LEFT JOIN 2020年10月氏名マスタ ON 氏名マスタ.氏名 = [2020年10月氏名マスタ].氏名)
 LEFT JOIN 2021年10月氏名マスタ ON 氏名マスタ.氏名 = [2021年10月氏名マスタ].氏名;

上記クエリの出力結果

氏名2020年10月氏名マスタ.氏名番号2021年10月氏名マスタ.氏名番号
A11
B22
C3
D44
1
りんご 2021/10/26 (火) 22:06:29 c564b@0e907

『 クエリ式 'EXISTS (SELECT 002.key, 002.ymd, FROM 002 WHERE [datatalbe].key = 002.key AND [datatalbe].ymd < 002.ymd)'の構文エラー 』のメッセージ

 当て推量ですが、アルファベットやカギ括弧が全角になっていませんか?エラーはWHERE EXISTS句ですが、念のため、SELECT INTO FROM句から確認してみて下さい。Wordにコピペすると見やすいかも。

4
yokohama 2021/10/26 (火) 17:11:40

何回もすいません 再再送致します これが質問内容です
具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・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の設定・特性上無理なのでしょうか・・・

3
yokohama 2021/10/26 (火) 17:08:50

具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・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の設定・特性上無理なのでしょうか・・・

2
yokohama 2021/10/26 (火) 17:00:35

具体的にやってみたことが下記です。
エクセルのシートに氏名マスタ・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の設定・特性上無理なのでしょうか・・・

1

2020年はABCDと表記、2021年はABD、そしてCは空白として時系列のように
エクセルにエクスポートさせたいのですが、うまくいきません・・・😓

エクセルにはどのようなレイアウトで出力したいのか、図示できませんか。

また、「うまくいきません」とのことですが、具体的にどのような手順を試して、どこでどのようにうまくいかなかったのでしょうか。

2

Outlookは参照設定されており、参照不可の表示になっているものもなかったのですが何が原因でしょうか。

当然、Access2003のパソコンで確認されてますよね。

まあ、Access2003はとっくの昔にサポートが切れてますので、何が起きても不思議ではないですが。

1
りんご 2021/10/14 (木) 12:26:57 c564b@0e907

参照設定を確認しましたが、Outlookは参照設定されており、参照不可の表示になっているものもなかったのですが何が原因でしょうか。

当て推量です。Access2019のパソコンでほにゃららを参照していたので、Access2003のパソコンでも参照しようとするが、見つからない。つまり、MSOUTL.OLB"version9.6をインストールするか、存在しない参照設定を外して参照不可にしないといけないのかも。

1

カーニングは文字間隔ですね。
文字の縦横の比率を変えるのは長体・平体ですね。
ワードならできますが、Accessでは無理です。

画像をつかうか、
エクセルやワードのワードアートで作成して、それを貼り付けることはできます。

3
ワッフル 2021/10/13 (水) 11:39:32 946f7@318ee

ご返信ありがとうございます。
りんごさんの教えてくださったように、
一度調べてみたいと思います。

2
りんご 2021/10/13 (水) 00:20:55 c564b@0e907

930GB中、462GB使用しております。…後は、ウイルス感染ですかね?いろいろ起きているエラー現象なんですが

 当て推量ですが、Windowsアップデート、セキュリティソフト関連、officeアップデート、そのためMicrosoft関連で、何かなかったかなぁと推理していく感じになるでしょう。使用率50%、ウィルス感染、Access不具合にフォーカスするよりは。
 取り敢えず、Windowsアップデートの履歴に、直近の更新履歴があるかないか。

2
さらだ 2021/10/12 (火) 18:18:46 58219@00743

なっていました!日にかえたところ無事解決できました
ありがとうございました

1

日付フィールドのグループ間隔が「日」以外になってませんか。

画像1

4
さらだ 2021/10/12 (火) 14:46:12 58219@00743

ありがとうございました
調整がんばってみます

1
ワッフル 2021/10/12 (火) 14:21:08 946f7@318ee

追記です。

親にAccessの話をしたら、
Accessは稼働できる容量が1万件くらいなので、
機能をつけすぎたのでは?という話も出ました。

完全に弱っているので、
御指南をよろしくお願い致します。
お世話になります。