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/ >>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 放送大学いいよね。求めているものと違うかもしれないけど、頭のいい人が説明してるからどんどん頭に入る。 これからのaccessの可能性
中小の社内システムくらいなら可能性はあるのかな ACCESSで作ったアプリを動かすだけならACCESS2013のランタイムを
インストールすれば動きますか? パスワードロックとか運用制限とかでブロックされなければ
あとはバージョンが一致しているものなら accessが安く買えるところはないか?
とりあえず2003で >>339
2003だと新品は皆無なのでオークションか中古屋で探すしかないでしょう イオシスで売ってるの見たことある
2000もあった アクセスは高いが1万ぐらいのやつはないのか?
それと無料のMySQLがあるのに高いaccessを使う理由は その2つを比べてる時点でaccessを分かってないのがよく分かる Access2016でVBAのソースを書いた後、全体のインデントが
揃ってないことが多いので(自分が悪いんだけど)、
後から1発で自動的にソース全体のインデントを整える方法無いですか?
以前、Smart Indenterというものを使っていたのですが、
Access2016ではアドオンマネージャに表示されないので
使えないようなのです。 ACCESSに限らずVBA全般、Editor部分を改良する気がぜんぜん感じられない。 俺もインデント直してくれるものがあるなら使いたい。
昔は必須みたいに言われてたし、実際にいいのがあったけど
今は知らないな。苦労してるわ。 インデントがないとネストが深くなったときとかは分からなくなるね。
VSなんかだとカーソルあてると対応するカッコなんかが強調される(必ずしも正しいとは限らない)からまだほんの少しは分かりやすいけど。
エディタとしてはもう少し改良の余地はあるようにも思うんだけどな。 SmartIndenterいいよ。俺は2010だけど普通にインストールできた。
何もインデントが無いようなソースをコピペしたとしても、
他人が開発したものを手直ししてくれと言われても、
ワンクリックで整形してくれるからホント見易い。
2016で使えないと聞くと、Access買い換えるの躊躇するな。 俺はフリーソフト(名前忘れた)で行番号が表示されるようにしてるわ
フォントもConsolasって欧文フォントにして、レジストリ弄って日本語はメイリオの等幅にしてる
マイクロソフトはもうあの古臭いVBEをリニューアルする気は無いんだろうな
Accessはフォームが別だからまだマシだが、ExcelなんてユーザーフォームがVBAと一体だから
未だにコントロールがWindows2000みたいだからな そう言えばVBAのjava script化(JSAってなるのかな?)やるって言ってなかったっけ?
あれどうなったん? office 365 soloにもaccessが入っているけど大丈夫でしょうか?
データべースの勉強がしたい 2000から2010に乗り換えた時、VBEのコードウィンドウがマウススクロールできて感動した。
逆に言うとそれ以外は特に何もなかった。(VBE関連では)
今度PCが増えて3台になるので2010からOffice365ProPlusにするか迷ってます。
今から2010買い足すのもどうかと思うし。
Access2016のここが良い!、ここがイヤ!ってありますか? >>355
2000でもマウスでスクロールできますよ。世界中の皆が同じこと思ってますから。
2016のいやなところ?インデントが自動化できないところです。
自分で書いててもところどころいい加減だし、
チームで仕事したりするともう最悪ですよ。バラバラで。 >>356
返信ありがとうございます。
2000でもスクロールできましたっけ?
すみません。私の思い違いだったかも。
インデントの自動化というのは私は使ったことありません。
VBAに限らず今業務で使っている(たまに機能の追加・修正などしていますが)2010で作ったアプリに
支障がなければいいのですが。 VB6の時もやったけどMSで配布されてたアドイン使うやつじゃないかな・・・スクロールは >>357
言い方悪かった。>>358の通りアドイン使うとスクロールできるように。
今2010があるなら、SmartIndenterというのを使ってみるとわかる。
過去の自分が書いたもの、そこに他人が混ざったものが
とても読みやすく整うし、整っていることの価値が感じられるので。
無料なので試してみたらよいと思う。2016では使えないけど。
2010では使えるのを当方で確認済み。 Access2013の32ビット版では
(規定の)キャンセルボタンを下記のようにして問題なく動いていたのですが
Private sub cmdcancel_Clickl()
Me!一覧1.Form.Filter = ""
Me!一覧1.Form.FilterOn = False
end sub
64ビット版ではエラー2001 直前の操作はキャンセルされましたと
エラーが出て動かなくなってしまいました
理由を教えて頂けないでしょうか?
よろしくお願いします。 >>360
On Error Resume Next 【 システム環境 】 Windows10, Access2010
【 VBAが使えるか 】 はい
【 VBAでの回答 】 否
windows10上でAccess2010のアプリを作成しました。デスクトップ上にショートカットを作り独自のアイコンを指定しました。
アイコンをダブルクリックするとアプリは問題なく立ち上がるのですが、タスクバーに表示されるアイコンは指定したアイコンではなく、Accessのアイコンのままです。
そこでタスクバーのプロパティ画面を呼び出し、タスクバーのボタンで「常に結合、ラベル非表示」から「タスクバーに入りきらない場合に結合」を選択し、上記の操作を行うと、タスクバーに目的のアイコンが表示されます。
またOfficeにAccessが入っているバージョンをインストールしたパソコンでは、上記の現象が発生し、Accessの入ってないOfficeをインストールしてruntime下でAccessアプリを動作させる場合は問題は起きず正常です。
この問題は個別の問題なのか、一般的な問題なのか教えてください。 windows10でみんな答える気無くしてるんじゃない? sql serverのdbをaccessで開いて読み込んだり、逆に書き出して更新するなどしたいのですが
vbaのプログラムが必要ですか? 遅くていいならリンクテーブルにしちゃえばいいんじゃないの。
そこそこ動かすならパススルー書かなきゃならんが、必要な数だけクエリを作るならvbaはいらない。
動的にクエリのsql等を書き換えて使う場合はvbaがいるって感じかな。
得意なやり方でやりゃいいと思うよ。 >>365
詳しい説明ありがとうございました。
リンクテーブルと言うのを使って出来ました。速度的にも遅いとは感じませんでした。実験用に作った10行ほどの名簿データのようなものだからでしょうか?
今後、データを追加して行き数千〜数万行くらいになる予定です。それくらいのデータをsqlサーバーにエクスポートすると数秒とか数十秒くらい掛かりますか?
他の方法も試してみる予定です。 テーブルの件数が多くなると抽出に時間がかかったり、一度に多くのレコードを追加すると遅く感じることになる。
数千や数万なんてDBとしては大したことない件数だけど、これで遅く感じたらそれは遅いってことでいいと思う。
仕事で請けてんなら処理に係る時間を計測するようにvba書いたり面倒臭いことをする羽目になることもあるだろうけど、
そうでないなら見なかったことにしたり、遅いと感じなければ問題ないよ。 >>362
興味あったんで少しだけ余った時間使って試したけど、そもそもタスクバーのアイコンが変わらない
フォームとレポートのアイコンを… てのはチェック入れてるけど、他は何を見れば良かった?
Windowsのテーマがどうとかも関係してた?
2010 on Win10 Pro や 2016 on Win10 Pro とかは試したけどやっぱアイコンが変わることは無かった あるスポーツサークルの名簿と、集会の参加記録をまとめたものを作っています。
名簿テーブル=memberID、名前、入会日、退会日
集会記録テーブル=開催日、開催場所、スポーツ種目、memberID、その日の得点
という構成です。
この状態で、クエリひとつで、以下の表を作りたいです。
名前、入会日、最初の集会参加日、最後の集会参加日、これまでの最高得点、
見学回数(参加したけど点数なしの日)、最初の競技参加日(得点ありの日)、
最後の競技参加日(得点ありの日)
この一覧をひとつのクエリで表示することは可能でしょうか? 可能。
それぞれの項目をひとつのクエリで作っていって、
最後にまとめればよし。 【 システム環境 】 Windows7 64bit, Access2010
【 VBAが使えるか 】 いいえですが、勉強中
【 VBAでの回答 】 他にないなら可
お願いします。
日付、店、メニュー、満足度 の各フィールドからなるテーブルがあります。
一日に最大3店舗で計1回から15回ほど外食するので、同一日付の同一店舗で
最大10レコードほどあります。
このテーブルを元にして、レポートを作りたいです。
レポート1ページ当り、同一日付・同一店舗でのメニュー一覧を表示したいです。
しかし、このレポートのソースが作れません。間にクエリをはさむとしても、
どうすればいいのかわかりません。
私が思いついたのは、
1レコードにメニュー1からメニュー15までのフィールドを持つテーブルに作り直し、
そのテーブルの1レコード=レポートの1ページとする、という方法です。
もっとスマートな方法はあるでしょうか? 根本的にレポートがわかってないのでは?
日付→店の順でグループにして表示するだけなので、
ソースもへったくれもないでしょ。元のテーブルがそのまま使える。 フォームで複数のテキストボックスのどれかが更新された場合というイベントを掴むためには、
個別のテキストボックスの更新時処理に記入しないとダメですか?
一括で記入できないですか? >>377
そういうのイベントを定義すればできるんじゃないかい。頭のいい人はAccessでもやってるよ多分。
でも自分はプロパティを定義してやっている。これで十分だった。
以下のような2行を入力可能な全てのコントロールのAfterUpdateに記述。
If Not IsEditing then IsEditing=True ' IsEditingはPrivate Set; Public Get
CommonSubProc ' 共通Subプロシージャを実行
共通Subプロシージャから
ルールのチェックとか SubmitボタンのEnabledの制御とか色々呼び出す。
こんなんで参考になるか >>379
>>380
フォーム自体のレコード保存のイベントに書く事にしました 【 システム環境 】 Windows7 32bit, Access2010
【 VBAが使えるか 】 すこし
【 VBAでの回答 】 ○
【 検索キーワード 】 テキストボックス クエリー MSGBOX 値
クエリをデータソースとするフォーム上で印刷ボタンを押すと単票形式のレポートを出しています。
レポートには「年月日の自と至」のテキストボックスがありますが、
テーブルに格納している「年月日の自と至」とは異なる値を入れる必要があるため
印刷ボタンを押したときに、MSGBOXでユーザに入力させ、
レポートを開くときにレポート上の非連結デキストボックスに代入することで対応しています。
今回、1件ごとに印刷する機能を残したまま、
メインメニューから印刷対象全件分の一括印刷をする機能追加の要望がでました。
印字する「年月日の自と至」は、クエリーにてテーブルの値から割り出した値を一括印刷したいです。
しかし、非連結テキストボックスにクエリーの値を代入する方法がわかりません。
テキストボックスを非連結から連結に変えてしまうと、MSGBOXの値を代入することはできなくなってしまいます。
レポートを個別印刷用と一括印刷用の両方を用意すれば実現できますが、あまり良い方法でないと感じています。
レポート内に非連結と連結の2つのテキストボックスを用意し、条件付き書式等で見えなくなる、というのもどうもよくないような・・・
何とか一つのレポートで実現したいのですが、どのような手段がありますでしょうか教えてください。 一行目に書かれているフォームに日付の自と至を入れれば、レポートでそれを参照するだけでは?
レポートの非連結テキストボックスのソースを =Forms!一行目のフォーム!自 と同じように至 として
連続印刷か個別印刷かも一行目のフォームでボタンで選択とか >>383
レスありがとうございます。
なるほど
・フォーム上にデータソースから割り出した「年月日の自・至」のテキストボックスを設置する。
・フォーム上のテキストボックスはソースとは非連結にして、画面open時
個別画面にてテーブルの「年月日の自・至」から割り出した「年月日の自・至」を ■ このスレッドは過去ログ倉庫に格納されています