• 締切済み

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

みんなの回答

回答No.4

テスト1とテスト2とのコードは全く同じものです。 Null関数を使うもLen関数を利用するも、これは好みの問題。 重要な差異ではありません。 ということは、作成過程で >「オブジェクトはこのプロパティまたはメソッドをサポートしていません」 の原因を紛れ込ませたということです。 <対策> もう一度、一から構築しなおす。 そうして、どこでミスを犯したのかを発見する。 初心者の間は、この最初に立ち返ってやり直すのが一番。 そういう中で覚えていくもんです。 なお、絶対に一度作成したプロシージャはコピペ移動してはいけませんよ。 これをやるとAccessは不可解な誤動作を開始します。 注意されてください。

setti
質問者

お礼

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

回答No.3

<テスト1> 1、テーブル[画像一覧]を回答のように作る。 2、画像データを用意しテーブルに登録。 3、フォームを生成する。 4、イメージを配置し名前を”参照”とする。 5、回答のコードをコピペする。 <テスト2> 1、全コードをメモ帳等に非難。 2、全てのコードを削除した上でフォームを保存。 3、再度フォームを開き、必要なコードのみを一回だけコピー。   質問の場合は、Form_Current()のみをコピー。 4、"パス"というカタカナ名を画像名に変更。   コントロールの名称も画像名に変更。   テーブルの列名も変更。   *カタカナ名を[]で囲む必要があるかどうかは未確認。   *でも、それは<テスト2>-4で確認できるでしょう。 多分、どちらも成功するでしょう。 でも、先に試されずみの<テスト1>から。 10分もあれば試せますので・・・。

setti
質問者

お礼

すみません。補足のところにテスト結果を入れようと思ってのですが、もう入力ができませんでしたので、お礼のところに書いてしまいます。 テスト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 どうしたらよいでしょうか?

setti
質問者

補足

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

回答No.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文を無効化されてエラー箇所を探されたら解決すると思いますよ。

setti
質問者

補足

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

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

意図している処理と合致するかどうかわかりませんが、 単に「イメージ」をフォーム内に配置し、そのコントロールソースに、パスを書いたフィールドを指定すればよいかと思います。 また、コントロールソースには式ビルダが使えます。 なので、「表示したい画像は、Cドライブ直下に製品名+jpgで保管してある」というような場合、 コントロールソースを ="C:\" & [製品名] & ".jpg" というような記述をします。

setti
質問者

補足

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