Access VBA 質問スレ Part2 (788レス)
1-

692: 2023/09/14(木)13:41 ID:t/htNvkA(4/6) AAS
んで、実行結果(イミディエイトウィンドウ)が

clicked ------
frmSub Form_Current
frmSub Form_Current
--------------
693
(1): 2023/09/14(木)14:52 ID:UPFEbPP4(3/4) AAS
イメージだけで応答してたから、どうにもとっ散らかってた 現物当たって真似してみた
外部リンク:learn.microsoft.com
  このイベントは、フォームが開いたときと、フォーカスがレコード間を移動したときの
  いずれの場合にも発生します。
複数回発生して当たり前だった 
Form_Load (読み込み時) 或いは Form_Abtivate (アクティブ時) に変えればおk
どうしてもForm_Current (レコード移動時)に設定したい場合は見て見ぬ振りをするしか
694: 2023/09/14(木)15:04 ID:t/htNvkA(5/6) AAS
>>693
loadやactivateではrequery時にイベントが発生しないので、本来の目的を達成できません
また、最初にフォームが開かれたときにはcurrentは一度しか発生していません
695
(1): 2023/09/14(木)16:54 ID:UPFEbPP4(4/4) AAS
btnRequery をクリックしても Requery できない?という意味?
Me.frmSub.Requery を Me!frmSub.Form.Requery にしてみては?
Me. か Me! かでも変わって来るし、.Form を付ける付けないでも挙動が変わったような

あと、frmMain を開いただけでも frmSub Form_Current が発生するのも違う気がするし
frmMain でパラメータ変えて frmSub を Requery させたいとかなら
外部リンク:teratail.com このhatenaさんの回答を参考にしてみたり
Docmd.Requery でやっつけてみたり Requeryの使い方もクセがあるので切磋琢磨が
省1
696: 2023/09/14(木)17:08 ID:t/htNvkA(6/6) AAS
>>695
frmSubはfrmMainに貼り付けられているのでfrmMainを開くと当然frmSubも開かれるので、
Open, Load, Current等のイベントはひととおり発生します(仕様通り)
これについては特に問題ではありません

問題にしているのはbtnRequeryをクリックしたときに、Me.frmSub.Requeryを一度しか呼んでいないのに
frmSubのCurrentイベントが二度発生していることです

紹介いただいたteratailのページを参考にあれこれ試してみたいと思います
697: 2023/09/14(木)21:20 ID:dY8DD9uu(1) AAS
AccessにGROUP_CONCATみたいなのなかった?
698
(1): 2023/09/14(木)23:10 ID:kQn+Df7T(1) AAS
サブフォームのレコードソースにテーブル指定して >>691 やってもカレントは一回しか表示されんけどな
レコードソース無ければ2回カレントは表示される

サブフォームにレコードソース指定してる?
699: 2023/09/15(金)08:38 ID:cxAk3WqI(1) AAS
>>698
たしかにレコードソースはしていしていません
なるほど理由はよく分からないけれど、原因は分りました
ありがとうございます
700: 2023/10/03(火)11:54 ID:BE4+HOMv(1/2) AAS
ちょっと不思議な話
よくある数値の切捨て処理のfunctionとして
Function RoundDownDec(decNum as Currency, intPlace as Integer) as Currency
 RoundDownDec = Fix(decNum * 10 ^ intPlace) / 10 ^ intPlace
End Function
処理したいデータの都合で与える数値も戻り値も十進型としています
(正負の処理などは今回の本題から外れるので例からは省いています)
省12
701: 2023/10/03(火)11:59 ID:BE4+HOMv(2/2) AAS
ちなみに蛇足ですが、普通に
Function RoundDown(dblNum As Double, intPlace As Integer) As Double
とdoubleを引数にした場合は、特別なことをしなくても RoundDown(33.6, 2) の結果は33.6となります
702: 2023/10/04(水)10:07 ID:e9fui2Qq(1/2) AAS
浮動小数点を経由するので誤差から免れることはできません(以下はイミディエイト ウィンドウでの実行と結果)
? Fix(33.6 * 10 ^ 2), Fix(33.6@ * 10 ^ 2), Fix(33.6! * 10 ^ 2)
3360 3359 3359
単精度でも同様

? Fix(33.6@ * 10 ^ 2) / 100, Fix(CCur(33.6@ * 10 ^ 2)) / 100, Fix(33.6@ * 100) / 100
33.59 33.6 33.6
べき乗を使うことが誤差を生む原因の一部でもあったりするので、CCur()で一度補正?したりで影響を減らすとかも考えられます。
703: 2023/10/04(水)10:57 ID:95ZKO4kH(1/2) AAS
検証ありがとうございます

浮動小数点を経由するので誤差がでるのは理屈としては理解できるのですが、
わざわざ十進型を使ってるのに…というのや、Fix()に渡される式の結果ではなく、
渡された段階で暗黙的な型変換が行われているっぽいのが腑に落ちなさの一因なのでしょう
704: 2023/10/04(水)14:52 ID:e9fui2Qq(2/2) AAS
? Fix(33.6@ * 10 ^ 2) , Fix(33.6@ * 100)
3359 3360
の結果からもわかるように、今回の場合は 10 ^ 2 の値が浮動小数点であり ≠100 である
ということです
なので「33.6@ * 浮動小数点」は33.6@を浮動小数点として計算する(はず)ので、その結果が
許容できない値になってしまったと
対策として CCur(33.6@ * 10 ^ 2)で本来の値に近くなるように書きましたが、
省5
705: 2023/10/04(水)15:22 ID:95ZKO4kH(2/2) AAS
更なる解説ありがとうございます

? TypeName(10^2)
Double
正直これは盲点でした
原因がはっきりわかりすっきりしました
ありがとうございます
706
(1): 2023/10/04(水)21:35 ID:GiHPLbjK(1) AAS
VBAの内部計算につかう型は結構複雑な変換をする
33.6@ * 整数変数の結果は、Currency型だぜ
多くの関数や演算子で、より精度の高い型を使おうとするんだが、べき乗はDoubleしか返さん仕様っぽいな
自分でCurrencyかDecimalでべき乗する関数作れば解決
707
(1): 2023/10/04(水)23:36 ID:hn2MViTp(1) AAS
OpenArgsってなんて読んでますか?
何の単語の略なんでしょうか
ご存じのかた教えてください
708
(1): 2023/10/05(木)01:14 ID:6f6nA7M7(1) AAS
>>706
CurrencyかDecimalでべき乗する関数ってどのような?
709
(1): 2023/10/05(木)04:00 ID:xIPl72Do(1/2) AAS
>>708
こまかい条件省くとこんな感じじゃね
Function pow(x As Currency, y As Integer) As Variant
Dim i As Integer
Dim ret As Variant
ret = CDec(x)
For i = 1 To y - 1
省5
710: 2023/10/05(木)04:05 ID:xIPl72Do(2/2) AAS
>>707
おーぷんあーぎゅめんつ
argsはargumentsの略 引数
711: 2023/10/05(木)18:08 ID:dRlX4TIE(1) AAS
>>709
そんな低レベルな関数書いて「解決っ」とか言っちゃって時点でバカにも程がある
712: 2024/03/24(日)13:50 ID:6zfiQZRE(1/2) AAS
業務用のmdbがポンコツコードだらけなので書き換えてるんだけど、IIFが最大4個ネストしてあった。
4個ネストしてあるのは変数の値の判定が条件になっているけど、3個以下のは関数を呼び出している。
皆さんだったらどうします?
713: 2024/03/24(日)19:36 ID:S7ogYjm0(1) AAS
将来も含めてどのレベルの人がメンテしていくかだろうな
ソースの書き方も人それぞれ
例えばコメントの書き方でも、巷では行間に書くのが多いが、私は画面内に一度に表示できるロジックの行数減って見通し悪くなるから、行末側に書きたい
画面も横長だし
とか厳密に書き方決めないと人それぞれになってしまうのよね
ネストの段数にしても固定してしまうと、ムダに外出ししてしまうとかもあったり
ソースを見やすくするか、コメントで逃げるとかはもうコーティング規則にするか、それしないなら担当者判断でしかない
省1
714
(2): 2024/03/24(日)22:33 ID:6zfiQZRE(2/2) AAS
とりあえず、測定用の簡単なVBAを作って、IIFのネストがどのくらい遅いのか確かめてみます。
変数の値の判定くらいなら差はほとんどないという記事を読んだことがあります。しかし、関数呼び出しをするとかなり違うという記事も読んだことがあります。
なので、呼び出された関数が10個、さらにそれぞれの関数が10個の関数を呼び出すようなコードでも書いて調べてみます。
昔Ken Getzの本を何冊か読んだ記憶ではOptimizationの章では揃ってIIfを避けるように書いてありましたね。
715
(1): 2024/03/25(月)10:06 ID:wTe6l7XU(1/2) AAS
>>714
あぁ、それなら全ての条件を評価する(初期の判定で達しないとこも)から、遅くはなる
そういう弊害があるから一律使わなくするなんてことは、あったりするだろうね
そういうの見ると「はぁ⤵」って思うけど
716
(1): 2024/03/25(月)15:11 ID:wTe6l7XU(2/2) AAS
>>715
ちなみにif~thenも全判定なので、iif禁止で問題解決になるわけでもない
717: 2024/03/26(火)00:35 ID:YALkMi+F(1) AAS
>>714
Access のIIFの問題は判定結果に関わらず
TrueパートとFalseパートの両方が評価(関数なら実行)されてしまう仕様

a = IIF(True, funcA, funcB)
funcAだけでなくfuncBもコールされる
aにはfuncAの戻り値が入る

関数の実装内容によってはパフォーマンスに影響が出るでしょうね
省1
718
(1): 2024/03/26(火)12:43 ID:H7z+7I0f(1) AAS
>>716
if thenが全判定てなにを言っているんだ
andとorがショートサーキット演算しないだけだぞ
基本vbaはショートサーキットしない
例外はif関数ぐらいか
719: 2024/03/26(火)13:57 ID:kj3sgFU0(1) AAS
>>718
日本語理解できない、省略を補完する知識もないシナのアホが飛来したな
720
(1): 2024/03/27(水)13:19 ID:BmA2tbQj(1) AAS
Select CaseはTrueが出たところで打ち切るからTrueになりそうな条件を上の方に書くべきて読んだことがあるなあ
721
(1): 2024/04/19(金)10:08 ID:uD5nyH4z(1) AAS
>>720
普通の人間ならそうなるだろ?
レアパターンを先に評価するやつなんて変わり者
722
(1): 2024/04/19(金)11:20 ID:TeTgAng2(1) AAS
>>721
1、2、3……順とかにするのは普通
頻度順にまではしないことも多々ある
723
(1): 2024/04/25(木)00:00 ID:SJJcBnEk(1) AAS
>>722
マジックナンバーかよw
724: 2024/04/25(木)00:18 ID:9pftPPPG(1) AAS
>>723
┐⁠(⁠´⁠ー⁠`⁠)⁠┌
725: 2024/05/07(火)09:19 ID:dcFbjZui(1) AAS
MT4かよ
726: 2024/05/26(日)18:34 ID:TVlTpabA(1) AAS
FileSystemObjectのDeleteFolderかFolder.Delete使うと
対象フォルダーにシンボリックリンクやジャンクションあると
リンクじゃなく参照先が削除されるから気を付けた方が良いよ
定期的に掃除するログやバックアップフォルダーに
大事なフォルダーへのリンクなんか悪戯で作成されると消えちゃう
仕込まれた日と削除される日に時間差があるので追跡難しい
Defenderも気付いてくれない
省1
727: 2024/06/19(水)13:39 ID:Z4GWURaA(1) AAS
恐ろしい
そんな罠が
最近fsoの方使ってるから気をつけなければ
情報thx
728: 2024/06/21(金)17:49 ID:97rAWOJS(1) AAS
kill のが一般的だと思ってたが、そんなことは無かったのか
シンボリックリンクやジャンクション(つまりショートカット?)とかがある場合の挙動は知らないけど
比べた人が居て、ほぼおなじ動作なら kill のが楽だと
外部リンク:www.limecode.jp
729: 2024/06/21(金)18:18 ID:JmSRYM7J(1) AAS
削除の差異は意識してなかったからよくわからんけど、ファイルやフォルダの扱いがfsoの方が書きやすい、わかりやすいでこっち使い始めたかな…
再帰とかfsoの方が書きやすい(ソースがシンプル)はず…
730
(1): 2024/06/21(金)21:19 ID:jAZYV/Wx(1) AAS
BASICはOSだからな
731: 2024/06/22(土)08:54 ID:wHSF3406(1) AAS
違うか フォルダの中に拡張子.lnk があるかどうか事前にチェックするべきか(他の対象外のファイルとかも
DeleteFolder や RmDir だと無条件で削除してしまうからキケンがあぶないってことか
キャベツを包丁で切ったら青虫まで一緒に切り刻んでしまいました
あらかじめ葉をむしって洗ってから切りましょう みたいなことだろうな
732: 2024/06/22(土)11:29 ID:n6A/NZx5(1) AAS
チェックするの面倒だから豆腐切れない斬鉄剣で切るんじゃないの?
733: 2024/06/22(土)11:47 ID:R3uDiOs/(1) AAS
rm -rf /
734: 2024/06/22(土)13:28 ID:AjNB02TK(1) AAS
NG🚮
735: 2024/06/22(土)13:38 ID:o/eWDsQ7(1) AAS
どっちかというとやばいのは
rm -rf *
の方だったかな
736: 2024/06/24(月)00:37 ID:sso3G8sO(1) AAS
>>730
それはBASICインタプリタが起動しているだけ
737: 2024/06/24(月)15:47 ID:W/0xkGee(1) AAS
Accessに限らんじゃん Word でも Excel でもてことだよな
Excel連中に知られたら、阿鼻叫喚の世界だな あいつら節操無いし
738: 2024/06/24(月)16:26 ID:F40a+XEU(1) AAS
知らなくても知ってたといいはるからなw

逆に知らなかったことにすることあるわ
森は大切に育てないとな
739: 2024/10/01(火)09:21 ID:TDdMwhQJ(1) AAS
Conpact & Repairを内部からVBAで命令しようと思ってAIに訊きながら何時間も格闘したあとにググったらできないことが判明した。
Claude3.5とGemini Proがここまで馬鹿とは。
何度も提案してくるけどシンタックスエラー出しまくるし。基本構文すら間違えるようでは人間プログラマーはまだまだ安泰だね。
740: 2024/12/03(火)11:46 ID:dxkeCahd(1/2) AAS
ファイルメニューのオプションで、閉じるときに最適化する を選んでおくだけでいいような
これをチェックしないまま使い続けて「壊れた」とか「容量が」とか大騒ぎする方々が多い気がする
気がするだけだけど ×Conpact ○Compact
741: 2024/12/03(火)14:00 ID:En2cnAMO(1) AAS
毎回圧縮してたらすぐ壊れるよ
742: 2024/12/03(火)16:54 ID:dxkeCahd(2/2) AAS
数十社(延べ数百台)の業務アプリこなして来たけど、そんな事例は一件たりとも経験していない
じぶんが開発用とか運用テスト用とかで仕立てて来たマシンでも、そんな事態に陥った経験は無い
圧縮と書いているけど、最適化を指定しておけば修復もするはず 修復できたものは壊れたとは呼ばない
それでも尚壊れたというなら、お作法に則って無い制作物だったとかなのかも知れない
少なくとも「すぐ壊れる」事態には陥らない

開発途中で、試行錯誤を重ねてあれこれ試してしまった ←ようなケースでも、その作業の途中で
手動で最適化する、或いは一旦閉じて最適化をさせるだけで悲劇からは回避できる
743
(1): 2024/12/03(火)21:02 ID:BzSKhMhy(1) AAS
中身全部別ファイルにコピーしないと、なんて事も珍しくはないけどね
744: 2024/12/04(水)00:01 ID:hze6J6h6(1/2) AAS
運用中に壊れたことないけど、昔は開発中に度々壊れてた(壊してた)な…
昼と夜にバックアップしてた懐かしい思い出w
745: 2024/12/04(水)11:09 ID:oDv/ROvl(1) AAS
Accessが安定したのは2000くらいからだよ
746: 2024/12/04(水)11:12 ID:HphOCGl2(1) AAS
>>743
最適化は全部別ファイルにコピーしているよ
747: 2024/12/04(水)17:06 ID:ZnmFvaLG(1) AAS
ニホンゴムツカシイネ
最適化の最中は隠しファイル作ってソッチにコピーした後圧縮して、完了したら元ファイルに上書きしてる
 てことを言いたいのだろうが
(おれは)最適化(したファイル)は全部別ファイルに・・とも読めて、一瞬「無駄だろ?」とか思った
748: 2024/12/04(水)20:59 ID:hze6J6h6(2/2) AAS
日本語プロパティになった時は、なんて事しやがるねんて思った
特定文字列がうまく認識されなかったり(T_T)
初心者にはわかりやすかったけれども
749: 03/28(金)20:56 ID:DlL+MxYf(1) AAS
ACCESSには散々、世話になったがもう要らないんでvisual studioにレポートとサブフォームの機能だけ移行して亡くなっていいよ
750
(2): 03/29(土)13:14 ID:vo1WPeF9(1/2) AAS
ACCESSの便利さが全くわかってない素人w
あれをvsでやろうなんて全く思わない
vsでの書き方を覚えるのは不要な労力でしかない
vsでやれと言われたら従ってね。できなくはないからw
751
(1): 03/29(土)13:17 ID:vo1WPeF9(2/2) AAS
>>750
ちなみに試しかけてはみたよ
ACCESS消滅するまでムダだとわかった
その頃の書き方も変わる可能性もあるし
752: 03/29(土)16:02 ID:M3jsTRd4(1) AAS
ADODBですねわかります
753: 03/30(日)08:20 ID:F3fFdGm1(1) AAS
>>750
>>751
何を一人でゴチャゴチャ言ってんだ?
754: 03/30(日)09:20 ID:bJrIExL2(1) AAS

755: 03/30(日)22:12 ID:GlW9emcv(1) AAS
何も言い返せない素人の捨て台詞
756: 04/01(火)08:24 ID:4aIYCmIe(1) AAS
Visual Studio って、開発環境では?
C# + Visual Studio とか .Net + Visual Studio とかのように、言語+IDEと捉えるもののような
そこへAccessのレポート組み込め、サブフォーム(←なぜサブ?)の機能加えろとか、思い違いも甚だしい
757: 04/01(火)10:39 ID:KG0zKw3F(1) AAS
昔はVSにクリスタルレポートのサブセットとかバンドルされていたからレポートほしいという要望は普通では?
自作ではページングとか面倒だし
WinFormならあるからサブなんでしょ
見せるだけならデータバインドでいいけど編集するには標準コントロールでは物足りない
Access相当の連結コントロールがタダであれば捗るとは思う
Access廃止するならコントロールライブラリを提供するぐらいやって欲しい
758
(1): 04/02(水)01:27 ID:JuxZeGhm(1) AAS
クリスタルレポートはACCESSのに似てて期待したが、全然ACCESS相当まで機能追加されなかったので結局使われなかったな
(顧客へのシステムとして)
DB使わない部分では使ってたチームあったかもしれん
759: 04/02(水)12:09 ID:k9Y5euIy(1) AAS
>>758
ほんそれ
760: 04/02(水)12:27 ID:5a/oTSSC(1) AAS
クリレポ、一応はDB使った納品書かなんかで使ったわ
情報が全然なくて自分で弄りながら作ったからエラい苦労した記憶しかない
761: 04/02(水)14:23 ID:DR9S3YFG(1/2) AAS
Visual Studio の WinForms から Reportコンポーネント じゃあダメなんか?
外部リンク[html]:www.agtech.co.jp

True WinReports for .NET なんてのもあるけど、使えないのか?
外部リンク:www.componentsource.co.jp
Accessのレポートのように、微に入り細を穿つ作りはヨソのコンポーネントぢゃあ面倒 だとしても
用意されたものを使うっきゃ無いだろうに

ハナシが逸れついでにググって見ただけだから君らの一件との整合性は知らん
省2
762: 04/02(水)16:22 ID:kFN7dZ5N(1/3) AAS
クリレポを買収して中身一緒なの
763: 04/02(水)17:44 ID:DR9S3YFG(2/2) AAS
じゃあ、それで解決じゃん?困らないじゃん?
なんでわざわざAccessスレでVisual Studioのクリスタルレポートのボヤキしてるん?
764
(1): 04/02(水)18:38 ID:kFN7dZ5N(2/3) AAS
そもそもAccessスレはム板には相応しくないのかもしれん

引用
未だにCrystalReportの呪いがある人でそんなたいした帳票を出してない人には選択肢の一つとなると思います。
ネットで結構有名なC#等の質問サイト等に行くとすぐに「ActiveReportを導入しなさい」的な書き込みが多く見られます。
私が昔から尊敬するネットで良く質問に答えて下さる様な人たちも同じ返答をします。
ActiveReportって結構良い値段します。

なぜMicrosoftReportなのか?
省1
765: 04/02(水)18:43 ID:kFN7dZ5N(3/3) AAS
軒並み古いな
動画リンク[YouTube]
動画リンク[YouTube]
766: 04/02(水)23:12 ID:1Uz6aYIb(1) AAS
>>764
マクロしか使ってないやつはそう考えるだろなw
767: 04/03(木)07:43 ID:LP+5khva(1) AAS
結構いい値段しようが、デベロッパーなら価格転嫁できるだろうに プライベートユースで開発してンのか?
小規模向けでぜんぶ込みで安価になんでも開発できるAccess、しかももう改良の余地も無いほどに洗練されてる(w)
こんなレガシーな開発環境他に類を見ないだろ AccessのAccessたる所以ってことで、独自の地位を確立してるでいいじゃん
768: 04/04(金)10:57 ID:22bgX6/4(1) AAS
AccessでマクロとかVBA使うより
MDEだけ使ってあとはVS(VC/VC#)だろこの板なら常考
769: 04/04(金)13:05 ID:BXxq7UNx(1) AAS
か、かんちがいしないでよね!
サーバーなんかじゃないんだから!
って言い張るためだけに存在を許されている
770: 04/04(金)13:27 ID:EKlY2S8w(1) AAS
素人が必死
771: 04/04(金)17:00 ID:W5FNOvW3(1) AAS
python良いよ
外部リンク[aspx]:www.microsoft.com
外部リンク:github.com
外部リンク:qiita.com
772: 04/04(金)17:43 ID:xkW8ZkKi(1) AAS
vbaでないならsqliteでよくない
1-
あと 16 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s