痔になりやすい生活習慣とは?

windows-xp、Access2003を使っています。
アクセスVBAは得意なほうではありません。

テーブル名「DB」があります。
各々のフィールド名は「印鑑1」「印鑑2」「印鑑3」で、データ型は「Yes/No型」です。
そして、フォーム名「F_印鑑1」「F_印鑑2」「F_印鑑3」があり、それぞれの印鑑の画像があります。
もうひとつフォーム名「フォーマット」があります。
そこで・・・
「印鑑1」がyes、「印鑑2」がno、「印鑑3」がyes、のときに、「フォーマット」で、印鑑1と印鑑3が表示され、印鑑2は表示されない、ということをしたいのです。
いかがでしょう?
関数でもマクロでもよいのですが、簡単にできる方法、もしくは、わかりやすく教えていただければ助かります。
宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

フォーマットフォームに印鑑の画像を3つ貼り付けてください


後はフォームのレコード移動時にしたのようなコードを書きます

Private Sub Form_Current()
Me.イメージ印鑑1.Visible = [印鑑1]
Me.イメージ印鑑2.Visible = [印鑑2]
Me.イメージ印鑑3.Visible = [印鑑3]
End Sub
    • good
    • 1
この回答へのお礼

できました!!
こうやってみると、とても整然としたコードなのですね。
勉強になりました。
ありがとうございました!!!

お礼日時:2006/10/27 10:35

>「F_印鑑1」「F_印鑑2」「F_印鑑3」


って印鑑の画像だけのフォームなんですか?
単に画像を表示させたり消したりということがしたいだけなら
フォーマットフォームだけでいいと思いますが

それとフォーマットフォームは単票フォームですか

この回答への補足

>印鑑の画像だけのフォームなんですか?
はぃ、画像だけのフォームです。どうしたらよいかわからず....^o^;

>単に画像を表示させたり消したりということがしたいだけなら
>フォーマットフォームだけでいいと思いますが
そうなんですか。フォーマットフォームだけでやるとしたらどうしたらよいでしょうか?
データにより、必要な印鑑と不必要な印鑑があるのです。

それとフォーマットフォームは単票フォームですか

補足日時:2006/10/26 19:33
    • good
    • 0
この回答へのお礼

あ!!!単票です!!!
ちなみに、レポートでもかまいません。
とにかくテーブル(かクエリ)で必要な印鑑画像を選択するようにしてフォームかレポートで表示させたいと・・・お礼に打ってしまいすみませんが、これは補足2とみなして下さい!
宜しくお願い致しますm(_ _)m

お礼日時:2006/10/26 19:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスのレポートに画像を表示したい

 アクセスのレポートで、1枚の紙に4つの帳票を印刷したいので、宛名ラベルウィザードを使用しました。
 この帳票には画像も表示したいのですが、「選択可能なフィールド」には画像のフィールドが出てきませんでした。(基になるクエリには画像のフィールドがあります)
 宛名ラベルには、画像は印刷できないのでしょうか?
 他に、これを可能とする機能はないでしょうか?

Aベストアンサー

出来上がった「レポート」を「デザインビュー」にします。
それでラベル1シート分のレイアウトが表示されます。
そこで、「連結オブジェクト」を挿入します。
その「コントロールソース」は「クエリー」で作成した「項目名」にします。
「OLEサイズ」は「ズーム」にしてください。

QACCESS レポートへの表示・非表示

フォームで入力項目を無視し、データを入れなかった場合のレポートへの非表示をお聞きします。
下記のデータをレポートで表示する際、文章中に組み込んでいるのですが、データが無かった場合は前後の文章も
非表示にするにはどうすればよいのでしょうか?

例えば:下記のような入力フォームがあります。
□お客様氏名   山田花子
□契約日      05/10/04
□総額       50万円
□支払回数    10回
□分割支払金額 5万円

★レポート表示★
山田花子様へ
平成17年10月4日のご契約ありがとうございます。
お支払内容についてお知らせします。
-分割金総額50万円の内、5万円をお支払日に口座からお引き落しいたします。-
お支払回数は10回となります。

★上記の内容が1回払いの時は、以下のようにするにはどうすれば良いのでしょうか?★
山田花子様へ
平成17年10月4日のご契約ありがとうございます。
お支払内容についてお知らせします。
お支払回数は1回となります。

ご回答よろしくお願いいたします!!

フォームで入力項目を無視し、データを入れなかった場合のレポートへの非表示をお聞きします。
下記のデータをレポートで表示する際、文章中に組み込んでいるのですが、データが無かった場合は前後の文章も
非表示にするにはどうすればよいのでしょうか?

例えば:下記のような入力フォームがあります。
□お客様氏名   山田花子
□契約日      05/10/04
□総額       50万円
□支払回数    10回
□分割支払金額 5万円

★レポート表示★
山田花子様へ
平成17年10月4日のご契約ありが...続きを読む

Aベストアンサー

#1の方とは違うやり方は
IIf関数を使って分岐させて表示するようにすれば出来ます。IIf関数は結構使えますので
入力フォームが開いていてそのフォーム上のレコードをレポートに出力するとして・・
レポートに非連結のテキストコントロールを作りコントロールソースに

=[Forms]![フォーム名]![お客様名] & "様へ"

で1行目の 山田花子様へ(フォーム上のお客様名に表示されているレコード) が出来ます。
2行目は同様にテキストコントロールを作りコントロールソースに

=Format(Forms!フォーム名!契約日,"ggge\年mm\月dd\日") & "のご契約ありがとうございます。"

3行目は固定のようなのでラベルで お支払内容についてお知らせします。 で良いと思います。
4行目もテキストコントロールを作り

=IIf(Forms!フォーム名!支払回数>1,"-分割金総額" & Forms!フォーム名!総額 & "の内、" & Forms!フォーム名!分割支払回数 & "をお支払日に口座からお引き落しいたします。-","お支払回数は" & Forms!フォーム名!支払回数 & "回となります。")

この記述で支払回数が1より大きい場合は -分割金総額(フォーム上の総額の値)の内、(分割支払金額の値)をお支払日に口座からお引き落しいたします。-
 になります。1の場合はお支払回数は1回となります。と表示します。
5行目も同様です

=IIf(Forms!フォーム名!支払回数>1," お支払回数は" & Forms!フォーム名!分割支払回数 & "回となります。","")

支払回数が1より大きい場合はフォーム上の支払回数の値をお支払回数は(支払回数の値)回となります。と表示し1の場合は""で空白で表示されます。

各行のテキストコントロールを作らなくてはいけませんがIIfの分岐で処理すれば出来ます。
各記述をコピーしてフォーム名を使っているフォーム名に変更すれば出来ます。

#1の方とは違うやり方は
IIf関数を使って分岐させて表示するようにすれば出来ます。IIf関数は結構使えますので
入力フォームが開いていてそのフォーム上のレコードをレポートに出力するとして・・
レポートに非連結のテキストコントロールを作りコントロールソースに

=[Forms]![フォーム名]![お客様名] & "様へ"

で1行目の 山田花子様へ(フォーム上のお客様名に表示されているレコード) が出来ます。
2行目は同様にテキストコントロールを作りコントロールソースに

=Format(Forms!フォーム名!...続きを読む

QAccessのフォームで商品の画像を表示したい

画像を表示させた商品管理フォームを作りたいのですが、商品にリンクした画像をどうやって表示していいのかわかりません。
(商品のレコードをクリックする毎にその商品の画像
が表示できるようにしたいです)

下記のテーブルがあります。画像と商品は商品コードでつなぎます。

(1)商品テーブル
商品コード 例)A0001
商品名   例)ER-01

(2)画像テーブル
商品コード 例)A0001 
画像ファイル名 例)Photo0001.jpg
パス名 例)C\Photo\Photo0001.jpg

画像はリンクにするのか、埋め込みにするのか
もわからない状態です。
どうぞよろしくおねがいします。

Aベストアンサー

フォームにイメージコントロールで表示するか非連結オブジェクトで表示するかのどちらかになりますが
画像テーブルに画像のフルパスが入っているのであればリンクで表示する方が簡単です。
イメージを埋め込むとデータベースのサイズが増大して動作が遅くなる事もあります。
フォームのソースに画像テーブルの商品名・パス名もSQLステートメントやクエリで追加しておきます。
フォーム上にパス名のコントロールを配置します。パスを見せたくない場合は可視をいいえにして見えなくします。
イメージコントロールの名前をPhoto1とすると
フォームのプロパティで[レコード移動時]のイベントに
Private Sub Form_Current()
If Me![パス名] <>"" Then
   Me![Photo1].Picture=Me![パス名]
  Else
   Me![Photo1].Picture="" 'パスがない画像がない場合表示しない
 End If
End Sub
のように設定しフォーム上のパス名に入った画像のパス\ファイル名をPhoto1のPictureソースに代入させ表示します。

非連結オブジェクトで表示する場合はテーブルのフィールドをOLEオブジェクト型にしてデータベースにオブジェクトの挿入で画像をビットマップイメージで取り込みます。そのフィールドを指定するようにすればそのフィールドに挿入してある画像が表示できます。ビットマップのレコードとなるのでbmpで保存しておかないと出来ません。
画像も小さくてファイル数も少なければ問題ないとは思います。

フォームにイメージコントロールで表示するか非連結オブジェクトで表示するかのどちらかになりますが
画像テーブルに画像のフルパスが入っているのであればリンクで表示する方が簡単です。
イメージを埋め込むとデータベースのサイズが増大して動作が遅くなる事もあります。
フォームのソースに画像テーブルの商品名・パス名もSQLステートメントやクエリで追加しておきます。
フォーム上にパス名のコントロールを配置します。パスを見せたくない場合は可視をいいえにして見えなくします。
イメージコントロー...続きを読む

Q(ACCESS)条件に応じて、テキストボックスを表示・非表示設定

(ACCESS)条件に応じて、テキストボックスを表示・非表示設定

フォーム上のテキストボックスAを条件に応じて表示・非表示にさせたいです。


条件は、サブフォームのテキストボックスBに「支払」を言う文字があれば、
テキストボックスAが表示され、なければ非表示にする方法が探しています。

わからないなりに調べて、多分以下の文章になると思いますが、「?」の条件式がうまくいきません

Private Sub AA_GotFocus()
If  ????? Then
Me!テキストボックスA.Visible = False
Else
Me!テキストボックスA.Visible = True
End If
End Sub


どなたか教えてください。
宜しくお願い致します。

Aベストアンサー

訂正。(2)のところで、

Private Sub t1_GotFocus()
If Forms!フォーム名!ctlサブフォーム名!テキストボックスB Like "*" & "支払" & "*" Then

になっていましたが、


Private Sub t1_GotFocus()

を、

Private Sub AA_GotFocus()

としてください。書き間違いです。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QAccess-VBAでExcelファイルを作成する。

こんにちわお世話になります。

「Excelにエクスポート」ボタンをクリックすると、Inputboxか何かが表示されて、Pathやファイル名やシート名を入力し、「実行」ボタンを押すと、新規にExcelのBookを、そのPath、ファイル名、シート名で作成する。その後、そのシートにデータを書き込むという作業をしたいのです。
AccessのデータをExcelの任意のシートを開いて書き込むという部分のVBAコードはわかりますので、新規Book作成部分のコードがわかるかたお願いします。
Office97を使用しています。

Aベストアンサー

プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryにチェックを入
れて下さい。

オブジェクトへの参照を格納する変数を事前バインディング。
変数にオブジェクトの参照を代入します。Addメソッドを使って新規workbookと
worksheet オブジェクトを作成します。
値を代入し名前を付けて保存してオブジェクトを開放する。という流れで良いと
思います。

Private Sub Command1_Click()

  On Error Resume Next

  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)

  ' Excel のセルに値を代入します。
  xlSheet.Cells(1, 1).Value = " "

  ' Worksheet を名前をつけて保存します。ダイアグボックス等を使用して
   パスやBook名など入力できるようにしてもOKです。
  xlSheet.SaveAs "c:\Temp.xls"

  xlApp.Quit

  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing
End Sub

こんな感じでしょうか。

プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryにチェックを入
れて下さい。

オブジェクトへの参照を格納する変数を事前バインディング。
変数にオブジェクトの参照を代入します。Addメソッドを使って新規workbookと
worksheet オブジェクトを作成します。
値を代入し名前を付けて保存してオブジェクトを開放する。という流れで良いと
思います。

Private Sub Command1_Click()

  On Error Resume Next

  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
...続きを読む

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qオプションボタンの三択(アクセス)

こんにちは。
アクセスのオプションボタンについて教えてください。
マルにちょんとチェックするボタンです。

フォーム上にオプション1オプション2オプション3の選択肢があるとします。

ふつうにしていると1も2も3も全部一緒にえらべてしまいます。
ひとつにチェックをつけると他のふたつにはチェックできないようにするにはどうしたらいいですか?

Aベストアンサー

こんにちは。maruru01です。

オプショングループを使用します。
・ツールボックスのオプショングループ(四角でxyzと書いてある奴)を選択して、適当な大きさにドラッグして、フォームに置きます。
・ツールボックスからオプションボタンを選択して、マウスのポインタをオプショングループの中へ移動させると、四角の中が反転表示されるので、その状態でオプショングループの中にオプションボタンを配置します。
・同様に必要な分だけオプションボタンをオプショングループの中に配置します。

これで、オプショングループ内のオプションボタンは、1つしか選択出来なくなります。
ちなみにオプションボタンのプロパティの[オプション値]というのが各オプションボタンを表す値で、オプショングループのプロパティの[既定値]にどれかの値を入れておくと、最初にチェックされているオプションボタンを指定出来ます。
また、VBAで値を認識するのは、オプショングループのValueプロパティになります。
選択されているオプションボタンの[オプション値]がオプショングループのValueにセットされるわけです。

こんにちは。maruru01です。

オプショングループを使用します。
・ツールボックスのオプショングループ(四角でxyzと書いてある奴)を選択して、適当な大きさにドラッグして、フォームに置きます。
・ツールボックスからオプションボタンを選択して、マウスのポインタをオプショングループの中へ移動させると、四角の中が反転表示されるので、その状態でオプショングループの中にオプションボタンを配置します。
・同様に必要な分だけオプションボタンをオプショングループの中に配置します。

これで、オ...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング