Access VBA質問箱 IV

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

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


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

【6616】Re:複数のフィールドを一つに格納
回答  Gin_II  - 05/10/26(水) 14:17 -

引用なし
パスワード
   >これはどこに入れるものなんですか???
クエリのフィールド欄に入れてください。(1行で)

>そして■と□にはどんな要素を入れるんですか???
そのままでもいいですし、○ × のように入れてもらっても構いません。


>なによりも検索を簡単にしようと思いまして、検索フォームは入力フォームと
>同じ形にして、空欄があっても検索できるようにしたいのです。
検索(抽出)の作り方次第です。
レコードソースに各曜日ごとのフィールドも含めてあれば、検索には
支障がないかも。
・ツリー全体表示

【6615】Re:複数のフィールドを一つに格納
質問    - 05/10/26(水) 14:14 -

引用なし
パスワード
   ▼Gin_II さん:何度もすみません。

>
>IIF([月],"■","□") & " " &
>IIF([火],"■","□") & " " &
>IIF([水],"■","□") & " " &
>IIF([木],"■","□") & " " &
>IIF([金],"■","□") & " " &
>IIF([土],"■","□") & " " &
>IIF([日],"■","□") & " " &
>IIF([祝],"■","□")
>
>上記のようにすれば同じフィールド内で表示させることはできますよ。
>
これはどこに入れるものなんですか???
そして■と□にはどんな要素を入れるんですか???
>
>今のテーブル構成でも検索はしにくいような気がします。
>Access向きの構成としては、
>
>テーブル:出勤可否
> フィールド:ID
>       出勤可能曜日
>
>とかのようにした方がいいのかも。
>(全体構成がよく分かりませんので、参考程度に。)

なによりも検索を簡単にしようと思いまして、検索フォームは入力フォームと同じ形にして、空欄があっても検索できるようにしたいのです。


説明の説明を求めてしまってすみません。
・ツリー全体表示

【6614】Re:OnErrorについて
お礼  新米  - 05/10/26(水) 13:46 -

引用なし
パスワード
   小僧さん、回答ありがとうございます。
設定したら、無事うまくいきました!

どこかに設定があるのか?
と思って探してみましたが、自分ではわかりませんでした。

回答していただいて、本当にありがとうございました。
・ツリー全体表示

【6613】Re:複数のフィールドを一つに格納
回答  Gin_II  - 05/10/26(水) 13:21 -

引用なし
パスワード
   >テーブル(かクエリ)に、「出勤可能日」というフィールドを作ります。
>そこに値を集結できたらいいなあと思っています。

IIF([月],"■","□") & " " &
IIF([火],"■","□") & " " &
IIF([水],"■","□") & " " &
IIF([木],"■","□") & " " &
IIF([金],"■","□") & " " &
IIF([土],"■","□") & " " &
IIF([日],"■","□") & " " &
IIF([祝],"■","□")

上記のようにすれば同じフィールド内で表示させることはできますよ。


>あ、でもそうすると検索するときに大変になってしまうのでしょうか。

今のテーブル構成でも検索はしにくいような気がします。
Access向きの構成としては、

テーブル:出勤可否
 フィールド:ID
       出勤可能曜日

とかのようにした方がいいのかも。
(全体構成がよく分かりませんので、参考程度に。)
・ツリー全体表示

【6612】Re:リストボックスが、次のレコードで同じ...
発言    - 05/10/26(水) 13:11 -

引用なし
パスワード
   >とりあえずヘルプで、
>ItemsSelected プロパティ
>あたりを確認してください。使用例ものっていますので。

わかりました!とりあえず見てみます♪
またわからないことがありましたら、ここに書いてみます。

ひとまずありがとうございました!
・ツリー全体表示

【6611】Re:複数のフィールドを一つに格納
質問    - 05/10/26(水) 13:09 -

引用なし
パスワード
   >
>どのように表示したいのでしょうか?
>Yes/No型だと、True、False の情報しかもっていませんので、複数のフィールドを
>連結して表示する場合に、どのように表示させたいのかを提示してください。

テーブル(かクエリ)に、「出勤可能日」というフィールドを作ります。
そこに値を集結できたらいいなあと思っています。

あ、でもそうすると検索するときに大変になってしまうのでしょうか。
・ツリー全体表示

【6610】Re:OnErrorについて
発言  小僧  - 05/10/26(水) 13:04 -

引用なし
パスワード
   ▼新米 さん:
こんにちは。

コードの詳細の前にまず確認です。

コードが表示されている画面で、ツールバーの

[ツール] → [全般]タブ → [エラートラップ]

の設定は大丈夫でしょうか。

「エラー発生時に中断」でしたら、「エラー対象外の…」に変更をしてみて下さい。
・ツリー全体表示

【6609】OnErrorについて
質問  新米  - 05/10/26(水) 12:19 -

引用なし
パスワード
   初めて投稿させていただきます。
Access初心者です。

以下の処理を実行時に意図的にエラーとなるようにしたの
ですが、実行時エラー(OnError)にとびません。
なぜでしょうか・・・?

  On Error GoTo ErrHandler

  '保存ダイアログ出力後クエリ実行→エクセル表示
  DoCmd.OutputTo acQuery, strBuff, acFormatXLS, , True
  
Error_Exit:
  'DAO開放
  mdb.Close: Set rst = Nothing: Set mqe = Nothing: Set mdb = Nothing
  Exit Sub
ErrHandler:
  Select Case Err.Number
    Case 2302
      MsgBox "同名の Excelファイルが開いています。" & _
          "閉じてから再度実行してください。 ", vbOKOnly
    Case 2501  ' キャンセル
      MsgBox "処理を中止します。", vbOKOnly
    Case Else
      MsgBox Err.Description
      Exit Sub
  End Select
  Resume Error_Exit
End Sub
・ツリー全体表示

【6608】Re:複数のフィールドを一つに格納
回答  Gin_II  - 05/10/26(水) 11:56 -

引用なし
パスワード
   >月、火、水、木、金、土、日、祝
>
>というフィールドがあります。
>チェックボックスでひとつひとつ作ってあります。
>
>これを、テーブルかクエリ(どっちで作ればよいかわからないんですけど)の
>一つのフィールドにまとめたいのです。

どのように表示したいのでしょうか?
Yes/No型だと、True、False の情報しかもっていませんので、複数のフィールドを
連結して表示する場合に、どのように表示させたいのかを提示してください。
・ツリー全体表示

【6607】Re:リストボックスが、次のレコードで同じ...
回答  Gin_II  - 05/10/26(水) 11:54 -

引用なし
パスワード
   >リストボックスのデータ(複数選択)をひとつのフィールドに納めるのは難しい、
>ときいたのですが、それと関係あるのかなあ、と思っています。

これです。
複数選択プロパティを使った場合、通常の方法では値の取得ができません。

値の取得・連結コントロールへの代入をすべてVBAを使ってやる必要があります。

とりあえずヘルプで、
ItemsSelected プロパティ
あたりを確認してください。使用例ものっていますので。
・ツリー全体表示

【6606】複数のフィールドを一つに格納
質問    - 05/10/26(水) 10:08 -

引用なし
パスワード
   複数のフィールドのデータを、ひとつにまとめたいのですが、どうしたらいいか教えてください。

月、火、水、木、金、土、日、祝

というフィールドがあります。
チェックボックスでひとつひとつ作ってあります。

これを、テーブルかクエリ(どっちで作ればよいかわからないんですけど)の一つのフィールドにまとめたいのです。

よろしくお願いします(>_<)
・ツリー全体表示

【6605】Re:レコード数を制御して、Excelへ吐き出し
発言  小僧  - 05/10/26(水) 9:46 -

引用なし
パスワード
   ▼Saiyama さん:
おはようございます。

>Excel側の制御方法は運用の面では、難しいようです。

前回の説明で誤解があったようですが、

>>Excel 側で操作をしてみました。

Access から Excel を制御しExcel の命令を Access から発行させました。

という意味なのですが、
それでも運用上無理があるという事でしょうか。

提示したコードはもちろん Access に記述するコードですよ。
・ツリー全体表示

【6604】Re:リストボックスが、次のレコードで同じ...
質問  初心者  - 05/10/26(水) 9:38 -

引用なし
パスワード
   >職種(大)・職種(小) というフィールド名があって、各リストボックスの
>コントロールソースプロパティに指定されているということでしょうか?
>
そうみたいです。

>> リストボックスを作ったのですが、次のレコードにいっても同じところを示しています。
>
職種(大)コンボで職種(小)リストボックスの選択肢を絞るようにしてあるのですが、選択した項目が(色が反転している)、フォームで入力しようとするときに次のレコードに移っても、同じものがあらかじめ選択されてるかんじです。


>テーブルのデータは、リストボックスを変更した後でも変わっていないのでしょうか?

テーブルのデータは白い(空白の)ままです。


遅くなってしまい、すみません。
リストボックスのデータ(複数選択)をひとつのフィールドに納めるのは難しい、ときいたのですが、それと関係あるのかなあ、と思っています。
・ツリー全体表示

【6603】Re:データがなくても罫線を引く・・・を引...
発言  小僧  - 05/10/26(水) 9:38 -

引用なし
パスワード
   ▼koorin さん:
おはようございます。

>教えていただいた通りにやってみたのですが、

すみません。こちらの考慮不足だったようです。


>見積詳細が17行になったら改ページするように設定してありますが、
>見積書の2ページ以降はヘッダが無いので、
>見積詳細が25行になるまで罫線を引いて改ページしたい


koorin さんのご要望を言い換えますと、
17行
42行
67行



で改行されたい、という事ですよね?現在は

17 で割って余りが 0 なら改行

となっているロジックを少し変更すると道が開けてくるような気がしませんでしょうか。
・ツリー全体表示

【6602】Re:フォームの背景色を変えるには
お礼  にしもり  - 05/10/26(水) 8:30 -

引用なし
パスワード
   ▼Gin_II さん:
背景色ですね。やってみます。
どうもありがとうございました。
・ツリー全体表示

【6601】Re:レコード数を制御して、Excelへ吐き出し
質問  Saiyama  - 05/10/26(水) 7:42 -

引用なし
パスワード
   小僧さん
Gin_IIさん
 お早うございます。
 早速返事をいただき、ありがとうございます。
 Excel側の制御方法は運用の面では、難しいようです。
 やはりAccess側に制御をかけたいです。困難でしょうか?
 ご伝授ください。
・ツリー全体表示

【6600】Re:レコード数のカウントについて
回答  Gin_II  - 05/10/26(水) 0:06 -

引用なし
パスワード
   >ここでお聞きしたいのですが、チェックボックスにチェックが入ってないレコードの
>数だけカウントし、フォームフッターに配置したテキストボックスに表示したい

=Sum(IIF([フィールド名],0,1))
をサブフォームのフォームフッター等に入れて、そのテキストボックスを
メイン側のフォームから参照しては?
・ツリー全体表示

【6599】レコード数のカウントについて
質問  ヨシ  - 05/10/25(火) 23:05 -

引用なし
パスワード
   アクセス2003を使用してます。
親子フォームでできているフォームがあります。
サブのフォームのレコードには商品ID、商品名、単価、チェックボックスを配置しています。
ここでお聞きしたいのですが、チェックボックスにチェックが入ってないレコードの数だけカウントし、フォームフッターに配置したテキストボックスに表示したいのですがどのようにすれば宜しいのでしょうか。
・ツリー全体表示

【6598】Re:データがなくても罫線を引く・・・を引...
質問  koorin  - 05/10/25(火) 18:05 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

>Private Sub 詳細_Format
>…
>
>の最後の Else の部分に
>  Me![以下余白ラベル].Visible = True
>
>と記述。
>これでレコードがない場合は最後まで「以下余白」が表示されます。

教えていただいた通りにやってみたのですが、品名の入っているところにも以下余白の字が表示されてしまったので、(可視を「いいえ」にしましたが・・・)
最後のElse部分だけでなく、他の条件のところにも以下余白のラベルをFalseで記述することにより、回避でき思い通りになりました。
ありがとうございましたm(__)m

出来あがりのコードは次の通りです。(ラベル78が以下余白ラベルです)

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_見積書発行用")
End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
AAA = AAA + 1

If AAA Mod 17 = 0 Then
  If AAA < BBB Then
    Me!改ページ30.Visible = True
    Me.Section(3).Visible = True
  ElseIf AAA = BBB Then
    Me!品番.Visible = True
    Me!品名.Visible = True
    Me!注文数量.Visible = True
    Me!単位.Visible = True
    Me!売上単価.Visible = True
    Me!テキスト72.Visible = True
    Me!ラベル78.Visible = False
  Else
    If AAA = BBB + 1 Then
      Me!品番.Visible = False
      Me!品名.Visible = False
      Me!注文数量.Visible = False
      Me!単位.Visible = False
      Me!売上単価.Visible = False
      Me!テキスト72.Visible = False
      Me!ラベル78.Visible = True
    Else
      Me!品番.Visible = False
      Me!品名.Visible = False
      Me!注文数量.Visible = False
      Me!単位.Visible = False
      Me!売上単価.Visible = False
      Me!テキスト72.Visible = False
      Me!ラベル78.Visible = False
    End If
  End If
  
Else
  Me!改ページ30.Visible = False
  Me.Section(3).Visible = False
  If AAA < BBB Then
    Me.NextRecord = True
    Me!品番.Visible = True
    Me!品名.Visible = True
    Me!注文数量.Visible = True
    Me!単位.Visible = True
    Me!売上単価.Visible = True
    Me!テキスト72.Visible = True
    Me!ラベル78.Visible = False
  ElseIf AAA = BBB Then
    Me.NextRecord = False
    Me!品番.Visible = True
    Me!品名.Visible = True
    Me!注文数量.Visible = True
    Me!単位.Visible = True
    Me!売上単価.Visible = True
    Me!テキスト72.Visible = True
    Me!ラベル78.Visible = False
  Else
    If AAA = BBB + 1 Then
      Me.NextRecord = False
      Me!品番.Visible = False
      Me!品名.Visible = False
      Me!注文数量.Visible = False
      Me!単位.Visible = False
      Me!売上単価.Visible = False
      Me!テキスト72.Visible = False
      Me!ラベル78.Visible = True
    Else
      Me.NextRecord = False
      Me!品番.Visible = False
      Me!品名.Visible = False
      Me!注文数量.Visible = False
      Me!単位.Visible = False
      Me!売上単価.Visible = False
      Me!テキスト72.Visible = False
      Me!ラベル78.Visible = False
    End If
  End If
End If
End Sub

それで・・・次々にすみませんが、あともうひとつだけ教えてください。
コードをご覧になってわかると思いますが、今見積詳細が17行になったら
改ページするように設定してありますが、見積書の2ページ以降はヘッダが無いので、見積詳細が25行になるまで罫線を引いて改ページしたいのです。
どんな条件を加えればよいのでしょうか?

よろしくお願いします。
(追伸:先日ご相談したVBAの本ですが、ニキータさんの本を店頭でみつけたので
購入しました。)
・ツリー全体表示

【6597】Re:レコード数を制御して、Excelへ吐き出し
回答  小僧  - 05/10/25(火) 17:51 -

引用なし
パスワード
   ▼Saiyama さん、Gin_II さん:
こんばんは。

Excel 側で操作をしてみました。

Sub 標題を20行毎にExcelに主力()
'要参照 Microsoft DAO x.x Object Library
Dim xlsApp As Object
Dim xlsWkb As Object
Dim xlsSht As Object
Dim xName As String
Dim RS As DAO.Recordset
Dim QName As String
Dim i As Long
Dim j As Long
Dim LastRow As Long
Const lngMaxRow As Long = 20

  xName = "C:\Test2.xls"
  
  On Error Resume Next
    Kill xName
  On Error GoTo 0

  QName = "クエリ名"
  LastRow = DCount("*", QName)
  
  Set RS = CurrentDb.OpenRecordset(QName, dbOpenSnapshot)

  Set xlsApp = CreateObject("Excel.Application")
  'xlsApp.Visible = True
  Set xlsWkb = xlsApp.Workbooks.Add
    With xlsWkb.Sheets("Sheet1")
      Do Until RS.EOF
        For i = 0 To RS.Fields.Count - 1
          .Cells(j * (lngMaxRow + 1) + 1, i + 1).Value = RS(i).Name
        Next
        .Cells(j * (lngMaxRow + 1) + 2, 1).CopyFromRecordset RS, lngMaxRow
        j = j + 1
      Loop

    End With
  RS.Close: Set RS = Nothing
  xlsWkb.SaveAs xName
  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
  MsgBox "エクスポート終了"
End Sub

ExcelVBA を使っていますので理解出来ない所もあるかとは思いますが、
解らない事がありましたら遠慮せずに質問なさって下さい。
・ツリー全体表示

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