Access2007で鍵のDBを作成し、レポートに鍵の画像を挿入したい

このQ&Aのポイント
  • Access2007で鍵のDBを作成し、レポートに鍵の画像を挿入したいが、イメージコントロールの貼り付けで指定した画像のみ表示される。
  • テーブルには鍵の記号や名称、鍵画像パスがあり、レポートの詳細セクションでイメージコントロールを使用して画像を表示している。
  • しかし、プレビューするとパラメータの入力エラーが表示され、鍵画像パスフィールドに入力が必要とされる。
回答を見る
  • ベストアンサー

Access2007で、鍵のDBを作っています。レポートに鍵の画像を挿

Access2007で、鍵のDBを作っています。レポートに鍵の画像を挿入したいと思い、http://www.accessclub.jp/samplefile/samplefile_77.htmを参考にしたのですが、このHPで紹介しているイメージコントロールの貼り付けの部分で指定したように代表?として貼り付けた画像のレコードしか出てきません。(現在、レコードは3つあります。) テーブルは「鍵 台帳」 鍵 記号(テキスト型) 鍵 名称  ・  ・  ・ 鍵画像パス(テキスト型) があり、 レポートの詳細セクション、イベントタブのファーマット時に、[イベントプロシージャ]にし、 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) On Error GoTo エラー発生 Me.ラベル0.Visible = False Me.イメージ34.Visible = True If Not IsNull(Me.鍵画像パス) Then Me.イメージ34.Picture = Me.鍵画像パス Else Me.ラベル0.Visible = True Me.イメージ34.Visible = False End If Exit Sub エラー発生: Me.イメージ34.Visible = False Me.ラベル0.Visible = True Resume Next End Sub と、してみました。ラベル0は「鍵 記号」フィールドに対応、イメージ34はイメージコントロールで貼り付け、書式タブのピクチャでC:¥Documents and Settings¥〇〇¥My Documents¥△△¥鍵管理DB\KM 611.jpgとしました。鍵 画像パスフィールドにも同じようにパスが入っています。(鍵 記号と鍵の画像ファイルは、同じ名前にしています。) このようにし、印刷プレビューにしようとすると、「パラメータの入力 鍵 画像.鍵 画像」と出てきます。何も入力せず、「OK」を押すと、プレビューでKM 611のレコードのみ出てきます。 レポートには、鍵 画像パスフィールドと、「鍵 履歴」テーブルもサブレポートで入れています。 ちなみに、鍵 履歴テーブルは ID 鍵 記号 履歴 日付  ・  ・ のようになっており、鍵 記号を「鍵 台帳」テーブルの鍵 記号フィールドとリレーションさせています。 アクセス超初心者でやっとここまでこぎつけたので、後は、なぜ出来ないのかさっぱりわかりません。 どうか、お助けいただければ、幸いです。 厚かましいですが、教えて頂けるようであれば、プロシージャを入れる場合なども、どこをクリックしてから等細かくご教授願えますでしょうか。 よろしくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

鍵 画像パスフィールドのコントロール名は "鍵 画像"のように離れていますか、あるいは "鍵画像"のようにくっついていますか。 ほかに"鍵 画像"を使っているところは ありませんか。 "鍵画像"にすべてのコントロール名や フィールド名を統一してみてください。 それでも出るようであればコントロールや コントロールのコントロールソースなどに 本来は"鍵画像"となるべきところが"鍵 画像" となっているところがある可能性があります。 なるべくならフィールド名やコントロール名 などにはスペースのある名前は使用しない ほうがいいのではないかと思います。

datayoin
質問者

お礼

色々検討した結果、なんとかできました。 どうもありがとうございました。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

ご苦労さんです。 "印刷プレビューにしようとすると、「パラメータの入力 鍵 画像.鍵 画像」と出てきます。" ということは、レポートのレコードソースからのメッセージが一番 可能性が高いので、レポートのレコードソースのSQL文と、SQL文で 使用されているテーブルの構造を提示してもらえませんか。では。

datayoin
質問者

補足

早速お助けいただき、ありがとうございます。 SQL文というものもよくわかっていないのですが、(超初心者なもので、アクセスを理解できていませんで申し訳ありません)レポートのレコードソースは SELECT 鍵 台帳.鍵 記号, 鍵 台帳.鍵 番号, 鍵 台帳.鍵 名称, 鍵 台帳.特色, 鍵 台帳.備考 FROM 鍵 台帳; と、なっています。 このレポート(タイトルは「台帳」)で使っているテーブルは、 「鍵 台帳」テーブル 鍵 記号  テキスト型 鍵 番号  数値型 鍵 名称  テキスト型 現 保有者 テキスト型 特色    テキスト型 備考    テキスト型 廃盤    Yes/No型 部署    テキスト型 鍵画像パス テキスト型 以上、全フィールドを「台帳」レポートに使用。 「鍵 履歴」テーブル ID    オートナンバー 鍵 記号  テキスト型 履歴日付  日付/時刻型 正鍵管理者 テキスト型 副鍵管理者 テキスト型 フォームは「鍵 台帳」「鍵 履歴」をそれぞれのテーブルからそのまま作り、 「鍵 履歴」をサブフォームとして、「鍵 台帳」フォームに入れています。 サブレポートは 「SR 履歴」とし、「鍵 履歴」テーブルのフィールドを全部使用。 レポートのレコードソースは SELECT 鍵 履歴.履歴日付, 鍵 履歴.正鍵管理者, 鍵 履歴.副鍵管理者, 鍵 履歴.鍵 記号, 鍵 履歴.ID FROM 鍵 履歴;   となっています。 こちらの情報で、大丈夫でしょうか? どうか、よろしくお願いいたします。

関連するQ&A

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

  • Access レポートの詳細Formatに複数の式

    いつもお世話になっています。 レポートの詳細に結婚して姓が変更になった場合、旧姓に取り消し線を引く という式を作成しました。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub 今回は、住所も変更になって新住所が入力されたら、旧住所に取り消し線を引きたいと 思います。 ただし、変更にならない場合もあるので、別のIF文になります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新住所 <> "" Then Me.取り消し線3.Visible = True Me.取り消し線4.Visible = True Else Me.取り消し線3.Visible = False Me.取り消し線4.Visible = False End If End Sub レポートの詳細_Formatに複数の条件を設定することができるのでしょうか。 お力添えをお願いいたします。

  • Accessのレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

  • アクセスの標準モジュールを教えてください

    アクセス初心者です。イベントプロシージャで以下のようなVBAを作りました。(動作しました。) これを複数のレポートで使いたいので,標準モジュールで作りたいのですが,うまくできません。 下のVBAを標準モジュールで書くとどう書くのか教えてください。また,もしcallで呼び出すときの注意点等もあれば教えてください。 下のVBAでしたいことは,「加点減点*○」というイメージを「tbox_加点」というテキストボックスの値に応じて可視にするというものです。 アクセスは2007を使っています。よろしくお願いします。 Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Dim kt As Long Dim st As Long Me.加点減点_10○.Visible = False Me.加点減点_5○.Visible = False Me.加点減点0○.Visible = False Me.加点減点5○.Visible = False Me.加点減点10○.Visible = False kt = Me.tbox_加点 Select Case kt Case -10 Me.加点減点_10○.Visible = True Case -5 Me.加点減点_5○.Visible = True Case 0 Me.加点減点0○.Visible = True Case 5 Me.加点減点5○.Visible = True Case 10 Me.加点減点10○.Visible = True End Select End Sub

  • アクセス2000 5行で改ページ

    アクセス2000のレポートで、5行で改ページをさせようと以下のようにコードを記述しましたがうまくいきません。 どなたかアドバイスをお願いします。 配置されているテキストボックスは、 [氏名] [人事区分チェック1] [人事区分チェック2] [人事区分チェック3] [人事区分チェック4] [人事区分チェック5] [人事区分チェック6] [人事区分チェック7] [その他の内容] [役職] [採用年月日] [契約終了日] [備考] でコードは以下の通りです。 Dim i, j Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) i = 0 j = DCount("*", "採用時提出書類管理クエリ", "[教授会]=reports![92 人事関係報告書]![教授会]") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) i = i + 1 If i Mod 5 = 0 Then If i <= j Then Me![bpage].Visible = True Else Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If Else Me![bpage].Visible = False If i < j Then Me.NextRecord = True Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True ElseIf i = j Then Me.NextRecord = False Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True Else Me.NextRecord = False Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If End If End Sub データが5件未満は正しく表示されますが、5件を超えると2ページ目が4件しか表示されなかったりします。 グループ化がされており、[bpage]という改ページが入っています。 よろしくお願いします。

  • レポートのラベルなどの非表示は可能か?

    アクセス2003 SQLServer2000 WindowsXP レポートのラベルなどを条件によって非表示にしたいと思います。 フォームのコントロールは me.コントロール名.visible = false で非表示にできるのですが、 レポートのページフォーマットイベントで me.ラベル名.visible = false としても、非表示になりません。 ラベルのプロパティーには「可視」があるので可能と思っているのですが、 間違いでしょうか。 どなたかご教授お願いいたします。 プロパティーの英語表示の仕方も教えていただければ助かります

  • access レポートで罫線を最後まで出力する方法

    accessのbvaの本を参照してレコードがない場合でも最後まで罫線を出力する方法を試しているのですが、インクリメントがうまくいっていないのかいつまでも改ページを続けてしまいます。 どなたか解決する方法を教えてください。 Option Compare Database Option Explicit '次の3つの変数はdeclarationセクションで宣言します '現在印刷中のレコード番号を表す変数 Private pintRecord As Integer 'レコードソースの全レコード数を表す変数 Private pintRecordMAX As Integer '1ページ当たりに印刷するレコード数の定数 Private Const cintRecperPage As Integer = 15 Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) '現在印刷中のレコード番号を初期化します pintRecord = 0 'レコードソースの全レコード数を取得します pintRecordMAX = DCount("*", "T_出荷明細", "出荷No=reports![R_出荷証明書3 test]![出荷No]") '"*"にすることでクエリ内のレコード数をカウント。Null値フィールドを含むレコードも対象。 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '各テキストボックスの可視/非可視のフラグ Dim blnVisible As Boolean '現在印刷中のレコード番号をインクリメントします pintRecord = pintRecord + 1 If (pintRecord Mod cintRecperPage) > 0 Then '1ページ内の途中のレコードを印刷している場合 '改ページしないようにします Me!bpage.Visible = False '印刷するレコードの位置によって、各テキストボックスの可視/非可視の 'フラグと、次レコードへ進めるかどうかの設定を行います If pintRecord < pintRecordMAX Then blnVisible = True Me.NextRecord = True ElseIf pintRecord = pintRecordMAX Then blnVisible = True Me.NextRecord = False Else blnVisible = False Me.NextRecord = False End If Else '1ページ内の最後のレコードになったとき If pintRecord <= pintRecordMAX Then 'まだ印刷するレコードが残っているときはその行を印刷後、改ページします blnVisible = True Me!bpage.Visible = True Else '印刷するレコードがもうないときはその内容は印刷しません blnVisible = False End If End If 'フィールドと連結したテキストボックスの可視/非可視を設定します Me![品番].Visible = blnVisible Me![品名].Visible = blnVisible 'Me![寸法使用].Visible= blnvisible Me![数量].Visible = blnVisible Me![備考].Visible = blnVisible End Sub

  • 行数を固定して納品書を作成したが、いらない部分がでる

    こんばんは、提出時間がせまっているので、 あせって、質問しました。 今、アクセスにて納品書のレポートの作成中です。 Q_売上テーブルとQ_売上明細テーブルをつかって、 レポートを作成し、5行に固定したかったので、 下記のようなVBAを記述しました。 行は、固定されましたが、 なぜか1行しかない時などに、 商品区分だけが2行目3行目に1行目の内容をコピーして はいってくるのです。 どこがおかしいのかわからず、苦戦中です。 ご教授、よろしくお願いいたします。 Option Compare Database Dim AAA As Integer Dim BBB As Integer Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) AAA = 0 BBB = DCount("伝票番号", "Q_売上明細テーブル", "伝票番号='" & Me!伝票番号 & "'") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) AAA = AAA + 1 Me!テキスト54 = AAA If AAA Mod 5 = 0 Then If AAA < BBB Then Me!改ページ55.Visible = True Me.Section(3).Visible = True ElseIf AAA = BBB Then Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me!テキスト54.Visible = False Me!商品区分.Visible = False Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If Else Me!改ページ55.Visible = False Me.Section(3).Visible = False If AAA < BBB Then Me.NextRecord = True Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True ElseIf AAA = BBB Then Me.NextRecord = False Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me.NextRecord = False Me!テキスト54.Visible = False Me!商品区分.Visible = True Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If End If End Sub

  • Accessレポートで質問です

    VBA初心者です。レポート機能を使って履歴書を出力したいのですがうまく作れません。 内容は下記の通りです。 テーブルA(社員情報)<単票形式>:[社員コード]、[社員名] テーブルB(履歴情報)<表形式>:[社員コード]、[西暦]、[履歴内容] レポートA:テーブルAの全てのフィールドに連結 レポートB:レポートAのサブレポートとしてレポートA上に配置   フィールドは全てテーブルBに連結 <やりたい事> レポートAの[社員コード]とレポートB(サブ)の[社員コード]で連動させ、 レポートAの[社員コード]が変わると該当の履歴情報のみをレポートBに表示したい。 <現在の考え> テーブルAに連結したフォームA上に配置したあるコマンドボタンをクリックし 表示中の[社員コード]でレポートAとレポートB(サブ)にフィルターをかけて抽出する。 Private Sub コマンドボタン_Click() 処理A Reports("レポートA").Report.Filter = "社員コード = '" & Me!社員コード & "'" Reports("レポートA").Report.FilterOn = True  処理B Reports("レポートA").レポートB.Report.Filter = "社員コード = '" & Me!社員コード & "'" Reports("レポートA").レポートB.Report.FilterOn = True 結果  処理A--->抽出 ○ 処理B--->抽出 × その他レポートBに関しては上記処理Bを止め、「開く時」の処理として Private Sub Report_Open(Cancel As Integer) Me.Filter = "社員コード = '" & Parent("社員コード") & "'" Me.Report.FilterOn = True End Sub 「実行時エラー'2101'; プロパティの設定値として指定した値が正しくありません。」 と出て結果×でした。。 どなた様か解決案もしくは他に良い方法がありましたらご教授頂きたく宜しくお願い致します。

  • アクセス2000のレポートでイメージを表示させたいのですが

    アクセス2000でデータベースを作成しています。レポートについて分からないことがあるので教えてください。 ・ImageFileというフィールドにイメージファイルのフルパスを入力しておき、フォーム上のPictureを配置し、下記のようなコードを記述して、Pictureに、イメージファイルを読み込んで表示させています。 Private Sub Form_Current() If IsNull(Me.ImageFile) Then   Me.イメージ.Picture = "d:\nonimage.jpg" Else: Me.イメージ.Picture = Me![ImageFile] End If End Sub ・同じような方法でレポートでイメージを印刷させることは出来ないでしょうか?  尚、ImageFileはレコード毎に異なるものを使用しています。

専門家に質問してみよう