• ベストアンサー

ACCESSでテーブル名から自動的にオブジェクトリンクを作成

ACCESS初心者なのでもしこのようなことができるかを教えていただきたいのですが テーブル ID 0000 と入れたら ID オブジェクト 0000 XXXX/0000.jpg XXXXは任意のフォルダー と自動的に画像のファイル名を生成してリンクさせる。レポートやフォームでこのID 0000の情報を表示(出力)したらそのリンクされた画像がきちんと呼び出される。 こんなことはできるのでしょうか?

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

No1 さんの回答でほぼ完璧かと思いますが補足がなされていますね・・・。 どこで躓いているのかが不明ですので回答のフォーカスを絞り難いのですが。 まず、次のようなコードを試されたらどうでしょうか? Private Sub コマンド1_Click()   Static I As Integer   I = Abs(I - 1)   If I = 0 Then     Me.イメージ0.Picture = "C:\Temp\AAA0001.BMP"   Else     Me.イメージ0.Picture = "C:\Temp\AAA0002.BMP"   End If End Sub これで、画像が[コマンド1]をクリックすると切り替わります。 要は、これをテーブル情報に基づいてやるだけです。 <Table1> ID  画像パス 1   C:\Temp\AAA0001.BMP 2   C:\Temp\AAA0001.BMP 次に、この画像のパスをテーブルに登録します。 このテーブルを基に単票フォームを作成しイメージコントロールを配置します。 仮に名前を’画像’とします。 Private Sub Form_Current()   Me.画像.Picture = Me.画像パス End Sub これで、次々と単票フォームに登録した画像パスに対応した画像が表示されます。 レポートの場合は、 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)   Me.画像.Picture = Me.画像パス End Sub という書き方です。

OKINAWA2005
質問者

補足

ありがとうございます。 すごくわかりにくいですよね。すみません。 端的に言うと 画像はすでにある場所に格納してあって、IDと同じ文字列がファイル名の拡張子の前に振られています。例えば ID 1111に対応する画像は 1111.jpgという風に。 そこで、フォームなどでID 1111と登録したら、それに対応する画像をダイアログから呼び出すのではなく、1111は1111.jpgの画像を呼ぶ、という裏で動作が行われて(もしくはマクロの起動ボタンを押す、のようにイベントが一つ入っても良いですが)その対応する画像が表示される。(もちろんデータが登録されたあとであれば問題なくそのようになるのでしょうが、新規登録の場合に・・・です。)

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

>ID オブジェクト というのがどういうものかよく分からないですね JPGファイルとでも入れておくのですか? 通常テーブルで画像を管理するには 画像のファイル名を「xxx.jpg」のように入れます フォームやレポートに表示するときには イメージコントロールを配置しておき、それのPictureプロパティーに 画像のフルパスをセットすることによって表示させます サンプルDBのNorthwind.mdbの社員レポートやフォームを見てみてください

OKINAWA2005
質問者

補足

さっそくのコメントありがとうございます。 説明がわかりにくくてすみません。 >>ID オブジェクト >というのがどういうものかよく分からないですね >JPGファイルとでも入れておくのですか? ID, オブジェクト名 というフィールドをそれぞれ作って・・・という意味を伝えたかったのです。テーブルのイメージとしては ID オブジェクト名 =============================== 0000       0000.jpg こんな感じでしょうか。

関連するQ&A

  • Accessで作成したテーブルのOLEオブジェクトの使い方

    Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。 取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。 下記の内容です。 Private Sub Form_Open(Cancel As Integer) Form.Caption = ProgName End Sub しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。 Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか? また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら? アドバイスいただけれは幸いです。

  • ACCESS 不要なオブジェクトの削除

    お尋ねします。 ACCESS初心者です。 OSはXPのPRO、ACCESSは2003を使っています。 いろいろ試行錯誤しながらDBを作成しているうち、テーブルやクエリなどのオブジェクトがかなりたまってしまいました。 パフィーマンスを上げるため、DBを整理して不要なオブジェクトを削除したいのですが、分析方法がわかりません。 テーブルとクエリはリレーションを見ればつながりがわかるのですが、フォームやレポートなどはひとつひとつデータソースを調べるしかないのでしょうか? どなたか教えてください。

  • ACCESS クエリのリンクテーブル変更できない

    ACCESS2007-2010にて、リンクテーブルの場所変更をリンクテーブルマネージャから行いました。 リンクテーブルマネージャでのリンク先は新しい場所が表示され、テーブルオブジェクトをダブルクリックすると参照もできます。 ただし、既存のクエリを実行すると、"ファィル C:\xxx\xxxx.accdb"が見つかりませんでした。" のエラーとなります。この"C:\xxx\xxxx.accdb"は、変更前のリンク先です。クエリで定義しているテーブルはのリンク先は変更できないのでしょうか。

  • OLEオブジェクトを自動でサイズ調整して枠内に収めたい

    ACCESSのフォームで、スキャナで撮った画像をOLEオブジェクトとして貼り付けています。 フォームの画面ではクリックすれば大きくなってくれるのでいいのですが、 印刷したい時にレポートを開くと枠内に収まらず、いちいち画像を小さく加工しないといけません。 これを自動で枠内に収まるようにできる方法というのはありますでしょうか。 どうぞ宜しくお願い致します。

  • アクセス オブジェクト一覧がなくなった。

    標題の通りなんですが、作成中のアクセスを開いたところ、オブジェクト一覧が見当たりません。表示しないとか何か設定があるのでしょうか?アクセスを開いたら、テーブル、クエリ、フォーム、レポートと一覧が見れますよね?それが無いのです。元に戻す方法を教えてください。急いでいます。宜しくお願いします。

  • Accessのオブジェクトの適正を教えてください。

    Accessを使い始めて日が浅く、初歩的なことを質問させていただくのですが、よろしくお願いします。  Accessテーブルで「tbl商品一覧」を作り、このテーブルをベースに商品分類、価格、キーワードなどから、お客様に合う商品を検索するシステムを作成しています。検索結果一覧はフォームに表示し、レポートで出力します。  ここからが質問なのですが。 検索結果一覧から、お客様に見せて案内する個々の商品データを開けるようにしたいと思います。このお客様に見せて案内する個々の商品データは、Accessのどのオブジェクトで作成するべきなのでしょうか。 見栄えがするレイアウトで、印刷してお客様に見せることが目的です。 よろしくおねがいします!

  • Accessのリンクテーブルについて質問です。

    Accessのリンクテーブルについて質問です。 この度、バックエンドとフロントエンドでのデータベースを作っています。 フロントエンドを会社のPC10台程度で利用しようと考えています。 ただ、作成するのが、自宅のPCと会社のPCで作っているのですが、 リンクテーブルのパスが変わってしまい、非常に困っています。 現在は自宅でデータ系を作成し、会社でフォーム等見た目に関するものを作っている次第です。 リンクテーブルを自動更新させる方法、または、ボタンで全てのリンクテーブルを更新させる方法はないでしょうか? 一つのテーブルをボタンで更新させる方法は、他サイトで見つけたのですが、複数テーブルを一挙に更新させる方法が見当たりません。 また、面倒な話なのですが、テーブル数は現在決まっておらず、今後増える予定です。(現在は7つ。) 出来れば参考サイトやソースコードを教えていただけると、非常に助かります。 何卒よろしくお願いいたします。m(_ _)m

  • ACCESSのリンクエラー

     「商品」テーブルと「仕入」テーブルで「1対多」のリレーションを構築し、この二つのテーブルからフォームを作成したのですが、「仕入サブフォーム」に新規Dataを追加しようとすると、 「”LinkMasuterFields/リンク親フィールド”プロパティの設定でエラー’このオブジェクトには、オートメーションオブジェクト’商品’は含まれません。’が発生しました。」 と出て、新規Dataを「仕入」サブフォームに入力しても「商品」テーブルとリンクされていません。  なんとか解決したいのですが、Helpだけでは良く判りません。どなたかよろしくお願いいたします。

  • Access2000VBA オブジェクト転記時にレコードソースや標題も一緒に変更したい

    転記したフォーム、レポートのレコードソース、標題をVBAで変更したいんです。 テーブル名、フォーム名、レポート名の3つのフィールドが一覧となっているテーブル「オブジェクト名」があるとします。 ○例「オブジェクト名」テーブル テーブル名  フォーム名  レポート名 T_ああ      F_ああ    R_ああ T_いい      F_いい    R_いい まず、Excelからインポートしたテーブル名を、上の一覧中のテーブル名「T_ああ」をインプットボックスでまず割り当てておきます。 割り当てた値は「varac」とします。 また、フォーム「オブジェクト作成」に、「フォーム作成」、「レポート作成」というコマンドボタンを作り、TransferDataBaseメソッドを利用し、フォーム、レポートを、既にあるそれぞれ元となるオブジェクトから転記していきます。 その際、それぞれの名称は、DLookUp関数を使い、「varac」を元にして「オブジェクト名」テーブルからフォーム名、レポート名を引っ張ってきます。 ここまでは順調に出来ました。 さらに値「varac」を利用して、フォーム、レポートのレコードソース、標題を変更したいんです。 でも、どうコーディングしたら全体プロパティのレコードソース、標題が変わってくれるのか分かりません。 一つのフォームのレコードソースや標題を変えるのなら、 Me.RecordSource = varacや、Me.Caption = varacにすれば変更できます。 ただ、転記中にフォーム「オブジェクト作成」からどう指示したら、転記先のフォーム上のプロパティ、または転記先のレポート上のプロパティと、認識してくれるのかまったく分かりません。 初心者でもあるため、コーディングに詳しいコメントをしていただくと、とても嬉しいです。 よろしくお願い致します。

  • ACCESSでテーブルでの自動入力

    ACCESS 2007を使っています。 SQLとかは分かりません。(貼り付けとかも、そもそもどこに貼り付けるのかもよく分かりません) 得意先(100件)を、営業担当者(5人)にそれぞれに割り振ります。 得意先テーブル(得意先ID、名前、住所、担当者ID、営業担当者名)(とりあえずは、営業担当者名だけは空白) 営業担当者テーブル(担当者ID、営業担当者名)を 作成します。 クエリのほうで、以下の二つのテーブルの以下の要素を合体させたものを作ります。 得意先テーブルの(得意先ID、名前、住所、担当者ID) 営業担当者テーブルから(営業担当者名) すると、 得意先クエリ(得意先ID、名前、住所、担当者ID、営業担当者名)まで入ったもの、がつくれます。このクエリは、得意先ID、担当者ID両方がきちんと入力された項目のみがリストアップされます。 それで、以下疑問点なのですが、 ・基本的に、得意先の情報を新規で入力していく際は、この得意先クエリをベースに作成された、得意先フォームから入力していくというのが一般的なのでしょうか。 (テーブル自体に、上記の得意先テーブルに、得意先名まで入ったものを作成することは普通は、しないのでしょうか。入っていた方が何かと便利かと思うのですが、そういった用途には、クエリを基にしたフォームを使うものなのか。あくまでテーブルはデータの保管場所と考え、クエリを使用上の入出力の基本窓口にすべきなのでしょうか) ・現段階で、上記の得意先テーブルで、担当者IDが入力されていないものが多数あるのですが、(エクセルで取り込んだデータ)、この得意先クエリでは、それらは表示されません。そうすると、得意先テーブルから入力していく必要があります。その場合は、得意先テーブル自体か、そこから作られたフォームに、担当者ID(実際にはこれが、代理店IDで、結構多数あるのですが)、を入力していく形になるかと思います。この場合、得意先テーブルだけをベースとしたクエリやフォームをつくり、担当者IDの入力を(入力しやすい形、自動的に選択できるなど)にして、入力をとりあえず終えきるというのは基本でしょうか。 とりとめもない質問になってしまいましたが、よろしくおねがいします。 基本的な考え方など分かればと思います。

専門家に質問してみよう