Access総合相談所 28
■ このスレッドは過去ログ倉庫に格納されています
ACCESSに関する質問はこちらへ ▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━ ★ OS、ACCESSのバージョンを明記してください。 ★ 質問内容は具体的に書いてください。 ・何がしたいのか ・どんな処理を試したか ・動作状況など駄目な理由 テーブル/フォームの構成、クエリ、VBAの内容など差し支えない 範囲で詳しく書くと、早く回答が得られるかもしれません。 図解があれば尚良し。 聞き返さなくても詳細が把握できる質問が望ましいです。 ★ 事前にヘルプ・Google等で調べられる範囲は調べてください。 大概の疑問は検索することで解決します。 ★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。 ギブアンドテイクで情報を共有しましょう。 ▼━質問テンプレ ━━━━━━━━━━━━━━━━━ 【 システム環境 】 Windows**, Access** 【 VBAが使えるか 】 はい・いいえ 【 VBAでの回答 】 可・否 【 検索キーワード 】 Googleやヘルプでの検索キーワード 前スレ Access総合相談所 27 http://mevius.5ch.net/test/read.cgi/bsoft/1424828244/ >>343 SQL ServerとフロントエンドのAccessの組み合わせがいいのでしょうかね? >>344 Access使ってたらOfficeのアップデート云々の話が解決しないんじゃない? >>345 仰るとおりですね。AccessがあまりにとろいのでVBSで書き込んでいるので、VBSでいいですかねw >>344 MariaDB or PostgreSQL とAccessにしとけ >>347 どうしてですか? 同じMSどうしの方が安定しそうですが… >>349 SQL Serverはクライアントアクセスライセンスが必要 経費、と言うモノを考えろ >>350 ああ、うちは小規模なので無料の奴で足りるんですよ。 >>351 あ、言っちゃだめw expressの正しいライセンスは自分のpcにいれて自分のためだけに使うためのものです。 >>352 そうですかw 以後、気をつけます。 ところでvbsで書き込みしているんですけど、遅くて困っています。 jscriptとかPowerShellとかC言語やらC++の方が速いんですかね? >>353 遅いってのはどれくらいのコトかな。 数秒/件とか1000件書き込みに何秒とか表現可能でしょうか? >>354 すみません 測っていません 体感で遅いなあと感じだけです. 一般論としてはC++が最速なんでしょうか? どっかのサイトではjscriptはvbsより20倍速いというのを読んだことがありますが… SQL ServerのExpressでは通常業務では使えない Access の置き換えならお釣りが来るくらい過剰スペックです >>356 異常な日常業務に使っているのでOK ですか? >>358 ここは基本的に技術交流の場ですので かまってちゃんは遠慮してください。 通常業務とは、それが結果的に利益を生むということです。 expressは基本的に開発テスト環境用途、あるいはAndroidで実装されてるSqliteのような一時保管DB用途を想定しています。 有償版と比べて機能的ロックを殆どかけていませんが、 本来はwindow server代と合わせて5calで50万円くらいの 製品のお試し版、という認識は持ってください。 >>359 Developer Editionと勘違いしてない? >>359 それは LocalDB ね Express は小規模向けのエディション ここ Access スレだよね 申し訳ございません。私の勉強不足でした。 商用利用は規約違反になりません。 ソフトウェアとの抱き合わせで配布することも可能です。 windows homeやproでサービスとして公開(共有)することは禁止らしい。 なので、WindowsServerでcalも買って expressを入れるというコスパ良いんだか悪いんだかわからない使い方なら 規約違反にならないっぽいです。 MSAccessデータベースの共有が認められてるのは、「ファイルの共有」だかららしい。 SQL Serverって今はLinux版もあるんだぜ >>363 でもSQL Server部分だけはライセンス発生しまっせ >>347 maria dbって最近のよく聞くが何がいいの? >>366 ポスグレのがいいじゃんそれだと。枯れてるし MariaDBの良い所はMySQLの技術蓄積がそのまま使えるのよ 普及度はMySQL>>PostgreSQLなので 特に日本では >>368 どちらのほうが永続的に使えそうですか? >>370 確実なのはPostgreSQL 全くのフリー(BSDライセンス) MariaDBはGPL2ライセンスゆえ著作権違反で訴える権利をMariaDB側が持ってる ライセンス基準が違う なおMariaDBの元のMySQLはオラクルが著作権持ってるのでオラクルがその気になれば何時でも裁判起こせる SQL ServerはODBCドライバーがWindowsに標準で入っているからいいんだけど 他のDB使ってる人は各クライアントのドライバーのインストールどうやってるの? >>371 みんなポスグレ使おうよ、ノウハウ共有して貯めよ でも、広まり過ぎると仕事なくなるしな リレーションとexcelのvlookupって結果は似てても 技術的にはどう違うものなの?アルゴリズムとか >>376-377 それを担当者がインストールしてまわるのか または各ユーザーに自分でインストールしてもらうのか それとももっといい方法があるのかな アップデートも面倒みなきゃならんよね ユーザーごとの権限管理ってどうやるの? VBAで実装すればできるんだろうけど、標準機能だとどうなのか そもそもmdbやaccdb自体にセキュリティとかあるのか知らないけど >>382 ファイルなんだからふぁいるの権限設定じゃだめなの? Access2013 vbaで作業しています。 フォームに、 ・A,B,C,...といった入力項目 ・cmd1, cmd2, cmd3,...といったボタン があります。 cmd1, cmd2, cmd3,...が押された時に、A,B,C,...に値が入力されているかチェックするために、 (Aは4桁の数値、Bはまた別の条件...) Private Sub cmd1_Click() If IsNull(Me.A) = True Or Len(Me.A) <> 4 Then MsgBox ("Aを入力してください") Me.A.SetFocus Me.A.Dropdown Exit Sub End If 'Bについてもチェック End Sub のようにしていましたが、cmd1, cmd2, ...でコードの重複を避けるためにどのように書くのが良いでしょうか? チェックする組み合わせはAとBだったりAとCだったりします。 とりあえず、いまは、 Private Function check_A() As Boolean check_A = True If IsNull(Me.A) = True Or Len(Me.A) <> 4 Then MsgBox ("Aを入力してください") Me.A.SetFocus Me.A.Dropdown check_A = False End If End Function Private Sub cmd1_Click() If Not check_A Then Exit Sub End If 'Bも同様にチェック End Sub のように関数の戻り値を使って対処しています。 その3つ(以上)のボタンの仕事は、入力内容をチェックしてエラーだったらMsgBoxを出す、それだけなんですか? それぞれのボタンで、チェックする入力項目(TextBoxなど)が異なると? >>386 例として簡略化しているだけで、 cmd1: A,Bの値を使った処理1 cmd2: Bの値を使った処理2 cmd3: AとCの値を使った処理3 のようにメインの処理はそれぞれ別にあります。値チェック部はAかBかCか...以外は共通しており、 値チェックが通らなかった場合、メインの処理に入る前にexitする点も共通です。 理想としては、 Private Sub cmd1_Click() check_A check_B AとBを使った処理 End Sub だけで、ダメな値の場合にcmd1_Clickをexitしてくれればいいんですけど。 cmd1--3どれ押しても関連チェックさせるんだろ? >>387 そこまでできてるならあと一息なのでは? 私だったら、各不備はcheck functionの中にmsgbox仕込んで あとはclick procedureのほうで checkA+checkB<>-2 ならやめる、と書くけど。 booleanといってもしょせん、true値-1、false値0の 数値なので。 >>383 ログイン機能つけて、ユーザー毎に項目オンオフとかは? アプリの中の話 フォーム上に配置した複数選択コンボボックスにおいて、ドロップダウンリスト内の並びは 「値集合ソース」にてSQL記述で任意のキーに応じた並びにできているのですが、 複数選択して閉じてリストが消えた後のコンボボックス内の選択データが テーブルの並び(データ作成順)になってしまいます。 これも任意の並びにするにはどうすればいいでしょうか? >>392 どうすれば良いかはわかりません コンボボックスで複数選択可能は知りませんでした 明日やってみてヒントにでもなるようなことがわかればレスします Accessからの乗り換えでオススメはありますか? >>395 まだアップサイジングウィザードとかいうのあるんですかね? SQLServer+Accessに乗り換えがオススメなのですか? そうですか 今時Accessだと開発効率が悪いのでOSSDBと高速開発ツールかなと思ってました え?そういうことを考えられる人がする質問とは思えませんが… どうぞ、自己解決して下さいな。 >>398 高速開発ツールずっと探してます 何かおすすめがありますか? >>392 ですが、ここでは回答を得られないので質問を閉じます >>400 Access+SQLServerがおすすめですよ RestAPIやらリアルタイムJava使えるし何よりWebだからモバイルでも使えるし 間違えてもPowerAppsとか行かないように >>404 PowerAppsに移行するものだと思ってました 情報ないので手がついてませんが Access365?でWebアプリ作成が作成出来なくなってるみたいですしOffice 365環境の社内アプリ的なものはやはりPowerAppsなのでは? PowerAppsって何ができるの? EDIと繋げて受注システムとかできんの? >>524 マイクロソフト製品で揃える意味は分かるがライセンス料がかさむからって話 ありがとー 数年で社内システムを移行出来る気はしないが、こうすれば移行出来るよって残していけそうです ブラウザアプリを1から作るのって、頭禿げるよ。 ボタン一つ、テキストボックス一つ置くのも全部手打ちだし、 CSSで体裁整えなきゃならんし、 データベースのサーバードメインとウェブページの置場が 異なるときにcors制限をどう克服するか、というのもあるし。 Access初心者です。教えてください。 下記のようなテーブルがあります。 【地域テーブル】 地域コード、地域 【都道府県テーブル】 都道府県コード、都道府県名、地域コード 【市区町村テーブル】 市区町村コード、市区町村名、市区町村カナ、都道府県コード 【地区テーブル】 郵便番号、地区名、地区名カナ、市区町村コード 【顧客テーブル】 顧客ID、顧客名、地域名、都道府県名、市区町村名、地区名 フォーム顧客登録(分割フォーム)で顧客ID、顧客名を手入力。 地域名、都道府県名、市区町村名、地区名はコンボボックスで絞り込み選択するまではネットを参考に出来ました。 分割フォームのコンボボックスで地域や都道府県名などを選択すると先に入力したレコード(コンボックスで選択されたもの)が消えます。 顧客テーブルを確認するとコンボボックスで選択したものは各IDが入力されています。 分割フォームと顧客テーブルで地域名などを表示するにはどうしたら良いのでしょうか? 【コンボボックス:地域名】 列数 2 列幅 0cm;8cm コントロールソース 地域名 値集合ソース 地域テーブル 値集合タイプ テーブル/クリエ 連結列 1 更新後処理 Private Sub 地域名_AfterUpdate() Me!都道府県名.Requery End Sub 【コンボボックス:都道府県名】 列数 2 列幅 0cm;8cm コントロールソース 都道府県名 値集合ソース SELECT 都道府県テーブル.都道府県コード, 都道府県テーブル.都道府県名, 都道府県テーブル.地域コード FROM 都道府県テーブル WHERE (((都道府県テーブル.地域コード)=[Forms]![F_顧客登録]![地域名])); 値集合タイプ テーブル/クリエ 連結列 1 更新後処理 Private Sub 都道府県名_AfterUpdate() Me!市区町村名.Requery End Sub 【コンボボックス:市区町村名】 列数 2 列幅 0cm;8cm コントロールソース 市区町村名 値集合ソース SELECT 市区町村テーブル.市区町村コード, 市区町村テーブル.市区町村名, 市区町村テーブル.市区町村カナ, 市区町村テーブル.都道府県コード FROM 市区町村テーブル WHERE (((市区町村テーブル.都道府県コード)=[Forms]![F_顧客登録]![都道府県名])); 値集合タイプ テーブル/クリエ 連結列 1 更新後処理 Private Sub 市区町村名_AfterUpdate() Me!地区名.Requery End Sub 【コンボボックス:地区名】 列数 2 列幅 0cm;8cm コントロールソース 地区名 値集合ソース SELECT 地区テーブル.郵便番号, 地区テーブル.地区名, 地区テーブル.地区名カナ, 地区テーブル.市区町村コード FROM 地区テーブル WHERE (((地区テーブル.市区町村コード)=[Forms]![F_顧客登録]![市区町村名])); 値集合タイプ テーブル/クリエ 連結列 1 丁寧な質問の仕方ですな。 ぱっと見ですけど、顧客テーブルに格納するのは、 「コード」なのか「名」なのかの錯綜を感じます。 段階的絞り込みのコードは問題なし。 一般的には、「地域名」のスナップショット的な 保存性を重視しないのであれば 顧客テーブルは、顧客ID、地域ID、都道府県コード 以下 類似。 これをクエリー作成画面で各マスターとのリレーションを張って、 地域名なども表示するクエリーを作成、 フォームのデータソースにこのクエリーを指定する。 フォームは、やや冗長的でも「コード」のフィールドと、 連動する「名」のフィールドを配置する。 逆に「地域”名”」だけ保存出ればいいのであれば、連結列2にします。 値集合ソースのSQLは、 WHERE 都道府県テーブル.地域名=[Me]![地域名] としても、今時のPCで動作が重いということはないでしょう。 >>414 さん ご返答ありがとうございます。 >ぱっと見ですけど、顧客テーブルに格納するのは、「コード」なのか「名」なのかの錯綜を感じます。 ご指摘通り初めてのAccess、初めてのDBで戸惑っておりイマイチ頭の中が整理できていないかもしれません。 クエリーまだ理解しておりませんので勉強してご教授頂いた通りやってみます。 ありがとうございます。 Accessはいかにクエリーを使いこなすか、になる VBプログラマがAccess使う案件に関わるとクエリーが存在しないのでおかしいなと思ったら全てVBAでデータ加工されててAccess自体がVB EXE状態になってて解析するだけで一苦労だった思い出 仕様書にVBAの仕様ぐらい付けとけ、と言いたくなった思い出 それってVBA内にSQLそのものを記述してた ってことだろ? そっちのが判り易くね? 標準モジュールで Public Function RunSQLcommand( とか宣言しといて それぞれのフォームやレポート内のVBAで Call RunSQLcommand( って呼び出す奴 その直下にSQL書くだけだもの 行ったり来たりしない分余程楽じゃね? テーブルとそのVBAをまるごと出力するだけで、移行先の連中にしてみてもそっちのが解析が百倍は楽 >>416 Access はクエリやレポートなどのオブジェクト数に上限があります オブジェクト数が多いと accdb が重くなったり accde が作れなくなる事があります だからコード上に直接クエリ(SQL)を書く開発者は多いです 逆にクエリで保存するメリットはクエリがコンパイル済みになり実行速度が上がります このあたりを考慮しながら使い分けると良いですよ レガシーコードをリファクタリングしたとき、VBA外での使用箇所探すのに苦労したから、 クエリはプロトタイプ限定でしか使わず、accessで納品の場合はVBAのみにしてる。 >>418 >>実行速度 これに関して速度遅いと文句言われる場合、クエリーにせざるを得ない Windows2000+Office2000とかで開発してた時は文句言われぱなしだった 今はハードが速くなってVBAでも大きな問題無くなってるけど VBA使わずにACCESSの機能使いまくりの素人システムなんて移植しようとは思わんな 素人が素人の範囲で完結するならVBA無しでもOKでしょ All or NothingでVBA有りきで作ったならVBAの仕様も書類上載せて作れば良い 仕様書上にないVBA使われてる場合が困る 見易い・理解し易い仕様書にお目に掛ったことは無いけど 自分で解析した方が早くね? 仕様書がお粗末だって嘆いてる時間がムダ それでも仕様書なんてものにお目にかかれるだけ幸せってもんだ ネガティブ・シンキングw 物事前向きに考えられないのかな 水戸黄門のテーマソング歌ってあげようか?w そりゃ、規模からいえば零細でしょ(失礼、今は小規模企業というのか) 中小の規模すら満たさない けれども、そんな零細(小規模企業)が世の中支えてるのも現実 零細(小規模企業)がいなくなったら中小も大手も立ち行かなくなる、生き永らえない だけど、零細(小規模企業)は中小から有ること無いこと押し付けられて特殊な集計とか しなきゃならない 畢竟市販のアプリじゃ対応できない そおゆうトコにAccessの出番を見出すんじゃ? 単価が合えばSler辺りに任せられるけど、とてもとても って規模が対象でしょ 裾野、広いよー 件数で稼ぐのがAccess って棲み分けだと思うんだが 君たちパッタリ書き込みなくなったり急にスレ伸びたり、おもしろいな。 sqlの特に条件句に動的要素があればadoでいくつかの手順組んでおいて >>417 みたいに実行するほうが、ラクな時もあるね。 あと、フィールドが30以上あるやつの転記も。 2要素程度のパラメータークエリーだったら、クエリー保存して queryオブジェクト使ってパラメーター埋めるけど。 ちょっと何言ってるか分からない w ado でいくつかの手順組む? 2要素程度の・・だったらクエリー・・(ry ? 無理してカキコしなくともロムってりゃいいのに 君たち じゃなくて、あんたがおもしろいわ UNITBASEの売り込みが有りました。 ACCESS を移行出来るらしいので話をうかがってみようかと 今はAccess選ぶかFileMaker選ぶか、だろ Accessはデータベースと言うより帳票ツールが主な用途だし、零細企業のDBならFileMakerで良い(ライセンス料金ボッタくりだが) まあDB部分だけならPostgreSQLかMariaDB(MySQL)かSQLServer Expressにする方が妥当 431です 後継者問題がなければ現状のSQL Server Express + ACCESS なんですけどね んーどうしたものか 今時零細企業でAccessの社内システムさわるような間抜けにAccess は使いこなせない、というジレンマ >>438 まあ、それは言える VBA出来るくらいならVisual Studio ExpressでVB.NETでアプリ作るわな 両者の開発経験者なら比べるまでもなく分かると思うが Access と同じ事を .NET でやろうとすると何倍も工数がかかる 業務アプリの生産性に関しては Access の方がはるかに上 >>439 VB.NET 詳しい? フォームで、例えば納品書を想像してもらえればいいんだけど 明細部分をサブフォーム使ってるとするじゃん その、品名、摘要、数量、単位、単価、金額、備考とかの部分を Excelの列拡げるみたいにドラッグで拡げたり縮めたりできる? Accessでもデータシートビューでなら可能だけど、一行を二段にしたりってケースもままあるから どうしても設計しなきゃなんないんだよなあ そこがVB.NETならできる ってなら、すぐさま乗り換えるんだけど モニターサイズもFHDとHDが混在してる環境だと縛りがキツかったりするし いまだにスクェアSXGAで頑張ってる人もいるし、ノートに依ってはHDですら無かったりもあったり・・ 解像度で自在に変化してくれるフォーム 欲っしいなー >>440 あぁ、そうなんですか 439さん、やっぱいいです 読み流してくださいw 社内システムをちょいちょいってのはAccess が簡単ってことでうっかり25年も使ってしまって そのまま後継者に悩む老人になるとは想像もしてなかったなあ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる