質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1829閲覧

Access 添付ファイルをテーブルに登録すると二重登録になってしまいます。

one9999

総合スコア5

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/03/11 07:07

前提・実現したいこと

現在Accessでシステムを開発しています。(Access初心者です)

交渉履歴というフォームの登録ボタンを押下した際に
交渉履歴テーブルに新規レコードが作成されるような処理をしたいと考えております。

フォーム上にはテキストボックスのほかに添付ファイル型のものを置いていますが、
添付ファイルにExcelやWordなどを添付すると、0レコード目に添付ファイルが登録されてしまいます。

フォーム上にあるテキストボックスは正しくテーブルに登録されていますので、
2重登録になってることになります。

テキストボックスと同じレコードに添付ファイルも登録したいのですが、可能なのでしょうか?
(添付ファイルは形式は確定していません。txt,xlsx,pptx,logなど)

交渉履歴テーブルには添付ファイル型のカラムを設置しています。

これらのサイトを拝見しましたが、解決することが出来ませんでした。
https://docs.microsoft.com/ja-jp/office/vba/access/concepts/data-access-objects/work-with-attachments-in-dao

https://tsware.jp/tips/tips_490.htm

また、別フォームで交渉履歴テーブルに登録されているレコードを表示したいのですが、
添付ファイル型だけがうまく表示されません。
SQLで添付ファイルを取得することは可能なのでしょうか…?

ぜひ、ご教授いただければと思います。
よろしくお願いします。

試したこと

set RECで新規レコードを作成した際に、添付ファイルも登録する処理を
VBAに記入。(うまく行きませんでした)

補足情報(FW/ツールのバージョンなど)

Access 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/03/11 09:55

> 添付ファイルにExcelやWordなどを添付すると、0レコード目に添付ファイルが登録されてしまいます。 そのうまくいかない現状のVBAコードを提示してください。 > また、別フォームで交渉履歴テーブルに登録されているレコードを表示したいのですが、 添付ファイル型だけがうまく表示されません。 どのようにしてどのようにうまく表示できないのか具体的に説明してください。
one9999

2020/03/12 07:56 編集

hatena19様 現在書いているVBAは下記になります。 < Set REC = CurrentDb.OpenRecordset("交渉履歴", dbOpenDynaset, dbDenyRead, dbPessimistic) With REC .AddNew !交渉履歴ID =me.交渉履歴ID.Value !顧客番号 = me.顧客番号.Value !返済回 = me.返済回.Value !添付ファイル = me.添付ファイル.Value .Update .Close: Set REC = Nothing End With > また、添付ファイルの参照につきましては <sql = "select 交渉履歴ID,顧客番号,返済回,添付ファイル from 交渉履歴 where 交渉履歴ID =”& me.交渉履歴ID > という風に書いています。 Access初心者で至らない点が多く、申し訳ございませんがよろしくお願いします。
hatena19

2020/03/12 07:21

質問は編集できますのて、このコードを質問に追記してください。 また、コードはマークダウン書式のコードタグで囲んでください。 あるいはコード部分を選択して、ツールバーの <code> ボタンをクリックしてもOKです。
hatena19

2020/03/12 07:26

「交渉履歴というフォーム」のレコードソースプロパティは「交渉履歴」と設定されてますか。それとも空欄になってますか。
one9999

2020/03/12 07:58

コードを質問に追記に関しては、後ほどさせていただきます。 交渉履歴フォームのレコードソースは交渉履歴に設定しています。
guest

回答1

0

ベストアンサー

修正依頼のコメントより

交渉履歴フォームのレコードソースは交渉履歴に設定しています。

フォームのレコードソースにテーブルを設定しているということは、連結フォームということです。
連結フォーム上で入力すればVBAを使わなくても自動でレコードソースのテーブルに登録されます。
にもかかわらずVBAで別にレコード登録(Addnew)すれば、同じレコードが2重登録されます。

つまり、VBAは不必要ということです。

フォーム上で入力してから、レコード移動するか、フォームを閉じるか、あるいはShift+Enterを押下するか、レコードセレクタをクリックするかすれば、それだけテーブルに登録されます。

もし、コマンドボタンのクリックで明示的に保存したいなら、クリック時のコードは下記の1行のみでOKです。

vba

1DoCmd.RunCommand acCmdSaveRecord

また、別フォームで交渉履歴テーブルに登録されているレコードを表示したいのですが、

添付ファイル型だけがうまく表示されません。

添付ファイル型を含むテーブルまたはクエリをレコードソースとするフォームをウィザードで作成すれば表示されるはずです。
ただし、画像は最初に登録した画像が、それ以外のファイルはアイコンで表示されると思います。

複数登録した画像を表示したい場合は、下記のリンク先を参考にしてください。

添付ファイルの画像をフォームに格子状に並べる - hatena chips

投稿2020/03/12 11:18

編集2020/03/13 02:23
hatena19

総合スコア33692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問