Microsoft Access 掲示板

views
4 フォロー
6,283 件中 2,521 から 2,560 までを表示しています。
9

デバッグでは、
daoRs![依頼者]: 齋藤        cmb依頼者.Value: 齋藤
とデータが代入されているのに表示されないのは、ありえない現象ですね。

テキストボックスをもとのコンボボックスに戻すと表示されますか。

あと、
  On Error GoTo ErrorHandler
をコメントアウトして実行した場合、エラーはでますか。

コマンドボタンを追加して、下記のように設定してクリックしたときはどうなりますか。

Private Sub CommandButton1_Click()
    Me.cmb依頼者.Value = "齋藤"
End Sub

8
りんご 2022/05/26 (木) 14:40:29 c564b@0e907

 横からすみません.

読込で値が表示されないのは、依頼者、依頼理由1、依頼理由2、依頼理由3です。

 その状況で、適当な値を手入力するとどうなりますか?もし、入力出来ないなら、プロパティシートのデータタブだったかと思いますが、編集可否を確認してみるとか。
 あとは問題があるようには見えないので、何か追加情報を出して誰かが運良く気づくのを期待するしかないかと思います。レイアウトビューのスクリーンショットやプロパティシート(データタブ)のスクリーンショットなど。

7
wazawaza 2022/05/26 (木) 12:54:28

読込で値が表示されないのは
依頼者、依頼理由1、依頼理由2、依頼理由3です。

今回読込んだレコードのロット枝、依頼理由2、依頼理由3はブランクになっています。

6

デバッグ結果

daoRs![依頼者]: 齋藤        cmb依頼者.Value: 齋藤
daoRs![W_No]: コ01980Z       cmbWNo.Value: コ01980Z
daoRs![品名]: ####品名#### txt品名.Value: ####品名####
daoRs![希望処置]: 検品のみ  cmb希望処置.Value: 検品のみ
daoRs![ロット番号]: A1      txtロット番号.Value: A1
daoRs![ロット枝]:           cmbロット枝.Value: 
daoRs![巻き長さ]: 8888      txt巻き長さ.Value: 8888
daoRs![依頼理由_1]: 表面不良一般          cmb依頼理由1.Value: 表面不良一般
daoRs![依頼理由_2]:         cmb依頼理由2.Value: 
daoRs![依頼理由_3]:         cmb依頼理由3.Value: 
daoRs![補足説明]: ダミー    txt補足説明.Value: ダミー

テキストボックスに値が表示されないというのは、
cmbロット枝, cmb依頼理由2, cmb依頼理由3
のことですか。
だとしたら、コードの問題ではなく、テーブルのフィールド自体に値がないのが原因ですね。

それ以外のテキストボックスで値が表示されないのですか。それはどのテキストボックスですか。

5
wazawaza 2022/05/26 (木) 12:07:39

イミディエイトウィンドウの結果は以下のようになりました。

daoRs![依頼者]: 齋藤        cmb依頼者.Value: 齋藤
daoRs![W_No]: コ01980Z       cmbWNo.Value: コ01980Z
daoRs![品名]: ####品名#### txt品名.Value: ####品名####
daoRs![希望処置]: 検品のみ  cmb希望処置.Value: 検品のみ
daoRs![ロット番号]: A1      txtロット番号.Value: A1
daoRs![ロット枝]:           cmbロット枝.Value: 
daoRs![巻き長さ]: 8888      txt巻き長さ.Value: 8888
daoRs![依頼理由_1]: 表面不良一般          cmb依頼理由1.Value: 表面不良一般
daoRs![依頼理由_2]:         cmb依頼理由2.Value: 
daoRs![依頼理由_3]:         cmb依頼理由3.Value: 
daoRs![補足説明]: ダミー    txt補足説明.Value: ダミー

前に「フォーム上で検索をかけた…」と書きましたが、
これは、テーブル「T_依頼」からクエリ「Q_依頼履歴」を作り、
レコードソース「Q_依頼履歴」からなるフォーム「F_依頼履歴一覧」の中に、
書籍に掲載されていた検索機能を盛り込んだものです。

書籍の作例は、検索フィールドが全てテキストボックスでしたが、
私の製作したものはコンボボックスが3つ出来てしまっています。
これをテキスト形式に変更すれば...といった素人考えから発展した醜態です。
過去データの読込にはコンボボックスの方が望み通りの結果になりますが、
一方の検索では、、、といった感じです。

ならばと、コンボボックスの値もヒットする方法も調べてみましたが
見つかりませんでした。

「F_依頼履歴一覧」の検索コード


Private Sub btn解除_Click()

    Dim db As dao.Database  'データベースへの参照を代入する変数を宣言
    Dim rs As dao.Recordset 'レコードセットへの参照を代入する変数を宣言
    Set db = CurrentDb()    'カレントデータベースを参照
    
    '「Q_依頼履歴」クエリを開きレコードセットを取得
    Set rs = db.OpenRecordset("Q_依頼履歴", dbOpenDynaset)
    
    'フォームのレコードセットを再設定
    Set Me.Recordset = rs
    Me.Requery                   'フォームのデータを更新
    Me.txt検索文字列.Value = ""  '検索文字列を空欄にする
    
End Sub

Private Sub btn検索_Click()

    Dim db As dao.Database  'データベースへの参照を代入する変数を宣言
    Dim rs As dao.Recordset 'レコードセットへの参照を代入する変数を宣言
    Set db = CurrentDb()    'カレントデータベースを参照
    
    '「Q_依頼履歴」クエリを開きレコードセットを取得
    Set rs = db.OpenRecordset("Q_依頼履歴", dbOpenDynaset)
    'コンボボックスで選択されたフィールドでテキストボックスに指定された文字を検索
    rs.Filter = Me.cmb検索.Value & " Like '*" & Me.txt検索文字列.Value & "*'"
    
    'レコードを再取得
    Set rs = rs.OpenRecordset
    
    'フォームのレコードセットを再設定
    Set Me.Recordset = rs
    
    Me.Requery  'フォームのデータを更新
    
End Sub

Private Sub btn並べ替え_Click()

   Dim db As dao.Database  'データベースへの参照を代入する変数を宣言
    Dim rs As dao.Recordset 'レコードセットへの参照を代入する変数を宣言
    Set db = CurrentDb()    'カレントデータベースを参照
    
    '「Q_依頼履歴」クエリを開きレコードセットを取得
    Set rs = db.OpenRecordset("Q_依頼履歴", dbOpenDynaset)
    
    '昇順・降順の確認
    If Me.frm昇降選択.Value = 1 Then
        rs.Sort = Me.cmb並べ替えフィールド.Value
    Else
        rs.Sort = Me.cmb並べ替えフィールド.Value & " DESC"
    End If
    
    Set rs = rs.OpenRecordset  'レコードセットを開く
    Set Me.Recordset = rs      'レコードセットを再設定
    
End Sub
3
りんご 2022/05/26 (木) 01:17:30 c564b@0e907

 素人考えです。過度な期待はしないで下さい。
取引先テーブル:🔑取引先の名前,…
仕入先テーブル:🔑仕入先の名前,…
得意先テーブル:🔑得意先の名前,…
etc:…
得意先と売上日と売上商品のテーブル:🔑得意先の名前,🔑売上日の日付,🔑売上商品の名前,金額,…
仕入先と仕入日と仕入商品のテーブル:🔑仕入先の名前,🔑仕入日の日付,🔑仕入商品の名前,金額,…
仕入先と仕入日と仕入商品と得意先と売上日のテーブル:
🔑仕入先の名前,🔑仕入日の日付,🔑仕入商品の名前,🔑得意先の名前,🔑売上日の日付,金額,…
仕入先と仕入日と仕入商品と得意先と売上日と売上商品のテーブル:
🔑仕入先の名前,🔑仕入日の日付,🔑仕入商品の名前,🔑得意先の名前,🔑売上日の日付,🔑売上商品の名前,金額,…
etc:…

4
wazawaza 2022/05/26 (木) 00:04:24

ありがとうございます!

<フォーム上の変更する前のコンボボックスの設定も同じですか。

<表示されていく値と実際に格納されている値は異なるということは理解していますか。

仰るとおり、テキストボックスに変更後、格納された値にズレが生じました。前述の列数と列幅は、値を
コンボボックス = テキストボックスにするために
変更した現在のコンボボックスの設定です。

<非連結フォームに表示したいのは、表示されている値か、格納されている値のどちらですか。

表示したいのは格納されている値です。

そもそも、何故テキストボックスに変更したかと
申しますと、フォーム上で検索をかけた際に
ルックアップがコンボボックスになっていた
フィールドだけ、検索できなかった為に、
テキストボックスにすれば解決できるかと、
安易に考えた末に至った結論です。

<デバック用コードを挿入して実行した結果も教えてください。

明日以降、試した結果をお知らせします。
よろしくお願いします。

3

それはテーブル「T_依頼」のフィールドのルックアップの設定ですよね。

フォーム上の変更する前のコンボボックスの設定も同じですか。

また、そのルックアップの設定だと、連結列の列幅が0に設定されているので、
そのテーブルをデータシートビューとして開いたとき、表示されていく値と実際に格納されている値は異なるということは理解していますか。

例えば、
フィールド[W_No]
表示コントロール:コンボボックス
値集合ソース:ORDER FILE
連結列:1
列数:8
列幅:0cm;0cm;0cm;0cm;0cm;0cm;0cm;3cm
なら、表示されている値は「ORDER FILE」の8列目の値、格納されている値は1列目の値になります。

格納されている値は、ルックアップの表示コントロールをテキストボックスに変更すると確認できます。

非連結フォームに表示したいのは、表示されている値か、格納されている値のどちらですか。

あと、デバック用コードを挿入して実行した結果も教えてください。

2
hiroton 2022/05/25 (水) 18:27:16 572d7@f966d >> 1

補足
売上テーブル側に仕入IDを設ける形でも同様のクエリは作成できますが、内製品で仕入が発生しない売上のことを考えると「売上のレコードに於いて仕入IDが存在しないのが正しい」状態が起こりえます。

未入力(未処理)なのか、空白で正解なのか、一見してわからないような構造を作ると管理の手間が増えます
フィールドは全てデータで埋まるような構造にするのが基本です


ということで、仕入テーブル側に売上IDフィールドを設ける方法を提示していますが、「仕入れたけど売れなかった」は実務上たいてい起こるので、提示例も最適解とは言えません
「Accessでちょこっとやるだけなら運用で対応するから別にいいかな」とか、
「実務上でそういうデータが省かれた最終データしか扱わない」とか
ホントにこれだけで済む場合もあります


もう少し深く作るなら「受注テーブル」を用意する(売上テーブルとは別に)となります

受注テーブル

受注ID売上ID仕入ID
111

↑ここに登録のない売上ID,仕入IDは未処理ということ
それらのデータはクエリで抽出できる(未処理データの管理画面や警告表示を作ったりできる)


さらに掘り下げると「1つの売上に対して複数の仕入れが発生する」場合も考えられます(逆もあり)。この場合は上記「受注テーブル」ではうまくいかなさそうなので、さらに手を加えることになります

1
hiroton 2022/05/25 (水) 17:50:31 572d7@f966d

「仕入テーブル」に売上IDフィールドを設けてクエリで結合して差額を計算します
売上IDは「売上テーブル」の主キーです(「売上テーブル」には主キーが必要です)

次のようなイメージになります(質問事項に不要な項目は省いています)

売上テーブル

売上ID売上額
11000
22000

仕入テーブル

仕入ID仕入額売上ID
15001
28002

受注クエリ

仕入ID仕入額売上ID売上額差額
150011000500
2800220001200
2
wazawaza 2022/05/25 (水) 17:24:46

ご回答ありがとうございます。

このフォームは非連結フォームです(「レコードソース」プロパティは空欄)

「T_依頼」のルックアップで、テキストボックスからコンボボックスに変更する前の設定は以下の通り。

フィールド[W_No]
表示コントロール:コンボボックス
値集合ソース:ORDER FILE
連結列:1
列数:8
列幅:0cm;0cm;0cm;0cm;0cm;0cm;0cm;3cm

フィールド[依頼者]
表示コントロール:コンボボックス
値集合ソース:T_着色作業者
連結列:1
列数:3
列幅:0cm;0cm;2cm

フィールド[依頼理由_1][依頼理由_2][依頼理由_3]
表示コントロール:コンボボックス
値集合ソース:T_理由
連結列:1
列数:2
列幅:0cm;4cm

1

以下の点を提示してください。

そのフォームは非連結フォーム(「レコードソース」プロパティが空欄)ですか。

テキストボックスに変換する前のコンボボックスの下記の設定。
 コントロールソース
 値集合ソース
 連結列
 列数
 列幅

現状のコードに下記のデバック用コードを挿入して実行した後の、イミディエイトウィンドウの結果

Private Sub loadForm()  '読込処理

    '※中略
    
    Me.txt依頼日.Value = daoRs![依頼日]  '抽出したレコードをテキストボックスへ
    Me.cmb依頼者.Value = daoRs![依頼者]
    Debug.Print "daoRs![依頼者]: " & daoRs![依頼者], "cmb依頼者.Value: " &   Me.cmb依頼者.Value  '※デバッグ用コード
    Me.cmbWNo.Value = daoRs![W_No]
    Debug.Print "daoRs![W_No]: " & daoRs![W_No], "cmbWNo.Value: " &   Me.cmbWNo.Value  '※デバッグ用コード

   '※ 以下同様に、テキストボックスに代入するコードの後にデバッグ用コードを追加
6
りんご 2022/05/25 (水) 07:39:38 c564b@0e907

元請と仕事と受注日とグループ名のテーブル:🔑元請の名前,🔑受注した仕事,🔑受注日,🔑グループの名前,金額,…
グループのテーブル:🔑グループの名前,…
グループと下請のテーブル:🔑グループの名前,🔑下請の名前,発注日,金額,…
etc:…

5
りんご 2022/05/25 (水) 07:37:43 c564b@0e907

 素人考えです。過度な期待はしないで下さい。
元請と仕事と受注日のテーブル:🔑元請の名前,🔑受注した仕事,🔑受注日,金額,グループの名前,…
グループのテーブル:🔑グループの名前,…
グループと下請のテーブル:🔑グループの名前,🔑下請の名前,発注日,金額,…
etc:…
もしくは

4
たいちゃ 2022/05/24 (火) 17:07:39 58219@933a5

元請けAからの複数の仕事を一つにまとめて金額を設定し複数の仕事をつくり、それを複数の下請けにだす、といった具合です
めちゃくちゃ複合的にまざったりはしません

2
りんご 2022/05/24 (火) 16:11:23 c564b@0e907

出来る方法があり、支障がないなら、それでいいんじゃないかと思います。
ググッてみましたら、こんな情報もありました。
横持ちデータを縦持ちデータに変換する - もう一度学ぶMS-Access

3
りんご 2022/05/24 (火) 15:57:11 c564b@0e907

 

元請けから2つの仕事が来た場合、双方の一部をまぜて下請けにだすことが多いので

 仕事を組み合わせ、金額を決めて下請けに出すという事でしょうか?それとも、こんな場合もあり得ますか?仕事Aと仕事Bがある。仕事Aのその1、仕事Aのその2、仕事Bのその1、仕事Bのその2、仕事Bのその3と分ける。仕事Aその1と仕事Bその1を下請会社あああ、仕事Aその2と仕事Bその2を下請会社いいい、仕事Bその3を下請会社ううう。
 

2
たいちゃ 2022/05/24 (火) 11:45:57 0dbf4@99905

なるほど。双方に必要なフィールドを作っておいて、使わない部分は空欄にしとけばいいと思ってましたがそういうものでもないのですね
視認性や管理の問題でわけたほうがいいということでしょうか?
フィールドをが多いとごちゃごちゃしますしね

1
hiroton 2022/05/24 (火) 08:37:04 47d6b@f966d

下請けデータも、仕事のもととなる元請けごとに集計して、

「仕事のもととなる元請け」この情報は「下請けデータ」には必要ですが、「元請けから受注した売上」には不要な(存在しない)情報ですよね?

データ構造の異なるデータは一つのテーブルにまとめるべきではありません。つまり別々のテーブルにしましょう

1
hiroton 2022/05/24 (火) 08:23:26 47d6b@f966d

わざわざテーブルを作成する必要はないですね

ユニオン クエリを使って複数のクエリを 1 つの結果に結合する

または、くだもののマスタテーブルがあるならDcount関数を使って、それを合計してもいいでしょう

2
wazawaza 2022/05/22 (日) 15:26:57

ありがとうございます!
解決しました!本当にありがとうございました!

1
りんご 2022/05/22 (日) 14:25:48 c564b@0e907

取り敢えず、下記に変更すると何か変わりますか?
"[補足説明] = '" & Me.txt補足説明.Value & "' " &

21
onigiri 2022/05/21 (土) 16:51:10 67467@8c17a

りんご様

できました!!!!
本当に本当にありがとうございます!!
レコードソースのクエリwhere条件とパラメーターは設定したままで、教えていただいたコードを修正したところできました。

画像1

本当に本当にありがとうございました!

20
りんご 2022/05/20 (金) 23:42:35 c564b@0e907

何度もすみません。試してみてください。

Private Sub Report_Open(Cancel As Integer)
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim cnt As Integer
Dim fld As DAO.Field
Dim rs As DAO.Recordset
 Set db = CurrentDb()
 Set qd = db.QueryDefs(Me.RecordSource)
 qd.Parameters(“[Forms]![フォームの名前]![絞り込みの名前]”)=[Forms]![フォームの名前]![絞り込みの名前]
 Set rs = qd.OpenRecordset
 For cnt = 2 To rs.Fields.Count - 1
  Set fld = rs.Fields(cnt)
  Me("Label" & cnt).Caption = fld.Name
  Me("Field" & cnt).ControlSource = fld.Name
  Me("Total" & cnt).ControlSource = "=Sum([" & fld.Name & "])"
 Next
End Sub

下記を追加。フォームの名前と絞り込みの名前は適宜変更して下さい。
Dim rs As DAO.Recordset
qd.Parameters(“[Forms]![フォームの名前]![絞り込みの名前]”)=[Forms]![フォームの名前]![絞り込みの名前]
Set rs = qd.OpenRecordset
下記を変更。
For cnt = 2 To rs.Fields.Count - 1
Set fld = rs.Fields(cnt)

19
onigiri 2022/05/20 (金) 17:06:45 15c48@d7080

りんご様

ありがとうございます。
Debug.Print Me.レジメン
で確認したところ、レジメンコードが表示されています。また、レポートをデザインビューにし、レコードソースのデータシートビューでもきちんと表示されています。

画像1

また、Tレジメンリスト2.番号を削除してもダメでした。
2のカルセドについても数値が入っているのを確認しています。レジメンコードを指定しないで、すべてのレポートを表示さると表示されるので。。

おっしゃる通り、
クロス集計の前に仕組みを入れないと無理だと思います。
だと思うのですが、どういう順番でデータを読み込んでレコードが作成されているのかですかね。

3
名前なし 2022/05/20 (金) 13:09:26 07313@0e907

 もし、サブフォームのテキストボックスにセットフォーカスする場合、注意点があるようです。グクってみるといいかも。
 そうでない場合、VBAコードを提示すると、回答がつきやすくなるかも。

2
名前なし 2022/05/20 (金) 12:50:24 e48ae@6eb0c

ありがとうございます。
早速やってみましたが、エラーになりました。フォーカスを移動させることができません。と出ます。
その他のテキストボックスにセットフォーカスするとエラーになりませんでしたので、フォーカスできないことが原因なのでしょうか?
となるとなぜフォーカスできないのか?となるんですが、その理由がわかりません…

なにかヒントあればお願いいたします。

1
りんご 2022/05/20 (金) 12:23:48 c564b@0e907

マクロ完了後にそのテキストボックスをマウスでクリックすると、代入された値が突如現れます。

正直よくわかりません。テキストボックスにセットフォーカスすると、代入値が見えるのであれば、代入するコードの前に、セットフォーカスするコードを入れてみたら?フォームAにセットフォーカスしてからテキストボックスにセットフォーカスする感じ。

18
りんご 2022/05/19 (木) 05:55:07 c564b@0e907

>> 17

あとは、添付画像の場合4以降を表示させないようにできれば。。

クロス集計の前に仕組みを入れないと無理だと思います。where条件パラメータの問題解決に戻りましょう。"レジメンコード=" & Me.レジメンを削除するのを忘れずに。

>> 16

where条件で直接コードを入れた結果は…希望の数値が出ました。

 [Forms]![F_レジメンワークシート]![レジメン]の参照値が直接コードと違う値になっていませんか?意図せずにという事もあります。念の為、もう1度確認してみて下さい。例えば、コマンドボタンを作って、メッセージボックスやデバッグプリントで[Forms]![F_レジメンワークシート]![レジメン]の中身を見てみると何かわかるかもしれません。パラメータ参照値が駄目なら直接コードも駄目になるはず。
 
>> 5

メインレポートSQL
TRANSFORM … SELECT … FROM …
GROUP BY T_レジメン名.[レジメンコード], Tレジメンリスト2.番号, T_Rpリスト.Rp名
ORDER BY T_レジメン名.[レジメンコード], Tレジメンリスト2.番号, Format([投与day],"@@")
PIVOT Format([投与day],"@@"

 データがどのように登録されているかわからないので、何とも言えませんが、Tレジメンリスト2.番号を削除してみるのも。クロス集計に必要不可欠、これがないと投与dayがおかしくなるという事であれば無理ですが。
 その他に、番号その1のカルセドと番号その2のカルセドがある場合、片方の投与dayと投与量が未入力になっていないか見直してみるのも。

 試行錯誤の結果が期待通りか否かは、クロス集計クエリを直接開いたり、選択クエリに戻して確認すると良いと思います。

 

4
りんご 2022/05/19 (木) 00:40:12 c564b@0e907

>> 3

…種別(1.家賃 2.電気料金などリストから選択)…このような表になっていました。
これを別シートで、エリア、支店ごとに売り上げと支払いの対比表を作っていました。

 水道光熱費並びに家賃を支払月毎や使用月毎に分類し、売上と対比する、という事に意味があるのかよくわかりませんが、頑張って下さい。
 慣れないうちは、名称そのものに主キーを設定し敢えてIDを使わない、とした方が分かり易いと思います。

3
みんみん 2022/05/17 (火) 11:10:03 e1017@76e7c

ありがとうございます。今まではエクセルで支払い月ごとに作っていたものが、今後は経理上は支払い月ごと、営業管理として該当月(使用月)ごとに分類する必要が出てきたため、Accessを…と思いました。
時々過去に作ったものを加工したりする程度で、一から作る方法がわからなかったのですが、とりあえず入力用のテーブルと、ルックアップでリストから選択できるフォームを作り、入力していく事が出来ました。
(そのデータをどのように活用していくかはゆっくり勉強しながら進めていきます。)
データを入れるテーブルをシンプルにしなければ、と考えて混乱していました。
どうもありがとうございました。

17

りんご様

11で作成したフォームのトグルに以下を設定
 DoCmd.OpenReport "R_レジメンワークシート", acViewPreview, , "レジメンコード=" & Me.レジメン

これでひとまず表示させることができました。
レコードソースのクエリwhere条件とパラメータは削除してます。
あとは、添付画像の場合4以降を表示させないようにできれば。。

このときのDebug.Print fld.Nameの結果は





・・・とすべての数値が出ていました。

画像1

16

りんご様

ありがとうございます。
上段のDebug.Print Me.RecordSource と Debug.Print qd.Nameではレコードソースとなったクエリが表示されましたが。
下段のDebug.Print fld.Nameではなにも表示されませんでした。

レコードソースのクエリwhere条件で直接コードを入れた結果は






15
といった希望の数値が出ました。

3

基本的にこの回答の通りでいいと思いますが、

 取り敢えず、同じ構造のテーブルを用意して振り分けずにそのままインポート

ここは、インポートでなくリンクでいいかと思います。
そうすればテーブルは不要ですし、インポート前にテーブルからデータ削除とかの操作も不要になります。

2
りんご 2022/05/17 (火) 05:35:12 c564b@0e907

>> 1
 売上なのか、受注したのか、出荷したのか?伝票テーブルに締め日と請求日を持たせるべきか?という点が気になります。

1
りんご 2022/05/17 (火) 05:22:09 c564b@0e907

 セオリーはわかりませんが、こんな感じで出来るのかもしれません。
 取り敢えず、同じ構造のテーブルを用意して振り分けずにそのままインポート
テーブル1: 日付,取引先,商品ID,個数,締め日,請求日
 テーブル1の選択クエリを作る。伝票テーブルに関係するフィールドを選ぶ。
クエリ1:日付,取引先,締め日,請求日
 集計ボタンを押してグループ化したら、追加ボタンを押して追加クエリに変更し、実行ボタンを押して伝票テーブルに追加。
伝票テーブル:🔑伝票ID,日付,取引先,締め日,請求日
 クエリ2を作る。テーブルの追加ボタンを押して伝票テーブルとテーブル1を表示。共通するフィールドを結合。詳細テーブルに関係するフィールドを選ぶ。
クエリ2:伝票ID,商品ID,個数
 追加ボタンを押して追加クエリに変更し、実行ボタンを押して詳細テーブルに追加。
詳細テーブル:🔑詳細ID,伝票ID,商品ID,個数

2
hiroton 2022/05/16 (月) 11:08:44 22735@f966d

EXCELでの運用の問題点はリスト化されていますか?
ACCESS(データベース化)で問題点が解決される見込みは立っていますか?

数年後、そのままACCESSを使っていける環境(特に人員の入れ替え・教育など)ですか?

Excelに戻るべきか悩んでいます。

という段階であればACCESSに移行してもメリットを感じないと思います(データベース化自体にはメリットはあります)


「支払い一覧」というテーブルはどのように作ればいいのか

簡単なのは「ID名称も登録する」です
入力フォームではコンボボックスで、登録(連結列)をIDにして表示は名称にします。さらに、コンボボックスの更新後処理イベントで名称を登録するようにします

5
nokonoko 2022/05/16 (月) 10:50:29 3c8e6@54883

りんご様

今までご回答ありがとうございました。
とりあえず、本質問は終了させていただきます。

15
りんご 2022/05/16 (月) 10:49:18 c564b@0e907 >> 13

ちょっとよくわからないです。念の為、Debug.Printの結果をイミディエイトウィンドウで確認してみるとか。

Set qd = db.QueryDefs(Me.RecordSource)
 この後に、Debug.Print Me.RecordSourceを追加。Debug.Print qd.Nameを追加。

 Set fld = qd.Fields(cnt)
 この後に、Debug.Print fld.Name を追加。

4
nokonoko 2022/05/16 (月) 10:48:49 修正 3c8e6@54883

ご返答が遅くなりまして、失礼いたしました。
ご回答いただいた内容を基に対処を行おうと、本日ファイルを開いたところ、
今まで発生したエラーが(何もしていないのに)発生しなくなりました。
私の端末以外からも同様でした。
よって、何らかの365関連のトラブルにかかっていたのかもしれません。

そのような、状況ではありますが、いただいたコードを試しましたので
ご確認願います。

>下記コードを追加すると、どんなメッセージが出ますか?
1
False
False
です。

>F27 台帳を開いた直後や何か操作した直後に、コマンドボタンを押すと、どんなメッセージが出ますか?
どのような作業をした場合も、同様の結果でした。