Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15 / 500 ページ ←次へ | 前へ→

【13027】標準モジュールからフォームのトグルボタ...
質問  りょうりょう  - 16/6/2(木) 15:01 -

引用なし
パスワード
   初めまして。
アクセス2010を始めて1年ほどの初心者です。
よろしくお願いします。

14個のトグルボタンのキャプションを押したときに、(6/02木)から→(休み)
のようにキャプションを切り替えたい。(ボタン色・テキスト色)
個別にコードを書くとゴミゴミしてみづらいので各ボタン共通で使えるよう標準モジュールに書いてみようとしたのですが、上手く行きません。
各HPを調べて見ましたが、
例)
Sub test1()
  MsgBox "こんにちは"
End Sub
メッセージボックスでの表示は簡単に実行できるのですが、フォーム上のボタンに行おうと思うと上手く行かず、行き詰まってしまいました・・・。
文字を出すという基本的な事でつまづき恥ずかしいのですが、

Sub Cap(ByVal Test As String)
If Test = "0" Then
  Form1.トグルボタン1.Caption = "休み"
End If
End Sub

おわかりになる方、ヒントを頂けますでしょうか。
どうぞよろしくお願いいたします。
・ツリー全体表示

【13026】クエリの抽出条件に別テーブルのデータを...
質問  えるす  - 16/6/2(木) 11:31 -

引用なし
パスワード
   初心者で申し訳ありません。
いろいろとサイトを巡って見たのですが、解決策が見当たらないため質問させて下さい。よろしくお願い致します。

現在、ODBCのリンクテーブルと通常のテーブルがあります。
OBDCには商品番号が羅列されています。
@@@@@@-*** という形で番号が並んでいて@@@@@@の部分は
ジャンルで番号が統一されています。

もう一つのテーブルはジャンル毎の@@@@@@が羅列されています。
@@@@@@(-***)@より後の部分は記載されていません。

このOBDCのデータを別テーブルに記載されているデータと
「先頭一致」したものだけを抽出したいのですが、
クエリの抽出条件に IN ( SELECT .... 等を考えたのですが、
先頭一致の部分で引っかかってしまいます。


OBDC
<商品番号>
000000-***
000000-***
001234-***
001324-***
001555-***
.
.
.
.

検索
<HC>
000000
001234
.
.
.
.
.
・ツリー全体表示

【13025】Re:レポートの分割
回答  かるびの  - 16/6/2(木) 11:22 -

引用なし
パスワード
   >数がかなり多いのでVBAでLOOP処理できればと思っています。

 私の回答の方針として、コードは示しません。コードを書くのは、 ゆうさんの仕事です。
 

 そこで、VBAでの考え方ですが、ループ処理の各回において行うことは、

第1に、特定の「個人・法人ID」を取得する。
第2に、当該「個人・法人ID」についてのレコードだけを表示するレポートを開く。
第3に、出力先PDFファイル名を生成する。
第4に、このレポートをPDFファイルに出力する。

です。


 第1の、特定の「個人・法人ID」を取得するためには、
処理する「個人・法人ID」の一覧、ただし重複のないものを得る必要があります。
 これには、そのようなクエリ(Q_ID一覧)を作ります。
 そのためには、SQLで言えば、DISTINCT を使いますが、クエリをデザインビューで作るなら、
「クエリ プロパティ」における「固有の値」プロパティを使います。


 次に、「Q_ID一覧」における「個人・法人ID」フィールドの各セルの値を取得する必要があります。
 これには、レコードセットを使います。
 「Q_ID一覧」をレコードセットとして取得することになります。
 具体的なコードを示すと、

 Dim db as DAO.Database
 Dim rs as DAO.Recordset

 Set db = CurrentDB
 Set rs = db.Openrecordset("Q_ID一覧",dbOpenDynaset)

です。
 「Q_ID一覧」は、レコードセットとして、rs 変数に格納されます。

 なお、ADOのレコードセットを取得する方法もありますが、私は、ADOは使ったことがないので、
うまくアドヴァイスできません。

 そして、「Q_ID一覧」における「個人・法人ID」フィールドの各セルの値は、
   rs.Fields("個人・法人ID").Value
というコードにより取得できます。

 ここでは、どこをループに入れ、どこをループに入れないかはよく考えてみてください。


 第2の、特定の「個人・法人ID」についてのレコードだけを表示するレポートを開く方法としては、
まず、レポートのレコードソースをその都度設定する方法があります。
 つまり、特定の「個人・法人ID」についてのレコードだけを表示するようなクエリを、SQL文で書き、
そのSQL文をレポートのレコードソースに設定する方法です。
 次に、レポートのフィルタを使う方法があります。
 さらに、OpenReport メソッドの第4引数を指定する方法があります。

 最後の方法が最も手軽でしょう。


 第3の処理、つまり、出力先PDFファイル名を生成することについてですが、
個々の個人・法人IDが取得できていれば、これにあれこれの文字列をつなげて、
ファイル名を生成することになります。


 第4の処理、つまり、PDFファイルへの出力ですが、
OutputTo メソッドを使うらしいです。
 OutputTo メソッドは、2007からの新機能なので、未だに2003を使っている私は、全く疎いです。


 ここで、レコードセットから個々の「個人・法人ID」を取得することに話を移します。
 「 rs.Fields("個人・法人ID").Value 」というコードにより、個々の「個人・法人ID」を取得できるとしても、それはどの行の「個人・法人ID」なのでしょうか。
 答えは、「Q_ID一覧」の先頭行の「個人・法人ID」です(厳密に言うと、ちょっと違うけど)。
 ループ1回目は、「Q_ID一覧」の先頭行の「個人・法人ID」を取得するとしても、
ループ2回目も「Q_ID一覧」の先頭行の「個人・法人ID」を取得するのでは、困ってしまいますよね。
 では、どうやったら、「Q_ID一覧」の次の行の「個人・法人ID」を取得できるのでしょうか。
 そのためには、レコードセットに対して MoveNext メソッドを使います。
 このメソッドを使うと、レコードセットにおける次の行の「個人・法人ID」を取得できます。


 さらに次の問題です。 
 レコードセットに対して MoveNext メソッドを使って、次々と「個人・法人ID」を取得するとしても、その終わりは、どうやって認識したらいいのでしょうか。
 言い方を変えると、いつまでループを続けるのかということです。
 それは、レコードセットが終わるまでということになるわけですが、
ループ化のところだけをコード化すると、

Do Until rs.EOF = True
  (ここにループ各回で処理するコードを書く)
Loop

というコードを書くことになります。
・ツリー全体表示

【13024】Re:レポートの分割
発言  ゆう  - 16/6/1(水) 16:25 -

引用なし
パスワード
   かるびの さんレスありがとうございます。
返信が遅くなり申し訳ございません。

現在のレポートは、全ての個人法人データが出力される形になっていて、個人・法人ID別にページが分かれている状態です。

数がかなり多いのでVBAでLOOP処理できればと思っています。


▼かるびの さん:
> 現状は、
>
>レポートには、全ての個人法人のデータが出力される、
>それらは「個人・法人ID」フィールドの値によりグループされている
>
>ということでしょうか。
> そして、そのレポートを、「個人・法人ID」が異なれば、異なるPDFファイルに出力したい
>ということでしょうか。
>
>
> 1通のレポートを分割して、PDFファイルに出力することはできません。
> なので、
>「個人・法人ID」ごとに異なるレポートを作り、このレポートをPDFファイルに出力する
>という方法になると思います。
>
> この過程を一々手動で行うのが面倒であれば、VBAによりループ処理を使って自動化するということになると思います。
・ツリー全体表示

【13023】Re:サブレポートの固定行で改ページしたい
お礼  さいたまのチーバ君  - 16/5/31(火) 17:43 -

引用なし
パスワード
   かるびの様

改ページの情報ありがとうございます。
本日は作業時間が取れませんでした。

次回に私の対応内容とその結果について
記載させていただきます。

まずはお礼を申し上げます。


▼かるびの さん:
> とりあえずですが、こんなページがありました。
>
>ht tp://www.accessclub.jp/bbs3/0088/superbeg31419.html
・ツリー全体表示

【13022】Re:サブレポートの固定行で改ページしたい
回答  かるびの  - 16/5/30(月) 21:54 -

引用なし
パスワード
    とりあえずですが、こんなページがありました。

ht tp://www.accessclub.jp/bbs3/0088/superbeg31419.html
・ツリー全体表示

【13021】サブレポートの固定行で改ページしたい
質問  さいたまのチーバ君  - 16/5/30(月) 17:07 -

引用なし
パスワード
   提題について質問させて頂きます。

現在、納品書と受領書を1ページで
表現する帳票を作成しております。

帳票のサブレポート(以下、SR)を1つ作成し
納品対象の商品一覧を表現しております。

アクセスのデザインの詳細部分に

納品書分のSRと受領書のSRを
縦に並べて作成しております。

ここまでは実現できているのですが

表示行数に限界があるので5行等
固定行数で改ページを実施したいです。

この方法が実現できません。

どうぞ、ご教授ください。

お恥ずかしいのですが
私が主にアクセスを触っていた時期は
ACCESS2003以前です。察して頂けるとありがたいです。
・ツリー全体表示

【13020】複数の抽出条件
質問  TAKA  - 16/5/28(土) 19:27 -

引用なし
パスワード
   accessは初心者でわからないことばかりなんですが、access2007を使ってます。
仕事でラベル作成用に使用しているデータなのですが、フォーム上のテキスト入力でコードを入力してデータを呼び出します。
構成としてはI_品目番号、I_色番号、I_条長番号と順に入力しています。
各テーブルはT_品目情報、T_カラー、T_条長となっており、クエリのQ_ラベルにて抽出条件をそれぞれ次のようにしています。
Left(([Forms]![F_ラベル]![入力コード]),8)  Mid(([Forms]![F_ラベル]![入力コード]),9,4)  Right(([Forms]![F_ラベル]![入力コード]),2)

今回会社のシステムの変更により製品の品目番号のみが全く違う番号に変わってしまうため、このままでは使えなくなるので変更が必要になりました。
そこでT_品目情報に新たにAX番号というフィールドを追加し、AX番号、I_色番号、I_条長番号と入力して呼び出せるようにしたいと思ってます。
しばらくはどちらでも呼び出せるようにしたいため、同じフォームに新しいコードも入力できるように新たに追加して作ってみたのですが抽出条件が悪いのか、そのフォームを開くと応答不能になりかなり時間がかかってしまします。
復帰して新しいコードを入力してみると一応呼び出しはできたのですがこれでは使えません。
抽出条件条件の次の列(2列目)に新しいコードの条件をすべて入力しました。
上の[入力コード]の部分を[AX]というテキストを指定しています。
この方法ではだめなのでしょうか?

情報不足かもしれませんがアドバイス等ありましたらよろしくお願いします。
・ツリー全体表示

【13019】Re:レポートの分割
回答  かるびの  - 16/5/27(金) 13:00 -

引用なし
パスワード
    現状は、

レポートには、全ての個人法人のデータが出力される、
それらは「個人・法人ID」フィールドの値によりグループされている

ということでしょうか。
 そして、そのレポートを、「個人・法人ID」が異なれば、異なるPDFファイルに出力したい
ということでしょうか。


 1通のレポートを分割して、PDFファイルに出力することはできません。
 なので、
「個人・法人ID」ごとに異なるレポートを作り、このレポートをPDFファイルに出力する
という方法になると思います。

 この過程を一々手動で行うのが面倒であれば、VBAによりループ処理を使って自動化するということになると思います。
・ツリー全体表示

【13018】レポートの分割
質問  ゆう  - 16/5/26(木) 16:59 -

引用なし
パスワード
   Accessでレポートを作成して紙で印刷をして配布しているのですが、
PDFに出力してファイルを作成したいと考えています。

元々のVBAは下記のとおりです。
パターン別に出力するレポートが違っていてレポートは、個人・法人IDで
グループ化して個人毎、法人毎に明細書が出るようになっています。
また、全てのレポートは共通のQ_データ一覧と言うクエリーからデータを
参照しています。
PDF作成の際にこのグループ化されている個人・法人ID毎に分割してそれぞれの
IDが付いたPDFに出力したいと思います。

どなたかご教示ください。
よろしくお願い致します。


Private Sub 印刷_Click()
On Error GoTo Err_印刷_Click

  If data_chk Then
    Select Case Me![振込先区分]
      Case "1" '口座振込み
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "個人実績明細", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_012", acViewNormal, , wk_where
        End If
      Case "2" 'カード返金
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "個人実績明細(カード)", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_022", acViewNormal, , wk_where
        End If
      Case "4" '法人
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "法人実績明細", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_032", acViewNormal, , wk_where
        End If
      Case "HM" 'A社
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "個人実績明細", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_012", acViewNormal, , wk_where
        End If
      Case "SW" 'B社
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "個人実績明細", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_012", acViewNormal, , wk_where
        End If
      Case "SG" 'C社
        If Me![種別内容] = "実績" Then
         DoCmd.OpenReport "個人実績明細", acViewNormal, , wk_where
        Else '登録
         DoCmd.OpenReport "D302R_012", acViewNormal, , wk_where
        End If
    End Select
  End If
  Exit Sub

Err_印刷_Click:
  MsgBox err.Description

End Sub
・ツリー全体表示

【13017】Re:レポートをPDFに変換
お礼  コウジ E-MAIL  - 16/5/20(金) 10:41 -

引用なし
パスワード
   ▼かるびの さん:
> こんなページがありました。
>
>T's Ware
>レポートをPDFファイルに簡単に出力する方法
>ht tp://tsware.jp/tips/tips_522.htm

かるびのさんありがとうございました。
・ツリー全体表示

【13016】ありがとうございました
お礼  ゆきえ  - 16/5/19(木) 17:48 -

引用なし
パスワード
   亀マスター さんへ

亀マスターさんのとおりにできました。

どうもありがとうございます。!(^^)!
・ツリー全体表示

【13015】Re:レポートをPDFに変換
回答  かるびの  - 16/5/19(木) 0:33 -

引用なし
パスワード
    こんなページがありました。

T's Ware
レポートをPDFファイルに簡単に出力する方法
ht tp://tsware.jp/tips/tips_522.htm
・ツリー全体表示

【13014】Re:レポートの作成(助けてください)
回答  亀マスター  - 16/5/18(水) 23:16 -

引用なし
パスワード
   基本的なAccessの使い方があまりよくわからないということでしょうか。

このようなレポートを出したいのであれば、元になるクエリは複数に分ける方が良いです。
具体的には、

・顧客テーブル(顧客ID、顧客名、出資金)
・口座テーブル(口座番号、顧客ID)
・普通預金テーブル(ID、口座番号、金額、満期日)
・手形テーブル(ID、口座番号、金額、期限)
・普通預金クエリ(ID、口座番号、金額、満期日、顧客ID)
・手形クエリ(ID、口座番号、金額、期限、顧客ID)

のようなテーブルとクエリを作り、普通預金クエリや手形クエリを元に帳票レポートを作成。

顧客テーブルを元にしたメインレポートを作成し、テキストボックスに顧客IDと出資金を配置。

メインレポートの中ににサブレポートとして普通預金などのレポートを挿入。

挿入したレポートのフィルタに、顧客ID=メインレポート.顧客IDのように指定。

顧客ごとに1枚のレポートを出したいなら、メインレポートの詳細セクションの改ページプロパティで「カレントセクションの後」に設定。

以上で大体お望みのものができるかと思います。
・ツリー全体表示

【13013】レポートの作成(助けてください)
質問  ゆきえ  - 16/5/18(水) 17:59 -

引用なし
パスワード
   みなさん、初めまして。
とても困っています。
どなたか助けてください(-_-;)

下記Iのようなレポートを作成したいのですが、作成方法を教えて頂きませんでしょうか。

I.作成したいレポートの形式(顧客番号を含め、1〜3を1枚の用紙に印字)


顧客番号:111

1.出資金 200円

2.預金
 (1)普通預金
     口座番号   残高     
      B     100

 (2)定期
     口座番号   満期日   残高
      C    2016/10/1   200
      D    2017/8/2   500    

 3.融資
 (1)手形
     口座番号  商品名  取引期限  貸付残高
      E    ローン  2020/3/1   1000
 (2)証書
     口座番号  商品名  取引期限  貸付残高
      F    住宅   2025/7/1  5000 


II.補足
1.レポートのもとになるクエリは1つで以下の構成になっています。

 顧客番号 区分 科目 口座番号  残高  満期日  商品名  取引期限 
  111    1  出資  A    200   NULL   NULL   NULL
  111    2  普通  B    100   NULL   NULL   NULL
  111    3  定期  C    200  2016/10/1  NULL   NULL
  111    3  定期  D    500  2017/8/2  NULL   NULL
  111    4  手貸  E   1000   NULL   ローン  2020/3/1
  111    5  証貸  F   5000   NULL   住宅   2025/7/1    222    1  出資  G    500   NULL   NULL   NULL
  222    2  普通  H    100   NULL   NULL   NULL
  222    2  普通  I    300   NULL   NULL   NULL
  222    5  証貸  J    8000   NULL   教育   2023/4/3
  
2.上記1.の顧客番号222のように、定期や手貸等がない場合もあり、
  顧客ごとに保有している科目は異なります。

3.レポートの「1出資金」「2預金」「3融資」はテキストボックスで作成します。


分かりずらい部分もあると思いますが、どうか助けてください。
・ツリー全体表示

【13012】レポートをPDFに変換
質問  コウジ E-MAIL  - 16/5/17(火) 8:56 -

引用なし
パスワード
   レポート画面にボタンを付けてそのボタンを押すと、ディスクトップに作っておいたフォルダにPDFに変換したレポートが格納される。このようにボタンにマクロを組みたいのですが宜しくお願い致します。
・ツリー全体表示

【13011】Re:条件により背景色を変えたい
回答  かるびの  - 16/5/10(火) 17:12 -

引用なし
パスワード
    「会員名簿」フォームが帳票フォームなのか、データシートなのかわかりませんが、
いずれにしても、当該フォームをフォーム・ビューで開くと、「性別」コントロールが複数存在するように見えます。
 しかし、「性別」コントロールのプロパティを変更すると、
それら複数あるように見えるコントロールの全てについて、新プロパティ値が適用されてしまいます。

 これについての説明として、
「性別」コントロールは1個しかない、
そのことは当該フォームをデザインビューで開いてみればわかるはずである、
「性別」コントロールが1個しかない以上、レコードごとに異なったプロパティの値を設定することはできない
などという説明がなされます。

 いずれにしても、「男女の区別なくすべてがピンク色になってしまいました。」という事態は
仕様であり、直接の対処方法はありません。


 レコードごとに異なる背景色を設定したければ、
「性別」コントロールに条件付き書式を設定してください。
・ツリー全体表示

【13010】条件により背景色を変えたい
質問  takeo  - 16/5/10(火) 12:07 -

引用なし
パスワード
   「会員名簿」フォームの「性別」欄に男、女が記載されています。
女に対しては背景色をピンク、男に対しては白に設定しようとして次のマクロ文を作成しました。マクロを実行すると、男女の区別なくすべてがピンク色になってしまいました。「マクロの中止」アクションをとり除いても同じ結果となります。
このマクロ文のどこに欠点があるのかわかりません。欠点をご指摘ください。よろしくお願いします。Accessのバージョンは2016です。
アクション    引数    設定値            
If            [性別]="女"            
値の代入       アイテム    [Forms]![会員名簿]![性別].[BackColor]        
       式     16744703            
マクロの中止                    
値の代入   アイテム    [Forms]![会員名簿]![性別].[BackColor]        
       式        16777215
・ツリー全体表示

【13009】Re:ファイル取り込み
お礼  M・A・D  - 16/5/9(月) 22:45 -

引用なし
パスワード
   忠告ありがとうございます。
レスがついているものは削除できないみたいですね、以後注意します。

修正結果を言わせてもらうと。適当なテーブルを追加した結果、無事エラーなく動きました。ありがとうございました。
・ツリー全体表示

【13008】Re:ファイル取り込み
回答  亀マスター  - 16/5/9(月) 0:27 -

引用なし
パスワード
   > 何か適当な同名のテーブルを作成後、今まで通り実行すると、正常なプログラムの流れに戻ってエラーがなくなるということでよろしいでしょうか?
そういうことです。

>ちなみに、ここでいうテーブル作成というのはプログラム自体に1行何か追加するということでしょうか
プログラムを編集するのではなく、手動でテーブルを作成するということです。

※念のため、以下の操作をする前にコピーをとっておいた方が良いかも。
問題のAccessファイルをシフトキーを押しながらダブルクリックして開いて(シフトキーはなしでも問題ないかもしれませんが、起動時に何かのプログラムが自動で動くのを防ぐためにしています)、上の方にあると思われる「作成」→「テーブル」(Accessのバージョンによって多少違うかもしれません)とすると空っぽのテーブルができますので、上書き保存して、テーブルの名前を「T_Sample&POP」としてみてください。

>真ん中より少し上のほうに「On Error GoTo Error1」ってのもありますが、これも含めてすべて消すということでしょうか?
「On Error GoTo Error1」を含む部分はエクセルデータの取り込みとは関係ないようですので、そこは放置でいいでしょう。
あと、この方法はエラーの箇所を特定するためにやっているだけで、特定後は元に戻さないといけないので、その辺がややこしいと感じるなら、エラー特定用のファイルは別にコピーしたものを使う方が良いでしょう。
ちなみに、On Error GoTo ○○というのは、この行以降でエラーが起こった場合、プログラムを中断せずに○○というタグを付けたところ(大抵はプログラムの下の方にあります)に行けという命令です。

ところで、示していただいたプログラム中に、あなたが所属する組織の名前を示すのではないかと思われる箇所があります。また、パソコン名を示すと思われる部分もありますので、見る人が見れば特定されてしまいますよ。こういう掲示板に投稿する際はご注意を。(構わないのならいいですが)
・ツリー全体表示

15 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078198
(SS)C-BOARD v3.8 is Free