Access VBA質問箱 IV

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

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


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

【12743】Re:フォームにレコードが表示されない
発言  まき  - 15/3/18(水) 14:04 -

引用なし
パスワード
   もう一度hatenaさんの最後のレスを読み返してみると

[取引先コード]
[請求書番号]

を主テーブル(発注テーブル)に入れられていますね
なぜ私はサブテーブルに入れているんだろう???
もしかしてこれが原因でしょうか・・・・?
・ツリー全体表示

【12742】Re:複数条件での抽出
質問  木葉  - 15/3/18(水) 14:02 -

引用なし
パスワード
   解除ボタン、作れました(他のサイトから引っ張ってきただけですが)。
ちょっと本題から脱線(?)したお話までお付き合いいただき、ありがとうございます!

滞っている最初に質問した内容に戻ります…。

それぞれの抽出するコード自体は書ききることができました。
今はまだそれぞれが孤立している状態で、
ここから条件をつなげていく方法が今ひとつわかりません…。

最初のご回答でおっしゃられていた、
> このstrFilterをそのままFilterプロパティに代入しても、エラーになりますよ。
> 「 AND 」が余計です。
>  複数条件を積み重ねていく場合は、この「 AND 」は不可欠なのですが、
> 先頭の「 AND 」は取り除く必要があります。

このことも、未だあまり理解できていません(ごめんなさい)。

分からないことだらけで申し訳ないのですが、
もうしばらくお付き合いいただけると嬉しいです。
宜しくお願いします。
・ツリー全体表示

【12741】Re:フォームにレコードが表示されない
発言  まき  - 15/3/18(水) 11:10 -

引用なし
パスワード
   ▼hatena さん:
レスありがとうございます
正規化ですか。なんかいろいろ根本的にわかってない気がしてきました

クエリ及びテーブルの構造は以下の通りです
よろしくお願いします

発注テーブルの構造

[ID]主キー
[発注ID]
[日付]

発注明細テーブルの構造
[発注明細ID]主キー
[ID]発注テーブルの主キーとリンク
[発注ID]
[製品コード]
[数量]
[取引先コード]
[処理済]
[請求書番号]

Q_クエリの構造

SELECT 発注明細テーブル.ID, 発注テーブル.発注ID, 発注テーブル.日付, 発注明細テーブル.製品コード, 製品マスタ.品名, 発注明細テーブル.数量, 発注明細テーブル.取引先コード, 発注明細テーブル.処理済, 発注明細テーブル.請求書番号
FROM 発注テーブル INNER JOIN (発注明細テーブル INNER JOIN 製品マスタ ON 発注明細テーブル.製品コード = 製品マスタ.製品コード) ON 発注テーブル.ID = 発注明細テーブル.ID;
・ツリー全体表示

【12740】Re:複数条件での抽出
発言  木葉  - 15/3/18(水) 9:56 -

引用なし
パスワード
   かるびの様
お返事ありがとうございます。

なるほど!そういうことでしたか!

>フィルタ解除のコマンドボタン・クリックのイベントでは、どのような処理をしていますか。

今のところは処理どころかボタンも作っておらず、
リボンのホームからフィルター解除を行っている次第です。

これではプロパティの設定は変わらないのですね…

ということは新たにフィルター解除用にコマンドボタンを作った方が
いいですよね。

>対策ですが、
>フィルタ解除か、txt発地都道府県内の文字を消去したタイミングで
>Filterプロパティに長さ0の文字列を設定すればいいでしょう。


一度作ってみます!
ご丁寧に説明していただきまして、ありがとうございます!
・ツリー全体表示

【12739】Re:複数条件での抽出
回答  かるびの  - 15/3/18(水) 1:15 -

引用なし
パスワード
   >次にフィールター解除(メニューのボタンから)を一度押し、
>「txt発地都道府県」に入れている文字(東京)を消してそのまま検索ボタンを押すと
>「東京」が抽出された状態になるのですが、
>この原因は何かご存知でしょうか?

 フィルタ解除のコマンドボタン・クリックのイベントでは、どのような処理をしていますか。
 おそらく、「Me.FilterOn = False」だけではないかと思います。

 1回目の検索で東京を検索すると、Filterプロパティには、「発地都道府県 Like '*東京*'」
という文字列が設定されます。
 この設定は、フォームを閉じるまで維持されます。
 txt発地都道府県の値をNullに変えたからといって、
Filterプロパティが自動的に再設定されることはありません。

 なので、Filterプロパティに新しい値を設定することなく、FilterOnプロパティをTrueにすれば、
Filterプロパティに設定されている「発地都道府県 Like '*東京*'」という条件式で
フィルタがかかるわけです。

 対策ですが、
フィルタ解除か、txt発地都道府県内の文字を消去したタイミングで
Filterプロパティに長さ0の文字列を設定すればいいでしょう。
・ツリー全体表示

【12738】Re:フォームにレコードが表示されない
回答  hatena  - 15/3/17(火) 18:15 -

引用なし
パスワード
   ▼まき さん:
>既存レコードの該当するデータを参照して更新するものです
>
>>コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
>>このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。
>
>具体的に言うと、取引会社から請求書が来たときに、該当レコードを呼び出して
>請求書番号を入力するのですが、
>同一発注ID=一枚の請求書となっているので同一発注IDのレコードは全て同じ請求書番号を持つことになります
>全てのレコードにどうやって入力?となるとアクションクエリとなりますが
>どれでもいいから該当発注IDのレコードを一つ呼び出して請求書番号を入力すれば、その発注IDを持つすべてのレコードに同じ請求書番号が入力される、という風にしたいです

この説明から、テーブルの設計が正規化されていないということが推測されます。
正規化されていたら、複数のレコードの請求書番号を更新するというような処理は発生しません。

とりあえず現状のクエリに含まれるテーブルの名前とフィールド構成を提示してもらえますか。

一般的なテーブル設計例

発注テーブル
 発注ID 主キー
 請求書番号
 取引会社CD
 発注日

発注明細
 発注明細ID 主キー
 発注ID 発注テーブルの主キーとリンク
 商品CD
 数量

このような設計になっていれば、発注テーブルの請求書番号を更新すればいいだけです。
・ツリー全体表示

【12737】Re:フォームにレコードが表示されない
発言  まき  - 15/3/17(火) 16:57 -

引用なし
パスワード
   すみません
必要かどうかわかりませんが補足します

どうして日付を表示したいかというと、ちゃんと正しいレコードが選ばれているか
確認したいためだけで日付フィールドの値を変更をすることはありません
・ツリー全体表示

【12736】Re:複数条件での抽出
質問  木葉  - 15/3/17(火) 16:25 -

引用なし
パスワード
   こんにちは
遅くなりまして…


おおまかにですが、基礎を勉強しなおしまして
1.に成功した次第です。

現在のコードは以下の通りです。

Private Sub cmdFilter_Click()

If Not IsNull(txt発地都道府県) Then
Me.Filter = "発地都道府県 Like '*" & txt発地都道府県.Value & "*'"
End If

End Sub

ここで疑問なのですが、
「txt発地都道府県」に何か文字(仮に東京とします)を入れて、検索ボタンを押しました。
ここまでは正常に作動しています。

次にフィールター解除(メニューのボタンから)を一度押し、
「txt発地都道府県」に入れている文字(東京)を消してそのまま検索ボタンを押すと
「東京」が抽出された状態になるのですが、
この原因は何かご存知でしょうか?

勝手な憶測ですが、一度VBAを作動させたら設定は内部的に記憶されたまま、フィルターを解除しても残り続けるとか…


希望としては、フィルター解除→テキストボックス内の文字を消去→再度検索ボタンを押すときには前に設定したものもクリアにしたいのですが、そういったことは可能でしょうか?
・ツリー全体表示

【12735】Re:フォームにレコードが表示されない
質問  まき  - 15/3/17(火) 15:31 -

引用なし
パスワード
   ▼hatena さん:
レスありがとうございます

>まずはこのフォームの目的はなんでしょうか。
>既存レコードの該当するデータを参照するものなのか、
>既存レコードの該当するデータを参照して更新するものなのか、
>新規データを入力することが目的なのか。

既存レコードの該当するデータを参照して更新するものです

>コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
>このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。

具体的に言うと、取引会社から請求書が来たときに、該当レコードを呼び出して
請求書番号を入力するのですが、
同一発注ID=一枚の請求書となっているので同一発注IDのレコードは全て同じ請求書番号を持つことになります
全てのレコードにどうやって入力?となるとアクションクエリとなりますが
どれでもいいから該当発注IDのレコードを一つ呼び出して請求書番号を入力すれば、その発注IDを持つすべてのレコードに同じ請求書番号が入力される、という風にしたいです

>また、日付発注ID はレコードソースのクエリにはありませんがどこから持ってくるのでしょうか。

作ってから、いらないと思って消したのですが、消し切れてませんでした
今はそのコントロールは存在しません
失礼いたしました

>後コンボボックスのコントロールソースは空白ですか。

空白です

よろしくお願いします
・ツリー全体表示

【12734】Re:フォームにレコードが表示されない
回答  hatena  - 15/3/17(火) 15:04 -

引用なし
パスワード
   >やりたいこと:発注IDのコンボボックスより、発注IDを選ぶと、[日付発注ID][日付]に該当レコードの値が出るようにしたい
>
>ところが、コントロールには何も表示されません

まずはこのフォームの目的はなんでしょうか。
既存レコードの該当するデータを参照するものなのか、
既存レコードの該当するデータを参照して更新するものなのか、
新規データを入力することが目的なのか。

さらには下記の点についても詳細を説明してください。

コンボボックスの値集合ソースを見ると、Q_クエリ.発注ID でグループ化しているので、発注ID はユニークではなく、同一発注IDのレコードが複数存在するということですね。
このフォームが単票フォームなら、複数のレコードのどのデータを表示するのでしょうか。

また、日付発注ID はレコードソースのクエリにはありませんがどこから持ってくるのでしょうか。

後コンボボックスのコントロールソースは空白ですか。
・ツリー全体表示

【12733】フォームにレコードが表示されない
質問  まき  - 15/3/17(火) 14:29 -

引用なし
パスワード
   こんにちは、また基本的なことを聞いてしまうかもしれませんがよろしくお願いします
下記のクエリをレコードソースに持つフォームがあります

SELECT Q_クエリ.ID, Q_クエリ.発注ID, Q_クエリ.日付, Q_クエリ.処理済
FROM Q_クエリ
WHERE (((Q_クエリ.処理済)=No))
ORDER BY Q_クエリ.発注ID, Q_クエリ.日付;

フォームの構造:、
発注ID:コンボボックス(値ソースが下記)

SELECT Q_クエリ.発注ID
FROM Q_クエリ
GROUP BY Q_クエリ.発注ID, Q_クエリ.処理済
HAVING (((Q_クエリ.処理済)=No))
ORDER BY Q_クエリ.発注ID;

日付発注ID:テキストボックス コントロールソースは[日付発注ID]
日付:テキストボックス コントロールソースは[日付]

やりたいこと:発注IDのコンボボックスより、発注IDを選ぶと、[日付発注ID][日付]に該当レコードの値が出るようにしたい

ところが、コントロールには何も表示されません

どこがおかしいのかご指示願えませんでしょうか?
・ツリー全体表示

【12732】Re:複数条件での抽出
発言  木葉  - 15/3/16(月) 16:34 -

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


お返事ありがとうございます。

疑問点ですが、確認しましたところ、
それぞれ「開始日」「終了日」となっていました。

ご指摘ありがとうございます。


本題についてですが、
あまりに自分が勉強不足であることが身に染みてわかってきましたので、
今一度勉強しなおしてきます…
せめて1.の分だけでも自力でやってみようと思います。

また質問ができ次第こちらに再度させていただきますので、
お時間ありましたらご回答いただけると嬉しいです。


> このstrFilterをそのままFilterプロパティに代入しても、エラーになりますよ。
>  「 AND 」が余計です。
>  複数条件を積み重ねていく場合は、この「 AND 」は不可欠なのですが、
> 先頭の「 AND 」は取り除く必要があります。

以上についても、今の知識では理解し難いため、今一度勉強させていただきます。

ご丁寧に回答いただき、ありがとうございました^^
・ツリー全体表示

【12731】ありがとうございます。
お礼  ゆか  - 15/3/16(月) 12:01 -

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

初心者で何もわからない私のために懇切丁寧にご指導とご回答をいただき、
ありがとうございます。お忙しい中、恐縮です。

早速教えていただいた様に、テーブル名を変更し、
フォームにコマンドを配置してやってみることにします。
コマンド自体がうまく作れるかは自信はありませんが、
一度熟考して挑戦してみます。

どうしてもわからなかった場合には再度質問させていただくかもしれませんが、
その際は何卒よろしくお願いいたします。
・ツリー全体表示

【12730】Re:複数条件での抽出
回答  かるびの  - 15/3/14(土) 0:46 -

引用なし
パスワード
    本題ではありませんが、疑問点を。
>>・txt日付(開始)
>>・txt日付(終了)

>>※()内はテキストボックスの「名前」には含まれていません。

 開始の日付を入力するテキストボックスの名前
及び終了の日付を入力するテキストボックスの名前はそれぞれ何なのでしょうか。
 上記の説明からすると、どちらも「txt日付」となってしまいますが、
コントロールに同じ名前が付けられるのは許容されないはずです。


 さて、本題です。
>>1.で試してみたコードは以下の通りですが、全く反応なしでした…
>>
>>Private Sub cmdFilter_Click()
>>  Dim strFilter As String
>>  
>>  If Not IsNull(Me.txt発地都道府県) Then
>>    strFilter = strFilter & " AND 発地都道府県 Like '*" & Me.txt発地都道府県 & "*'"
>>  End If
>>
>>End Sub

 反応がないのは、当たり前です。 
 Filterプロパティには何も値が設定されていないからです。
 「Me.Filter = ××」というコードを追加してください。  


>Me.FilterOn = True
>
>の文を追加したらフィルター自体はかかりましたが、
>何も抽出されませんでした…

 これも当然の結果です。
 Filterプロパティには何も値が設定されていないからです。


 ところで、
>>  If Not IsNull(Me.txt発地都道府県) Then
>>    strFilter = strFilter & " AND 発地都道府県 Like '*" & Me.txt発地都道府県 & "*'"
>>  End If
 このstrFilterをそのままFilterプロパティに代入しても、エラーになりますよ。
 「 AND 」が余計です。
 複数条件を積み重ねていく場合は、この「 AND 」は不可欠なのですが、
先頭の「 AND 」は取り除く必要があります。
 その方法は考えてありますか。
・ツリー全体表示

【12729】Re:複数条件での抽出
発言  木葉  - 15/3/13(金) 17:10 -

引用なし
パスワード
   Me.FilterOn = True

の文を追加したらフィルター自体はかかりましたが、
何も抽出されませんでした…

土日は返信しずらい環境になりますので、お返事が遅くなると思います。
ご了承くださいませ
・ツリー全体表示

【12728】複数条件での抽出
質問  木葉  - 15/3/13(金) 15:40 -

引用なし
パスワード
   【Win8/access2013】

こんにちは。初めてこちらで質問させていただきます。
宜しくお願いします。

アクセスの能力としては、ようやく基礎の操作を覚えたぐらいの小鹿レベルです。
お手数ですが、なるべく簡易な語彙で教えていただけると助かります。


取引先ごとの運賃を管理しております。

帳票型フォームにて複数条件での絞り込みができたらと考えております。


配置については以下の通りです。

○フォームヘッダー
検索する内容を入力するためのテキストボックス(複数)と、
その内容を検索するためのボタン(名前:cmdFilter、標題:検索)を設置しました。

検索用のテキストボックスは以下の7つです。
・cmb取引先(これはコンボボックスで取引先を選択できるようにしています)
・txt発地都道府県
・txt発地(市町村)
・txt着地都道府県
・txt着地(市町村)
・txt日付(開始)
・txt日付(終了)
※日付については、(開始)から(終了)までの間のものを抽出します。
※地名の部分4つはあいまい検索にしたいです。
※()内はテキストボックスの「名前」には含まれていません。

○詳細
ヘッダーと同じもの(「名前」はcmb、txtを省いたものにしています)に加え、
整列番号、取引先コード、重量、金額、備考の列があります。


手順としては、ヘッダーのテキストボックスに必要な条件を入力し、
検索ボタンを押すと詳細にて抽出が行われる、といった具合です。

未入力の場合は、その部分は無視した状態で抽出します。


そこで、まずはステップを踏んでいこうと思いまして、
1.発地都道府県だけのフィルター設定をする
2.日付のフィルターを設定する
3.一連の流れを作る

と考えていたのですが、1.から躓いてしまい…

お恥ずかしい限りですが、ご指導いただければと思います。


1.で試してみたコードは以下の通りですが、全く反応なしでした…

Private Sub cmdFilter_Click()
  Dim strFilter As String

  
  If Not IsNull(Me.txt発地都道府県) Then
    strFilter = strFilter & " AND 発地都道府県 Like '*" & Me.txt発地都道府県 & "*'"
  End If

End Sub
・ツリー全体表示

【12727】Re:更新クエリについて
回答  かるびの  - 15/3/12(木) 23:30 -

引用なし
パスワード
    本題からはずれますが、気になった点をいくつか。

>下記3点のテーブルがあります。
>I.入金・未入金
>II.入金・未入金(取込)

 第1に、「入金・未入金(取込)」テーブルですが、
テーブル名に括弧や中黒などの記号を使うのは、やめた方がいいです。
 それら記号は、プログラム上特別な意味が与えられていることがあるため、
コンピュータにおいて、プログラム上特別な意味が与えられている記号であるのか、
テーブルの名前の一部なのかの区別をつけられなくなるおそれがあるからです。
 使っていい記号は、アンダーバー「_」だけです。

 第2に、「入金・未入金(取込)」テーブルですが、
一般的に言えば、テーブル構成が同じテーブルを複数持ってはいけません。
 エクセルなどでは、月ごとや年ごとにワークシートを分けたりしますが、
そのようにテーブルを分けてはいけません。
 テーブルは1個にまとめるべきです。

 ただ、CSVファイルからいきなり「入金・未入金」テーブルへインポートすると、
不都合が出る場合があります。
 CSVファイルからインポートした後、データを修正した上で、
「入金・未入金」テーブルへ追加したいという場合です。
 インポートされたものを格納するだけの専用のテーブルを設けておいた方が、
そういうデータの修正をやりやすいです。
 つまり、今回の場合は「入金・未入金」テーブルと「入金・未入金(取込)」テーブルの
2テーブル構成で良いと思います。

 第3に、テーブル構成の提示です。
 こういう掲示板でアクセスについての質問をする人の中には、テーブル構成を示さない人が
半分くらいいます。
 なので、テーブル構成を書いてくれたのは、とても良いです。
 ただ、惜しいのは、主キーがどのフィールドなのか書いて欲しかったです。
 また、各フィールドのデータ型も示して欲しかったです。
 さらに言うと、「入金・未入金」テーブルと「請求」テーブルは、どういう関係に立つのか、
つまり、一対一なのか、一対多なのか、多対多なのかも書いてもらえれば、
さらに良かったです。


 さて、本題です。
>これらのテーブルに、下記のことを自動もしくは
>操作項目を少なくし、ミスを減らしたいと考えています。
>
>1.テーブルII.にcsvデータを取り込む
>  ※CSVの内容は、テーブルI.II.と同じ項目です。
>2.テーブルI.に1で取り込んだデータを追加する。
>  ※請求年月日と利用者IDが重複するものは、上書き更新
>3.テーブルI.の(4)契約者番号とテーブルIII.の(4)利用者IDが一致し、
> テーブルI.の(1)振替日とがテーブルIII.の(3)振替日一致するレコードを、
> テーブルI.の(14)不能理由が0になっている場合、
>  テーブルIII.の(7)領収済にチェックにいれる。
>
>このような一連の工程が短縮できるようにするには
>どうしたらよいかを教えていただければ幸いです。

 最も自動化を進めるならば、
フォームにコマンドボタンを配置し、そのコマンドボタンをクリックすれば、
上記1から3までの処理を行ってしまうというような形が可能です。

 上記1から3までの処理を部分的に自動化したいというのなら、
それに応じて、様々な方法が考えられます。


 自動化する場合、基本的には、マクロを使うか、VBAを使うかします。
 なお、私は、マクロは殆どわかりませんので、マクロについては細かな回答はできません。

>1.テーブルII.にcsvデータを取り込む
 マクロなら、「テキスト変換」アクションを使います。
 VBAなら、TransferText メソッドを使います。
 いずれの場合も、予め「インポート定義」を設定しておいた方がいいでしょう。

 ただ、CSVファイルでの並び順をテーブルでも何が何でも維持したいというのであれば、
上記の方法ではなく、「Line Input #」ステートメントを使います。


>2.テーブルI.に1で取り込んだデータを追加する。 
>  ※請求年月日と利用者IDが重複するものは、上書き更新
 更新クエリを実行することになります。
 次のページが参考になると思います。
   hatena chips
   クエリで2つのテーブルを同期させる
   ht tp://hatenachips.blog34.fc2.com/blog-entry-153.html

 ただ、「入金・未入金」テーブルや「入金・未入金(取込)」テーブルには、
「請求年月日」フィールドも「利用者ID」フィールドもありませんから、
両テーブルで重複するレコードをどのように認識するか、もう少し考える必要があります。

 更新クエリの実行は、マクロであれば、「SQL の実行」アクションですが、
VBAであれば、「RunSQL」メソッドか、DAOを使っての「Execute」メソッドを使います。
「Execute」メソッドの方がお勧めです。


>3.テーブルI.の(4)契約者番号とテーブルIII.の(4)利用者IDが一致し、
> テーブルI.の(1)振替日とがテーブルIII.の(3)振替日一致するレコードを、
> テーブルI.の(14)不能理由が0になっている場合、
>  テーブルIII.の(7)領収済にチェックにいれる。
 これも、更新クエリを実行することになります。
 
>テーブルI.の(4)契約者番号とテーブルIII.の(4)利用者IDが一致し、
>テーブルI.の(1)振替日とがテーブルIII.の(3)振替日一致するレコードを、
 ここは、両テーブルの結合条件を使って実現することになります。

>テーブルI.の(14)不能理由が0になっている場合、
 ここは、そのような抽出条件を指定します。SQL文で言えば、WHERE句で実現します。
・ツリー全体表示

【12726】更新クエリについて
質問  ゆか  - 15/3/12(木) 16:42 -

引用なし
パスワード
   はじめまして。アクセスの本を読んでも、
PCが苦手な私には理解し兼ねたために、
皆様方のお知恵を拝借したく、この度質問させていただきます。
年度末で皆様ご多忙と存じますが、お答えいただければ幸いです。

下記3点のテーブルがあります。
I.入金・未入金
II.入金・未入金(取込)
III.請求

1、2のテーブルは下記のようなフィールドになっています。
(1)振替日 (yyyy/mm/dd)
(2)委託者番号
(3)委託者名
(4)契約者番号
(5)口座名義人名
(6)入金額
(7)未入金額
(8)金融機関コード
(9)金融機関名
(10)支店コード
(11)支店名
(12)預金種目
(13)口座番号
(14)不能理由

3のテーブルは下記のようなフィールドになっています。
(1)請求No
(2)請求年月
(3)振替日
(4)利用者ID
(5)請求額
(6)新規コード
(7)領収済(Yes/No型)
(8)備考

これらのテーブルに、下記のことを自動もしくは
操作項目を少なくし、ミスを減らしたいと考えています。

1.テーブルII.にcsvデータを取り込む
  ※CSVの内容は、テーブルI.II.と同じ項目です。
2.テーブルI.に1で取り込んだデータを追加する。
  ※請求年月日と利用者IDが重複するものは、上書き更新
3.テーブルI.の(4)契約者番号とテーブルIII.の(4)利用者IDが一致し、
 テーブルI.の(1)振替日とがテーブルIII.の(3)振替日一致するレコードを、
 テーブルI.の(14)不能理由が0になっている場合、
  テーブルIII.の(7)領収済にチェックにいれる。

このような一連の工程が短縮できるようにするには
どうしたらよいかを教えていただければ幸いです。
お手数をお掛けしますが、何卒よろしくお願いいたします。
・ツリー全体表示

【12725】Re:改ページ時の処理
お礼  bbk  - 15/3/12(木) 9:35 -

引用なし
パスワード
   hatenaさんご回答ありがとうございます。

Accessの仕様でしたか、、、
モジュールにFunctionを設定してTextboxから呼び出し
それで解決しました。

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

【12724】Re:改ページ時の処理
回答  hatena  - 15/3/11(水) 18:14 -

引用なし
パスワード
   ▼bbk さん:
>ACCESS2003のレポートで日付ごとに使用料金を表示しており
>詳細の部分で足し算をするVBAを組んでいます。
>1ページ目が20件まで表示して2ページ目が21件目から始まっているのですが
>どうやら1ページ目の最後に内部的には21件目を表示しているみたいで
>21件目が1ページ目の最後と2ページ目の最初の2回計算されて
>数値が変わってきてしまいます。
>
>このような現象にあったことある方いますか?
>対策を知っておられたら教えて頂きたいです。

はい、Accessの既定の動作です。
詳細は下記をご参照ください。

レポートのイベントの発生メカニズムの研究
hatenachips.blog34.fc2.com/blog-entry-147.html

対策ですが、
単純な累計なら、テキストボックスの「集計実行」プロパティの設定だけで可能です。

複雑でそれでは対応できない場合、
おそらくフォーマット時イベントで処理をしていると思いますが、
FormatCount引数が1の時だけ処理をするようにすればいいでしょう。

あるいは、印刷時イベントで処理すれば2回発生するということはなくなります。ただし、ページ指定して印刷したりすると跳ばしたページの処理は発生しないことは念頭においておく必要があります。
・ツリー全体表示

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