[過去ログ] Access総合相談所 29 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
199
(1): 2019/11/26(火)10:12 AAS
レスが遅くなってしまい申し訳ございません
>>196さん、>>198さんお二人ともありがとうございます!
昨日は体調不良で何も出来てないので今日頑張ってみます!!

また催促するような真似をしてしまい申し訳ございません
以後気を付けます
200: 198 2019/11/26(火)12:55 AAS
>>199
一部訂正です
二つ目の抽出条件のANDの前後には半角スペース入れて下さい

ちなみにDMAXのような定義域集計関数は処理に時間が掛かる事があります
その場合はサブクエリに置き換える方法もあるのですが、エラーになることもあり
こちらをオススメします
201: 2019/11/26(火)19:56 AAS
>>188です
>>196さん、>>198さんのおかげで求めたいものが出せました!
ただご指摘にもあった通り、DMAXで計算時、重たいものとなってしまいました。
調べてみた限りだとVBAのほうが軽くなるみたいなので
やっぱりそっちも勉強していかないとダメですね

難しいと思って今まで逃げてきた道だけど、やっぱり難しい…
202
(3): 2019/11/30(土)15:51 AAS
【 システム環境  】 Windows10, Access2010
【 VBAでの回答  】 可 SQLでも可

教えてください。

[日付] [店舗名] [購入品] [購入金額]

というフィールド構成のテーブルがあります。
このテーブルから、それぞれの店舗ごと、一番最初に買物をした日付と
その時の購入品、購入金額を抽出したいのですが、どうやればいいのでしょうか?
店舗ごとの一番最初の日付というだけならクエリを作れるのですが、
その最初の日付のときの購入品や購入金額も同時に取得することができません。

よろしくお願いいたします。
203
(1): 165 2019/11/30(土)19:42 AAS
>>202
あえて一つのqueryに詰め込まないよ。
日付と商店だけ選択して
集計クエリーに変更
日付を最小値
これで一旦保存 q1
q1と元のテーブルを並べて日付と商店を線で結ぶ。

なお、同じ日に2アイテム買ったら
2アイテム出てくるのは、そういうもんだと思ってくれ。
204
(1): 2019/11/30(土)22:22 AAS
>>202-203

集計クエリにして、
[日付]  =最小値
[店舗名] =グループ化
[購入品]  =先頭
[購入金額] =先頭

これでダメ?
205: 2019/12/01(日)09:21 AAS
>>204
先頭や最後は使わないです
https://www.feedsoft.net/access/sql/sql54.html
にもあるように望みのレコードを得られないことがあるのです
これはデータベースというのがハッシュテーブルというレコードの順序をあえてランダムに記録するテーブルだからでしょう
206
(1): 2019/12/01(日)10:56 AAS
>>202
そのテーブルをT_購入履歴とするなら
そのテーブルの選択クエリ作って
日付フィールドの抽出条件に
=DMin(“日付”,”T_購入履歴”,”[店舗名]=“&[店舗名])
を入れる

当然だけど、一番最初の日付で複数の商品を購入してたら、クエリの結果もそれが反映されて
1店舗で複数のレコードが表示されるけどね

それから更に絞り込むかどうかは別の問題
207: 2019/12/01(日)11:37 AAS
>>206
自己レス訂正
抽出条件は
=DMin(“日付”,”T_購入履歴”,”[店舗名]=‘“&[店舗名]&”’”)
だった。
Criteriaでフィールド値を指定する場合
数値はそのまま
文字列はアポストロフィ'で挟む
日付は#で挟むんだったわ

これは定義域集計関数だけじゃなくて
省1
208
(1): 2019/12/02(月)21:34 AAS
【 システム環境  】 Windows10, Access2010

VBAのイミディエイトウィンドウにて

?30.76666666666667-29
 ↓
1.76666666666667

でOK、しかし

?30.76666666666667-30
 ↓
0.766666666666669
省2
209: 2019/12/02(月)23:06 AAS
ヒント:有効数字、2進数の丸め
210: 2019/12/02(月)23:07 AAS
通貨型でやってみ
211: 2019/12/03(火)07:09 AAS
>>208
1.まずは、浮動小数点数というものを理解して、コンピュータでは実数を正確に
表せないので近似を使っていることを理解する
さらに、significant digitというものについて調べておく

2.現在使われている標準的な倍精度浮動小数点数の規格に準拠すると、「普通は」それぞれ
1.7666666666666693
0.7666666666666693
を返すことを認めましょう(ブラウザのjavascript consoleで試せます)

3. で、VBA独自の仕様として、「signiifcant digitは15を超えない」という規則があるため、
前者は、16番目の数の9を切り上げて
省4
212: 2019/12/03(火)13:41 AAS
すげ。2ヶ月くらい前にも
この話題、出てたよね。
小数点4桁以下を扱う仕事を
したことないから、型の仕様の違いに気づくことなかったわ。
213
(1): 2019/12/03(火)14:29 AAS
現在、毎日社員が件数を打ち込む日報なようなものを作成しています
EXCELでVBAを触っていたのでVBAの知識はそれなりにあると思います

課毎で項目が変わるのでフォームで課を入力すると、テーブルに保存してある
「課に適した項目・表示する箇所」をもとに抽出して、それをテキストボックスに項目を表示させます
また件数用のテキストボックスを作成して、そこに打ち込んだあと
登録ボタンを押すとテーブルに保存させるようにしました(ここまでは完成済み)

更に件数を打ち込んだ時点で自動的にテーブルに保存させれないかなと考えてハマりました

・テキストボックスの合計を保持するテキストボックスを使用してその値が更新されたらテーブルに保存
 →テキストボックスが60個あるので、似たような処理を全てに入れるのは大変
   →classを作成して、読み込もうとしてもエラーになって上手くいかない
省4
214: 2019/12/03(火)21:15 AAS
>>213
Access特有の仕様で、フォームにテーブルなとをレコードソースにしている限りは
入力後にそのコントロールを外れた瞬間に値の仮確定、
レコード移動ボタンやフォームを閉じるだけでレコードの保存が完了します。
レコードを移動しないで保存を完了するには、me.requeryや
>96さんご教示のme.dirty=falseなど。
課ごとの入力項目は、そういったテーブルを用意してテーブルのフィールド名を1レコード1フィールド名で保存、
フォームのコントロール名はテーブルのフィールド名と一致させておきます。
課選択後に入力項目テーブルを読みにいかせて、ぶん回して
me.controls(value).visible=true
省10
215: 2019/12/03(火)21:16 AAS
スマホで打ったら、
改行入らなかった。
すまん。
216: 2019/12/04(水)21:41 AAS
フォームあれこれ1

レコードソースにレコードが無いとフォームビューでコントロールすら表示されない。
レコードソースがテーブルで、レコードセットがDynasetなら新規レコードが常にありますからそんなことにならないのですが
選択クエリだと、選択の結果が0レコードってこともあるので、その場合はコントロールすら表示されず、背景がただ表示されるだけになります。

解決方法
選択クエリで対象となるテーブルどうしのリレーションシップを設定します。
リレーションシップで選択クエリと同じ結合をします。
主キー側が1、そうでない側が∞の表示になります。
フィールドの連鎖更新等のチェックは全部いれてかまいません。
これを1:多の結合といいます。
省1
217: 2019/12/04(水)21:43 AAS
フォームあれこれ2

サブフォームとの連携はどうする?

メインフォームで選んでいるコントロールの値を選択条件の設定には
1 サブフォームのプロパティでリンク親フィールド(メインフォームのコントロール名)と
対応するリンク子フィールド(サブフォームのコントロール名)をそれぞれ指定する方法
2 サブフォームのレコードソースをメインフォームのコントロールの値で選択する設定をした選択クエリにする方法
があります。やりやすい方で良いかと
218: 2019/12/04(水)21:44 AAS
フォームあれこれ3

絞り込み機能付きの帳票フォームはサブフォームでないといけないの?

絞り込みということであれば、メインフォームのフォームヘッダに選択条件を設定するコントロールを置いて
その値で絞り込むことも可能です。
なお、絞り込みは、フィルターで設定するのが確実です。
1-
あと 784 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s