• ベストアンサー

Access 添付ファイルコントロールの表示順

お世話になります。 Access2010 フォーム上に添付ファイルコントロールを設置しております。 複数のファイルを追加できるかと思いますが、ファイル名順で 先頭のものが、コントロール上に表示されるようです。 例えば、  111.xlsx  222.jpg  333.pdf が添付されてる場合、Excelのアイコンが表示されます。 本来なら222.jpgの画像を表示させたいところです。 上記の例なら、@222.jpgのようにファイル名を変更し、 順番を先頭にもっていくようにしなければならないので しょうか。 他に方法があればご教示頂けると幸いです。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

>>Me.画像1.AfterUpdate = "[イベント プロシージャ]" '’イベントプロシージャ関連付け >は、どういった処理になるのでしょうか。 更新することで、AfterUpdate イベントが発動するのを抑制するためのコードですが、Recordset を介して更新する場合は、イベントが発動しないようなので、不要でした。 >なお、一回一回追加すると都度ファイル名の頭に@が >追加されてしまうので、ファイル名の頭が@なら >何もしないようにする必要がありそうです。 あっ、そうでした。       If !FileName Like "*.jpg" Then のコードを下記に修正すればいいですね。       If !FileName Like [!@]*.jpg" Then

naoto0216
質問者

お礼

度々ありがとうございます! これで試してみたいと思います。 大変勉強になりました。

その他の回答 (5)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

テーブルへのレコードには一つだけ添付します。 そのためにはサブテーブルを作成して主テーブルとリレーションシップを定義します

naoto0216
質問者

お礼

この画像では、社員マスタのIDと添付テーブルの 社員IDが紐付いておりますが。。まったく関係無い のではないでしょうか。 今回の質問としましては、単純に画像ファイルを 順番的に先頭にもっていきたいだけなんです。 またサブテーブルを別に作って云々となると、話しが 変わってきます。

回答No.4

添付ファイルコントロールの更新後処理でいいのではないでしょうか。 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 は実際の添付ファイルコントロール名、画像は、連結しているフィールド名に変更してください。

naoto0216
質問者

お礼

最後の >Me.画像1.AfterUpdate = "[イベント プロシージャ]" '’イベントプロシージャ関連付け は、どういった処理になるのでしょうか。 この処理を除いてやってみたところ、jpgファイルの 頭に@が付いて保存されることを確認しました。 なお、一回一回追加すると都度ファイル名の頭に@が 追加されてしまうので、ファイル名の頭が@なら 何もしないようにする必要がありそうです。

回答No.3

単票フォームなら、レコード移動時のイベントプロシージャを下記のように記述すれば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

naoto0216
質問者

お礼

hatena1989様 いつもご回答ありがとうございます。 採用するとしたら後者になるかと思いますが、 >フォームでjpgファイルを追加したときのタイミングで実行するといいでしょう が分かりません。 添付ファイルコントロールでファイルを追加する際は、 クリップマークから追加することになるかと思いますが このVBAをどこで実行すればよいのでしょうか。 まだ試しておりませんが、レコードを保存するときって ことでよいのでしょうか。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

済みません。問題点を勘違いしていました。 >@222.jpgのようにファイル名を変更し、順番を先頭にもっていくようにしなければならないのでしょうか。 おっしゃる通り読み順に表示されますね 一つのレコードには少数のファイルを添付して、 表示の順はテーブル側に定義されてはいかがですか 例えば 回答No.1では社員名のフリガナ

naoto0216
質問者

お礼

chayamati様 ご回答ありがとうございます。 >表示の順はテーブル側に定義されてはいかがですか >例えば 回答No.1では社員名のフリガナ 社員名のフリガナの表示順と、添付ファイルに追加 したファイルの順番がどういう関係になるのか 理解できずにおります。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

テーブルのフィールドのデータ型に 1.添付ファイル 2.OLEオブジェクト型 3.ハイパーリンク型 の3種類があります。 ファイル名の入力はフィールドの右クリックから始めます

関連するQ&A