Access VBA質問箱 IV

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

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


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

【9712】Re:配列変数の引き渡し方
お礼  メイ子  - 07/7/26(木) 18:20 -

引用なし
パスワード
   ▼hatena さん:
>フォームの Recorsetプロパティから、レコードセットを取得して、
>フィールドのTypeプロパティで取得できますが、
>サブフォームまで、考慮すると結構面倒なコードになりそうです。
>
>日付型と連結しているテキストボックスの Tag プロパティに
>目印を入れておくのがいいのでは。

できました!ありがとうございました。
Tagプロパティはとても便利に使えるのですね。
丁寧にいろいろお教え頂き大変助かりました。
またわからないことがありましたら、どうぞよろしくお願いいたします。
・ツリー全体表示

【9711】Re:テーブル間の差分について
回答  たん  - 07/7/26(木) 11:14 -

引用なし
パスワード
   # 間違えてメルアド開示してたので削除。

>お手数ですが、下記の件、
>どのようにしたらよいか
>検討がつかなくなってしまいました・・・

まず、自身で一つずつ整理すれば、判別できるはずですが、
1度にやろうとするから無理なのです。

で、結論から言えば、1個のクエリでは不可能です。
それぞれ(数量違い、品番違い、対象なし)を不一致クエリで
算出し、

1度に表示させたいなら、UNIONクエリ等で結合させることに
なります。

ヒント(というより、殆ど答え)
SELECT DISTINCTROW T1.F1, T1.F2, T1.F3, T1.F4, T1.F5
FROM T1 INNER JOIN T2 ON (T1.F3 = T2.F3) AND (T1.F2 = T2.F2) AND (T1.F1 = T2.F1)
WHERE (((([T1].[F4]=[T2].[F4]))=False));


>それぞれ(数量違い、品番違い、対象なし)を不一致クエリで

ここで言う不一致クエリというのは、ウィザードで生成するのとは
別物です。
(対象なしの算出は、ウィザードの不一致クエリで可能ですが。)

正確に言えば「比較すべきフィールドが不一致かどうかを判断するクエリ」と
いうことになります。

・ツリー全体表示

【9710】テーブル間の差分について
質問    - 07/7/26(木) 10:18 -

引用なし
パスワード
   VBA初心者です。
お手数ですが、下記の件、
どのようにしたらよいか
検討がつかなくなってしまいました・・・

どなたか、お分かりになる方がいらしたら、
よろしくお願いいたします・・・

フィールドが、同じテーブルA、Bがあります。
フィールド”SHEET”が同じレコードで、
フィールド”品番”
フィールド”数量”
が、異なるレコードのみと
一方のテーブルにのみ存在するレコードを
抽出させたいのですが、
よくわかりません・・・

一応、テーブルA、Bの内容と
抽出したいレコード内容を
下記に表記します・・・

【テーブルA】

SHEET ITEM 品番 名称   数量
A   1   Z50  りんご  2 
A   2   Z10  いちご  1
A   3   Z60  ぶどう  1
B   1   Y10  くり   2
B   3   Y30  やし   5

【テーブルB】

SHEET ITEM 品番 名称   数量
A   1   Z50  りんご  3 
A   2   Z20  もも   1
A   3   Z60  ぶどう  1
A   4   Z30  ばなな  2
B   1   Y10  くり   1
B   2   Y20  いも   3
B   3   Y30  やし   5

【抽出したいレコード】

SHEET ITEM 品番 名称   数量
A   1   Z50  りんご  2 ・・・テーブルAより(数量違い)
A   2   Z10  いちご  1 ・・・テーブルAより(品番違い)
B   1   Y10  くり   2 ・・・テーブルAより(数量違い)
A   1   Z50  りんご  3 ・・・テーブルBより(数量違い)
A   2   Z20  もも   1 ・・・テーブルBより(品番違い)
A   4   Z30  ばなな  2 ・・・テーブルBより(対象なし)
B   1   Y10  くり   1 ・・・テーブルBより(数量違い)
B   2   Y20  いも   3 ・・・テーブルBより(品番違い)
・ツリー全体表示

【9709】Re:配列変数の引き渡し方
回答  hatena  - 07/7/26(木) 9:51 -

引用なし
パスワード
   >後、もう一点お願いできますでしょうか?
>フォームの詳細欄に.onclickで日付入力をしたいのですが、フィールドが日付型でない場合には、エラー表示をしようと思い、フィールドの型を取得する方法をあちこち探してみましたが、わかりませんでした。

フォームの Recorsetプロパティから、レコードセットを取得して、
フィールドのTypeプロパティで取得できますが、
サブフォームまで、考慮すると結構面倒なコードになりそうです。

日付型と連結しているテキストボックスの Tag プロパティに
目印を入れておくのがいいのでは。
・ツリー全体表示

【9708】Re:配列変数の引き渡し方
質問  メイ子  - 07/7/25(水) 15:10 -

引用なし
パスワード
   ▼hatena さん:

>出席日 とは別の 日付 が入っていると言うことですね。
>ならば、別に検索して見つかれば、色を変更するコードを追加すれば
>いいのではないでしょうか。

ご教示ありがとうございます。同じelseの下に並列で書けばいいのですね。
大変勉強になりました。

後、もう一点お願いできますでしょうか?
フォームの詳細欄に.onclickで日付入力をしたいのですが、フィールドが日付型でない場合には、エラー表示をしようと思い、フィールドの型を取得する方法をあちこち探してみましたが、わかりませんでした。
度々申し訳ありませんが、ご教示よろしくお願いいたします。
・ツリー全体表示

【9707】Re:クエリーについて
回答  やっさん  - 07/7/24(火) 6:58 -

引用なし
パスワード
   >ID  番号
> 1   100
> 1   100

上の1と下の1を明確に区別できるフィールドが有れば可能です。
・ツリー全体表示

【9706】Re:配列変数の引き渡し方
回答  hatena  - 07/7/23(月) 15:31 -

引用なし
パスワード
   >「出席日」と同じく日付型で、「出欠」にチェックが入っていない場合(出席日に欠席した場合)に、「振替出席日」に日付を.onclickで入力する形になります。
>よろしくお願いいたします。

出席日 とは別の 日付 が入っていると言うことですね。
ならば、別に検索して見つかれば、色を変更するコードを追加すれば
いいのではないでしょうか。

Private Sub SetColor(y As Integer, m As Integer)
Dim i As Integer, j As Integer
Dim db As DAO.Database
Dim RS As DAO.Recordset
Dim strSQL As String
  strSQL = "SELECT * FROM 出欠 " & _
      "WHERE 出席日 Between #" & DateSerial(y, m + 0, 1) & _
      "# AND #" & DateSerial(y, m + 2, 0) & "#"
  Set db = CurrentDb()
  Set RS = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
  
  For j = -3 To 2
    For i = 1 To 42
      With Me(Chr(Asc("d") + j) & i)
        If .Tag = "" Then
          .BackColor = vbWhite
        Else
          RS.FindFirst "出席日=#" & .Tag & "#"
          If RS.NoMatch Then
            If WeekdayName(Weekday(.Tag)) = Me.曜日 Then
              .BackColor = vbMagenta
            Else
              .BackColor = vbWhite
            End If
          ElseIf RS!出欠 Then
            .BackColor = vbBlue
          Else
            .BackColor = vbRed
          End If
'-------------------追加
          RS.FindFirst "振替出席日=#" & .Tag & "#"
          If Not RS.NoMatch Then
            .BackColor = 65408 'お好みの色番号に
          End If
'--------------------
        End If
      End With
    Next
  Next
  RS.Close
End Sub
・ツリー全体表示

【9705】Re:配列変数の引き渡し方
質問  メイ子  - 07/7/23(月) 12:01 -

引用なし
パスワード
   ▼hatena さん:
ご回答ありがとうございます。何度もすみません。

>「振替出席日」情報はテーブルにはどのような形で格納されているのでしょうか。

「出席日」と同じく日付型で、「出欠」にチェックが入っていない場合(出席日に欠席した場合)に、「振替出席日」に日付を.onclickで入力する形になります。
よろしくお願いいたします。
・ツリー全体表示

【9704】Re:配列変数の引き渡し方
回答  hatena  - 07/7/21(土) 22:20 -

引用なし
パスワード
   >下記のコードに加えて、「出席日」だけでなく、「振替出席日」にも色変更を加えようと思います。

「振替出席日」情報はテーブルにはどのような形で格納されているのでしょうか。
・ツリー全体表示

【9703】Re:配列変数の引き渡し方
質問  メイ子  - 07/7/21(土) 12:23 -

引用なし
パスワード
   ▼hatena さん

度々誠に申し訳ありません。機能追加をすることにしました。
下記のコードに加えて、「出席日」だけでなく、「振替出席日」にも色変更を加えようと思います。いろいろやってみましたが、複数条件がある場合、最初の条件分岐のところではelseifにしないといけないと思い、
Elseif RS.FindFirst "出席日=#" & .Tag & "#")(1) & "#"
とすると構文エラーになります。

RS.FindFirst "振替出席日=#" & .Tag & "#")(1) & "#"
をあちこちの場所に入れ替えて試してみましたが、上手く行きません。
どこを変えたらよいでしょうか?
「振替出席日」のフィールドは「出席日」と同じ「出欠」テーブルの中にあります。

後、フォームの詳細欄に.onclickで日付入力をしたいのですが、フィールドが日付型でない場合には、エラー表示をしようと思い、フィールドの型を取得する方法をあちこち探してみましたが、わかりませんでした。
ご教示よろしくお願いいたします。


>Private Sub SetColor(y As Integer, m As Integer)
>Dim i As Integer, j As Integer
>Dim db As DAO.Database
>Dim RS As DAO.Recordset
>Dim strSQL As String
>  strSQL = "SELECT * FROM 出欠 " & _
>      "WHERE 生徒番号=" & Me.生徒番号 & " AND " & _
>      "出席日 Between #" & DateSerial(y, m + 0, 1) & _
>      "# AND #" & DateSerial(y, m + 2, 0) & "#"
>  Set db = CurrentDb()
>  Set RS = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
>  
>  For j = -3 To 2
>    For i = 1 To 42
>      With Me(Chr(Asc("d") + j) & i)
>        If .OnClick= "" Then
>          .BackColor = vbWhite
         Elseif RS.FindFirst "出席日=#" & .Tag & "#")(1) & "#" ←
>          If RS.NoMatch Then
>            If WeekdayName(Weekday(.Tag)) = Me.曜日 Then
>              .BackColor = vbMagenta
>            Else
>              .BackColor = vbWhite
>            End If
>          ElseIf RS!出欠 Then
>            .BackColor = vbBlue
>          Else
>            .BackColor = vbRed
>          End If
>        End If
>      End With
>    Next
>  Next
>  RS.Close
>End Sub
・ツリー全体表示

【9702】Re:「重複データ非表示」と「グループフッ...
回答  hatena  - 07/7/18(水) 23:28 -

引用なし
パスワード
   9698 で例示したようになるのですか。

ならば、あとは、会社名ヘッダー、事業所ヘッダー の各フォーマット時イベントで
最初に回答したイベントプロシージャを設定して、印字位置が移動しないようにすれば
いいと思います。

Me.MoveLayout = False
・ツリー全体表示

【9701】Re:「重複データ非表示」と「グループフッ...
質問  pinetree  - 07/7/18(水) 15:40 -

引用なし
パスワード
   ▼hatena さん:
>>会社名ヘッダーのところで「会社名」を表示させ、
>>事業所名ヘッダーのところに「事業所名」を表示させ、
>>詳細セクションに「担当者名」を表示させれば、
>>このような表示になりますが、詳細セクションに
>>会社名・事業所名・担当者を表示させると、
>>事業所が変わったところで会社名が表示されてしまいます。
>>事業所が変わっても会社名は変わらないので表示したくありません。
>
>詳細セクションには、会社名、事業者名 は配置する必要は
>ありません。

ご指導のとおりにすると、会社名ヘッダーで1行、事業所ヘッダーで1行増えて
しまいます。
会社名ヘッダー・事業所名ヘッダーでは区切りの罫線だけを引き
詳細セクションに
会社名、事業者名、担当者名を1行に表示するような形にして
なおかつ、重複データ非表示にしたいのですが、
・ツリー全体表示

【9700】Re:「重複データ非表示」と「グループフッ...
回答  hatena  - 07/7/18(水) 9:49 -

引用なし
パスワード
   >会社名ヘッダーのところで「会社名」を表示させ、
>事業所名ヘッダーのところに「事業所名」を表示させ、
>詳細セクションに「担当者名」を表示させれば、
>このような表示になりますが、詳細セクションに
>会社名・事業所名・担当者を表示させると、
>事業所が変わったところで会社名が表示されてしまいます。
>事業所が変わっても会社名は変わらないので表示したくありません。

詳細セクションには、会社名、事業者名 は配置する必要は
ありません。
・ツリー全体表示

【9699】Re:「重複データ非表示」と「グループフッ...
質問  pinetree  - 07/7/18(水) 9:43 -

引用なし
パスワード
   ▼hatena さん:
>>>>会社名  グループヘッダー0
>>>>事業所名 グループヘッダー1
>
>このようなデザインで、「重複データ非表示」は「いいえ」の
>状態で、各セクションのイベントプロシージャもなしで、
>レポートのプレビューでは、どのような表示になりますか。
>
>下記のようになりますか。
>
>NO    会社名    事業所名    担当者名
>     東北商事
>            本社
>1                    山田
>2                    佐藤
>            仙台支社
>3                    田中
>     北陸物産
>            本社
>4                    鈴木
>            金沢支店
>5                    安倍
>6                    塩崎

会社名ヘッダーのところで「会社名」を表示させ、
事業所名ヘッダーのところに「事業所名」を表示させ、
詳細セクションに「担当者名」を表示させれば、
このような表示になりますが、詳細セクションに
会社名・事業所名・担当者を表示させると、
事業所が変わったところで会社名が表示されてしまいます。
事業所が変わっても会社名は変わらないので表示したくありません。
・ツリー全体表示

【9698】Re:「重複データ非表示」と「グループフッ...
回答  hatena  - 07/7/13(金) 17:22 -

引用なし
パスワード
   >>>会社名  グループヘッダー0
>>>事業所名 グループヘッダー1

このようなデザインで、「重複データ非表示」は「いいえ」の
状態で、各セクションのイベントプロシージャもなしで、
レポートのプレビューでは、どのような表示になりますか。

下記のようになりますか。

NO    会社名    事業所名    担当者名
     東北商事
            本社
1                    山田
2                    佐藤
            仙台支社
3                    田中
     北陸物産
            本社
4                    鈴木
            金沢支店
5                    安倍
6                    塩崎
・ツリー全体表示

【9697】Re:「重複データ非表示」と「グループフッ...
質問  pinetree  - 07/7/13(金) 10:12 -

引用なし
パスワード
   ▼hatena さん:
>>会社名  グループヘッダー0
>>事業所名 グループヘッダー1
>>
>>で 事業所名ヘッダーを無くせば望みどおりになりますが
>
>では、事業所名ヘッダー を無くせばいいのでは。
>そうでないのなら、どうしたいのかもう少し具体的に
>説明してください。
>
>>事業所ヘッダーを「あり」にすると事業所が変わったところで、
>>会社名が表示てしまいます。
>
>会社名 が会社名グループヘッダーにあるのなら、そんな
>はずはないと思いますが。

事業所名は変わっても会社名は変わらないので
(会社名は重複データ非表示ということで)表示したくありません。
事業所名ヘッダーを「あり」にして、なおかつ重複している会社名は
表示したくありません。
(事業所ヘッダーを「あり」にすると事業所が変わったところで、上と同じ
会社名を表示てしまいます。)
・ツリー全体表示

【9696】Re:クエリのカウントの仕方
お礼  FM66447  - 07/7/13(金) 9:44 -

引用なし
パスワード
   Naoさん
hatenaさん
ご返事が遅れまして誠に申し訳ありませんでした。

Naoさんとhatenaさんの回答していた、

>都道府県別の人数の集計クエリと、
>都道府県別の支店数の集計クエリを別に作成して、
>T_都道府県 と上記の2つのクエリをリンクさせたクエリを
>作成すればどうでしょうか。
をこの二日ほど仕事の合間に格闘することやっとできました。

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

【9695】Re:「重複データ非表示」と「グループフッ...
回答  hatena  - 07/7/11(水) 17:58 -

引用なし
パスワード
   >会社名  グループヘッダー0
>事業所名 グループヘッダー1
>
>で 事業所名ヘッダーを無くせば望みどおりになりますが

では、事業所名ヘッダー を無くせばいいのでは。
そうでないのなら、どうしたいのかもう少し具体的に
説明してください。

>事業所ヘッダーを「あり」にすると事業所が変わったところで、
>会社名が表示てしまいます。

会社名 が会社名グループヘッダーにあるのなら、そんな
はずはないと思いますが。
・ツリー全体表示

【9694】Re:「重複データ非表示」と「グループフッ...
質問  pinetree  - 07/7/11(水) 17:16 -

引用なし
パスワード
   ▼hatena さん:
>>会社名ヘッダーのフォーマット時のイベントプロシージャを選択すると、
>>
>>Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
>>  Me.MoveLayout = False
>>End Sub
>>
>>ではなくて
>>
>>Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer)
>>  Me.MoveLayout = False
>>End Sub
>>
>>になります。
>
>私の間違いです。こちらの方でいいです。
>
>>詳細・グループヘッダー0 のいずれも 望みどおりの結果にはなりませんでした。
>
>どのような結果になりましたか。
>当方の実験では、うまくいってます。

早速ご教示いただきありがとうございました。

会社名  グループヘッダー0
事業所名 グループヘッダー1

で 事業所名ヘッダーを無くせば望みどおりになりますが
事業所ヘッダーを「あり」にすると事業所が変わったところで、
会社名が表示てしまいます。
・ツリー全体表示

【9693】Re:クエリのカウントの仕方
回答  hatena  - 07/7/11(水) 14:46 -

引用なし
パスワード
   ▼FM66447 さん:
>Accessで会員データの管理をしようと考えております。
>全国にいる会員の都道府県別に人数をクリエでカウントしているのですが、
>今度、全国の支店数も出すことになりました。
>イメージとしては、
>都道府県  会員数  支店数
>北海道    58    4
>青森県    27    8
>岩手県    5     2
>  ・     ・    ・
>  ・     ・    ・
>  ・     ・    ・
>
>としたいのですが、現在毎月送られてくるデータを下に
>集計を出しています。
>
>テーブルは「T_都道府県」「T_支店名」「T_会員データ」です
>「T_会員データ」には各会員一人一人の住所と支店が記入されており
>その住所をクリエでカウントして都道府県別、会員数は出せるのですが
>その都道府県のなかの支店数をどのようにして出せばいいのかわかりません。
>
>同じ数字をカウントすると、支店ごとに人数が出てしまい支店数を出すことができません。

都道府県別の人数の集計クエリと、
都道府県別の支店数の集計クエリを別に作成して、
T_都道府県 と上記の2つのクエリをリンクさせたクエリを
作成すればどうでしょうか。
・ツリー全体表示

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