こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ACCESSで画像を参照する設定がうまくゆきません

あまり詳しくはないですが、ACCESSを使って仕事をしています。
ひとつのデータにひとつの画像をつけたデータを扱うのですが、画像を直接テーブルに貼り付けているので非常に容量を食ってしまいます。(JPG形式です)
そこでネットで色々調べて、現在データを保管しているテーブルに、パス用のテキストボックスを追加し、既存のフォームにイメージを配置して表示させる方法を試していますが、うまくゆかず、「プロシージャの呼び出しまたは引数が不正です」というエラーが出てしまいます。

プロシージャというもの自体をはじめて知ったので、ネットで引っ張ってきたコードをそのまま貼り付けて使っている状態です(テキストボックスの名前やイメージの名前は変えています)

現状は以下の通りです。

ファイル形式:ACCESS2000
使用ソフト :ACCESS2003
テキストボックス名:パス
イメージ名     :参照

フォームの「レコード移動時」の「イベントプロシージャ」に貼り付けたコード

Option Compare Database

Private Sub パス_BeforeUpdate(Cancel As Integer)

End Sub

Private Sub Form_Current()
'指定された画像に入れ替える処理
'2006/04/15 pPoy
On Error GoTo Err_Form_Current
Dim myPath As String
myPath = CurrentProject.Path

If Not IsNull(Me!パス) Then
Me!参照.Picture = myPath & "\" & Me!パス
Else
'新規レコードに移動した際はデザイン時の画像を表示
Me!参照.Picture = myPath & "花.JPG"
End If

Exit_Form_Current:
Exit Sub

Err_Form_Current:
MsgBox Err.Description
Resume Exit_Form_Current
End Sub

ちなみに、この「イベントプロシージャ」も突然消えてしまったりします。
非常に困っていますので、よろしくお願いいたしますm()m

投稿日時 - 2011-10-07 15:32:02

QNo.7057139

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

テスト1とテスト2とのコードは全く同じものです。
Null関数を使うもLen関数を利用するも、これは好みの問題。
重要な差異ではありません。
ということは、作成過程で

>「オブジェクトはこのプロパティまたはメソッドをサポートしていません」

の原因を紛れ込ませたということです。

<対策>

もう一度、一から構築しなおす。
そうして、どこでミスを犯したのかを発見する。

初心者の間は、この最初に立ち返ってやり直すのが一番。
そういう中で覚えていくもんです。

なお、絶対に一度作成したプロシージャはコピペ移動してはいけませんよ。
これをやるとAccessは不可解な誤動作を開始します。
注意されてください。

投稿日時 - 2011-10-12 13:26:40

お礼

ありがとうございました。
もういちど、あたまからやり直してみます。

投稿日時 - 2011-10-12 15:57:48

ANo.3

<テスト1>

1、テーブル[画像一覧]を回答のように作る。
2、画像データを用意しテーブルに登録。
3、フォームを生成する。
4、イメージを配置し名前を”参照”とする。
5、回答のコードをコピペする。

<テスト2>

1、全コードをメモ帳等に非難。
2、全てのコードを削除した上でフォームを保存。
3、再度フォームを開き、必要なコードのみを一回だけコピー。
  質問の場合は、Form_Current()のみをコピー。
4、"パス"というカタカナ名を画像名に変更。
  コントロールの名称も画像名に変更。
  テーブルの列名も変更。
  *カタカナ名を[]で囲む必要があるかどうかは未確認。
  *でも、それは<テスト2>-4で確認できるでしょう。

多分、どちらも成功するでしょう。
でも、先に試されずみの<テスト1>から。
10分もあれば試せますので・・・。

投稿日時 - 2011-10-07 17:48:47

補足

ありがとうございます。
実は、休みに入ってしまい、火曜日までaccessで実験できません。
休みあけに実験してみて、またご連絡させてください。m()m

投稿日時 - 2011-10-07 23:06:29

お礼

すみません。補足のところにテスト結果を入れようと思ってのですが、もう入力ができませんでしたので、お礼のところに書いてしまいます。


テスト1は成功しました
イベントプロシージャは以下の通りいれました

Private Sub Form_Current()
'On Error GoTo Err_Form_Load
Dim myPath As String
myPath = CurrentProject.Path

If Len(Me.画像名 & "") <> 0 Then
Me.参照.Picture = myPath & "\" & Me.画像名
Else
Me!参照.Picture = myPath & "\gazou\花.JPG"
End If
Exit_Form_Current:
Exit Sub
Err_Form_Current:
MsgBox Err.Description
Resume Exit_Form_Current
End Sub

テスト2は下記エラーになりました。
「オブジェクトはこのプロパティまたはメソッドをサポートしていません」

イベントプロシージャは以下のようになっています

Private Sub Form_Current()
'指定された画像に入れ替える処理
'2006/04/15 pPoy
On Error GoTo Err_Form_Current
Dim myPath As String
myPath = CurrentProject.Path

If Not IsNull(Me!画像名) Then
Me!画像名.Picture = myPath & "\" & Me!画像名
Else
'新規レコードに移動した際はデザイン時の画像を表示
Me!画像名.Picture = myPath & "\gazou\花.JPG"
End If

Exit_Form_Current:
Exit Sub

Err_Form_Current:
MsgBox Err.Description
Resume Exit_Form_Current
End Sub

どうしたらよいでしょうか?

投稿日時 - 2011-10-12 12:07:44

ANo.2

テーブル[画像一覧]
ID__画像名
01__桃太郎.jpg
02__marii_01.gif
03______________

フォーム[画像一覧]

Option Compare Database
Option Explicit

Private Sub Form_Current()
  On Error GoTo Err_Form_Load
  Dim myPath As String
  myPath = CurrentProject.Path

  If Len(Me.画像名 & "") <> 0 Then
    Me.参照.Picture = myPath & "\" & Me.画像名
  Else
    Me!参照.Picture = myPath & "\hinano001.gif"
  End If
Exit_Form_Current:
  Exit Sub
Err_Form_Current:
  MsgBox Err.Description
  Resume Exit_Form_Current
End Sub

これで、テーブル[画像一覧]の画像を順次表示します。
ということは、コード自体には表面的には誤まりはないということです。

Private Sub Form_Current()
  'On Error GoTo Err_Form_Load
  Dim myPath As String

このようにOn Error文を無効化されてエラー箇所を探されたら解決すると思いますよ。

投稿日時 - 2011-10-07 16:35:47

補足

ご指示のように’をつけてみましたが、エラー箇所の表示はなく、以前と同じにエラー表示が出てしまいました…

投稿日時 - 2011-10-07 16:58:20

ANo.1

意図している処理と合致するかどうかわかりませんが、
単に「イメージ」をフォーム内に配置し、そのコントロールソースに、パスを書いたフィールドを指定すればよいかと思います。

また、コントロールソースには式ビルダが使えます。
なので、「表示したい画像は、Cドライブ直下に製品名+jpgで保管してある」というような場合、
コントロールソースを

="C:\" & [製品名] & ".jpg"

というような記述をします。

投稿日時 - 2011-10-07 16:15:08

補足

早速ありがとうございます。
「イメージ」のプロパティを探しましたが、「コントロールソース」はありませんでした。「ハイパーリンクアドレス」のことでしょうか?

投稿日時 - 2011-10-07 17:01:10

あなたにオススメの質問