Access総合相談所 27 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
Access総合相談所 26
http://toro.2ch.net/test/read.cgi/bsoft/1349049986/ >>227ではないが横からスマン
例えばログイン画面みたいなフォームでユーザIDを入力するとその人の写真が表示されるみたいなのは、
フォーム名!イメージコントロール名.Image = ”\\IPアドレス\C\画像フォルダ\” & UserID & ”.jpg”
とかで出来るけど、動画はやっぱり>>230のやり方しかないのかね?
フォームの中で動画が再生されるとカッコイイんだけどな m2tsとかいう家電用みたいなフォーマットは無理だけどね>wmp カラム名を行見出しにするにはどうしたらいいですか?カラム数が多いのでユニオンだとめんどくさいです Access2013のライセンスキーはあるんだけど、
本体はどこでダウンロードすればよいですか? iOSからaccessに接続する方法ってありますか? >>236
さんきゅー
キーのところの書いてあった どなたか教えて下さい。
djoin関数というテキストを結合する、合計するユーザー定義の関数があったと思うのですが
ソースが潰れていて参照ができません
どなたか魚拓かソースの構文を頂けませんでしょうか >>240
djoinってのは初耳ですが、これですか?
http://web.archive.org/web/20150517052733/http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaDJoin.html >>241
これです!
本当ありがとうございます、いやすいませんでした 【 システム環境 】 Windows7, Access2010
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可
【 検索キーワード 】ドロップダウンリスト 選択 レポート
テーブルで名簿を作っています
フィールド「発送先」をドロップダウンリストで作り、自宅か勤務先か選べるようにしたのですが、
レポートでフィールド「発送先」に自宅が選ばれていたら、フィールド「自宅発送先」のデータを表示する、
フィールド「発送先」に勤務先が選ばれていたら、フィールド「勤務先発送先」のデータを表示する
といった設定はどうすればよいでしょうか? >>243
私に質問内容がちゃんと解読できたか不明ですが
レポートとは別に自宅か勤務先を選択する画面があり
データの表示先は同じレポート上にあるという前提です。
データの表示先に=IIf([発送先]='自宅',[自宅発送先],[勤務先発送先])を設定
自宅と勤務先以外が発生するならswitch関数で対応してください。 >>244
うまくできました!
送付先の種類は必ず2つだけなので、大丈夫です。
IIf関数というものを使うのですね。
大変勉強になりました。
本当にありがとうございました。 SQL Server等の外部のデータベースエンジンを使って、.accdbはUIとかのみに使う方が、複数人で使う場合に壊れにくいと聞きましたが、
SQL Server等を使うほどでないにしても、UI部分の.accdbとデータベース部分の.accdbに分けるだけでも、効果ありますか?
その方が、UIのみ修正したりした場合でも、そっちの.accdbのみ配布し直せばいいから楽なような気もしますし…
こんな運用(.accdbを2つに分ける)って異常でしょうか。 >>246
昔自分もフロントエンド部とデータ部に分けたAccessのシステム作ったけど
安定性はよかったですね。
もう4年ほど運用していますが、データ部の破損は経験していません。
(まぁ、同時複数アクセスがあんまりないシステムだからかもしれませんが)
特に、画面やモジュールをアップデートしたいときに
気軽にできるのがよかったです。
バージョン管理して、ユーザ側が古いVerで立ち上げると
新しいバージョンのメッセを出して、ユーザ自身に新しいフロントエンド部をDLさせる
やり方はうまくいきました。 フォームの印刷を用紙サイズに合わせて一枚にするにはどうしたらできますか? あったらおれも知りたい jpgやpdfに出力してそっちの印刷でフィットさせるとかしか
道が無い気がしてる だけど文字が潰れるのは必至な前提という
ん?セルの枠線も行列番号も消した真っ白のExcelに送って「1ページに印刷」機能
したらどうなる? 明日やってみるか、、、 タテ・ヨコ比率は用紙サイズに合わせる大前提 顧客対応で内容をテーブルに記録しているのですが、後々おおよその統計を取るために
検索キーとなるタグ(1.クレーム 2.要望 3.障害 その他色々)も記録するようにしました。
タグは一つのフィールドに複数記録できるようになっていて、タグも別テーブルとして登録しています。
ここから質問ですが、統計を取るためにどのようなクエリを作ればいいのか分かりません。(クレームn件など)
単に総件数から該当するタグを持つレコードが何件なのかを数えるだけなのですが、選択クエリ以外
に手を出したことが無く、どこから取りかかればいいのか分かりません。
最終的にはフォームで期間指定ができ、任意の指定タグの件数と割合表示までを目標としていますが、
最初からつまずいています。
よろしくお願いします。 【 システム環境 】 Windows10, Access2013
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可・
Access2013で質問をさせて戴きます。
現在フォームにタブコントロールを設置しております(仮にタブの大元をtab_Mainとします)。
tab_MainにはX、Yタブをおいています。
また、テーブルαがあります。
テーブルαの構造は、
|ID|タブ|データ1|……|
|1|1|3/2|林檎|2個|
|2|1|3/3|林檎|2個|
|3|2|3/2|ミカン|1個
のような感じになっております。
なお、
ID1 = X
ID2 = Y
を想定しております。
この状況で、X・Yタブにテーブルαに関するリストボックスZを設置したいと考えております。
リストボックスZは、各タブ毎に内容を切り替えられるようにしたいと考えております。
このとき、リストボックスZの値集合ソースを
SELECT ID, タブ, データ1 FROM テーブルα WHERE タブ = (Me.tab_Main.Value + 1)
と設定をしても上手く行きませんでした。
このとき、どのように操作をすれば良いのでしょうか? Requery で表示されると思うけど
良く分からない画面設計だね どこまでリストでどこからがテーブルで作成するものなんでしょうか?
区分の数が多いとテーブルにするのでしょうか? リストとは何の事でしょうか?
基本的にデータの管理は全てテーブルで行うものですよ >>255
値リストというんですかね?
ドロップダウンボックスなどで選択するものをつくるとき
たとえば
赤 黒
というふたつの種別しかない場合でも
色テーブル
というものをつくったほうがいいということですか? >>256
増える予定がないか、もしかしたら増えるかもしれないけど自分しか使わないなら値リストで無問題
他の人も使う状況で、自分が直ぐに修正対応できない可能性があるならテーブルが無難 複数人使用でデータの壊れにくさとUI部分のバージョンアップのしやすさを目的として、データ用accdbとUI用accdbの2つに分ける場合、
テーブルのリレーションシップはデータ用accdb側でするんでしょうか。 UI用accdb側でするんですね。ありがとうございます。 便乗質問です
UI用とデータ用ってのは別ファイルにして
UI用からデータ用を読みにいかせるってことですよね?
重くならないんですか?
構成が不雑になりそうですが
わけるメリットはありますか? >>261
スタンドアロンならメリットなし
そうでないならメリットあり
UI用を各端末に入れることで、同じ画面を違うパソコンで同時に使える
データ用を共有することで各端末から入力されたものが一つのデータにまとめられ、各端末で共有出来る
処理は遅くなると思う
複雑になる点は、データ競合対策位かな? >>257
テーブルにわけたほうが修正しやすいから
わけたほうがよさそうですかね? 小さい会社やってますが
エクセルからの移行でAccessで業務管理やろうとおもいます
自分ひとりしかあつかわない(いずれ入力程度は従業員にしてもらうかも)のであれば
参考書にのってるような正規化やリレーションはある程度にして細かいことは無視しても大丈夫ですかね?
あまり細かく正規化してもやるだけ無駄な気がするのですがどうなんでしょうか?
やることは売上と社用車管理、従業員管理と
請求書発行くらいです Accessは印刷に弱いですが皆さんどのようにされてますか?
例えば請求書などでレコードが少ない場合は
空欄のまま表にするといったことも不得意ですよね? [1] 枠線(罫線)印刷済のヒサゴの請求書を使う (見栄えも良くなって顧客に好印象)
[2] その程度の悩みならその辺に転がってるサンプル使わせてもらう
[3] 業者に依頼または案件サイトに申し込んで受注を競わせる
[4] ついのめりこんで自作に勤しみ図らずも開発を生業とする部門を新設するまでに至る >>267
Accessが印刷に弱いなんてとんでもない
レポート機能はかなり強力です
例に挙げられている空行印刷などは開発者の能力次第で幾らでも対応可能ですよ >>269
市販ソフトなんだしデフォルトでほしいところですけどね >>265
少なくとも自分は>>258とは逆でやっている
具体的に書いてもらわないと258の正しさがわからない >>271
>>258の逆ということは、「UI側のリンクテーブル」に対して「UI側で」リレーションシップを
設定するとういうことだよね?
その場合、参照整合性や連鎖更新、連鎖削除の設定ができないのでは? ごめんなさい
リレーションをテーブルのリンクと勘違いしてました
>>258さん申し訳ない
258の内容で正しいです
あー恥ずかしい >>270
Access自体が初心者の触れるものではないですからね
Excelでやりましょう 印刷関係詳しく解説してるのサイトとか
本とかありますか?
印刷にかぎらず業務ソフトつくるときに役立ちそうな本などおしえてもらえると助かります クロス集計クエリの結果に任意の列見出しで空白カラムを追加するにはどのようにすればいいでしょうか?
XX:""では追加できませんでした。 1つのオブジェクト内に複数のSQLって実行できませんか? >>275
>>267のようなことならAccess関連のサイトでもけっこう扱ってると思うよ。
>>275がどの程度Access扱えるのかわからないけれど、クエリやVBAの基本はわかってるとして
自分が参考になった書籍
Access2002表現百科850 (Access全般。印刷関連のネタもけっこう充実してた印象)
Accessで学ぶSQL実践のツボ
経理業務のためのAccess実践講座 (締日請求書をつくるにあたって参考になった)
でも、実際の業務内容によっては書籍の内容が全く使えなかったり
業務ソフトといっても、どこまでのものを必要としているかにもよるので、
単に納品書や見積書つくって印刷するだけなら割と楽にできるだろうけど
在庫管理・入出金・締日による請求書作成などまでしようと思うなら
それなりの時間・労力がいるよ。
あと、市販の業務ソフトメーカーのサイトでフォームのデザインや、帳票レイアウトなどを参考にしたり。 シートセット新規作成(シートセットマネージャー)で図面を保存している
フォルダーを開こうとしても図面一覧が出てこないんですが
何が原因なんでしょうかね。 教えてください。
ACCESSのVBAを書くエディタ部分は、折りたたみってできないんでしょうか?
よく、エディタでHTMLを書く場合、タブの最初の行だけ表示して中身は折りたたんでしまって
必要なときだけ+マークをクリックして開くようになってるんですが、アクセスもそうなってくれると
見やすいのになあ、と思ってます。
ひとつのフォームに10も20もプロシージャを書いていると、とても長くなって、別のプロシージャを見るのに
スクロールして探さないといけないのがたいへんです。
ACCESSを使ってるプロもそういうのは我慢してるのでしょうか? >>280
ウィンドウの分割やプロシージャ単位で表示で我慢してる そういう折りたたみできるエディタで書いたのをコピペすりゃいいんじゃね? access98で作ったdbソフトがWIN7になって正常動作しない
出力データもメチャクチャに乱れてしまうし、フォームが開かないとか
不具合多発でwIN7環境放棄
XPマシンが壊れたらソフトも終わりだけど、手塩にかけて育ててきた時間と労力と
作り直す気力を考えると、どうしてよいか途方に暮れてる >>284
> access98で作ったdbソフト
Accessに98なんてありません。
自分の子の父親が誰かも分からないんですか?
> 手塩にかけて育ててきた時間と労力
20年近く一度も新しい服に着替えさせずにいることを
手塩にかけるとは言いません。
ネグレクトです。
> XPマシンが壊れたらソフトも終わり
あなたは子育てに失敗しましたが
今からでも遅くはありません。
一つ一つ見直してきれいにして
失われた20年を取り戻してください。 途方に暮れていいのは 大澤 誉志幸だけだ 誰だ?それ
そもそも今までなんの手当もせずに使い倒してきたんだから充分だろ
自業自得 XPモードでなら動くのかどうか 動いたとしても
レガシーデバイス必要とかで、ソッチ原因でポシャることすら有り得る
出力データもメチャクチャ だけじゃフォームなのかレポートなのか・・
はたまたOutputファイルなのやら、フォームが開かない 時のエラーメッセージ
はどうなのかとか、 不具合多発 なのは自分のせいなんだろうに
こういう手合いはすぐヒトのせいにしたがるから厄介だ access98じゃなかった
ええと、96年から作り始めて98年1月に稼働開始したんだった
オフィス製品はその当時のを今でも使い続けてるんで記憶が遠い Office製品はOffice2003ですら、WinXPと同じくサポートが終了しており、使用するのが危険なのだが… >>292
サポートでセキュリティセキュリティ騒ぐけど
一時期アップデートせずにずっとつかっててなんも支障ないけどな 俺も家の玄関に鍵かけたことないけど、
何の問題もないよ。 Accessインデックス作成基準
そのフィールドを完全一致か前方一致で頻繁に検索?
YES:保存された値が多様である?
YES:そのフィールド「だけで」頻繁に並べ替える?
YES:インデックス作成
NO:インデックス作成(必須項目でなければNULL無視:はい)
NO:そのフィールド「だけで」頻繁に並べ替える?
YES:インデックス作成
NO:他のフィールドと組み合わせて頻繁に並べ替える?
YES:複数フィールドインデックス作成
NO:インデックス不要
NO:そのフィールド「だけで」頻繁に並べ替える?
YES:インデックス作成(NULL無視:いいえ)
NO:他のフィールドと組み合わせて頻繁に並べ替える?
YES:複数フィールドインデックス作成
NO:インデックス不要 10年ぶりに異動して、元の席でACCESSで社内用システムを作ることになりました。
で、作業を開始してびっくり。
ACCESS2000の頃とぜんぜん違うじゃないですか。
なんですか?accdbって。mdbでしょ。
そもそも、フォームの色が白ってのが気に入りません。グレーじゃないフォームなんてありですか?
内部のコードなんか放置でも、一週間さぼった後一時間でフォーム3つばかりを作って、
コマンドボタンで遷移させるを見せりゃ課をあげて褒めてくれたあの時代はどこにいったんでしょう?
で、何が言いたいかというと、
これからたくさん質問すると思います。
よろしくね。 いいか、よく聞けよ
主キーってのはただのレコード登録順番号だ。
それ以外の意味を持たせるな。
だから全部オートナンバーにしろ。
テーブルの内容に応じた意味を付けるな。(×:商品コード、国コード)
レコードの内容に応じた意味を付けるな。(×:大分類+小分類+枝番)
主キーと重複禁止インデックスを混同するな。(×:このフィールドは重複禁止だから主キーにできる)
他のテーブルとの関係も持たせるな。(×:支社コード+商品コード)
以上の言葉はオフレコです。
いいですか、みなさん、いいですか、
『顧客に言ったらもうその社は終わり』だから >>297
顧客の管理コードとうまく主キーをつなげるのが
仕事だろ
顔洗って出直しな transform文をユニオンするには、vbaでやらないとだめ?sqlビューでもいける? いや、>>280 が よく、エディタでHTMLを書く場合、・・ て書くからさ
じゃあそれで書いてコピペって だけ 可能かどうかはそのエディタ次第しょ
>>282 のプロシージャ単位で表示 でジャンプするのが普通かな とか飼い馴らされてるから
「へえ、と思ったね」 プロシージャ辿るとき使う Shift + F2 でわ無いのだろうし VBAのアップデートは期待できない。
折りたためても同一ページ内を行ったり来たりは面倒。
俺はメモ帳とかに参照用にコピペしてAlt+Tabで切り替える Win7x64
Access2010
メイリオ使うと
英語と日本語混在したフィールドで
カーソルが文字の真ん中に配置されたりして
文字選択しづらいんですけど
直す方法教えてください。 メイリオの素性が特殊なんで、無理
下線とかWordでいう段落みたいな処理時にも困った挙動あり
こういうもんだ で納得するしかない 敢えて対処・・というか、対症というかなら
右端や左端からShift + → とか ← とかで選択する挙動を組み込むなりなんなり
それでも微妙にずれるけれど
書いてて思ったけど、そのフィールド編集?入力?するときにテキストボックスを
ポップアップさせて、その時だけゴシックや明朝で入力・編集 OKしたらメイリオ
で表示とかの処理でも可能 ・・だけど、そこまでしてこだわるものでも無いわな 【 システム環境 】 Windows7 Access2010
【 VBAが使えるか 】 いいえ
【 VBAでの回答 】 否
【 検索キーワード 】 Googleやヘルプでの検索キーワード ドロップダウンリスト
EXCELで作った何層もあるドロップダウンリストで、入力フォームは作れますか?
EXCELのフォームだとドロップダウンリストが使えなくて、困ってます。皆さんの知恵を拝借出来ればと思います。 クエリでデータ元のクエリにフィールドがあるかどうか判断して、ない場合はフィールドを作ってデータはヌル値をいれるにはどうすればいいですか? 今どきAccessなんかで業務システム作ってる会社ないしな 基幹システムに乗らない特殊業務はAccessの独壇場 まあ将来人工知能が台頭したときはどうなるか分からんが
それまではまだまだExcelやAccessのVBAは強力なビジネスツールじゃないかね
日本の企業は社内のIT化というとすぐボッタクリ人月商売のSIerに頼るが
この悪しき文化を改めて、もっとAccessやVBAやFilemakerなどの便利ツールを活用して
小規模なものなら内製できる作らないとマジでヤバイと思う
SOHO規模であればほとんどAccess+SQLServerで対応できるし
SQLServerはExpressにして、各クライアントのAccessもRuntimeにすれば0円だしw
. >>314
mdb を Windows Server の共有フォルダで運用するにも CAL が必要
つまり Access でも Windows Server CAL が必要
と SQLServer Express に限らず Windows Server を使うなら普通の事です >>314-316
CALついでに教えてほしいんだが、
Windows7の最大同時接続数=20ってのは何のことを言ってるんですかね?
今、職場で使ってるSQLServerExpress+AccessRuntimeのシステムは、
当初10人くらいしか使わなかったんで、空いていたWin7ProのPCに暫定的にExpressを立てたんだが、
その後ユーザーが増えて、WindowsServerにしなきゃと思っているものの、
ManagementStudioで見てるとセッション数が70〜80に達しても全くエラーにならないんだよね
セッションの挙動を見てると、一回繋がってセッションが生成されると、
その後アイドル状態が続いても10分くらいセッションがキープされるみたいだが
(ODBCで作ったリンクテーブルは任意で切断できないからたぶんコレ)、
こういう死んだセッション(?)は「20」にカウントされないのかな? ちなみに、Serverが対象でなくてもライセンスが要るんやで。
リモートデスクトップで他PCに繋ぐことが良くあったから、
MSの営業に聞いて仰天したわ。
でも、何のライセンスがいるのか(ServerCAL、RDS CAL等)は、
よう答えんかったわ。でも、「厳密にはライセンスが要る」らしいわ。 何だこれ?
Debug.Print Format(DateAdd("s", -1, #12:00:02 AM#), "yyyy-mm-dd hh:nn:ss")
Debug.Print Format(DateAdd("s", -1, #12:00:01 AM#), "yyyy-mm-dd hh:nn:ss")
Debug.Print Format(DateAdd("s", -1, #12:00:00 AM#), "yyyy-mm-dd hh:nn:ss")
Debug.Print Format(DateAdd("s", -1, #6/1/2016 12:00:02 AM#), "yyyy-mm-dd hh:nn:ss")
Debug.Print Format(DateAdd("s", -1, #6/1/2016 12:00:01 AM#), "yyyy-mm-dd hh:nn:ss")
Debug.Print Format(DateAdd("s", -1, #6/1/2016#), "yyyy-mm-dd hh:nn:ss")
1899-12-30 00:00:01
1899-12-28 00:00:00
1899-12-29 23:59:59
2016-06-01 00:00:01
2016-06-01 00:00:00
2016-05-31 23:59:59 思うてたんと違う!
Dim d1 As Date
Dim d2 As Date
d1 = Date
Debug.Print CDbl(d1)
d2 = Date
Debug.Print CDbl(d2)
Debug.Print (d1 = d2)
d1 = DateAdd("s", 1, Date)
Debug.Print CDbl(d1)
d1 = DateAdd("s", -1, Date)
Debug.Print CDbl(d1)
d2 = Date
Debug.Print CDbl(d2)
Debug.Print (d1 = d2)
42522
42522
True
42522.0000115741
42521.9999884259
42522
False >>321は忘れてください。
もう意味わかんない
Dim d1 As Date
Dim d2 As Date
Dim i As Long
d1 = Date
d2 = DateAdd("s", 3, d1)
For i = 1 To 3
d2 = DateAdd("s", -1, d2)
Debug.Print Format(d2, "yyyy-mm-dd hh:nn:ss")
Debug.Print d2 = d1
Debug.Print CDbl(d2)
Debug.Print CDbl(d1)
Debug.Print
Next >>322
2016-06-01 00:00:02
False
42522.0000231481
42522
2016-06-01 00:00:01
False
42522.0000115741
42522
2016-06-01 00:00:00
False
42522
42522 >>322
おそらく計算結果の日付が同じなのに、比較が一致しないということだろう
日付のシリアル値は 浮動小数 っぽいので丸め誤差かなんかで
内部的な見えない部分で微妙な誤差が生じてるんだろう
日付を文字列に変換して比較するか もしくは
DateDiff("s",d1,d2)=0 なら日付が一致とかにすればいい そりゃそうだろうけど
VBなんだから
その辺はお節介機能が働いて
自動調整してくんないとさ。
社内サービスエンジニアは気づかないよ。 accessvbaの学習がしたいのですが、おすすめの本がありましたら教えていただけませんか?
excelvbaやvb.netは業務で使用していたのですが、accessはあまり経験がないので、体系的に学べる書籍があると助かります。 Webのしくみと応用 第9回「リレーショナルデータベース」
6/5 (Sun) 16:00 〜 16:45 (45分)
放送大学1 放送大学いいよね。求めているものと違うかもしれないけど、頭のいい人が説明してるからどんどん頭に入る。 ■ このスレッドは過去ログ倉庫に格納されています