- ベストアンサー
Access 添付ファイルコントロールの表示順
お世話になります。 Access2010 フォーム上に添付ファイルコントロールを設置しております。 複数のファイルを追加できるかと思いますが、ファイル名順で 先頭のものが、コントロール上に表示されるようです。 例えば、 111.xlsx 222.jpg 333.pdf が添付されてる場合、Excelのアイコンが表示されます。 本来なら222.jpgの画像を表示させたいところです。 上記の例なら、@222.jpgのようにファイル名を変更し、 順番を先頭にもっていくようにしなければならないので しょうか。 他に方法があればご教示頂けると幸いです。 宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>>Me.画像1.AfterUpdate = "[イベント プロシージャ]" '’イベントプロシージャ関連付け >は、どういった処理になるのでしょうか。 更新することで、AfterUpdate イベントが発動するのを抑制するためのコードですが、Recordset を介して更新する場合は、イベントが発動しないようなので、不要でした。 >なお、一回一回追加すると都度ファイル名の頭に@が >追加されてしまうので、ファイル名の頭が@なら >何もしないようにする必要がありそうです。 あっ、そうでした。 If !FileName Like "*.jpg" Then のコードを下記に修正すればいいですね。 If !FileName Like [!@]*.jpg" Then
その他の回答 (5)
- chayamati
- ベストアンサー率41% (260/624)
- hatena1989
- ベストアンサー率87% (378/433)
添付ファイルコントロールの更新後処理でいいのではないでしょうか。 Private Sub 画像1_AfterUpdate() Me.画像1.AfterUpdate = "" ’更新後イベントが連鎖発動しないよう Me.Recordset.Edit With Me.Recordset!画像.Value Do Until .EOF If !FileName Like "*.jpg" Then .Edit !FileName = "@" & !FileName .Update End If .MoveNext Loop End With Me.Recordset.Update Me.画像1.AfterUpdate = "[イベント プロシージャ]" '’イベントプロシージャ関連付け End Sub 画像1 は実際の添付ファイルコントロール名、画像は、連結しているフィールド名に変更してください。
お礼
最後の >Me.画像1.AfterUpdate = "[イベント プロシージャ]" '’イベントプロシージャ関連付け は、どういった処理になるのでしょうか。 この処理を除いてやってみたところ、jpgファイルの 頭に@が付いて保存されることを確認しました。 なお、一回一回追加すると都度ファイル名の頭に@が 追加されてしまうので、ファイル名の頭が@なら 何もしないようにする必要がありそうです。
- hatena1989
- ベストアンサー率87% (378/433)
単票フォームなら、レコード移動時のイベントプロシージャを下記のように記述すればOKです。 Private Sub Form_Current() Dim i As Long With Me.画像1 .CurrentAttachment = 0 For i = 0 To .AttachmentCount - 1 If .FileName(i) Like "*.jpg" Then .CurrentAttachment = i Exit For End If Next End With End Sub 「画像1」は実際の添付ファイルコントロールの名前にしてください。 レコード移動したときに、添付ファイルのFileNameを調べて、 .jpg をCurrentAttachment(表示するファイル)にしています。 帳票フォームだとレコード移動しないと変更されないのでうまくいかないので、 ファイル名を変更するしかなさそうです。 ファイル名を変更する場合のコード例 Me.Recordset.Edit With Me.Recordset!画像.Value Do Until .EOF If !FileName Like "*.jpg" Then .Edit !FileName = "@" & !FileName .Update End If .MoveNext Loop End With Me.Recordset.Update 「画像」はレコードソースの添付ファイル型のフィールド名に変更してください。 フォームでjpgファイルを追加したときのタイミングで実行するといいでしょう。 jpgファイルのファイル名の先頭に @ を追加しています。 他の画像ファイルを添付する可能性があるなら、Or 条件で追加してください。 例えば pngファイルも対象なら、 If !FileName Like "*.jpg" Or !FileName Like "*.png" Then
お礼
hatena1989様 いつもご回答ありがとうございます。 採用するとしたら後者になるかと思いますが、 >フォームでjpgファイルを追加したときのタイミングで実行するといいでしょう が分かりません。 添付ファイルコントロールでファイルを追加する際は、 クリップマークから追加することになるかと思いますが このVBAをどこで実行すればよいのでしょうか。 まだ試しておりませんが、レコードを保存するときって ことでよいのでしょうか。
- chayamati
- ベストアンサー率41% (260/624)
済みません。問題点を勘違いしていました。 >@222.jpgのようにファイル名を変更し、順番を先頭にもっていくようにしなければならないのでしょうか。 おっしゃる通り読み順に表示されますね 一つのレコードには少数のファイルを添付して、 表示の順はテーブル側に定義されてはいかがですか 例えば 回答No.1では社員名のフリガナ
お礼
chayamati様 ご回答ありがとうございます。 >表示の順はテーブル側に定義されてはいかがですか >例えば 回答No.1では社員名のフリガナ 社員名のフリガナの表示順と、添付ファイルに追加 したファイルの順番がどういう関係になるのか 理解できずにおります。
- chayamati
- ベストアンサー率41% (260/624)
お礼
度々ありがとうございます! これで試してみたいと思います。 大変勉強になりました。