Access の VBA に関する質問スレです
質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンぐらいは必ず書きましょう
前回のスレッド
Access VBA 質問スレ Part1
https://mevius.5ch.net/test/read.cgi/tech/1328536426/
探検
Access VBA 質問スレ Part2
1デフォルトの名無しさん
2018/12/12(水) 22:14:39.18ID:GF6Qf3Td27デフォルトの名無しさん
2019/03/09(土) 21:57:04.20ID:QAZD12fZ excel vbaとaccess vba
どっちの方が実用的ですか?
どっちの方が実用的ですか?
2019/03/09(土) 23:04:33.82ID:M4mulWlp
>>27
必要に合わせてどっちも実用的
必要に合わせてどっちも実用的
29デフォルトの名無しさん
2019/03/10(日) 00:06:55.04ID:PvuKZe7P T_商品というテーブルを用意し、そこには次の内容が入っており、
商品 材料1 材料2 材料3
卵かけご飯 卵 米
お好み焼き 小麦 卵 豚肉
ショートケーキ 卵 小麦 苺
アップルパイ りんご 小麦 牛乳
フォームに、材料A、材料Bのテキストボックスを置き、
検索ボタンを押すと、材料AかつBを含む商品が検索されるというVBAの記述に苦慮しています。
単独の材料であれば、VBAにSQLを組み込み、
SELECT * FROM 商品テーブル WHERE 材料1 = ' & 材料A & ' OR 材料2 = ' & 材料A & ' OR 材料3 = ' & 材料A & ' ;
こんな感じでできるのですが、材料が2つ以上になるとどうすればよいか見当がつかなくなりました。
アドバイスいただけませんでしょうか?
商品 材料1 材料2 材料3
卵かけご飯 卵 米
お好み焼き 小麦 卵 豚肉
ショートケーキ 卵 小麦 苺
アップルパイ りんご 小麦 牛乳
フォームに、材料A、材料Bのテキストボックスを置き、
検索ボタンを押すと、材料AかつBを含む商品が検索されるというVBAの記述に苦慮しています。
単独の材料であれば、VBAにSQLを組み込み、
SELECT * FROM 商品テーブル WHERE 材料1 = ' & 材料A & ' OR 材料2 = ' & 材料A & ' OR 材料3 = ' & 材料A & ' ;
こんな感じでできるのですが、材料が2つ以上になるとどうすればよいか見当がつかなくなりました。
アドバイスいただけませんでしょうか?
2019/03/10(日) 01:11:27.75ID:W5FlChvZ
>>29
1がAかB
かつ
2がAかB
かつ
3がAかB
じゃないかな…眠くて間違ってる気もする…
あと、候補がおおすぎないなら、テキストボックスはコンボかな…(フォーム起動遅くなるなど副作用もあったりするのでこの案は無視して可)
おやすみなさい…
1がAかB
かつ
2がAかB
かつ
3がAかB
じゃないかな…眠くて間違ってる気もする…
あと、候補がおおすぎないなら、テキストボックスはコンボかな…(フォーム起動遅くなるなど副作用もあったりするのでこの案は無視して可)
おやすみなさい…
2019/03/10(日) 01:18:29.26ID:W5FlChvZ
>>30
間違ってます。zzz
間違ってます。zzz
2019/03/10(日) 13:11:16.19ID:FsgNmDsH
>>29
悪いことは言わんから、まずテーブル設計見直せ
悪いことは言わんから、まずテーブル設計見直せ
2019/03/10(日) 15:10:38.80ID:z6hGNEnV
馬鹿の次の質問
材料4を追加した時にはどうすれぱよいでしょうか?
材料4を追加した時にはどうすれぱよいでしょうか?
2019/03/10(日) 17:44:21.19ID:f/eJ/LOS
>>27
そもそもExcelでは応用効かない
そもそもExcelでは応用効かない
2019/03/10(日) 17:46:58.02ID:f/eJ/LOS
>>15
Visual Studio ExpressでDLL作れ
Visual Studio ExpressでDLL作れ
2019/03/10(日) 17:55:45.50ID:hFpGjFbx
2019/03/10(日) 18:51:26.88ID:hpBR8lHx
accessは大昔にやってて今は持ってすらいないけど
該当行をdynasetで取り出した後
該当fieldから値を取り出して
if分で有るか調べれば出来たりしないか?
該当行をdynasetで取り出した後
該当fieldから値を取り出して
if分で有るか調べれば出来たりしないか?
2019/03/10(日) 18:58:03.76ID:9Z3HOdWo
いくらでも増やしていいぞ
SELECT * FROM 商品テーブル
WHERE (材料1 = ' & 材料A & ' OR 材料2 = ' & 材料A & ' OR 材料3 = ' & 材料A & ')
AND ("" = ' & 材料B & ' OR 材料1 = ' & 材料B & ' OR 材料2 = ' & 材料B & ' OR 材料3 = ' & 材料B & ')
AND ("" = ' & 材料C & ' OR 材料1 = ' & 材料C & ' OR 材料2 = ' & 材料C & ' OR 材料3 = ' & 材料C & ');
SELECT * FROM 商品テーブル
WHERE (材料1 = ' & 材料A & ' OR 材料2 = ' & 材料A & ' OR 材料3 = ' & 材料A & ')
AND ("" = ' & 材料B & ' OR 材料1 = ' & 材料B & ' OR 材料2 = ' & 材料B & ' OR 材料3 = ' & 材料B & ')
AND ("" = ' & 材料C & ' OR 材料1 = ' & 材料C & ' OR 材料2 = ' & 材料C & ' OR 材料3 = ' & 材料C & ');
2019/03/10(日) 22:38:23.14ID:mPydjeZt
いやぁぁぁぁぁぁぁ
2019/03/10(日) 23:14:01.04ID:hFpGjFbx
だから、材料フィールドを横に並べるのは作りが悪いだろ。
フィールド1個にして縦に並べるべきじゃね?
フィールド1個にして縦に並べるべきじゃね?
2019/03/10(日) 23:50:20.06ID:CvNRnyCH
unionで繋げばいいんじゃね
2019/03/11(月) 00:08:26.31ID:B6nWiYCU
設計の問題だろ。
できるできないの問題じゃない。
なんで使い勝手の悪いもんをわざわざ作らなきゃならんのよ。
できるできないの問題じゃない。
なんで使い勝手の悪いもんをわざわざ作らなきゃならんのよ。
2019/03/11(月) 08:04:29.38ID:fslMg+hg
取り敢えず動かすなら、
材料1〜4をカンマで連結した文字列の中に、AとB両方ある
と書けば人間にはわかりやすい
材料1〜4をカンマで連結した文字列の中に、AとB両方ある
と書けば人間にはわかりやすい
2019/03/11(月) 13:56:54.71ID:IRjWKGwj
まぁリレーショナルデータベースだから設計を変えるべきだけど
access使うような所なんて零細なんだから
そんなリファクタリングだのテストファーストだのモダンだのオブジェクト指向だのも関係無いような人材しか居ないんだから
vbaベタベタというのでやるしかない
みたいな感じなんだろう
その人がそれしか出来ないならvbaベタベタしか方法が無かったりする
この人がそうなのかは知らないけど
access使うような所なんて零細なんだから
そんなリファクタリングだのテストファーストだのモダンだのオブジェクト指向だのも関係無いような人材しか居ないんだから
vbaベタベタというのでやるしかない
みたいな感じなんだろう
その人がそれしか出来ないならvbaベタベタしか方法が無かったりする
この人がそうなのかは知らないけど
2019/03/12(火) 00:15:11.07ID:S+rkIDbC
普通の設計にしたとして
countが3以上の〜、とかやるのが正しいの?
なんか不安なんだが
countが3以上の〜、とかやるのが正しいの?
なんか不安なんだが
2019/03/12(火) 12:34:12.09ID:xgWEcpqA
なんでcountなんて話になってるの?
商品テ―ブルと材料テーブルで結合するなら、商品テーブルには材料IDのフィールドが1つしかないんだから、材料IDのフィールドに材料AのIDと材料BのIDを持つ商品を検索するだけだよ。
商品テ―ブルと材料テーブルで結合するなら、商品テーブルには材料IDのフィールドが1つしかないんだから、材料IDのフィールドに材料AのIDと材料BのIDを持つ商品を検索するだけだよ。
2019/03/12(火) 14:56:37.82ID:4U4zzI9j
一つの材料IDフィールドに2つの材料IDをカンマ区切りで入れるのが正解なの?
リレーショナル全否定?
リレーショナル全否定?
2019/03/12(火) 21:15:05.16ID:0vZ7cwHu
リレーショナルデータベースを前提にするならどんな設計が一番使い勝手がよいんだろうかね
2019/03/12(火) 22:39:48.12ID:o5cGPdg/
>>46
商品テーブル、材料テーブル、商品の材料テーブルを作って、こんな感じで
SELECT [商品] FROM 商品の材料
WHERE 材料 IN (Form!材料A, Form!材料B, Form!材料C)
GROUP BY [商品]
HAVING Count([商品]) >= Form!条件数;
材料A,B,CそれぞれのサブクエリをJIONするよりは速い気がする
商品テーブル、材料テーブル、商品の材料テーブルを作って、こんな感じで
SELECT [商品] FROM 商品の材料
WHERE 材料 IN (Form!材料A, Form!材料B, Form!材料C)
GROUP BY [商品]
HAVING Count([商品]) >= Form!条件数;
材料A,B,CそれぞれのサブクエリをJIONするよりは速い気がする
2019/03/13(水) 08:11:10.52ID:mGUeq4U2
>>49
うん、基本的に同じ考えだ。
以下の書き込みをしようとしてたが、放置してた。
>>47
何を言ってるんだ?
俺はカンマ区切りなんて言ってないぞ。
リレーショナルが分かってるなら>>29みたいにゃならんだろうよ。
卵かけご飯の材料1の卵と材料2の米は、材料1を米、材料2を卵と取り替えちゃいかんのか?
そんなこと無いだろ。
こういう同じ種別の物を別フィールドにすると管理出来なくなるだろ。
商品 材料
卵かけご飯のID 卵のID
卵かけご飯のID 米のID
お好み焼きのID 小麦のID
お好み焼きのID 卵のID
お好み焼きのID 豚肉のID
ショートケーキのID 卵のID
ショ−トケーキのID 小麦のID
ショートケーキのID 苺のID
アップルパイのID りんごのID
アップルパイのID 小麦のID
アップルパイのID 牛乳のID
こういう風にして商品マスタ、材料マスタ、商品作成の3テーブルにする。
しかし、商品、材料どっちのテーブルの場合もそうだが他に管理したい情報がないならそれぞれマスタテーブルやめてIDの所を商品名や材料名にしてテーブル減らしても良い。
その場合は最小1テ―ブルになる。
なお、>>46は商品マスタをやめて2テーブルにした場合だ。
うん、基本的に同じ考えだ。
以下の書き込みをしようとしてたが、放置してた。
>>47
何を言ってるんだ?
俺はカンマ区切りなんて言ってないぞ。
リレーショナルが分かってるなら>>29みたいにゃならんだろうよ。
卵かけご飯の材料1の卵と材料2の米は、材料1を米、材料2を卵と取り替えちゃいかんのか?
そんなこと無いだろ。
こういう同じ種別の物を別フィールドにすると管理出来なくなるだろ。
商品 材料
卵かけご飯のID 卵のID
卵かけご飯のID 米のID
お好み焼きのID 小麦のID
お好み焼きのID 卵のID
お好み焼きのID 豚肉のID
ショートケーキのID 卵のID
ショ−トケーキのID 小麦のID
ショートケーキのID 苺のID
アップルパイのID りんごのID
アップルパイのID 小麦のID
アップルパイのID 牛乳のID
こういう風にして商品マスタ、材料マスタ、商品作成の3テーブルにする。
しかし、商品、材料どっちのテーブルの場合もそうだが他に管理したい情報がないならそれぞれマスタテーブルやめてIDの所を商品名や材料名にしてテーブル減らしても良い。
その場合は最小1テ―ブルになる。
なお、>>46は商品マスタをやめて2テーブルにした場合だ。
2019/03/13(水) 11:51:37.19ID:SZfR/Pu+
仕様が解らないからアレだけど
そのhaving countだと同じ材料が複数行登録されていた場合に
フォームに設定した別々な材料で検索した時に検索しても且つ条件にならないんじゃないかな?
同じ材料を登録できないように作ってあれば問題無いと思うけど
その辺どうなんだろうか?
まぁ作りと要求次第だと思うけど
的外れだったらごめんよ
ちょっと気になったんで
複数列の場合に連結してから文字列検索で探すというのは
sqlが長く複雑になり難いかもしれないね
何にしても実現の仕方は色々有るね
その人の技量や置かれている状況次第だろうね
そのhaving countだと同じ材料が複数行登録されていた場合に
フォームに設定した別々な材料で検索した時に検索しても且つ条件にならないんじゃないかな?
同じ材料を登録できないように作ってあれば問題無いと思うけど
その辺どうなんだろうか?
まぁ作りと要求次第だと思うけど
的外れだったらごめんよ
ちょっと気になったんで
複数列の場合に連結してから文字列検索で探すというのは
sqlが長く複雑になり難いかもしれないね
何にしても実現の仕方は色々有るね
その人の技量や置かれている状況次第だろうね
2019/03/13(水) 19:07:03.88ID:0FHnOJ4A
最初に不安だと書いているように私もCountは邪道だと思ってるんですよね
「なんでcountなんて話になってるんだ」と怒られる程度には
それで、いろいろな方法がある中で「王道」をご指導いただけないんでしょうか?
「なんでcountなんて話になってるんだ」と怒られる程度には
それで、いろいろな方法がある中で「王道」をご指導いただけないんでしょうか?
2019/03/13(水) 21:35:24.37ID:uWZ9EglX
2019/03/15(金) 17:36:53.07ID:FQsGmuzT
製品テーブルと素材テーブルと連結用テーブルの三つつくる
あとIDいらんから消して
あとIDいらんから消して
2019/03/15(金) 18:33:31.75ID:sIXN3DPH
idいらないのではってこと時々あるよね。
性別項目なんて"男"、"女"って直接入れてエエやんて思う。
性別項目なんて"男"、"女"って直接入れてエエやんて思う。
2019/03/15(金) 18:46:17.04ID:sIXN3DPH
>>54
id使わないなら 1テーブルでええんとちゃう?
id使わないなら 1テーブルでええんとちゃう?
2019/03/15(金) 18:47:49.00ID:sIXN3DPH
>>56
余りにも近視眼でした
余りにも近視眼でした
2019/03/15(金) 19:00:16.39ID:Yw8dh4/K
>>55
性別はboolでいい
ただしオカマちゃんなどに対応するため
Bool 肉体の性別
Bool 精神の性別
Bool 改造後の性別
Bool 住民基本台帳の性別
Bool 一般公開する性別
Bool セキュリティで保護された性別
などのフィールドを用意するのがベスト
性別はboolでいい
ただしオカマちゃんなどに対応するため
Bool 肉体の性別
Bool 精神の性別
Bool 改造後の性別
Bool 住民基本台帳の性別
Bool 一般公開する性別
Bool セキュリティで保護された性別
などのフィールドを用意するのがベスト
2019/03/15(金) 20:17:51.87ID:GDnHo62/
SLC、MLC、TLC、QLCだな
2019/03/15(金) 21:26:19.10ID:dImV5MMR
オカマでも、男専、バイ、女専と分けないとトイレで掘られるリスクが
2019/03/16(土) 08:42:08.72ID:sYsfNqTH
Excel VBA質問スレが最後までいって終わったので、次スレ検索したらここが出てきた
Excel VBA質問スレの新スレはないのか?
Excel VBA質問スレの新スレはないのか?
2019/03/16(土) 08:43:02.89ID:sYsfNqTH
Excel VBA質問スレでもAccessの話が話題に出るので、ここと統合してもいいんじゃね?
VBAメインの話だろ
VBAメインの話だろ
2019/03/16(土) 10:08:04.54ID:DkwCTpbs
2019/03/16(土) 13:39:03.23ID:zPyGim4X
難しいだろうね
リレーショナルデータベースにおける正規化って
コンピューター的な都合でテーブルを分けてる
でも実際には依頼伝票と明細というものは
人間の感覚的には一体として扱う方が感覚的に自然だからそういう風になってしまう
何の為にリレーショナルで正規化をするのか?
というのをデータの不整合が起きないようにを集中化させる為である事を教えるしかないけど
コンピューターがどういう風に処理をすると
効率的だったり安全だったりするか
を理解しておかないと難しい
表計算の延長や通常の感覚のままだと無理だと思う
大げさに言うと
コンピューターサイエンスの知識が必要
って事になる思う
accessはリレーショナルな所を活用して効率化しているから結構難しい面が有る
どうしても無理なら
桐
でも使うという手も有るw
リレーショナルデータベースにおける正規化って
コンピューター的な都合でテーブルを分けてる
でも実際には依頼伝票と明細というものは
人間の感覚的には一体として扱う方が感覚的に自然だからそういう風になってしまう
何の為にリレーショナルで正規化をするのか?
というのをデータの不整合が起きないようにを集中化させる為である事を教えるしかないけど
コンピューターがどういう風に処理をすると
効率的だったり安全だったりするか
を理解しておかないと難しい
表計算の延長や通常の感覚のままだと無理だと思う
大げさに言うと
コンピューターサイエンスの知識が必要
って事になる思う
accessはリレーショナルな所を活用して効率化しているから結構難しい面が有る
どうしても無理なら
桐
でも使うという手も有るw
2019/03/16(土) 17:31:16.60ID:3KVWdS7r
2019/03/16(土) 19:49:12.47ID:3keflQuI
>>65
そそ。
あそこに並んでる表を入れておくのが連結テーブル
あれがなぜ必要かはわかると思うので略
商品、材料テーブルの内容から、自ずと連結テーブルも必要になり、そういうテーブル構成になることは別に特殊なことではありません
そそ。
あそこに並んでる表を入れておくのが連結テーブル
あれがなぜ必要かはわかると思うので略
商品、材料テーブルの内容から、自ずと連結テーブルも必要になり、そういうテーブル構成になることは別に特殊なことではありません
2019/03/17(日) 08:42:17.71ID:n1sOdbaQ
こんなスレがあるぞ
VBAに関する質問はこちらへどうぞ
Excel、Access、Outlook分ける必要ないだろ
VBAなんでも質問スレ Part2 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1432173164/
VBAに関する質問はこちらへどうぞ
Excel、Access、Outlook分ける必要ないだろ
VBAなんでも質問スレ Part2 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1432173164/
2019/03/17(日) 10:57:55.94ID:j70B1v+S
>>66
ありがとうございます。
実際は、製品のそれぞれの材料をどれくらい使ったかを管理する必要があるのですが、その場合、
製品テーブル
材料テーブル
製品と材料の連結テーブル
連結テーブルと使用量の入力用テーブルが必要になるイメージですかね?
VBAスレでしたね。テーブルの作り方はここではないのはわかってるのですが、何かこのあたりのテーブルやフォームの作成のヒントになる書籍とかあれば教えていただけませんか?
ありがとうございます。
実際は、製品のそれぞれの材料をどれくらい使ったかを管理する必要があるのですが、その場合、
製品テーブル
材料テーブル
製品と材料の連結テーブル
連結テーブルと使用量の入力用テーブルが必要になるイメージですかね?
VBAスレでしたね。テーブルの作り方はここではないのはわかってるのですが、何かこのあたりのテーブルやフォームの作成のヒントになる書籍とかあれば教えていただけませんか?
2019/03/17(日) 13:57:54.89ID:2pkDyHvs
excelとaccessはアプリケーションとして随分違うから分けた方が良い
excelの方が進みが速いし
access相談系ってここ以外に案外質問スレが見当たらないし(自分が知らないだけで実際には有るかも知れないけど)
分量で分けるなら
excel
access,word,outlook,その他?
みたいに二つに分けた方が良い
excelは利用している人の数が段違いだろうし
上の質問みたいに
材料1,材料2,...
みたいにするのはaccessでは合い難いけど
excelでは割とそういう風に使うから
違いは大きい
それにexcelvbaの方は見てないけど
accessとexcel勢で何か悶着有ったみたいだし
基本は分けた方が良い
excelの方が進みが速いし
access相談系ってここ以外に案外質問スレが見当たらないし(自分が知らないだけで実際には有るかも知れないけど)
分量で分けるなら
excel
access,word,outlook,その他?
みたいに二つに分けた方が良い
excelは利用している人の数が段違いだろうし
上の質問みたいに
材料1,材料2,...
みたいにするのはaccessでは合い難いけど
excelでは割とそういう風に使うから
違いは大きい
それにexcelvbaの方は見てないけど
accessとexcel勢で何か悶着有ったみたいだし
基本は分けた方が良い
2019/03/17(日) 17:33:15.64ID:5mJrF7aW
2019/03/17(日) 23:33:28.89ID:L17xYYyd
>>68
まず、製品、材料、連結テーブルの中で使用量を格納できる(格納するのがふさわしいか)のはどのテーブルかを考える。
ふさわしいテーブルがなければ新テーブルを追加するが、使用量は連結テーブルに格納すればいいのではと理論建てて考えられるようになりましょう。
書籍は近所に大きめの書店があれば、自分の好みで選びましょう。図が多いとかカラフルなのが見やすいとか。
初級本は2、3回見ればあまり出番なくなると思いますが、どんなことができるのかとか効率よく知るのに有効です。
他は、逆引きとか、テクニック本とかがいろいろな処理を書く上で有効で、長く役立ってくれるでしょう。
まず、製品、材料、連結テーブルの中で使用量を格納できる(格納するのがふさわしいか)のはどのテーブルかを考える。
ふさわしいテーブルがなければ新テーブルを追加するが、使用量は連結テーブルに格納すればいいのではと理論建てて考えられるようになりましょう。
書籍は近所に大きめの書店があれば、自分の好みで選びましょう。図が多いとかカラフルなのが見やすいとか。
初級本は2、3回見ればあまり出番なくなると思いますが、どんなことができるのかとか効率よく知るのに有効です。
他は、逆引きとか、テクニック本とかがいろいろな処理を書く上で有効で、長く役立ってくれるでしょう。
2019/03/17(日) 23:53:15.91ID:L17xYYyd
>>63
データベースに限ったことではないが、最小限の入力(手間)で最大限の結果(伝票だけでなく売上集計や分析など)を得ることが目標。
平たく言えば、楽(効率アップ)しようと思わない人、そのために努力しようと思わない人には伝わらない。
オレは説得するのは諦めた。残業代増やしたい奴ばっかりだから
データベースに限ったことではないが、最小限の入力(手間)で最大限の結果(伝票だけでなく売上集計や分析など)を得ることが目標。
平たく言えば、楽(効率アップ)しようと思わない人、そのために努力しようと思わない人には伝わらない。
オレは説得するのは諦めた。残業代増やしたい奴ばっかりだから
2019/03/18(月) 00:03:45.33ID:01/djhoo
馬鹿には無理
これが真実
これが真実
2019/03/18(月) 19:45:55.30ID:WjETnlu5
2019/03/19(火) 06:30:11.40ID:4N2t7FIS
76デフォルトの名無しさん
2019/03/19(火) 23:41:14.03ID:PLWGdEFL 馬鹿でも仕事をしなきゃならない
そういう人は材料1,材料2,...でやれるなら
それでやってもらうしかない
頭いい奴だけで後は生活保護で構わない
とかで良いなら話は別だけど?
その辺を理解出来ないアホが多くて困る
正規化を理解しないでaccess使っている人間と種類的には同じ
自分がやれる事が一番と思って他を考えていない
そういう人は材料1,材料2,...でやれるなら
それでやってもらうしかない
頭いい奴だけで後は生活保護で構わない
とかで良いなら話は別だけど?
その辺を理解出来ないアホが多くて困る
正規化を理解しないでaccess使っている人間と種類的には同じ
自分がやれる事が一番と思って他を考えていない
2019/04/25(木) 10:33:32.47ID:I6sE8Jku
32bitのAccess2016を使っています。
いままではinteger型で済むものはlong型にしてはいけない。メモリーの無駄遣いと思ってきました。
しかし、ベンチマークをとるとlong型の方が速いという主張を頻繁に見るようになりました。
数字は全部long型にした方がいいのでしょうかね?
いままではinteger型で済むものはlong型にしてはいけない。メモリーの無駄遣いと思ってきました。
しかし、ベンチマークをとるとlong型の方が速いという主張を頻繁に見るようになりました。
数字は全部long型にした方がいいのでしょうかね?
2019/04/25(木) 11:52:04.10ID:vKKospK1
>>77
昔々はそうだった
しかし、今はあり余るメモリをたらふく使って、高速にとか、プログラム書きやすくとかになってる。
(もちろん限度ってものはある)
昔は8bitや 16bit CPUだから、長い桁は時間かかった。今は 64bitなので、それ以下に収まれば充分高速。
(数億回ループするのは稀なので、あるなら都度ベンチ取ってロジックなど決めるといい)
SIMDにより多く詰め込めるとかもあるけど、VBAでは多分使われてないから気にしなくていい
わざわざ longに直す必要はない。これからは気にせず long使っていい
昔々はそうだった
しかし、今はあり余るメモリをたらふく使って、高速にとか、プログラム書きやすくとかになってる。
(もちろん限度ってものはある)
昔は8bitや 16bit CPUだから、長い桁は時間かかった。今は 64bitなので、それ以下に収まれば充分高速。
(数億回ループするのは稀なので、あるなら都度ベンチ取ってロジックなど決めるといい)
SIMDにより多く詰め込めるとかもあるけど、VBAでは多分使われてないから気にしなくていい
わざわざ longに直す必要はない。これからは気にせず long使っていい
2019/04/25(木) 15:22:48.68ID:I6sE8Jku
2019/04/25(木) 17:43:41.51ID:ImBWEqP9
馬鹿に教えるとロクなことをしない例
2019/04/25(木) 18:18:18.21ID:I6sE8Jku
実験用のコピーだよ。
楽しく実験するのがプログラミング上達の近道だと思うんだよね。
楽しく実験するのがプログラミング上達の近道だと思うんだよね。
2019/04/25(木) 20:40:48.35ID:JpEf0ZAX
>>81
実験は大切。失敗もベンチ取るのも身になる。
実験ソースや結果も Accessのテーブルに分類して残しとくんだぞ
(オレは、ソースはモジュールに置いて、コメントに結果を書いてたりもする。もちろん他言語などはテーブルやプロジェクトにしてなど)
カンペ作ったときみたいに忘れないもんだが、将来の追試や数値が役に立つ(まれに)
実験は大切。失敗もベンチ取るのも身になる。
実験ソースや結果も Accessのテーブルに分類して残しとくんだぞ
(オレは、ソースはモジュールに置いて、コメントに結果を書いてたりもする。もちろん他言語などはテーブルやプロジェクトにしてなど)
カンペ作ったときみたいに忘れないもんだが、将来の追試や数値が役に立つ(まれに)
2019/04/25(木) 22:25:13.99ID:CJM7ooRn
2019/04/26(金) 05:09:51.54ID:ebeJOjHo
2019/04/26(金) 13:04:47.02ID:azgsbPV3
新人の頃は良く失敗した
数値フィールドをテキスト型で定義したり
データ、システム分離しなくてmdb破損させたり
手元の最新版壊して顧客PCまで最新版取りに戻ったり
:
数値フィールドをテキスト型で定義したり
データ、システム分離しなくてmdb破損させたり
手元の最新版壊して顧客PCまで最新版取りに戻ったり
:
2019/04/26(金) 14:38:58.61ID:xEyS3kHo
>>85
オレも最初の頃壊れ(し)まくって、Accessなんて使いもんにならんやんと思った
dbだから、排他とかできるんだし、別々のフォーム触るなら、皆で開発できるやろと 1つの共有mdbで開発やってたw
規模によるけどシステム分離はわざわざしないな
分離するのは、sqlserverとかにするときだけだ
オレも最初の頃壊れ(し)まくって、Accessなんて使いもんにならんやんと思った
dbだから、排他とかできるんだし、別々のフォーム触るなら、皆で開発できるやろと 1つの共有mdbで開発やってたw
規模によるけどシステム分離はわざわざしないな
分離するのは、sqlserverとかにするときだけだ
2019/04/28(日) 22:30:01.14ID:h9q8OTE0
システム分離ってなんですか?
私もファイルが壊れてばかりで困ってます。
私もファイルが壊れてばかりで困ってます。
2019/04/29(月) 11:11:13.24ID:3KqibFAl
2019/04/29(月) 11:33:05.46ID:lr8PSWgy
2019/04/29(月) 11:38:37.49ID:d82tlvl6
>>89
横からすんみません。
一人でしか使わない場合もフォームのコントロールを弄くるのが好きな人は分離した方が良いと思います。
コマンドボタンの位置を変更しただけでフォームが消えてしまったことが何度もありますから、
一人で使用する場合もカスタマイズ好きならデーターは分離した方がいいと思います。
横からすんみません。
一人でしか使わない場合もフォームのコントロールを弄くるのが好きな人は分離した方が良いと思います。
コマンドボタンの位置を変更しただけでフォームが消えてしまったことが何度もありますから、
一人で使用する場合もカスタマイズ好きならデーターは分離した方がいいと思います。
9289
2019/04/29(月) 12:16:08.84ID:lr8PSWgy >>90
最近は個人的な作成しかしなくなったので教えて下さい。
そのファイルはmdb、accdbどちらですか?
(拡張子が変わって壊れにくくなったかとか、何が変わってどう影響するか細かくは調べてないです)
そのdbファイルはローカル/ファイルサーバどちらに置いてましたか?
ここ数年はツール的な小さなものを、accdbをローカルで作成してますが、壊れた経験はないです。
1つのフォーム内で、各処理をフレームで分けてあり、フレーム内にはテキストボックスやボタンなどがあります。
フレーム単位で、あっちやこっちに頻繁に移動はしてます。
(それでも、過去の壊れてた経験から、数日に一回最適化とバックアップはとってます)
最近は個人的な作成しかしなくなったので教えて下さい。
そのファイルはmdb、accdbどちらですか?
(拡張子が変わって壊れにくくなったかとか、何が変わってどう影響するか細かくは調べてないです)
そのdbファイルはローカル/ファイルサーバどちらに置いてましたか?
ここ数年はツール的な小さなものを、accdbをローカルで作成してますが、壊れた経験はないです。
1つのフォーム内で、各処理をフレームで分けてあり、フレーム内にはテキストボックスやボタンなどがあります。
フレーム単位で、あっちやこっちに頻繁に移動はしてます。
(それでも、過去の壊れてた経験から、数日に一回最適化とバックアップはとってます)
2019/04/29(月) 12:36:13.73ID:d82tlvl6
>>92
mdbです。dbファイルもmdbでローカルです。
フロントエンド?(と言っていいのかしら?)が巨大で、100MBくらいあります。
業務用ソフトで中身は使用されていないゴミ変数やゴミプロシジャーが大量にあります。空のプロシジャーもある上に、それをcallしている謎のプロシジャーもあります。
str型の変数なのに、タイプするのが面倒くさかったのか、var型で宣言されている変数がこれまた大量にあります。
mdbです。dbファイルもmdbでローカルです。
フロントエンド?(と言っていいのかしら?)が巨大で、100MBくらいあります。
業務用ソフトで中身は使用されていないゴミ変数やゴミプロシジャーが大量にあります。空のプロシジャーもある上に、それをcallしている謎のプロシジャーもあります。
str型の変数なのに、タイプするのが面倒くさかったのか、var型で宣言されている変数がこれまた大量にあります。
9489
2019/04/29(月) 13:14:19.98ID:lr8PSWgy >>93
ありがとうございます。
今でもmdbで作り込みが大きいのは壊れやすいんですね。
以前は、新mdbに全部インポートして、リフレッシュ(ゴミ除去)とかやってました。
(最適化より小さくなるから、何か効果はあるんじゃないかと思って。)
accdbに全部インポートして、参照設定修正という方法もあるけど、業務用だと完全に同じ動きするかと問われると保証できないので、難しいだろうし。
時間やお金出るなら(これからも使い続けるなら)、機能(部署)ごとに分割とか、accdbに徐々に移行(プロシージャ修正整理)とかやっていきたいところですね。
ありがとうございます。
今でもmdbで作り込みが大きいのは壊れやすいんですね。
以前は、新mdbに全部インポートして、リフレッシュ(ゴミ除去)とかやってました。
(最適化より小さくなるから、何か効果はあるんじゃないかと思って。)
accdbに全部インポートして、参照設定修正という方法もあるけど、業務用だと完全に同じ動きするかと問われると保証できないので、難しいだろうし。
時間やお金出るなら(これからも使い続けるなら)、機能(部署)ごとに分割とか、accdbに徐々に移行(プロシージャ修正整理)とかやっていきたいところですね。
2019/04/29(月) 13:47:50.96ID:QxflDRVF
SQLserver使おうぜ
2019/05/04(土) 18:38:16.45ID:ZGbBU4Ge
Accessはフロントエンドに使う
DBはMySQLでも良い
DBはMySQLでも良い
97デフォルトの名無しさん
2019/05/05(日) 01:45:20.23ID:PgstIp0W 一度に大量で複雑な更新をすると落ちやすかった印象は有るかなぁ
2019/05/07(火) 11:01:49.04ID:S4maxKz5
>>96
帳票とかからむと、手軽だもんな
帳票とかからむと、手軽だもんな
2019/05/08(水) 19:00:39.16ID:PD4Nn61H
Accessは何たって帳票の作成が超簡単!
これがあるから離れなれない。
LibreOfficeやOpenOfficeにも帳票作成ツールはあるけど、
Accessほど使い易くはないのが、移行できずにいる大きな要因の一つなのは間違いない。
これがあるから離れなれない。
LibreOfficeやOpenOfficeにも帳票作成ツールはあるけど、
Accessほど使い易くはないのが、移行できずにいる大きな要因の一つなのは間違いない。
100デフォルトの名無しさん
2019/05/11(土) 13:23:24.99ID:J8lUk67b Office365でアプリアイコンが刷新されたがAccessは変わらない悲しみ
101デフォルトの名無しさん
2019/06/03(月) 01:57:41.37ID:vn/O8vit access2016使ってて2013のランタイム入れたらaccessが使えなくなってびびったわ
あわててシステムの復元して直ったけど
あわててシステムの復元して直ったけど
102デフォルトの名無しさん
2019/07/17(水) 21:40:08.49ID:/Hg4fKFx サブフォームのソースオブジェクトに、SQLを直接記入することはできないのでしょうか?
SQL文というものがそもそもオブジェクトでないから記入できないのでしょうか?
SQL文というものがそもそもオブジェクトでないから記入できないのでしょうか?
103デフォルトの名無しさん
2019/07/17(水) 22:16:32.17ID:5Qt+TnNF Formのオープン時にそのサブフォームのおソースを放り込めばできる
あとはメインフォーム上でサブフォームをいぢるイベント時に書くとか 例えばボタン押した時など
サブフォームはソース無し にしてるけど、自分は そこへ放り込むやり方だと出来てる
あとはメインフォーム上でサブフォームをいぢるイベント時に書くとか 例えばボタン押した時など
サブフォームはソース無し にしてるけど、自分は そこへ放り込むやり方だと出来てる
104デフォルトの名無しさん
2019/07/17(水) 22:25:51.54ID:eXUk1Aqq >>102
ビュー定義してソースに設定したら?
ビュー定義してソースに設定したら?
105デフォルトの名無しさん
2019/09/28(土) 01:30:49.78ID:XSiAgIby id 部門 販売品目
1 A りんご
2 A バナナ
3 A りんご
4 B バナナ
5 B ぶどう
6 B ぶどう
というテーブルから、
部署と販売品目が同じレコード数
(Aかつりんご、Aかつバナナ、Bかつバナナ、Bかつぶどう の数)をカウントしたいのですがうまくいきません。
販売品目単独では
SELECT 販売品目,Count(id)
FROM テーブル名
GROUP BY 販売品目
のようにすれば思うようにいくのですが、複数条件になると思うようにいきません。
お知恵を貸していただけないでしょうか。
1 A りんご
2 A バナナ
3 A りんご
4 B バナナ
5 B ぶどう
6 B ぶどう
というテーブルから、
部署と販売品目が同じレコード数
(Aかつりんご、Aかつバナナ、Bかつバナナ、Bかつぶどう の数)をカウントしたいのですがうまくいきません。
販売品目単独では
SELECT 販売品目,Count(id)
FROM テーブル名
GROUP BY 販売品目
のようにすれば思うようにいくのですが、複数条件になると思うようにいきません。
お知恵を貸していただけないでしょうか。
106デフォルトの名無しさん
2019/09/28(土) 02:03:10.80ID:hdiBTyMe SELECT 部門, 販売品目, Count(ID) AS IDカウント
FROM テーブル1
GROUP BY 部門, 販売品目
HAVING (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう")) ;
FROM テーブル1
GROUP BY 部門, 販売品目
HAVING (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう")) ;
107デフォルトの名無しさん
2019/09/28(土) 02:08:15.90ID:hdiBTyMe もしくは
SELECT 部門, 販売品目, Count(ID) AS IDのカウント
FROM (
SELECT * FROM テーブル1 WHERE (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう"))
) GROUP BY 部門, 販売品目
SELECT 部門, 販売品目, Count(ID) AS IDのカウント
FROM (
SELECT * FROM テーブル1 WHERE (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう"))
) GROUP BY 部門, 販売品目
108デフォルトの名無しさん
2019/09/28(土) 02:22:14.79ID:hdiBTyMe //シンプルにこれでもできたけどwhereの位置とか括弧とか間違えてない?
select 部門, 販売品目, count(ID) as カウント
from テーブル1
where (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう"))
group by 部門, 販売品目
select 部門, 販売品目, count(ID) as カウント
from テーブル1
where (((部門)="A") AND ((販売品目)="りんご")
OR ((部門)="A") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="バナナ")
OR ((部門)="B") AND ((販売品目)="ぶどう"))
group by 部門, 販売品目
109デフォルトの名無しさん
2019/09/28(土) 06:33:14.21ID:XSiAgIby >>106
ありごとうごぞいます。
説明が不十分でした。
たしかにそのとうり記述すればできるのですが、部門や販売品目が増えていった場合に、全組合せを書き出さないでやる方法はないものかと考えております。
ありごとうごぞいます。
説明が不十分でした。
たしかにそのとうり記述すればできるのですが、部門や販売品目が増えていった場合に、全組合せを書き出さないでやる方法はないものかと考えております。
110デフォルトの名無しさん
2019/09/28(土) 09:36:23.69ID:hdiBTyMe111デフォルトの名無しさん
2019/09/28(土) 21:47:53.70ID:w31BDneZ112デフォルトの名無しさん
2019/09/28(土) 23:50:31.47ID:Bvcc+55+ Ruby なら、
require 'csv'
str = <<"EOT"
id 部門 販売品目
1 A りんご
2 A バナナ
3 A りんご
4 B バナナ
5 B ぶどう
6 B ぶどう
EOT
# 空白区切りで、ヘッダー有り
options = { :headers => true, :col_sep => " " }
# Hash.new で、初期値は、{ }
hash = CSV.parse( str, options ).each_with_object( Hash.new { |h,k| h[ k ] = { } } ) do | row, hash |
dep = row[ '部門' ] # department
item = row[ '販売品目' ]
if hash.dig( dep, item ) # Ruby 2.3 から
hash[ dep ][ item ] += 1
else
hash[ dep ][ item ] = 1
end
end
p hash
#=> {"A"=>{"りんご"=>2, "バナナ"=>1}, "B"=>{"バナナ"=>1, "ぶどう"=>2}}
require 'csv'
str = <<"EOT"
id 部門 販売品目
1 A りんご
2 A バナナ
3 A りんご
4 B バナナ
5 B ぶどう
6 B ぶどう
EOT
# 空白区切りで、ヘッダー有り
options = { :headers => true, :col_sep => " " }
# Hash.new で、初期値は、{ }
hash = CSV.parse( str, options ).each_with_object( Hash.new { |h,k| h[ k ] = { } } ) do | row, hash |
dep = row[ '部門' ] # department
item = row[ '販売品目' ]
if hash.dig( dep, item ) # Ruby 2.3 から
hash[ dep ][ item ] += 1
else
hash[ dep ][ item ] = 1
end
end
p hash
#=> {"A"=>{"りんご"=>2, "バナナ"=>1}, "B"=>{"バナナ"=>1, "ぶどう"=>2}}
113デフォルトの名無しさん
2019/09/29(日) 07:32:11.18ID:V4rAOO4u >>111
いきってないで答えてやれよヴァカw
いきってないで答えてやれよヴァカw
114デフォルトの名無しさん
2019/09/29(日) 09:35:48.11ID:l54OkWQk AccessならGurupByしたクエリを名前を付けて保存しておくのが正解
サブクエ遅いから
サブクエ遅いから
115デフォルトの名無しさん
2019/09/29(日) 19:47:04.97ID:mdCYdpYZ 普通に部門販売品目でソートしてから
dynasetからvbaでカウントしたら駄目なの?
sql文を捏ね繰り回すよりその方が簡単な気がするけど?
dynasetからvbaでカウントしたら駄目なの?
sql文を捏ね繰り回すよりその方が簡単な気がするけど?
116デフォルトの名無しさん
2019/09/30(月) 00:02:54.58ID:ELYMfL9+ 質問者が一番馬鹿だが答える方も馬鹿ばっか
117デフォルトの名無しさん
2019/09/30(月) 00:24:58.55ID:K8zar7Eh なのでこのカウントの質問、ここで終了!
118デフォルトの名無しさん
2019/09/30(月) 10:47:04.29ID:6yDcPDBq どうしてもsql文でやりたいなら
他のsql系統のスレで聞いたほうが良いと思う
accessはsqlとvbaを組み合わせて使えるので
込み入り難いからやり易い面が有る
自分は割りとそういうやり方をしてしまう
けど他のリレーショナルデータベースはsqlを駆使しないといけない場面が多いだろうから
その手の方面の人の方がsql文に詳しい人が多いと思う
sql文の質問をしても構わないと自分は思うけど一応vbaスレなんで
他のsql系統のスレで聞いたほうが良いと思う
accessはsqlとvbaを組み合わせて使えるので
込み入り難いからやり易い面が有る
自分は割りとそういうやり方をしてしまう
けど他のリレーショナルデータベースはsqlを駆使しないといけない場面が多いだろうから
その手の方面の人の方がsql文に詳しい人が多いと思う
sql文の質問をしても構わないと自分は思うけど一応vbaスレなんで
119デフォルトの名無しさん
2019/09/30(月) 23:29:21.37ID:GbU6Rrgw 他のリレーショナルデータベースはもっとましな言語で使うんだよ
120デフォルトの名無しさん
2019/10/05(土) 14:25:32.14ID:pEFp3YWl ""とclearcontentsの違いが明らかになったな
121デフォルトの名無しさん
2019/10/05(土) 14:25:47.70ID:pEFp3YWl 誤爆です
122デフォルトの名無しさん
2019/10/22(火) 14:54:31.07ID:Si05vw2X 俺なら
SELECT [部門] & [果実] AS 式1, Count("HOGE") AS DUMMY
FROM テーブル1
GROUP BY [部門] & [果実];
SELECT [部門] & [果実] AS 式1, Count("HOGE") AS DUMMY
FROM テーブル1
GROUP BY [部門] & [果実];
123デフォルトの名無しさん
2019/10/30(水) 06:50:33.11ID:q0119UkA 普通の関数を使ったSQLがコンパイルエラーで通らなくなるのは、ずっとあるバグなの?
文字列中に含まれるスペースをなくした列同士を比較したいだけなのに
文字列中に含まれるスペースをなくした列同士を比較したいだけなのに
124デフォルトの名無しさん
2019/10/30(水) 08:05:14.44ID:QrHO4Al6 DBに上げる前のデータ加工はExcelとPowerBIについてくるPowerQueryで完結させる
DB自体は何でも良い
Accessはフロントエンド
こういう感じの運用が一番融通が利いて楽
DB自体は何でも良い
Accessはフロントエンド
こういう感じの運用が一番融通が利いて楽
125デフォルトの名無しさん
2019/10/31(木) 14:53:16.10ID:3aW6/Vt0 >>123
通ってたのが通らなくなったなら参照設定確認が最初の一歩
通ってたのが通らなくなったなら参照設定確認が最初の一歩
126デフォルトの名無しさん
2019/10/31(木) 16:05:52.19ID:IlVblaPX optionala argumentについて教えてください。
https://tsware.jp/tips/tips_119.htm では 引数を Optional かつ バリアント型で宣言する と書いてありますが、
総本山の https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/understanding-named-arguments-and-optional-arguments では
あっさりと string型 で宣言しています。どっちが正しいのでしょうか?
それと、プロパティーシートから 関数を呼び出すときに引数を省略できますか?エラーばっかり出てしまうので,不可能という気がしてきますが、実際はどうでしょうか?
https://tsware.jp/tips/tips_119.htm では 引数を Optional かつ バリアント型で宣言する と書いてありますが、
総本山の https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/understanding-named-arguments-and-optional-arguments では
あっさりと string型 で宣言しています。どっちが正しいのでしょうか?
それと、プロパティーシートから 関数を呼び出すときに引数を省略できますか?エラーばっかり出てしまうので,不可能という気がしてきますが、実際はどうでしょうか?
127デフォルトの名無しさん
2019/10/31(木) 16:14:24.18ID:IlVblaPX ひとつ解決しました。
ここ https://bettersolutions.com/vba/macros/optional-arguments.htm に Remember that IsMissing will only work with the Variant datatype. と書いてあるので、
IsMissingを使いたい場合にvariant型である必要があるだと思います。
プロパティーシートからcallするときに省略可能かどうかはまだわかりませんね。
ここ https://bettersolutions.com/vba/macros/optional-arguments.htm に Remember that IsMissing will only work with the Variant datatype. と書いてあるので、
IsMissingを使いたい場合にvariant型である必要があるだと思います。
プロパティーシートからcallするときに省略可能かどうかはまだわかりませんね。
レスを投稿する
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 【悲報】SP500今日も暴落で完全に世界恐慌。高市恐慌として全世界で語り継がれそう [686538148]
