Access総合相談所 28
■ このスレッドは過去ログ倉庫に格納されています
ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
Access総合相談所 27
http://mevius.5ch.net/test/read.cgi/bsoft/1424828244/ バージョン:オフィス365
アクセスの初心者です。
今まで社員登録、給与業務の検算、集計などをエクセルで行ってきまいたが、ファイルが重くなったのと他の職員との関わりからアクセスに取り組んでいます。
毎月、最新の人事、給与データなどをエクセルにエクスポートして計算していこうか考えていますが、壁にぶち当たりまくってます。
今のところ、複数のテーブルにデータを入力してリレーションシップをつなげています。
テーブル?;社員ID
テーブルA:氏名、住所、入職年月日他
テーブルB:給与データなど
テーブルC:社保情報など
これをもとにフォームを作成して新規職員の入力、情報の変更をしていきたいと思うのですが、それぞれテーブルごとフォームを作成するとIDしか表示されないフォームとなっていまい困っています。
どのフォームにおいてもID氏名を表示させるにはどうしたらよいでしょうか。 フォームのおソースをクエリにする
VBAならIDの更新で他のテーブルから呼び出せるが >>3
新規入力→追加クエリ
訂正など→更新クエリ
こんな感じでクエリを作成して社員管理していくのがいいでしょうか。
やはりVBA使えないとダメですね。見直します。 社員何名か知らんけど 300人以内ならアマノのタイムレコーダーにしとけ
勤怠管理ソフト付きで八万で済む 事務員の給与半月分 1/3か?
その勤怠ソフトはデータベースにmdb使ってるけど
https://nihonkiki.com/products/detail.php?product_id=1561&gclid=EAIaIQobChMIiayc7Lmg3QIViQQqCh0WmANIEAYYAiABEgIIhvD_BwE
慣れない業務で無理からシステム構築しても後日のトラブル頻発の元 >>4
んにゃんにゃ、まだvbaの出番ではない。
3で書いてるとおり単純なクエリーを保存してそれをフォームのレコードソースにする。
各テーブルのカラムは社員マスターでは社員idがキー列、
他がidなどの名称で自動符番にしてキー列、さらに社員idをもつ列をもたせる。
実績記録用テーブル全列(社員id結合)社員マスター(必要な列)でクエリー保存。
フォームウィザードとかで単票フォームを生成する。
社員idのとこは手入力かコンボボックス(社員マスター参照)。
これで社員名などが出てくる。
50人以上なら検索専用フォームを作ったほうがいいが、やや難易度高いので今はパス。
社員マスター参照部分は間違って触るとマスターも更新してしまうので、社員名諸々にはプロパティで更新許可を「いいえ」にする。 >>6
レスありがとうございます。
すべてつなげてクエリ作成しましたがフィールドが多くなりすぎてしまって単票フォームでは収まりません。
今、考えているのはテーブル1をID+氏名に訂正。
テーブル1+テーブル2で1つ目のクエリ
テーブル1+テーブル3で2つ目のクエリ
〃
〃
タブのフォームにまとめようと思っていますがどうでしょうか。 >>7
普通にそんな感じ。
実績用テーブルで社員マスターの参照が必要なのは名前とか、その場その場で必要な基礎情報だけクエリーに含める。
見えやすさの観点からはタブが有効。フォームでは今時のpcならフィールドが50だろうが100だろうが動作に支障はない。
何かの計算の基礎情報で、見せる必要のないフィールドは適当に空いてるところに寄せ集めて「可視」を「いいえ」にする方法もある。 【 システム環境 】 Windows7, Access2010
仕事で初めてAccessを使うことになりました。
したい事はVBAでAccessからOracleへのエクスポートです。
OracleはODBC接続です。
DoCmd.TransferDatabase acExport,・・・・・
これでエクスポート自体はできました。
問題なのはAccessのテキスト型がOracleへエクスポートするとvarchar2型になる点です。
Accessのテキスト型は文字数とAccessで表示されるので全角でも1文字数と思います。
しかしOracleのvarchar2だと全角は2バイトになるはずです。
結果、Accessテキスト型10はOracle varchar2(10)にエクスポートしようとするため
全角のみだとOracleのvarchar2(10)に収まらず、エクスポート時にエラーとなってしまいます。
エクスポート時に文字型をVarchar2でなく、NVarchar2にエクスポートする方法はあるのでしょうか?
仕事中は書き込めないのでレスは夜しか出来ませんがご了承ください。 >>9 なぜVBA使ったのかわからん。
Access2010という古いバージョンが一因じゃない?
select intoがうまく機能しないんだよたぶん。
自分なら、oracleにテーブル作ってから
odbcでリンク貼って
insert into 文使うけど。クエリー画面で挿入クエリーでもいいし。 >>10
簡潔にAccess -> Oracleと記載したんですが、
Accessに入るデータはいろんなシステムの大量データとなります。
SQL Server -> Access -> Oracle
Access -> Access -> Oracle
Excel -> Access -> Oracle
という感じで、Excelだけでも何百というファイルです。
そのため全てのテーブル作成SQLを作るだけでも膨大な作業になるため(特にExcel用)、
Accessのエクスポート機能を使うようにと指示が出てます。
この機能だとOracleにテーブル準備しなくてもエクスポート時に、勝手にテーブル作ってくれるからです。
Access2010は確かに古いので、単に最新のAccessだといける可能性はありそうですね。
稟議はとおって購入できるので、環境できたら試してみます。
情報ありがとうございます。 今日、Access2010から2016にして試しました。
が、やはりOracleではvarchar2になってしまい、だめでした。
仕方なくSQL ServerとAccessのデータは構造だけエクスポートし、
create文を生成してvarchar2をnvarchar2に置換え、テーブル作り直し、
テーブルありきでVBAからINSERT INTOする方式にしました。
マイクロソフトに電話したんですが、北海道の地震影響で技術的回答は無理で、
来週問い合わせし直してくださいと言われました。
今日が納期だったので上記の方法で対処したので、この質問は完とします。 sqlserverだと公式な関連ツールにmigration toolってのがあるが
oracleにはそういうのなかったっけ?
ソースにexcelも含まれるって、よく今までユーザーが
データ規則を守って入力してきたものだ。普通、どこかの行でコケる。
自分なら
select top 1 into で一旦作る
deleteで空にする
ストアドプロシージャでテーブル名を引数にして
総当たり的に型を変更するalter tableを生成するやつを作っておく
もう一回 insert intoでデータ入れる
ってのをVBAのadoあたりを使ってぶん回すかな。 >>12
>>AccessからOracle
早くて確実な方法は
*Oracleであらかじめテーブル領域確保
項目属性はOracleに準じて確保
*AccessからデリミタでCSVファイルでテーブル出力
*そのCSVをOracleへSQLローダーでロード
これが早くて確実 >>12
テーブル多いからVBA使うのは理解出来るがテーブル定義がキッチリしないままエクスポートで勝手に決められるので良いかどうか
SQL ServerのテーブルをOracleに移行するのは分かるがAccess、Excelのデータもテーブル化する必要性は不明だな
項目属性がおかしい場合、テーブル定義後から変更すんのか?
指示出したヤツはAccess知らんやろ 2010
すみません、現在このフォーム(詳細内)に、日付期間を指定し検索ボタンを押すと入力していたデータがサブフォーム内に表示される簡単な検索画面を作成しました。
この表示されたデータをエクセルに出力したいボタンを作りたいです。
また、その先でそのデータを用いてグラフ化(アクセスのグラフを使えばいいのか、エクセルのグラフ化を使えばいいのかわからない)したいとも思っています。
教えてください。
https://i.imgur.com/xZkQ8KG.jpg ここで聞いて回答待ってる間に自習でどんどん進むぞ
Access Excel Export とかで検索すりゃ、ゴロゴロ
そン中から自分が欲しい・望むカタチをある程度固めてから
質問した方が、よりコアな回答が返ってくるはずだし
その質問だと漠然とし過ぎ
因みにグラフの種類はExcelには叶わない 見た目重視なら尚更
ストアからE2D3入れればより豊富に >>18
コピーペーストのコードが乗っていたので記述し試してみると
そのままエクセルに出力できました。
ここからグラフ化するとなると
エクセル側でボタン等を配置し、マクロを組み込めばいいのでしょうか? >>17
すみません、これは適当に打ち込んでました…お恥ずかしい Excel側は、取り込むSheetとグラフSheetを別にしとけば
Sheetにデータが入った時点でグラフも更新されるだろ まあ、別じゃなくてもいいけど
サンプルデータで気に入ったグラフの様式を作っとけば
次回からは入ったデータに応じてグラフも可変するわな マクロ組むまでも無い >>22
なるほど、スレチ?だと思いますが答えていただきありがとうございます。
知識0から始めて、ネットで調べて、全部丸写ししてるようなものなのでこれが勉強になってるのか不安です…みなさんそのようなものなのでしょうか? >>23
なんでグラフ表示にExcel使うのか分からん
Accessでも出来るだろ
https://support.office.com/ja-jp/article/フォームまたはレポートのグラフを作成する-1a463106-65d0-4dbb-9d66-4ecb737ea7f7 >>24
AccessのグラフはExcelのグラフに対して、
機能が落ちたり制約が多い。
ちょっと試すと、直ぐわかる。 昨日エクセルへ出力で質問させていただきました。
コピー・ペーストの方法にて、検索結果をエクセルに出力することが出来ました。
コード等は画像を貼り付けておきます。
この状態でほぼ完成だと思って入るのですが、出力したデータを自動的に(半自動的に)グラフ化したいと思っています。
温度であれば、温度差など
項目別にグラフ化できたらなと思っていますが、無理なのでしょうか?
https://i.imgur.com/JTxWUZg.jpg
https://i.imgur.com/J0cWzHK.jpg
https://i.imgur.com/A5zrbT0.jpg コピー・ペーストするから毎回新しい Book を作ってしまう
なんで上の方で Export のアドバイスをされてるのにそっち選ぶかな
まぁ、コピー・ペーストでも CreateObject じゃなきゃいいんだろうけど
最新のだと Office Link ?だともっと楽らしいが 自分もexcelにシート分けて出力するvba書いたことあるけど、access vbaに慣れてるとcellsどうのこうのとか、
excel vbaってえらいしんどいよね。 Excel2016なら、逆にExcel側からインポートを選んで
ソースはAccess テーブルかクエリを選んで引っ張れる
下手にAccessでVBAで混乱するより、そっちのが百倍楽 【 システム環境 】 Windows8.1, Access (Office365を使用)
【 VBAが使えるか 】 はい
【 VBAでの回答 】 可
作成したデータをマクロを使用して帳票印刷しようとしています。
「レポートを開く」のオプションを使って、where条件式で表示する条件を入れようと思っています。
IIF文を使うなどして条件分けしたいのですが、条件式の中に文字列が入りきらず
式が不完全になってしまって動かせません。
既存の改修なのでフォーム名やプロパティ名を変更するのは難しいです。
条件式に入力できる文字数を調整、あるいはプロパティ名などを短縮して
記載する方法はないでしょうか? 既存の改修ったってフォームやレポートは新規作成できるんだろ?
新しく作ったフォームで条件式の面倒を解決して
そこからレポート作ればいいんじゃ? >>31
入り切らないくらい長いのであれば
Where 条件で中間テーブル作成して
そのテーブルをレポートで参照する
のが定石ですかね ■ このスレッドは過去ログ倉庫に格納されています