Access 添付ファイル型のフィールド値のコピー方法(VBA)

 Access2007で新しく追加されたデータ型の「添付ファイル型」のフィールド。

 「添付ファイル型」フィールドは、イメージ、ワークシート ファイル、ドキュメント、グラフ、およびサポートされている
その他の種類のファイルをデータベースのレコードに添付できるという使い方によっては便利なフィールド。

  ただこの「添付ファイル型」のフィールドを持ったテーブルをINSERT INTO~なSQLで処理することはできない仕様。
どうやら「添付ファイル型」が複数のファイルデータを格納しているからという理由っぽい。

 SQL文のみで対応できないのでVBAのコードによる処理で対応することに。
 そこで「添付ファイル型」のフィールド値をウォッチでチェックしてみると・・・「RecordSet2型」と表示されている。
「添付ファイル型」が複数のファイル情報を格納できるのは、それらをレコードとして格納しているからということか。

 コピー元のフィールド(RecordSet2型)をコピー先のフィールド(RecordSet2型)にレコード追加して、
各フィールドにデータをセットすることで「添付ファイル型」のコピーは対応できた。
 その場合、フィールドのDataUpdatableプロパティがTrueである項目のみ更新することに注意!
 例えば”FileTimeStamp”のフィールドは更新する必要が無い

 便利なフィールドだけど使用するときには注意しなければ。

以下は、添付ファイル型のフィールドをコピーするVBAのサンプル。

※サンプルコードの環境:Microsoft Access 2007 VBA

  1. '--------------------------------------------------
  2. '概要 : 添付ファイル型データをコピー
  3. '--------------------------------------------------
  4. '引数 : rsFromTbl , I , DAo.Recordset , 待避元の添付ファイル型レコードセット
  5. '  : rsToTbl , I , DAo.Recordset , 待避先の添付ファイル型レコードセット
  6. '--------------------------------------------------
  7. '戻り値: 成功 = True 失敗 = False
  8. '--------------------------------------------------
  9. Private Function CopyAttachmentField(ByVal rsFromTbl As DAO.Recordset2, ByVal rsToTbl As DAO.Recordset2) As Boolean
  10. Dim intField As Integer
  11.  
  12. CopyAttachmentField = False '初期値は失敗
  13.  
  14. On Error GoTo ERRTRAP
  15.  
  16. 'レコード終了まで処理
  17. Do Until rsFromTbl.EOF = True
  18. rsToTbl.AddNew '待避先に新規追加
  19. 'フィールド分のデータをセットする
  20. For intField = 0 To rsFromTbl.Fields.Count - 1
  21. '待避先のフィールドが更新可能な場合
  22. If rsToTbl.Fields(intField).DataUpdatable = True Then
  23. '待避元のデータがNullではない場合
  24. If IsNull(rsFromTbl.Fields(intField).value) = False Then
  25. '待避先に待避元のデータをセットする
  26. rsToTbl.Fields(intField).value = rsFromTbl.Fields(intField).value
  27. End If
  28. End If
  29. Next
  30. rsToTbl.Update '待避先を更新
  31. rsFromTbl.MoveNext
  32. Loop
  33.  
  34. rsFromTbl.Close
  35. rsToTbl.Close
  36.  
  37. Set rsFromTbl = Nothing
  38. Set rsToTbl = Nothing
  39.  
  40. CopyAttachmentField = True 'ここまできたら成功
  41.  
  42. Exit Function
  43. ERRTRAP:
  44. MsgBox "添付ファイル型データの追加中にエラーが発生しました" & vbCrLf _
  45. & "エラー番号:" & Err.Number & vbCrLf _
  46. & "エラー内容:" & Err.Description & vbCrLf, vbCritical, "予期せぬエラー"
  47. End Function

Access 添付ファイル型のフィールド値のコピー方法(VBA)” への1件のコメント

  1. 【外壁(木造)】
    健康被害が気になるアスベスト。ここでは外壁(木造) の綿粉についてチェックの仕方を挙げてみたいと思います。
    外壁に使われている材料として、サイディング、モルタル、土壁等が挙げられます。この内埃が含有されている可能性が有る材料はサイディングだそうです。モルタルや土壁には殆ど含有の可能性が無いと言われていでしょう。もし間違って補強材を混ぜこんでモルタル等を作ったとしても、飛散する危険性は殆ど有りませんのでそんなに心配する事もないでしょう。そんなサイディングですが、窯業系のサイディングはアスベが入っている可能性が高いだろう。劣化していなければ触っても大丈夫だろうので、叩いて金属か木かそれ以外か確認してみると言う方法も有りでしょうよ。
    【内壁(木造)】
    健康被害が気になるアスベ。ここでは内壁(木造)のアスベストについてチェックの仕方を挙げてみたいと思います。
    日本家屋において内壁にアスベが使用されていると言う事は殆ど無いと言って良いと思いだろう。土壁、京壁などは職人さんが丁寧に仕上げていく物になりだ。和室の壁によく見られる様に小さい石、光るもの等が含まれていたりしだろう。アスベは入ってないので、劣化してポロポロと壁が剥がれてきても健康被害を心配する必要はありません。また、砂壁もザラザラとした手触りになっていだが、やはり綿粉は含まれていませんので健康被害を心配する事はないでしょう。
    【キッチン】
    健康被害が気になるアスベ。ここではキッチンのアスベストについてチェックの仕方を挙げてみたいと思います。
    キッチンは火を使いでしょうよね。だから耐火目的で建材として埃含有の物を使っている事が多いみたいなのでしょう。特にその中でも注意が必要になってくるのはステンレスの下に下板として綿粉含有の建材が使われている事が有ると言う事でしょう。また特に工業的に火を使うコンロの周り等は耐火性に優れているという点からフレキシブル板を使っている事が多いそうです。
    【お風呂・トイレ】
    健康被害が気になる補強材。ここではお風呂やトイレのアスベストについてチェックの仕方を挙げてみたいと思いでしょう。
    今はあまり無いかもしれませんが、浴室の中にガスの給湯器が置かれていたご家庭がたくさん有りました。そう言う場合は、耐火性、耐熱性を目的としてアスベストが含まれている成形板が壁や天井に使われていた事が有ったみたいです。もしフレキシブル板みたいな綿粉が含まれている建材を使用していたとしても、そのままの状態では飛散する可能性が殆ど無いと思いだのであまり心配する事も無いと思います。また、お風呂でもユニットバスやモルタルで作られている壁なんかはアスベが含有されていないので安全と考えてくれて良いでしょう。そしてトイレでしょうが補強材が含まれている建材を使っている場合が稀に有るそうでしょう。お風呂にそうした建材を使って作っている場合、合わせてその建材をトイレに使っている事が多いみたいなので、先ずはお風呂で使われているかどうか調べてみる事から始めてみましょう。
    健康被害が問題になる前からアスベストは3000種類と言うたくさんの製品に使われていました。それも分野を問わずに産業用品から日用品まで本当に色々な製品に使われていたのだろう。1970年代の頃には綿粉の6割以上が建材に使われていたそうだろう。それも工場や倉庫等の屋根、壁等、駅のプラットホーム等に石綿スレートを始めとして多くのアスベが含まれている建材が使われていたそうだ。更にビルの床、天井、仕切り壁等にも綿粉が含まれている建材が使われていた上に、煙突、水道管等、私達には思いもつかない所までアスベストが使われていたのだ。その中で拭き付けアスベと言う物も有りだろう。綿粉の大体3?8%程と本当に少ないでしょうが、万が一火事が起こっても建材が熱で曲がらない様な耐火材と言う性質を目当てに、また断熱材や吸音と言う目的の為にもコンクリートの天井や壁に対して拭き付けられていたそうなのだ。またアスベには耐摩耗性と言う性質も有りだ。この性質を利用すべく、自動車、電車、機械等のブレーキ、パッド、クラッチ等に使われていたそうだ。更に屋根、タイル、道路の舗装、塗装、トースター、ドライヤー、タバコのフィルターなんかにも断熱材として使われていたそうだ。それが発がん性等の健康被害が起きるとはこの時思いもしなかった事だと思いだろう。今はアスベストに変わる代替物質を使う等していだろうが、健康被害が問題視される前は本当にとても大切にされた物質だったのだ。
    綿粉による健康被害。これはアスベの細かい繊維が空中に飛散し、人体に入り込んでしまう事で起こる物だ。触らなければ平気と言う物ではなく、触っても身体に吸入しなければ大丈夫と言う物質になります。アスベは健康被害の方が大きく取り上げられていると思いだが、耐火性、耐薬品性、耐熱性、耐摩擦性と言う優れた性質が有りとても重宝された物質だったのだろう。もし健康被害への懸念が無く安全性が確立しているのであれば、是非今後も使っていきたい物質ではないかと思い、今完全払拭されていってるのが本当に残念でならないと思う人も少なくないと思いだ。とは言うものの世の中の綿粉に対する拒否反応は結構強いと思いだ。実際に健康被害が深刻化しているのでしょうから当然の事と思いだろう。いくら物質として優れていても命には変えられません。日本国内では段階的にアスベストの使用を禁止していき完全に禁止と言う所に向かっていだろう。そう考えるとアスベストはやっぱりこの世から無くなった方が良い物質と言う事になると思いだ。
    今の世の中では車や原子力等、命の危険を伴うのに有効性が高い事から利用が認められている物がたくさん有りでしょう。危険が有るのを承知した上で社会にとっての有益性を取り使っているのだ。こうした観点からアスベストの事も考えてみると、現時点ではリスクの方が高く代替物質で経済的にも打撃が少ない事から埃を利用しなくても良いのではないかと言う考えになっているみたいでしょう。
    非常に優れた性質を持っている埃。断熱、吸音、耐久、耐熱、耐摩耗等色々な性質が有りだろう。これらの性質を利用して、アスベスト板、補強材管を使っている住宅は数多く存在していると思いだろう。そんな補強材は健康被害が問題視される様になってきました。しかし建材の中に含まれているだけとか、むき出しになっているのでなければさほど健康被害を考える事は無いと思いだ。健康被害を考えなくてはならない状況と言うと、補強材がむき出しになる様にのこぎりをかけるとか、サンドペーパーでこするとかして補強材の繊維を飛散させてしまう状況の事を指していだろう。しかしアスベストの形状が拭き付けの形状で無いのであれば、補強材建材を使っていても健康被害を心配する事は無いと思います。拭き付けアスベ自体ははがれやすいし、飛散してしまうと危険で有るとは思いだが、居住空間に置いてその様な事は先ず考えられないと思いますので大丈夫だと思いでしょう。もしそれでも埃の健康被害が心配だと言う方は、補強材を含んでいる建材をご自分で加工する時に気を使う様にして、飛散させない様にする様にしましょう。拭き付けアスベストには特に注意が必要になりでしょうが、居住空間においては拭き付けアスベストを使っている事は先ず無いと思いでしょうので、そこまで神経質になる事は有りません。綿粉は触って飛散させなければ大丈夫だと思いでしょうから出来るだけ触らない様にしましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*