1 :
名無しさん@そうだ選挙にいこう :
2006/09/02(土) 20:08:10 ACCESSに関する質問はこちらへ!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【 システム環境 . 】 Windows**, Access**
【 VBAが使えるか .】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
ACCESS総合相談所 その15
http://pc8.2ch.net/test/read.cgi/bsoft/1142586697/ 過去スレッド/関連リンクは
>>2 以降
管理情報を使用する ------------------------------------------------------------------------------- 改善された新しいユーザー インターフェイス、便利なテンプレート さらに強化された並べ替え機能とフィルタ処理機能、レイアウト ビュー、集合形式レイアウトと表形式レイアウト 自動日付選択カレンダー、メモ型フィールドでのリッチ テキスト形式 [挿入] タブによって強化された簡易作成機能 改善されたデータシート ビューを使用してテーブルをすばやく作成する データシートの [集計] 行、新しいフィールドの追加のためのフィールド テンプレート [フィールド リスト] 作業ウィンドウ、分割フォーム、複数値フィールド 画像、グラフィック、Office ファイル、その他の種類のファイルを保存するための添付ファイル データ型 代替の背景色を使用する、ナビゲーション ウィンドウ、埋め込みマクロ、改善されたヘルプ ビューア 管理された情報を他のユーザーと効果的に共有する -------------------------------------------------------------------------------- Microsoft Office Outlook 2007 を使用してデータを収集および更新する SharePoint サイトにデータベースを移動する、SharePoint ワークフローとの統合 SharePoint リストにリンクされたテーブルのパフォーマンスの向上 Windows SharePoint Services データ型との一対一マッピング、SharePoint リストを Access でオフラインで使用する インポートおよびエクスポートの操作性の向上 レポートを作成してビジネス ニーズに適合させる -------------------------------------------------------------------------------- レポート ビューとレイアウト ビュー グループ化、並べ替え、および集計機能 自動的に作成されたレポートの改善された外観 情報を管理および監査する -------------------------------------------------------------------------------- 強化されたセキュリティ Windows SharePoint Services による改訂の管理、権限の設定、ごみ箱から復元する Windows SharePoint Services から Access フォームおよびレポートを開く メモ型フィールドによる履歴管理
6 :
名無しさん@そうだ選挙にいこう :2006/09/03(日) 02:55:20
おつんつん
7 :
名無しさん@そうだ選挙にいこう :2006/09/03(日) 07:55:29
8 :
名無しさん@そうだ選挙にいこう :2006/09/03(日) 12:30:53
Access 2007 からは ADP が作成できなくなって、 そのかわりにリンクテーブルが強化されるみたいだけど、どう思う?
10 :
名無しさん@そうだ選挙にいこう :2006/09/05(火) 23:33:51
リンクテーブル強化って何よ? そんなの気付かなかったぞ
11 :
9 :2006/09/06(水) 02:40:52
http://blogs.msdn.com/access/ によると、
Access project files, also called ADPs or .adp files,
provide an alternative to using the Access database
engine by allowing an Access application to connect
directly to the tables in a SQL Server database. ADPs
will continue to be supported in Office Access 2007. To
take maximum advantage of the new features in Office
Access 2007, Microsoft recommends the use of linked
tables to connect to SQL Server data.
12 :
9 :2006/09/06(水) 02:42:27
さらに「2007 Office リソースキット Beta 2計画とアーキテクチャ」
http://www.microsoft.com/japan/technet/prodtechnol/office/beta.mspx によると、
Office Access 2007 では、SQL Server データへの接続に関し
て 2つの方法が採用されています。それは、SQL Server へリン
クする方法と Access Data Project (ADP) へリンクする方法で
す。
SQL Server への接続に適した手段として、MDB または ACCDB
ファイル内で SQL Server へリンクする方法があります。この方
法を使用すると、ローカル テーブルやローカル クエリについて高
い柔軟性が発揮され、SQL Server のすべての機能を活用できま
す。さらに、MDB ファイルおよび ACCDB ファイルは、複数の
SQL Server や他のさまざまなデータ ソースへリンクすることが
できます。Office Access 2007 には、MDB ファイルと ACCDB
ファイルの両方で使用できる多くの新機能が含まれていますが、
ADP で使用できるのは、これらの機能のサブセットのみです。
Office Access 2007 では、MDB ファイルや ACCDB ファイル
を基にして、SQL Server のテーブルやビューに対する読み取り/
書き込み用のリンク テーブルを作成できます。Jet は、SQL パス
スルー クエリと呼ばれる特別なクエリもサポートします。このク
エリでは、すべての SQL コマンドを SQL Server に直接送信でき
ます。
13 :
名無しさん@そうだ選挙にいこう :2006/09/06(水) 13:26:12
ODBCとは違うの?
>11の引用文を見る限り、「ADP が作成できなくなっ」たという記述は どこにも見当たらない。むしろ、2007 でも引き続きサポートされる、 という、逆にも読める記述ならあるが。 ADP ではなく DAP が無くなったという話なら、聞いた。
既存のADPが動くのと、新規ADPが作成できない、のとは両立するんだが
16 :
9 :2006/09/06(水) 22:20:13
ADP が作成できなくなったとは書いていないけど、 β版では作成できなかった。 それとも見落としてるだけで作成できるのかな…
例えば、 既存のMDWはサポートされるが、新規作成できないぞ
18 :
14 :2006/09/06(水) 23:46:42
>>15 同意。
だから、逆「にも」読めると書いた。
>11の引用文では、どっちにも読めるので、結局
ADP が作成できない典拠にも、引き続き作成できる
典拠にも、どっちにもなってない。
にもかかわらず>9の発言との関連で引用されていたので、
いったいどうつながるのか分からなくて、疑問提起した。
自分自身はβ版も使っていないので、情報提供自体は
ありがたいと思って読んでいる。不思議に思ったらツッコム
かもしれんが、その辺は興味あればこそと理解してくれ。
19 :
名無しさん@そうだ選挙にいこう :2006/09/07(木) 22:31:44
【 システム環境 . 】 WindowsXP SP2, AccessXP(2002) 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 ACCESSのVBAアプリケーションをエクスプローラから開くと、内部で使用しているフォームの Form_Error イベントが発生するのですが、他のEXCELなどから開くと Form_Error イベントが 発生しない現象で困っています。 Form_Error イベントが発生しない場合の起動方法は以下のような感じです。 'Accessオブジェクトの取得 Set objAccess = GetObject(strFilePath) 'Accessウインドウの最大化(ACCESS内の最大化が効かないため) objAccess.DoCmd.RunCommand acCmdAppMaximize Form_Error イベント内で入力規則違反があった場合などのエラーメッセージを表示しているのですが Form_Error イベントが発生しない場合はメッセージなどは表示されず、フォーカスがレコード内から 移動しない状態になってしまいます。
Form_Errorって、そのFormで何らかのアクションをした場合だろ。 開くタイミング・方法しか書いてないから、何が言いたいのか・や りたいのか、良くわからん。
ついで、入力規則違反だって必ずForm_Errorイベントが 発生する訳じゃない。各コントロールの更新前・後や、 Formの更新までVBAでチェックしたり等となるだろ。
22 :
19 :2006/09/08(金) 08:57:18
>>20 ,21
回答ありがとうございます。
問題のポイントはエクスプローラで開くと Form_Error イベントが発生するのに
例示した開き方では発生しない、というところです。
なぜ動きが違うのかご存知の方がいらっしゃいましたら是非おしえてください。
23 :
名無しさん@そうだ選挙にいこう :2006/09/08(金) 13:35:05
OLEだから。
24 :
19 :2006/09/08(金) 21:10:09
>>23 回答ありがとうございます。
ShellExecute で起動することにしました。
25 :
名無しさん@そうだ選挙にいこう :2006/09/08(金) 22:10:50
>>25 固定長csv?
Access2003でテストしたところ
ファイル→外部データの取り込み→インポートを開く
ファイルをインポートするダイアログでインポートを選ぶとウィザードが起動する
固定長にチェックが入っていることを「次へ」をクリック
区切りたい場所をクリックすれば区切り線が入る
ダブルクリックで区切り線が消えるので区切り線を指定
あとはわかるよな?
27 :
名無しさん@そうだ選挙にいこう :2006/09/09(土) 18:53:13
【 システム環境 】 Windows2000, Access2002 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】ACCESS バーコード 印刷品質 過去ログなどを検索しても該当の不具合などが確認できなかったので、ご存知の方助けてください。 ActiveXコントロール(Microsoft BarCode Control 9.0)を配置したレポートを作成し、 プレビューにて、バーコードが正しいことを確認後、いざ印刷。するとバーコード自体が 印刷されない。このコントロールをExcelにコピー&ペーストしたものは、 意図通りに印刷される。 そこで、プリンタの印刷品質を「標準」から「きれい」にすると、Accessの レポートでも印刷できた。 自分は印刷できたんだからそれでいいと思うのだが、上司が「ランニングコストが あがるようなことは、許可しない」とのこと。 同じバーコードの印刷でも、AccessとExcelでは内部で何か違うのだろうか。 ちなみにプリンタは、ビジネスインクジェットプリンタで、 メーカーサポコンの回答は「APの問題です」とのこと。 ついでにバーコード以外のコントロールのコピー&ペーストは、AccessからExcelに できないのでしょうか?
OS:XP ACCESS:2000 VBA:可能です。 顧客のヨミカタで 性と名を分けてテーブルは作成しています。 テーブルには顧客ヨミカタ性と顧客ヨミカタ名があります。 例えばフォームでヤマダタロウを検索する場合、 テキストボックス文字1には顧客ヨミカタ性 "ヤ" テキストボックス文字2には顧客ヨミカタ名 "タ" 下記VBAで検索ボタン実行 DoCmd.ApplyFilter , "left(顧客ヨミカタ性,1) ='" & 文字1 & "'" DoCmd.ApplyFilter , "left(顧客ヨミカタ名,1) ='" & 文字2 & "'" するのですが、 性に"ヤ"がなくても、名に"タ"がつく顧客が検出されていまいます。 正確に"ヤ"と"タ"で抽出するにはいかがしたらよろしいでしょうか?
>>27 自分はバーコード自体使わないから知らないけど、一応
Office XP SP-3 が当たってるかどうかは書いといた方がいいよ。
SP-2 から SP-3 のあいだで、別件だけどバーコードコントロールの
バグフィックスが入っているので。
> 自分は印刷できたんだからそれでいいと思うのだが、上司が「ランニングコストが
> あがるようなことは、許可しない」とのこと。
バーコードの印刷は、紙質やプリンタの印字品質等によって、リーダーでの
読み取り精度が大きく落ちるという話を聞いたことがあります(具体的に
どのていどか知りませんが)。
自分が上司なら、肝腎のバーコードが読み取りエラーで意味を成さない
リスクこそ最も許可できないはずなので、それくらいならむしろ最高品質で
印刷かけさせると思いますが…。
> 同じバーコードの印刷でも、AccessとExcelでは内部で何か違うのだろうか。
知らない。MS にきいて。
> ついでにバーコード以外のコントロールのコピー&ペーストは、AccessからExcelに
> できないのでしょうか?
バーコード以外の「何」をコピペしたいのかによるでしょう。
ま、やって出来ないんなら出来ないんだろうとは思いますが。
>>28 Like 演算子でいいじゃんとか、Filter プロパティの方が好きとか、
そういうベタな感想はさておき。
元コードを極力生かすなら、試してないけど、
DoCmd.ApplyFilter , "left(顧客ヨミカタ性,1) ='" & 文字1 & "' And " & _
"left(顧客ヨミカタ名,1) ='" & 文字2 & "'"
とか。
ところで、「姓」じゃなくて「性」ですか…?
32 :
名無しさん@そうだ選挙にいこう :2006/09/10(日) 02:26:51
初心者質問ですがよろしくお願いします。
会社で利用している顧客管理データを、近時の市町村合併にあわせて変更
してくれと頼まれたのですが、数万件あるデータを手作業で打ち直すのはぞっとします・・・
なにかいい方法はありますか?みなさんはどのように対応されてるんでしょうか?
ちなみにバージョンは未確認ですが2002だったと思います。(週明け確認します)
ググったら
ttp://www.geocities.jp/access119room/tips_f/sonota.htm#14 てのがあったんですがこの方法はすでに出来ているデータベースにも有用ですか?
この方法だと1万件程度の訂正でどの程度の時間がかかるものでしょうか?
この方法がベストと考えてよいのでしょうか?
自宅PCにアクセスが入っていない上、正直機能、操作とかよくわかってなくてすみません・・・。
34 :
28 :2006/09/10(日) 16:30:05
>>31 様
ありがとうございます。
できました!
姓はガチで性と勘違いしてました。
検索の際に、文字1に"イ"文字2に"シ"と入力して、検索を行い抽出結果を"シ"でも"ジ"でも検索できるようにしたいのですが、
("シュンイチ"、でも"ジュンジ"でも抽出する意味です。)
姓に"イ"がなくても、名に"シ"and"ジ"がつく顧客が検出されていまいます。
正確に"イ"と"シ"and"ジ"で抽出するにはいかがしたらよろしいでし
あとガントチャートを勉強しているのですが、いいサイトがあったらお教え願えますでしょうか?DoCmd.ApplyFilter , "left(顧客ヨミカタ姓,1) ='" & 文字1 & "' and " & "left(顧客ヨミカタ名,1) ='" & 文字2 & "'"
If 文字1 = "シ" Then
DoCmd.ApplyFilter "", "[顧客ヨミカタ姓] Like ""[シ-ジ]*"""
End If
If 文字2 = "シ" Then
DoCmd.ApplyFilter "", "[顧客ヨミカタ名] Like ""[シ-ジ]*"""
End If
>>34 あのさ、フォームにフィルタはひとつしか使えないんだよ。
2つ目を実行した時点で1つ目は無効になる。
それと、フィルタに指定する文字列は、SQLのSELECT文のWHERE句と同じものを指定する。
いったいどこ見てやってるのか知らないけど、ちゃんとヘルプみたほうが早いよ。
Access2000のSQLは正規表現なんて使えないから。
んだ、フィルタを次々に重ねて行いたいなら、桐にしとけ 255レベルまで簡単にできるぞ
>>35 最後の一行の意図がよく分からない…。
ツッコミの勢いあまって誤爆?
いや、普通に [シ-ジ]* の部分に対するツッコミじゃないの? 明らかに正規表現で検索可能という前提で書かれてるとしか思えないし、 仮にできたとして [シ-ジ] で探すのはいくらなんでも無茶すぎるw
39 :
名無しさん@そうだ選挙にいこう :2006/09/11(月) 21:10:23
>>29-30 アドバイスありがとうございます。(バーコードの件です)
思い切って、MSに問い合わせてみます。
結果は、後日ご報告いたします。
40 :
37 :2006/09/11(月) 21:11:34
>>38 どうもです。
> 明らかに正規表現で検索可能という前提で書かれてるとしか思えないし、
そこがちょっと引っ掛かってまして。
質問者はこれを「正規表現」とは別に言っていないので、
Like演算子によるパターンマッチングと捉えれば、特に
問題ないような気もします。Jet SQLのヘルプにもちゃんと
載ってますし。
もちろん手法として適切かどうかはまた別の話ですが、
そういう意味の指摘としても読みづらかったので、ちょっと
意図を図りかねてました。
それとも、何か私の方が勘違いしてるのかな??
41 :
名無しさん@そうだ選挙にいこう :2006/09/13(水) 09:35:23
【 システム環境 . 】 WindowsXP XP2, Access2000 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 ACCESS2000 起動しない セキュリティ警告 先日、HPの新規PCを導入して(XP SP2インストール済み) 当方で使っているACCESS2000のシステムを起動したのですが、 以下の現象が出てしまい困っています。 ちなみにこのシステム、LAN上のファイルサーバに入れて、5人ぐらいで共有して使っているシステムです。 解決策ご存知の方、よろしくお願い致します 1.単独(他の人が起動していない状態)で起動すると、 「セキュリティ警告」なるウィンドウが出る。 既存の端末(XPや2000)ではこのようなウィンドウは出なかった 2.複数人で共有使用している場合、 システム(ACCESS2000で作られているもの)をダブルクリックしても、 何も起きない(メッセージウィンドウも、警告も出ない) (以前は、競合があっても、「(コンピュータ名)が使用中です」みたいなメッセージが出たのですが。) 以上、よろしくお願いします。 ※というか、ACCESSというより、XP SP2の問題のような気がしないでもないです・・・・ ※レジストリは正直弄りたくありません。
>>40 正規表現とは言ってないけど、どうみても正規表現を使おうとしてるように見えるじゃん。
もしそのあたりを勘違いしてるならためになるアドバイスだと思うけど。
テーブルでテキスト型のフィールドに「空文字列の許可」っていうのがあります。 これはデフォルトで「いいえ」になっているのですが、すべての項目の空文字列を許可すると なにか不都合はあるんでしょうか? nullだと比較するときに「a = null」という風に使えないので不便だと思うのですが、 デフォルトでわざわざ「いいえ」にしてるということは、「はい」にしてあると なにか不都合なことがあるということかなと思いました。 nullと空文字列は厳密に言うと違うという理屈はわかるのですが、運用上それを区別して 利用することってあまりないような気がします。
a is null or a = "" って書くのがいやだから
【 システム環境 . 】 Windows98 ACCESS97 【 VBAが使えるか .】 はい 【 VBAでの回答の可否】 可 【質問】 5つのテキストボックスの値を1つのテキストとして合体させ、間に半角の 空白を1つ入れたい。ただし、1、2、4番目のテキストボックスが空白の 場合があり、その時は前に詰める形で表示したい。 【現在の状態】テキストボックスZのコントロールソースに [テキストボックスA] & " " & [B] & " " & [C] & " " & [D] & " " & [E] わかる方がいらっしゃったらよろしくお願いします。
結合演算子 結合演算子は、2 つのテキスト値を 1 つに結合するときに使用します。 演算子 使用例 説明 & 文字列 1 & 文字列 2 2 つの文字列を結合して 1 つの文字列にします。 + 文字列 1 + 文字列 2 2 つの文字列を結合して 1 つの文字列にします (Null 値は伝播される)。
【 システム環境 . 】 Windows??, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 access アクセス制限 ユーザ ローカルネットワークを使用してアクセスファイルを多人数で使用したいのですが、 同時に入出力することは可能なのでしょうか?もし可能であれば複数のライセンスの 購入を検討したいです。 なお、入力に関してはフォーム・レポートは共有し、テーブルについては各ユーザごとに作成 するようにします。 また、立ち上げの際にユーザIDとパスワードを入力してもらいそれによってテーブルを 指定するようにします。 1ファイルでこれらのことが可能なのかご教授お願いいたします。
mdbぶっ壊れてもいいならどうぞ
>>50 つまりは出来ないっていうことなのでしょうか?
若干理解力に欠けるようなので、以下の質問に置き換えて理解してください。 Q. 信号が赤ですけど、渡ることは可能でしょうか。 A. 渡れることもありますし、死ぬこともあります。
54 :
名無しさん@そうだ選挙にいこう :2006/09/19(火) 22:29:50
【 システム環境 . 】 XP Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答の可否】 いいえ 【質問】 フォームで本日日付を表示させるには「規定値」に Date() と入力しますが、昨日を表示させる方法はあるのか教えてください
あるよ。
date()-1でダメなら俺はあの子をあきらめる
57 :
名無しさん@そうだ選挙にいこう :2006/09/21(木) 02:47:17
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access フォーム作成 オブジェクト作成 new create コードでフォーム上にオブジェクトを作成できませんか? dim XXX as new textbox() Controls.Add(XXX) みたいにやりたいです。
フォーム上にオブジェクトを新規で生成することがないからわからないけど、 もしある条件下でオブジェクトが必要ならVisibleプロパティで可視管理すれば いいんじゃないかな?
59 :
名無しさん@そうだ選挙にいこう :2006/09/21(木) 09:46:02
WinXP&Access2002です。 上司に「フォームに作ったVBA(コマンドボタンクリック時のアクション)を、 長くなったので標準モジュールに移しといて」と言われました。 いろいろ検索して立ち読みして、 そのままコピペでは動かないであろうことはわかったのですが、 具体的にどの辺に気を付ければ良いでしょうか? 上司が今週いっぱい出張なんですが、 時間が空いたので居ないうちに解決させたくて伺いました。 どなたか宜しくお願いします。
Me!
>>58 レスありがとうございます。
できることはできるんですね。
Visibleを真にしてもでなかったんですが、どこか間違ってたようです。
ソースを見直します。
オブジェクトを生成するのはAccessを使いこなせていないだけです・・・orz
62 :
59 :2006/09/21(木) 10:18:32
>>60 おそらく私宛だと思うのですが、Me!は使ってるのでそこをForms!〜に直して、
あとはコピペでおっけーということでしょうか?
それだけで良かったのか…書き方が違うのかと思ってました。
やってみます。ありがとうございました。
>>57 例えばオプションボタンを押したときにテキストボックスを表示させる場合
Private Sub フレーム_Click()
If オプション1 = True Then テキスト.Visible = True Else テキスト.Visible = False
End Sub
のようにすればよいと思います。
>>59 コマンドボタンには
Private Sub コマンド_Click()
Molule1.Test
End Sub
の様に記述して、標準モジュールに
Sub Test ()
Msgbox("テスト")
End Sub
にすれば良いかと。ただ、コマンドボタンを押す時にフォーム上のオブジェクト等を変更する場合は
Forms.フォーム名.オブジェクト名 の様に指定すればフォーム上のオブジェクト等を変更することが出来ます。
>>63 フォーム上のテキストボックス(非連結)から値を持ってきたりしてるので、
そこをフォーム名まで指定してやれば、あとはコピペでいいんですね。
ありがとうございます!
>>63 具体例ありがとうございます。
書き直してきます!
【 システム環境 . 】 Windows2000, Access97 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【質問】 表形式のフォーム画面で背景色を奇数行と偶数行を別の色にしたいのですが わかる方がいらっしゃったらよろしくお願いします
そんなくだらないことに時間を費やすのはお勧めできない。
表形式のフォーム?それってサブフォームを使ってってことなのかな?
>>66 Access2007は最初からそういう設定があるお!
MS サイトから郵送でベータ版入手できるお!
それまで待てなければ、桐にしとけ
簡単に出来るぞ
条件書式って、AC2000からの追加機能だっけ?
71 :
66 :2006/09/22(金) 17:49:01
説明が足りませんでした。
>>68 が言われたようにメイン/サブフォームで、メインのコンボボックスで選択された項目を
クエリーで選択した値をサブフォームに一覧として表示する形になります。
色の設定はRGB関数のBackcolorを使うということはわかったのですが、交互に色を設定する
するのがどのように記述したらいいのかわかりません。
また、1画面に8行までのレコードを表示し、それ以上は 「<<」「>>」みたいなボタンでページを
移動したいのですがこちらも上手くいかなく、、、
とりあえず帰りにでもACCESSの本を買って勉強しなおしてきます.
72 :
名無しさん@そうだ選挙にいこう :2006/09/22(金) 18:32:53
>>66 方法はいくつかあります。
ギヒョウの850でも読んでみてください。
>>71 Access97じゃ無理だってアドバイス受けてるだろ、バカ!
74 :
名無しさん@そうだ選挙にいこう :2006/09/24(日) 07:32:15
結局Access97では無理だったような。。。 無理やりやれば擬似的にできるんだけど,そんなことまでして,交互に 色設定する必要性があるかを良く考えた方がいいくらい無理矢理な方法だしな。
75 :
名無しさん@そうだ選挙にいこう :2006/09/28(木) 08:09:30
アクセスでクエリの練習問題をやっているのですが、どうも上手くいきません。
このサンプルファイル(
ttp://deaikei.biz/up/up/2229.zip.html パス;1111)を元に
1)店(STORE)をアルファベット順に並び替え、
EMPLOYEE(従業員)の名字(EMP_LNAME)と名前(EMP_FNAME)も一緒に表示されるようにせよ。
※店名はA〜Zの順に並び替える事が出来たのですが、従業員が5名しか表示されません。
EMPLOYEEテーブルにあるSTORE_CODEを元に従業員21人全員をそれぞれ表示されるようにしたいです。
2)更に、年間売り上げ$1,000,000,00以上の店のみアルファベット順に表示されるようにし、
EMPLOYEE(従業員)の名字(EMP_LNAME)と名前(EMP_FNAME)も一緒に表示されるようにせよ。
3)東と西(REGIONテーブル)にあるそれぞれのお店の総合売り上げを表示せよ。
※REGION_CODEの1と2のお店の総合売り上げを足して出力するみたいなのですが、
どのようにすれば良いのでしょうか?
>>75 いきなりファイルをうpしてどうやっやるの〜?じゃぁ、見てくれる人いないんじゃないか?
1はファイル(クエリ)見てないから不明だが、問3についてはREGION_CODEでグループ化して
売上高を合計にすればいいんじゃないのか?(集計)
77 :
名無しさん@そうだ選挙にいこう :2006/09/28(木) 10:25:28
>>76 レスありがとうございます。
>いきなりファイルをうpしてどうやっやるの〜?じゃぁ、見てくれる人いないんじゃないか?
それもそうですね…。少し焦っていて、自分中心に考えていました。
現在の状態ですが、1はどうにか出来ました。
3は76さんの通りにやったら出来ました。
2で$1,000,000,00以下の売り上げのお店を表示させないようにする所で未だに苦戦中です。
78 :
76 :2006/09/28(木) 10:36:33
問2についてもクエリの抽出条件の欄に >1000000000 って入力すれば$1,000,000,00以上の店のみ抽出 することが可能です。もしSQLで記述する場合は、 WHERE テーブル.売上高>100 を最後の行に記述すればおk
79 :
76 :2006/09/28(木) 10:37:56
訂正:WHERE テーブル.売上高>1000000000 ですね(^-^;)
80 :
名無しさん@そうだ選挙にいこう :2006/09/28(木) 15:45:18
>>66 擬似的に行毎の背景色のコントロールは可能。
ただし、背景色そのものであるBackcolorはAccess97では行毎に切り替えるのは困難。
フォーム上にオブジェクトは重ねて配置できるので、最背面に色オブジェクトを配置すれば
背景色のように使用できる。
フォームのオブジェクトにはOLEオブジェクトが指定できるし、テーブル上のフィールドとしても
OLEオブジェクトは保存でき、フォーム上の連結オブジェクトフレームには、コントロールソースに
テーブルのレコードでも関数でも指定が出来る。
つまりはアタマを捻れば、フォーム上の明細行毎に背景色(もどき)を変化させるのは
どんなパターンでも説明可能な規則性があれば可能。
メンドクサイと思ったかな?
だとすればそれはおそらく、フォームの明細行毎に背景色を変える必然性は存在しなかったという事だ。
フォームの明細行色を変えたいというリクエストは割りと珍しくないが、その殆どは、
「色が変わると見栄えが良い 気・が・す・る 」といった程度のもので、一部特殊な用途を除けば
殆どの場合は作りこむ価値がない。
もう一度よく仕様を検討したほうが良いぞ!
>>80 日本語で頼む、つーか、それ重くてスクロールできん、使えん、無意味
82 :
名無しさん@そうだ選挙にいこう :2006/09/28(木) 19:26:07
Access2000で質問です。OSはXPです。 ボタン類やサブフォームが配置されたとあるフォームがあるのですが、 通常は問題なく動作しているのですが、サブフォームに貼り付けてあるクエリの 実行結果が「0件」になっている時だけ、そのサブフォームやラベル、周囲のボタン類が 全て見えなくなってしまいます。 また、フォームヘッダーやフッターはいつでもちゃんと表示されています・・・ 「詳細」エリアだけが一切見えなくなってしまいます。何故でしょうか;;
>>82 データがないからでしょ。
連結フォームだとそうなるね。
実行結果が0件だった場合の処理入れたら?
>>83 そういうものなのですね・・・サブフォームと関係の無い外側のラベル類まで
一切消えてしまうので悩んでました。
クエリの実行結果が1件以上の場合のみサブフォームを表示させるようにすれば良いのかな・・・
ありがとうございました。
>>84 変更・追加が可能なサブフォームにする。変更・追加されたくなかったら、
VBAで抑制。例えば、追加なら挿入前でCancel=Trueにするとか。
見た目はあまりよろしくないが、サブフォームが消えたり出てきたりより
はいいかも。まだ、他にも方法はあるぞ。
>>81 連結オブジェクトフレームに貼り付ける画像は点を1ヶとかにして、OLEサイズプロパティを
「ストレッチ」にすれば、それ程重くはない。というか解釈しだいだと思うが、
1000レコード程度のしょぼいDBをMMXペンチのこれまたしょぼいノートで動かしているが
その範囲では全然問題ない。
背景は単色じゃなくて萌え画像で、とか言われたら使い物にならないだろうが…
何百万レコードで使うとか言われたらどうなるかしらないが、Accessでやるのは諦めてもらうとか
ものすごく高速なPCつかうとか。
87 :
86 :2006/09/29(金) 12:07:33
ためしに10万件のレコードを4色分けで試してみたら別に問題無いな。マシンはpen3 1Ghz テーブルに保存した色オブジェクトをDlookupで指定した条件で読込んでみると、 フォーム上の処理は、画面上で表示されるレコードしか色オブジェクトを読込んでこないし 色読込よりデータ表示をフォームからのエントリーが優先される。 フォームに表示できる行数を増やすを程、色が変わるタイミングに遅れがくるが。 (ページをどんどんめくると、移動中には色が変わらず、ページめくりが終わった時点で止まった レコードの分のみ、パラっと色が変わる感じ)
88 :
81 :2006/09/29(金) 20:09:53
昔、ノートPCでやった時には、 サブフォームじゃなく表形式フォームだけど、スクロール重くて使い物にならなかった
Acc2000だけど面白そうなんでやってみた
特に重いってほどでもない
つか、俺自身、画像そのもので似たようなことをやった経験があるので大体想像はついてた
そもそも
>>80 は、このやり方でいけと言っているわけじゃないだろ
どうしてもAc97でやりたいなら、たとえば、って話をしてるだけだろ
そんなに喧嘩腰になるようなことじゃないと思う
91 :
名無しさん@そうだ選挙にいこう :2006/10/01(日) 13:16:21
メインフォームの中のサブフォームの「帳票フォーム」で作成しています。 このサブフォームで表示させるデータの列数が20列ほどあり、右にスクロール すると当然左側の列が隠れてしまいます。 この左側の列(列1〜列3)を固定にして常に表示させたいのですが、 方法はありますでしょうか?
サブフォーム2つにすりゃいいんじゃね?
そうすっとスクロールの同期問題が出てこね? すなおにデータシート形式にすりゃ列の固定で済むんだけど。
アクセス使えるようになりたいんだけど 本とか見ても商品管理とか住所録ばっかりで 自分の生活で使わなそうだし興味も沸かないので 勉強続けられる自信が無い。 本やCDの管理とかにも使えるかな。 他にいい使い道あったら教えてください。
俺自身は純粋にDBとしての使い道に迫られておぼえたんだが 敢えて逆の道をすすめてみる 完全に逆の道を進めてみる データベースなんてどうでもいい クエリなんて使わなくていい テーブルさえ使わなくていい フォームとモジュールだけに目を向けろ VBか、使い方によってはそれ以上のプログラミングができるぞ まずは電卓あたりからつくってみろ スロットマシン、ラーメンタイマーなんてのもいい
>>95 本はごく一般的な題材だからうまく読み替えればいいと思いますけど?
私は自分の本の管理に使ってたりするよ。
CDの方が固有番号がはっきりしていて簡単かもね
I
98 :
名無しさん@そうだ選挙にいこう :2006/10/02(月) 01:34:31
99 :
95 :2006/10/02(月) 02:37:35
>>96-98 ありがとうございます。
頭が固いせいか、本の内容を自分の使えそうなものに
置き換えて考えるのが難しかったんですが
とりあえずCDの管理表?を作って操作覚えてみます。
100 :
名無しさん@そうだ選挙にいこう :2006/10/03(火) 17:50:39
【 システム環境 . 】 Win2003SV/Win2000Pro Access2003 Runtime 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access 2003 Runtime SP2 MSP グループポリシー ソフトウェアインストール Access2003 Runtime (AC2003RT) とシステムを GPO でユーザに割り当てて 展開してインストールはできたのですが、SP2 なしではスペースが入力 できないなどひどいありさまなので SP2 を適用しようとしています。 Administrator でログオンして SP2 のフルファイルを実行しましたが、 Adinistrator には AC2003RT が割り当てられていないためか適用に 失敗してしまいました。 AC2003RT を割り当てられているユーザで SP2 を実行すると、当然ながら 管理者権限がないため実行が中断されてしまいます。 管理者インストールポイントを作ってそれに MSP を適用しようとしましたが、 msiexec /a AccessRT.msi としても何事も無かったかのように終了してしまい 管理者インストールポイントを作成できませんでした。 グループポリシーにアップグレード用のパッケージを作ろうとしましたが、 MSP ファイルではパッケージを作ることができず、既存のパッケージになんとか 追加しようとしましたが該当する項目は見つかりませんでした。 GPO でインストール済みの AC2003RT に SP2 を適用するか、SP2 適用済みの AC2003RT を配布できるようにしたいのですが、何かよい方法はありませんでしょうか。
101 :
まり :2006/10/05(木) 21:03:53
【 システム環境 . 】 Windows XP, Access 2000
【 VBAが使えるか .】 微妙
【 VBAでの回答 】 可
【 検索キーワード 】 ACCESS グループ化 罫線
はじめまして。早速ですが質問させて頂きます。
得意先の索引(フリガナ)を50音順にした一覧レポートを作っています。
フリガナをグループ化してア行、カ行・・・といったように改ページして、1ページに3列にわけるようにしているのですが、空データの部分にも罫線を出したいと思っています。
サイトを参考にして作ったりしたのですがうまくいきません↓(複数列でなければ出来るのですが)
http://www.mahoutsukaino.com/ac/ac2002/vba/vba12/v12.htm 明日までが締切で焦っています。宜しくお願いします(=TェT=)
>>101 プロパティ操作をしようとせず、ダミーで空データ分レコードを作る。
ってことなので、ダミーのテーブルが必要になるなぁ。
>101 先に罫線のみ印刷済みの紙を用意しておいて、レポートは データのみ印刷 を使うとか。
104 :
まり :2006/10/06(金) 09:24:41
レスありがとうございます!! >102 追加クエリを使用するとゆうことでしょうか? >103 それが一番効率いいですよね。頭の堅い上司なんでどうも・・・(;´Д`A
105 :
103 :2006/10/06(金) 12:45:35
>104 今後の仕事の効率を考えると、上司の頭をやわらかくするか、別のところに 行きたくなる呪いをかけておくとより良くなるかも知れません。 残念ながらそんな魔法をアドバイスするにはあと数年待たねばなりませんので、 代わりに >102 氏のアイディアをもう少し形にしたものを貼り付けていきますね。 1. レポートのレコードソースをテーブル作成クエリにして一時テーブルを作る。 2. 一時テーブルの Recordset を Keyset で開く。 3. Recordset の行数とレポートのページあたりの行数の MOD をとる。 4. 3. で得られた不足行数分、Recordset に空行を Addnew する。 5. レポートで一時テーブルを開いて印刷。 6. 一時テーブルを削除。
106 :
名無しさん@そうだ選挙にいこう :2006/10/06(金) 17:29:56
【 システム環境 . 】 Windows2000, Access97,Excel97 【 VBAが使えるか .】 ExcelマクロはわかるけどAccessは勉強始めた初心者です 【 VBAでの回答 】 可 【 検索キーワード 】 excel97 access97 連携 検索 更新 これまで excel97 のマクロで処理していたデータが6万件を超えて しまったので、 データだけ、access97 に30万件のデータテーブルを作り格納しま した。 このデータを、 excel97 で使用していたマクロから検索・更新した いのですが、どう設定すればできるのでしょうか。 書店の書籍をみるとADOが載っていましたが、 ADOという機能が導入されたのは access2000 からのようですし、 調べているのですがよくわかりません。 アドバイスいただけると幸いです。 よろしくお願いいたします。
107 :
86 :2006/10/06(金) 17:53:10
>>106 Access97を使っているなら、「ADO」ではなく「DAO」でググろう!
108 :
106 :2006/10/06(金) 19:24:43
>>107 ぐぐってみます。ありがとうございます。
【 システム環境 . 】 Windows2000 , Excel97, Access97 【 VBAが使えるか .】 Excelはわかるけど Accessは初心者 【 VBAでの回答 】 可 【 検索キーワード 】 DOA excel97 access97 オブジェクトが必要です 今日初めて Access97 でテーブルを作成して、 エクセル97のマクロから下記のコードを実行したのですが、 'テーブルのオープン(レコードセットの作成) ⇒ Set daoRS = db.OpenRecordset("EURUSD_2004", dbOpenTable) で、 実行時エラー 424 オブジェクトが必要です とでてしまいます。 DBは、フィールドにオートナンバーと日付と時刻と気温というデータが 30万件あるテーブルがひとつあるだけのものです。 DOA 3.5 と、DOA 3.6 でも実行してみたのですが同じです。 どこがおかしいのかわからず悩んでいます。 なにかアドバイスいただけると幸いです。 よろしくお願いいたします。
110 :
109 :2006/10/07(土) 00:31:27
コード ------- Sub prc97() Dim daoDB As Database Dim daoRS As Recordset 'データベースのオープン(データベースオブジェクトの作成) Set daoDB = OpenDatabase("H:\AccessDB\T_KION_2004.mdb") 'テーブルのオープン(レコードセットの作成) Set daoRS = db.OpenRecordset("KION_2004", dbOpenTable) '最終レコードまで順読み込みを行う Do Until daoRS.EOF = True 'レコードの順読み daoRS.MoveNext Loop 'テーブルのクローズ daoRS.Close 'データベースのクローズ daoDB.Close End Sub -------
> Set daoRS = db.OpenRecordset("KION_2004", dbOpenTable) 関係ないかもしれないが、どこにも「db」なんてオブジェクト変数 宣言してないだろ。 Set daoRS = daoDB.OpenRecordset("KION_2004", dbOpenTable) にすると、どうよ?
112 :
102 :2006/10/07(土) 02:07:05
>>105 代わりにありがとう!!
あとは、レポートでのグループ化・昇順・降順に注意しましょう。
ダミーで追加した空行が先頭に来ちゃったりしたら、かっちょ
悪いし。
113 :
109 :2006/10/07(土) 02:16:32
>>111 うまくいきました ありがとうございます
アクセスへのマクロの定義を、今日初めて記述したもので
よくわかっていませんでした(汗 ありがとう
114 :
109 :2006/10/08(日) 02:40:51
エクセル97のマクロからDOAを介して Access97 のテーブルを検索するロジック についてなのですが、 例えば、 1行目のレコードの会社名とマッチする社名を、同じテーブルの2行目以降から 検索して100行目でマッチした。 次に、2行目のレコードの会社名とマッチする社名を3行目以降から検索する ような処理を記述する場合、 エクセルの表であればそのままLOOPですが、アクセスの場合は For 文と MovePrevious の組合せで2行目に戻してから再検索させるのでしょ うか? 初心者質問ですみません。よろしくお願いします。
誰か突っ込んでやれよ。 DOAじゃね〜よ。って。
>>114 2行目とか3行目とか言ってる意味が良くわからんが、
絞り込みならSQLのSELECT文つかえ。
Accessでいう「選択クエリ」だ。
>>114 何行目って話が出るってことは、先頭からループ回して1つずつ
調べる気だな。SQL以外でやるんだったら、FindFirst, FindNext
を使え。
118 :
109 :2006/10/08(日) 11:48:54
>>117 その通りです。
エクセルのマクロから実行しなければならないので。
FindFirst, FindNextですね。調べてみます。ありがとうございます!
119 :
名無しさん@そうだ選挙にいこう :2006/10/08(日) 12:22:43
エクセルだって参照設定すりゃDAO使えるだろが。。
121 :
109 :2006/10/08(日) 14:41:59
【 システム環境 . 】 Windows2000 , Excel97, Access97, DAO3.5 【 VBAが使えるか .】 Excelはわかるけど Accessは初心者 【 VBAでの回答 】 可 【 検索キーワード 】 DAO excel access select 今までエクセル97の表計算で下記のように処理していたのを、 表のデータをアクセス97に移してDAO3.5で処理しようとしています。 エクセルでは下記↓のように記述していました。
122 :
109 :2006/10/08(日) 14:42:28
'順次検索更新処理 Do While gyo = gyoEnd '・・・@ If Cells(gyo, 1) = 1 Then If Cells(gyo, 2) = (gyo, 3) Then Cells(gyo, 3).Interior.ColorIndex = 6 Else 'gyo以降を順次検索更新 idx = gyo + 1 Do While idx = gyoEnd If Cells(gyo, 2) = (idx, 3) Then Cells(idx, 3).Interior.ColorIndex = 6 '・・・A Exit Do End If idx = idx + 1 Loop idx = 0 End If End If gyo = gyo + 1 Loop
123 :
109 :2006/10/08(日) 14:43:05
これをそのまま2つのLoop文の前にそれぞれ RS.MoveNext でレコー ドの順次読み込みを行うと、 Aの 'gyo以降を順次検索更新 が終了した時点 でテーブルのカレントレコードの位置が、 gyo に idx を加算した行 にいる状態になります。 その場合、次のLoopで @( つまり gyo+1)から再検索するには テーブルのカレントレコードの位置を gyo+1 に戻す必要があると思う のですが、 私が思いつけるのは、For 文と MovePrevious の組合せなのですが、 (例えば、Aの後に、For 文と MovePrevious の組合せでカレント レコードを gyo にまで戻す記述をする) それは一般的なやり方なのでしょうか? もっと効率的なやり方はあるのでしょうか。 よろしくお願いいたします。
124 :
109 :2006/10/08(日) 14:47:26
スレだと空白が消えてしまうので、_を入れたのもアップしておきます。 ___'順次検索更新処理 ___Do While gyo = gyoEnd ・・・@ _______If Cells(gyo, 1) = 1 Then _____________If Cells(gyo, 2) = (gyo, 3) Then __________________Cells(gyo, 3).Interior.ColorIndex = 6 _____________Else __________________'gyo以降を順次検索更新 __________________idx = gyo + 1 __________________Do While idx = gyoEnd _______________________If Cells(idx, 2) = (idx, 3) Then ____________________________Cells(idx, 3).Interior.ColorIndex = 6 ・・・A ____________________________Exit Do _______________________End If _______________________idx = idx + 1 __________________Loop __________________idx = 0 _____________End If ______End If ______gyo = gyo + 1 ___Loop
Accessでは全レコードを順次検索更新処理ってゆーのがまずあり得ない。 つーか、最後の手段。
Excelでのロジックを捨てる覚悟がいると思うけど。長い文章読みたくないから、 どのような処理をして結果何をしたいのかを考えれば、SQLで済んでしまうか もしれない。検索していく過程で2番目に戻る・3番目に戻るってのがあるから、 MovePreviousを使うって考えてるなら、処理対象のテーブルをオープンしたら、 そのレコードセットのクローンを用意して、同じテーブルに対して2つのレコード セットを用意すりゃいいじゃん。
>>109 >>122 からエスパーすると
現状エクセルで2列目と3列目の値が同じ場合、3列目に色付けしているけど
テーブルから同条件でレコードを抽出してワークシートに取得したいってことか?
【 システム環境 】 Windows2000, Access2003 【 VBAが使えるか 】 はい 【 VBAでの回答 】 可 【 検索キーワード 】種類が一致しません 実行時エラー (80020005) 【症状】 ADOを用いてExcel上のデータをAccessテーブル追加する際 Accessテーブルの数値型フィールドに空白を移行しようとすると、 「実行エラー-2147352571 種類が一致しません]となる。 {Excel:Book1:Sheet1} ABCDEF 1生徒ID名前出欠国語数学英語 21阿部0704080 32伊藤0725083 43上野1 54遠藤0756082 {Excel:Book1:Sheet2} ABC 1生徒ID名前点数 2=Sheet1!A2=Sheet1!B2=IF(Sheet1!C2=1,"",SUM(Sheet1!D2:F2)) 32伊藤205 43上野 54遠藤217 [ACCESS:myDB:成績(テーブル)] フィールド名データ型 生徒ID数値型(倍精度浮動小数点型,少数点以下自動),値要求(Y),index(YY) 名前テキスト型 点数数値型(倍精度浮動小数点型,少数点以下自動),値要求(N),index(N)
[Excel:VB] Sub レコードの追加1() Dim myCon As New ADODB.Connection Dim myRS As New ADODB.Recordset Dim myFile As String Dim myTbl As String Dim myRng As Range Dim i As Integer myFile = ThisWorkbook.Path & "\myDB.mdb" myTbl = "成績" Set myRng = ThisWorkbook.Worksheets("Sheet2").Range("A1").CurrentRegion With myCon .Provider = "Microsoft.Jet.OLEDB.4.0" .Open myFile End With myRS.Open myTbl, myCon, adOpenStatic, adLockPessimistic, adCmdTableDirect myRS.Index = "生徒ID" For i = 2 To myRng.Rows.Count myRS.Seek myRng(i, 1).Value If myRS.EOF Then myRS.AddNew For j = 1 To myRng.Columns.Count myRS.Fields(myRng(1, j).Value).Value = myRng(i, j).Value Next End If Next
myRS.Update myRS.Close Set myRS = Nothing myCon.Close Set myCon = Nothing End Sub 欠席者の点数を空白にしたいのですがどのようにすればいいでしょうか? 手動で、コピーしテーブルへの追加貼り付けは問題なく出来ます。 お知恵を貸してください宜しくお願いします。
すみません エクセルの部分が見にくいので張りなおします。 {Excel:Book1:Sheet1} A B C D E F 1 生徒ID名前出欠国語数学英語 2 1 阿部 0 70 40 80 3 2 伊藤 0 72 50 83 4 3 上野 1 5 4 遠藤 0 75 60 82 {Excel:Book1:Sheet2} A B C 1 生徒ID 名前 点数 2 =Sheet1!A2 =Sheet1!B2 =IF(Sheet1!C2=1,"",SUM(Sheet1!D2:F2)) 3 2 伊藤 205 4 3 上野 5 4 遠藤 217
どっちも!! NULL
133 :
109 :2006/10/08(日) 22:51:31
>>125 >>126 もともとエクセルで6万行を越えてしまったのでアクセスをエクセルの表の代わり
にしようと思ったのと、私自身DBの知識がないので、一般的なアクセスの使い方
とは異なっているのかもしれません。
要は、
エクセルのマクロのループ文が入れ子式に二重になっているので、中のループ
で先に進んだカレントレコードの位置を元のループの再スタート位置に戻す必要が
あるので、そこをどう記述すればいいのだろう、という疑問なのですが、
そもそもそういう使い方が一般的ではなさそうですね・・・。
>>127 失礼しました。
実際には色を塗り替える命令文の下に、塗り替えたセルの数値を取得する処理
が入ります。
それを入れると長くなってしまうので、処理の流れを判り易くするために例からは
外しました。
しかし、色を塗り替えるのはエクセルではともかく、アクセスではありえない処理
ですから例としては不適切でした。すみません。
実際には参照比較してテーブルの元の行のフィールドを一部を更新します。
134 :
109 :2006/10/08(日) 23:33:20
>>116 >>126 MoveNextしか知らず、エクセルマクロでSQLをどう記述したらテーブルから
データを取得してこれるのかわからないレベルなので、レスの意味がわかり
ませんでした。多分SELECT文の使い方がわかれば出来るのだろうと思います。
すみません。
>>109 で、具体的には何をやりたいの?
ExcelVBA解らんから言葉で箇条書きしてくれ。
>>133 >実際には参照比較してテーブルの元の行のフィールドを一部を更新します。
>>1 嫁
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
137 :
126 :2006/10/09(月) 00:03:06
>>109 情報が少ない今の段階でも、アナタのやりたいことはオレのレス通り
同じテーブルで2つのレコードセットを利用すればでできるだろ。
1つを、最初→次→3番目→・・・って使い方をして、もう1つを検索専用
にすれば。
1つで済ませたいなら、BookMarkを使えば即戻れる。これが何かぐら
いは自分で調べなさい。
ただし、例えAccessだとしても6万件になるレコードをシーケンス的な
方法で処理をするのはおかしい。時間がかかってもいいなら、どうぞ。
138 :
128 :2006/10/09(月) 00:07:56
>>132 すみません、どこをNullにすればいいのですか?
139 :
132 :2006/10/09(月) 00:16:09
>>138 オマエはアホか!!
> Accessテーブルの数値型フィールドに空白を移行しようとすると、 「実行エラー-2147352571
> 種類が一致しません]となる。
と聞いてきたんだろ。空白というのは、マジで" "か空文字列の""を入れようとしてるんだろ。
数値型に文字列データ入れようとしてるんだから、そのエラーになる当たり前じゃん。それに
対してNULLって教えてるんだから、該当の数値型フィールドにNULLを入れるに決まってるだろ。
140 :
128 :2006/10/09(月) 00:35:54
>139 Excel側で空文字列でなく、Nullを代入することは出来ますか? =IF(Sheet1!C2=1,"",SUM(Sheet1!D2:F2)) の部分を変更することで対応できますか?
141 :
109 :2006/10/09(月) 00:45:14
>>137 >2つのレコードセットを利用する
2つのレコードセットを利用することができるとは思いもよらず、
意味がわかっていませんでした。
レコードセットを2つ利用するにはどうやって記述すればいいのでしょうか。
レコードセットを別々の名前で書けばいいのでしょうか。
どこか参考になるサイトはありますでしょうか。
142 :
109 :2006/10/09(月) 01:13:19
>>137 レスの内容から想像すると、多分、そのやり方が私のエクセルマクロの処理に
近いイメージです。とりあえず処理結果が必要なので、シーケンス的な方法で処
理して、後でアクセスの知識をつけてからちゃんとしたやり方を考えたいです。
>>109 ExcelVBAは基本命令さえ知ればロジックをうんうん唸って考えればどうにでも組めるけどExcelVBAからテーブルを扱うのはいちいち記述の仕方を調べないとできないですよ
144 :
109 :2006/10/09(月) 10:10:43
>>135 >>136 ・DAO3.6でアクセス97のテーブルで、
指定したRS!行数から検索して、
ある価格より小さなRS!価格を探し、
一番最初にヒットしたRS!価格を取得してエクセルの表に書き出す。
そういうSQL文を、
ExelVBAでどう記述すればいいのか?
これが自分の「具体的に何がしたいのか」だとわかりました。
145 :
109 :2006/10/09(月) 10:19:34
×一番最初にヒットしたRS!価格 ○より小さなRS!価格でRS!日付、RS!時間の一番近いもの でした。
146 :
109 :2006/10/09(月) 11:01:42
@ エクセル 日付 時刻 値段 値段2 2004/1/1 17:18 980 A アクセスのテーブル 行数 日付 時刻 値段 1 2004/1/1 09:18 980 2 2004/1/2 10:12 2000 3 2004/1/3 13:11 153 @より後で日付時刻が一番近くてより値段の小さい 3 2004/1/3 13:11 153 のデータを取得して値段2に入れる。
147 :
137 :2006/10/09(月) 14:24:31
>>109 アンタ、自分で調べるってことをしてる?サイトだけじゃなくて、ヘルプを読む力を
付ける。
rs1 = OpenRecordset(〜)とrs2 = OpenRecordset(〜)でも充分。実際に2つ開か
なくても、rs2 = rs1.RecordsetClone でもOK。引数や正確な書き方は、自分で
調べる!!
本当に値段だけが欲しいいなら、日付と時刻が分かれてるから面倒だけど(文字
列の設定とすると)、Excelの方を値固定でSQLを表すと、MIN([値段])を使ったの
を教えようと思ったが、ダメだな。「日付時刻が一番近くてより値段の小さい 」って
条件、何を優先にするのかも含めて曖昧でわからん。
行数 日付 時刻 値段
1 2004/1/1 09:18 980
2 2004/1/2 10:12 2000
3 2004/1/2 13:12 200
4 2004/1/3 13:11 153
5 2004/1/3 13:11 150
6 2004/1/3 10:45 190
このデータの時、どれが求めたい値段2なんだよ。それと、Accessのテーブルで
何行目という表現は不確かな要素が大きすぎる。この説明のように使う分には、
いたしかたないと思うが・・・、何か、面倒になってきた。アドバイス、誰かにタッチ
しようかな。
148 :
109 :2006/10/09(月) 15:18:23
>>147 ヘルプを使える以前のアクセスでなにがどうあるべきかイメージが掴めない真っ白
な状態でして、「シーケンス的な使い方はDBでは普通しない」という指摘もやっと
わかってきた状態なので、トンチンカンな使い方を尋ねてしまってるのだろうとは
思うのですが・・・、すみません。
> 本当に値段だけが欲しいいなら、日付と時刻が分かれてるから面倒だけど(文字
> 列の設定とすると)
文字列にするのが普通なのですか。テーブルはdate(s)とtime(s)で設定してる
のですがエクセルに落すと日付が変になることがあるのでそうした方がいいので
しょうか。
>「日付時刻が一番近くてより値段の小さい 」って
> 条件、何を優先にするのかも含めて曖昧でわからん。
> 行数 日付 時刻 値段
> 1 2004/1/1 09:18 980
> 2 2004/1/2 10:12 2000
> 3 2004/1/2 13:12 200
> 4 2004/1/3 13:11 153
> 5 2004/1/3 13:11 150
> 6 2004/1/3 10:45 190
>
> このデータの時、どれが求めたい値段2なんだよ。
3行目のレコードの値段です。
まず、エクセルの方の日付けより未来のデータが検索対象となり、
次に検索目標がエクセルの値段より小さい値段、
という順番になります。
お手数をかけてすみません。
149 :
109 :2006/10/09(月) 15:26:44
ちなみにヘルプもググったサイトと交互に読んでいます(難解ですが・・・
>>109 >>144-145 に関して答えるならこんな感じか。先頭データだけが必要ならループはいらんが・・・
SQLクエリは Jet SQL リファレンス、関連書籍やサイト見るなりしてがんばれ。
lngID = 指定行数
varBase = 基準価格
strSQL = "SELECT テーブル.* " _
& "FROM テーブル " _
& "WHERE ((テーブル.行数>=" & lngID & ") AND (テーブル.価格<" & varBase & ")) " _
& "ORDER BY テーブル.日付 DESC, テーブル.時刻 DESC"
Set rst = db.OpenRecordset(strSQL)
Do Until rst.EOF
{EXCEL処理}
rst.MoveNext
Loop
rst.Close
151 :
109 :2006/10/09(月) 16:31:12
>>150 指定行数はこういう風に記述すればいいのですね!
strSQLは上でDimで宣言すればいいのですよね。
記述例があると進み方が全然違います。ありがとうございます。
> それと、Accessのテーブルで
> 何行目という表現は不確かな要素が大きすぎる。
この意味もようやくわかりました。日付と時刻をあわせて主キーに
するべきだったのですね。
普通は、日付時刻型の1フィールドに日付も時刻もセットする。
>>151 のSQLは、行数というフィールドがあって初めて使えるかも?って
いうもの。まぁ、行数の代わりに連番でもいいけど。
>>109 が説明のためだけに行数を出したのなら、使えないSQLだね。
ついでに、複数の処理をしたいんだろうから、151のやり方だと基準が
変わるたびにSQL作成してOpenRecordsetの繰り返しになる。
現実的には、109が頭をひねって考える必要がある。ここまで、ヒントを
出して下さったんだから、ありがたいと思わないと。
簡単なオレからのアドバイス。151のSQLで、同一日時で価格が下回る
複数のデータがあった場合、どれがヒットするかわからない。一番安価
なのって条件があるなら、ORDER BYに価格も含めるべき。
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 OpenDatabase DAO odbc 上記環境にて、ファイル→外部テーブルからodbcで OracleDBをリンクしています。 また、環境によってはリンクを外す場合があり、 フォームのオープンプロシージャでテーブルがリンクされていたら、 接続しデータ検索を行う処理を追記したいのですが、 方法がわかる方がいらっしゃいましたらよろしくお願い致します。
>>158 マクロなら、メニュー使って手作業でリンクするのと大差なく作れるでしょ。
その後、VBAに変換とやれば基本的なものはできるよ。
158 がその釣りに気付いてくれることを祈るよ。
156 :
158 :2006/10/09(月) 21:38:38
>>154 (^∇^)アハハハハ!
153でしたね。
158 :
109 :2006/10/10(火) 00:15:59
【 システム環境 . 】 WindowsXP , Access2000 【 VBAが使えるか .】 かすかに 【 VBAでの回答 】 可 )調べます。 フォーム上で、ボタンをクリックすると 決まったフィールドの値をコピー出来るようにしたくて マクロにて フォーカスの移動(フィールド名) キー送信 (^C) などとしたのですが・・ 何故か、たまに失敗します。なので二回クリックしたりしてます。 どういう場合にコピーしてくれないのでしょうか?
オプション、キーボード、フィールド移動時の操作、はどうなってる?
>>159 マクロでやるなら、オプションは大事だな。オプションのキーボードタブ、
フィールド移動時の動作は全体を選択だな。
これだったら今のままでもうまくいくはずだが、あえて突っ込めば、キー
送信を使わずに[コマンドの実行]でコピーを使おう。
で、本当にクリップボードに送るだけなのか???
どこかフィールドにペーストまでやるなら、VBAの方が楽だぞ。
【 システム環境 . 】 Windows2000 , Excel97, Access97 【 VBAが使えるか .】 Excelのみ 【 VBAでの回答 】 可 【 検索キーワード 】DAO Excel Accsess エクセル アクセス 数字 変換 カンマ区切りのテキストデータの数値をアクセス97に インポートして、DOAを介して、エクセル97のマクロで セルに入れると余計な数字が付加されています。 @ .txt 1.2565 A アクセス 1.2565 単精度浮動小数点型 小数点以下桁数 : 4 既定値 : 0 B エクセル 1.25650000572204
163 :
162 :2006/10/11(水) 00:08:03
エクセルでのマクロの記述はただ単に Cells(1, 4) = RS!数値 です。 エクセルでデバッグしてみると RS!数値はテキストのまま の数値が 表示されますが、 Cells(1, 4)にカーソルを移すと 1.25650000572204 と 表示されるのでエクセル側の問題だと思うのですが。 エクセルでセルに直接入れないで、As Single の変数 に一度入れてからセルに入れても同じ結果でした。 どのようにしたらいいでしょうか? よろしくお願いします
>>163 Cells(1, 4) = CCur(RS!数値)
とするとどう?
165 :
162 :2006/10/11(水) 00:21:53
>>164 実行時エラー424
オブジェクトが必要です
になりました。CSng でも同じです。
166 :
162 :2006/10/11(水) 00:28:26
>>164 Dim 〜 As Currency で定義した変数に突っ込んでみたら
余計な数字がカットされました。
これはどういうことなのでしょう。怖いです。
167 :
162 :2006/10/11(水) 00:41:51
エクセルスレでエクセルの演算誤差の問題だという指摘を頂きましたので調べます。。
とりあえず処理は
>>164 さんのアドバイスで対応できます。ありがとうございました。
168 :
159 :2006/10/11(水) 01:38:34
>>160 さん
診断ありがとうございます。
なるほど、テキストが選択されているように見えていたのですが
実際は移動しましたけど?な状態と理解してよいのかな・・
>>161 さん
加えて丁寧な回答感謝です。
突っ込みのとおりコマンドの実行で出来そうですが。
実は、他のアプリへ貼っつけるのでクリップボードへ保存するしかない!
と・"思い込みました"
現状維持して、勉強いたします。
だから、桐にしとけってば
170 :
名無しさん@そうだ選挙にいこう :2006/10/11(水) 10:57:03
▼━質問━━━━━━━━━━━━━━━━━━━━ mdbを実行した時から30分程度で自動的にACCESS自体を終了させたいです。 これによる弊害などは気にしなくて構いません。 ▼━質問テンプレ━━━━━━━━━━━━ 【 システム環境 . 】 WindowsXP SP2, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】ACCESS VBA 閉じる タイマー
>>170 Timerイベント
TimerInterval
Application.Quit
172 :
名無しさん@そうだ選挙にいこう :2006/10/13(金) 22:48:23
仕事で郵便番号検索するため郵政の番号一覧をダウンロードしたけど 表示オーバーで全国の郵便番号が表示できない。 これってアクセスだと全て表示できて検索できたりする?
>>172 Access データベース (.accdb) ファイルのサイズ
2 GB からシステム オブジェクトに必要な領域のサイズを引いた値
174 :
名無しさん@そうだ選挙にいこう :2006/10/13(金) 23:03:39
ちょっと難しいんですが・・。 ダウンロードの容量が11730KBということは、無理ってこと? ごめん・・・。
>>174 Accessなめてるなw
郵便番号なんて、たかが10万件程度だ
インデックス張れば、瞬時に検索できる。
>>172 Excelで開いたと思われるので、2007ならば問題なし。来年まで待たれよ。
Accessも使い慣れれば、Excelより便利な場合もあるけどね。
ほとんど重複データだから正規化せずにはいられないよね、アレ。
>>177 使うなら、県・市・町のテーブルに分割すればいいだけだ。
データベースをおもちゃにするならとてもよいサンプルかもしれないw
>>174 > ダウンロードの容量が11730KBということは、無理ってこと?
11730KB ≒ 11.7MB ≒ 0.012GB <<<< 2GB
180 :
名無しさん@そうだ選挙にいこう :2006/10/14(土) 22:16:09
みなさん、ありがとございます。
181 :
名無しさん@そうだ選挙にいこう :2006/10/17(火) 10:59:10
例えばCドライブの直下にPDF_TEST.pdfというファイルがあり、アクセスでボタンを押すと そのファイルがアクロバットリーダーで開かれるというような処理を書きたいのですがどう すればよいでしょうか?
183 :
名無しさん@そうだ選挙にいこう :2006/10/17(火) 12:24:36
>>182 START.EXE を起動するにはどう書けばよいでしょうか?
>>181 1.フォームを作る
2.フォーム上にボタンを作る
3.ボタンのプロパティを表示する
4.ハイパーリンクアドレスの項目を選択し、右側の「…」を押す
5.リンク先のファイル/URL の右側の「参照」を押す
6.ファイルの種類を「すべてのファイル」にする
7.C:\PDF_TEST.pdf を選択して「OK」ボタンをクリックする
8.フォームを「フォームビュー」にしてボタンを押す。
186 :
名無しさん@そうだ選挙にいこう :2006/10/17(火) 14:30:24
フォームを作っているのですが、 windows付属のフリーセルのように、 横幅を固定し、縦のみ大きさを変更したいのです。 方法はありますか?
188 :
名無しさん@そうだ選挙にいこう :2006/10/17(火) 20:44:45
>>186 フォームのサイズ変更時に
DoCmd.MoveSize , , hogehoge
と記述。hogehogeは固定する横のサイズ
189 :
186 :2006/10/17(火) 21:00:53
>>188 有難うございました。
一発でうまくいきました。
ここには>187みたいな、基地外しかいないかと
相手にしたくないので諦めかけていたところでした。
>>189 おれ、187じゃないけど、187に教えて貰ってその態度は無いだろ
二度と来るなよ
191 :
186 :2006/10/17(火) 22:37:17
>>190 ハァ?
教えて頂いたのは188様です。
>187はタダのゴミくず
192 :
名無しさん@そうだ選挙にいこう :2006/10/17(火) 22:44:24
193 :
186 :2006/10/18(水) 00:10:43
>187>192>190 喪前は、どうしようもない屑だな・・・・
ACCESSで作ったアプリ(mdbファイル)があります。フォームやレポートをVBAで 使いやすくした程度ですが、これってACCESSのインストールされたPCでないと 使えないものですか?EXCELL、WORD2003のみ搭載のお手軽OfficePCで 使うことは出来ないものでしょうか? 何かのDLLがあれば使えるとか、条件次第で出来るのならあとは自分で調べてみます。 環境は混在してますがとりあえずWindowsXP、Office2003ってことで。 VBAもなんとかわかります。
>>194 Access か Access Runtime がインストールされていないと使えませんです。
ただし、データのみ(フォームやレポートは不可)なら、Excel からでも接続できます。
>>194 Office XP Developer 買え。
>>195 サンクス、runtimeとやらを調べてみます。
>>196 だったらExcell側で作り直したほうが、、、
500円でランタイム化してやるよとか言う商売したら ライセンスに抵触するのかな。
下記の様なソースコードがあります。BLOBを使ってOracleからデータを取得し、それをC:\ に書き出して、アクロバットリーダーで表示させています。 ところが、このコード普通に書いてしまうと、アクロバットリーダが起動しません、なぜなら ファイルにロックがかかっており、アクロバットリーダーは編集モードで通常開こうとする ためです。BLOBから取得してきたデータのファイルロックをはずす方法などご存知のか た、いらっしゃいませんでしょうか?
201 :
200 :2006/10/18(水) 11:23:13
Private Sub cmd表示_Click() Dim objOraBlb As OraBlob Dim varRetval As Variant m_strOldItemCode = Master品目サブフォーム![品目コード] 'BLOB列を含むSELECT文 strSQL = "SELECT IMAGE_FILE FROM T_M_ITEM WHERE ITEM_CODE = '" & Trim(m_strOldItemCode) & "'" 'ダイナセットの設定 Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_DEFAULT) 'BLOB型にデータがあるか?? If IsNull(OraDynaset.Fields(0).Value) = True Then 'データが無い!! MsgBox ("このデータに画像は登録されていません") Exit Sub
202 :
200 :2006/10/18(水) 11:23:47
Else 'BLOB型のオブジェクトを設定 Set objOraBlb = OraDynaset.Fields(0).Value 'ファイルへの書込み(LHA圧縮の元ファイルが日本語名を使えないためC:\直下に格納 objOraBlb.CopyToFile "C:\Genesiss_tmp.pdf" 'BLOB型のオブジェクトを解放 Set objOraBlb = Nothing 'ファイルにロックがかかってるのでしかたなくやっている---↓ varRetval = Shell("CMD.EXE /c copy Genesiss_tmp.pdf Genesiss_tmp2.pdf", 1) varRetval = Shell("CMD.EXE /c start c:\Genesiss_tmp2.pdf", 1) 'ファイルにロックがかかってるのでしかたなくやっている---↑ End If 'ダイナセットの解放 Set OraDynaset = Nothing '正常戻り
【 システム環境 . 】 WindowsXp, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 Access 人事 テンプレート まったくAccess使ったこと無いのですが人事管理のデータベースを作ること になりました。 お手本になり改変可能なテンプレートや、作り方を紹介したサイトなどがあ れば教えてください。 フリーソフトは幾つか見つかったのですが、改変できないものばかりなので 後から自分で手を加えられるものが欲しいんです。 よろしくお願いします。
>>203 まともにAccessつかったことも無いやつが人事管理みたいなもん
作れる訳が無かろう
エクセルスレで聞いてエクセルでやれ。
>>200 知らないが、oo4o の問題なら Access は無関係だから、
Oracle できいた方が早い希ガス。
>>186 「方法はありますか」と尋ねたのだから、
>>187 の「ある」が最も妥当な回答。
「実現する方法を知りたい」なら、そのように質問するべきだった。
妥当な回答をくれた相手を基地外だの屑だのと呼ばわる
>>186 の方が
きちがいでありごみくず。
207 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 09:27:46
うん、
>>186 は質問の前にまず的確な日本語をマスターすべきだよ
でないと人並の社会生活営めないぞ
208 :
200 :2006/10/19(木) 10:51:48
>>205 Oracleサポートに問い合わせてみました。
追って報告します。
209 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 11:01:16
accessベースのソフトを使っていて、顧客の領収書を発行するのに8回ボタンをクリックしないといけない仕様です。 すべてのボタンのイベントプロシージャを連続して作動させる方法ってありますか。待ち時間も適当に設定して連続させたいのですが・・
210 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 11:02:20
ある
211 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 11:28:22
社員名簿のシステムを作っています。 テーブルに・社員名簿と・退職者名簿を作ろうと思っているのですが 現在、社員から退職者が出た場合、名簿の移動をするときに手入力で移動させています。 何か簡単に移動させる方法はないでしょうか? フィールドはほぼ同じで、退職者名簿のみ「退職日」「退職理由」のフィールドが追加されています。 退職した社員が出た場合 ▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━ 【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 名簿 Access クエリ
212 :
186 :2006/10/19(木) 13:29:33
>187>192>190 追加 >206>207 喪前は、まだやってるのかw 社会で相手にされてないからって、これぐらいにしておけよwwww
213 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 13:37:44
>>211 >フィールドはほぼ同じで、
社員テーブルに、在職・退職のフラグを追加し、本当は全く同じにした方がいいな。
復職しないともかぎらんし、
退職時は、社員テーブルのフラグをチェックし退職者テーブルに追加
214 :
200 :2006/10/19(木) 15:09:58
オラクルサポートに聞いたところ、 Set OraDynaset = Nothing してないのが原因のようでした。
>>214 ちょっと前にcloseとかnothingが必要か否かっていうやり取りがあったけど、
やっぱりおまじないはしておいた方がよさ気ですね。
216 :
名無しさん@そうだ選挙にいこう :2006/10/19(木) 17:45:56
>>213 ありがとうございます、できました。社員テーブルも同じにしました。
もうひとつやり方がわからないことがあるのですが
勤続年数、年齢をクエリ上で求めたいと思っています。
今日現在の年齢(○○才)の表示はできるのですが
○○才○○ヶ月というふうに表示させるのはどうやればいいでしょうか?
また、指定の日付け時点の年齢を表示させるにはどのようにすればいいですか?
指定の日付はそのつど入力したいと思っています。
>>215 でも、CurrentDbに対してCloseやNothingはいらないと思うぞ。
219 :
名無しさん@そうだ選挙にいこう :2006/10/20(金) 00:43:10
>>210 もう少しヒントをいただけるとうれしいです・・・読むべき本でもいいです。
>>209 accessベースのソフトと言う一文が気になるのだが、
各イベントプロシージャをcallすればいいんじゃね?
もちろん拡張子が、mdeとかじゃないよね?
>>209 >>220 さんの言うように呼び出しをすればおk!それか各ボタンごとにプロシージャを
書き込むのではなくてモジュールを作成し、そこから読み込むのもあり
222 :
216 :2006/10/20(金) 09:35:46
表示させることはできました。ありがとうございました。 ただ、書式設定がうまくいってないのか 03年9ヶ月のように一桁の年数の場合は0が入ってしまいます。 この0を取りたいのですが、どうやればいいでしょうか。 書式はyy年mヶ月としています。
223 :
名無しさん@そうだ選挙にいこう :2006/10/20(金) 09:48:07
ある
224 :
名無しさん@そうだ選挙にいこう :2006/10/20(金) 09:52:46
フォームをつくっています。 入力時、空白のページを表示させたいのですがどうすればいいですか? 開くとテーブルの最初のデータが表示されてこまっています。
225 :
209 :2006/10/20(金) 10:03:13
>>220 市販ソフトなんですけど、accessそのものです。変な表現ですみません。
>>221 ありがとうございます。試して見ますね。また、報告しますね。
226 :
名無しさん@そうだ選挙にいこう :2006/10/20(金) 10:05:51
>>222 iif関数 Switch 関数
漏れならこんなもの自前のfunctionでやるが。。。
>>224 ふぉーむ開くときに
DoCmd.GoToRecord , "", acNewRec
227 :
名無しさん@そうだ選挙にいこう :2006/10/23(月) 13:45:26
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 処理速度の高速化 現在、測定データが約5千万件ほどあります、フイールド数は10ヶ程度 Accessで集計・抽出していますが、遅いです。 もっと早く集計させるにはどうすればいいですか?
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【 システム環境 . 】 WindowsXP, Access2003
【 VBAが使えるか .】 いいえ
【 VBAでの回答 】 可
下記のソフトのような事をアクセスで一括してできないでしょうか?
http://webseeder.net/bp/bptran0.9m/readme-bptran0.9m.html リンク先より:
「CSV形式のデータファイルから読み込んだ情報を、テンプレート用HTMLファイル(デザイン自由)の指定位置に書き込むことで、同じデザインのホームページを大量に自動生成できます。
ホームページに掲載するための情報をデータベース等で管理している場合、テンプレートとなるHTMLファイルさえ作れば、もうコピー&ペーストの必要はありません! 」
つまりデータベースとHTMLテンプレートから、複数のHTMLファイルを産出するというものです。
ACCESSなら出来ると思うのですが、方法が全く思いつきません。
調べたのですが、出てきませんでした。
どなたかよろしくお願い致します。
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 不可 【 検索キーワード 】 追加クエリ サブフォーム 「職員情報マスタ」というテーブルと「職員履歴」というテーブルがあります。 それぞれのテーブルには「職員番号」というフィールドがあります。 「職員情報マスタ」テーブルに職員番号を入力すると、同じ値が「職員履歴」テーブルに自動入力される 方法があれば教えていただきたいと思います。 フォームを使った方法でも構いません。 よろしくお願いします。
マスタって何のために使ってるの
>>227 早く回答をもらうにはテーブルの構造と問題のクエリを晒したほうが良いです。
>>229 検索キーワードに "サブフォーム" があるのお見ると
「職人情報マスタ」をレコードソースとするフォームに
「職員履歴」をレコードソースとしたサブフォームを配置してみたけど
うまくいかなかったってこと?
>>227 ヒントつ: CPU, RAM, 用意できる金額
>>227 あとインデックスの有無も。つか、張ってなかったら張れ。
張ってそれなら、Access の限界かも。
>>228 VBA を駆使すればどうにでもなるけど、あるていどの
カスタマイズは必須になるから、ちょっと厳しいかな。
最悪、CSV で吐いてそのソフト使うんじゃダメかい?
>>227 おそらく、設計が糞に1000カサノッサ
>>232 同じ処理をセレ(256MB)とP4(2GB)でやったことあるけど、
RAMはあまり関係なさそうだよ。
CPUクロックほぼ同等で1.5倍ぐらいP4マシーンが早かったから
自作板で言われているCPU性能差そのまんま。
ただ、メモリつんでいる方が起動と終了が早いくらい。
>>RAM 俺も漠然とだがそれは感じていた それにしても・・・5000万件か 何か夢のような、というか悪夢のような数字だな 処理の速い遅いは別にしてAccessでもやればできちゃうのか
>>227 50,000,000件のレコードでフィールド数10個くらいってファイルサイズどうなってんだ?
ACC2000の制限が2GBだったと思うがインデックスも作る余地ないんじゃないか、、、
238 :
名無しさん@そうだ選挙にいこう :2006/10/24(火) 18:46:57
227です。 みなさんご教示ありがとう。 5千万件でも、1G超える程度です。もちろんインデックスつけてます 測定データなので、そんな容量は変動ないです。 フィールド数が10個ですが、最小限の予約サイズにしてます。 測定データ(ロガー)の分析にAccessですが、これって無理がありますか? 設計が糞なんでしょうが・・・・せめてヒントだけでも。
239 :
名無しさん@そうだ選挙にいこう :2006/10/24(火) 19:03:51
227です 追記です。 テーブルはそのままでは5Gぐらいいっちゃうので、分けてます。 後だしでごめんなさい。 で、1つのテーブルが1G程度です。 CPU速度が、敏感に影響するとのご教示なので、試してみます。 30分が15分になれば、だいぶ違います。 ありがとうございます
240 :
名無しさん@そうだ選挙にいこう :2006/10/24(火) 19:36:07
>>238 データのみの5000マンレコードなら、無理なレコード数でもない。
データの変動分だけ演算し、演算結果を別テーブルに保存するように
すればよいだけ。
既にAccessなんてケチなデスクトップDBもどきを使うような データ量じゃないと思うけど。
>>227 条件適当だけど興味本位でやってみた。
CPUはPentiumM 2.0GHz(FSB 400MHz)、メモリ1GB。
フィールド数: 6 (すべてバイト型、インデックスなし)
レコード数: 54,868,086
ファイルサイズ: 840MB
クエリ: 6つのフィールドの合計し、値をグループ化、カウント。
所要時間: 6分30秒くらい
243 :
名無しさん@そうだ選挙にいこう :2006/10/25(水) 12:40:56
フォームAの新規レコードのフィールドaにフォームBの最新レコードのフィールドbの内容をコピーしたいです。 フォームBの最新レコードを参照する方法が分かりません。 御教授を御願いします。
244 :
名無しさん@そうだ選挙にいこう :2006/10/25(水) 14:49:24
フォームに登録ボタンを配置して そのボタンを押さない限り新規登録や変更の確定ができないように したいのですが、可能でしょうか。可能なら方法を教えてください。 お願いします。
>>244 フラグ使えばぁ。非連結も手だけど、連結の便利さを捨てることになるから、
だったらVB/VCでデータだけMDBにすればって思うぐらい不親切なAccess
になるよ。
open時にフラグをFalse。フォームの更新前で、そのフラグを判定しFalseな
らCancel=Trueで終わる。登録ボタンを押されたら、フラグをTrueにして更新
する。更新は、DoCmd使ってもいいけどSendkeysでshift+Enterが楽かも。
あと、細かい制御は割愛。この方法にするなら、自分で考えて下さい。
247 :
243 :2006/10/25(水) 23:53:19
もしかして、フィールドに無関係に最新レコードを指定する方法がないのでしょうか? レコード作成日時のようなフィールドを作ったりして指定するのでしょうか?
ない。フィールドに依存しない「最新」という概念自体がない。 オートナンバーがあれば、それの最大とか、作成日時があれば それの最大という指定が必要。それすら無いなら設計し直す。 ちなみに、入力が確定していないレコードは、たとえフォーム上に 入力中のデータが見えていたとしても、テーブルに落ちていない ので指定できない。初心者がよくハマるので注意。
DLastという関数 かつて無節操に愛用したことがある 今は後悔し(ry
後悔した理由も書かないと、出来るもんだと勘違いして愛用しだすぞ。w
>>248 > ない。フィールドに依存しない「最新」という概念自体がない。
ありがとう御座います。。どうりで検索しても見つからない訳でした。これですっきりしました。
243が考えてる最新の定義が何かによるな。 確定してなくてもフォームに見えてるなら、他のフォームから Foms〜でとってこれるし。
253 :
名無しさん@そうだ選挙にいこう :2006/10/26(木) 10:24:24
>>252 顧客一人につき、月に2枚報告書を作ります。フォームAの内容の一部をフォームBで使えるので、手動でコピペしていました。
フォームAの報告書を作った後で、フォームBを作るときに自動的に最新の内容がコピペされてればいいなと思いまして質問した次第です。
>>253 そんなもん、1つのフォームでやれよ・・・・
255 :
名無しさん@そうだ選挙にいこう :2006/10/26(木) 14:30:40
>>254 全く別物の2種類の書類を作成します。その一部を流用可能という意味です。
ある顧客の一案件についての報告を2つの部署に提出する必要がありまして、それぞれの部署の書式が異なっています。
でも同じ案件を扱うので流用可能な部分がある、という状況です。
256 :
252 :2006/10/26(木) 21:58:51
>>255 1案件で必ず2つの報告書が必要で流用可能があるなら、1つのフォームで
両方の項目を全て網羅してしまえばいいだろうってことだよ。
テーブルまで分ける必要があるかどうかは知らないけど、印刷物なら簡単
に2つに分けて印刷できるだろ。
で、いまだにアンタの「最新の内容」の定義がわからん。フォームA,Bの両
方が開いてる状態で、欲しいデータが出てる状態なの?
でも、フォームAの報告書を作った後でっていうからには登録して閉じた後
のような気もするし。
こういうものって何かしら資料番号とかあるんじゃねぇのか。それがユニー
クキーになるんなら、何とでも作れそうだけど。
257 :
名無しさん@そうだ選挙にいこう :2006/10/26(木) 23:13:40
>>256 実は市販のソフトなんですよ。そのまんまaccessなんですけどね。
それが書類Aと書類Bを別のフォームで作成するように出来ているのですフォームAとBは同時に開けないようになっています。。
実はすべての案件について2枚書類が発生する訳ではないので、そのように別れていると思われます。
私がやりたいのは、ある顧客について10月分の書類Aを作った後に10月分の書類Bを作るのですが、書類Aのあるフィールドを書類Bにコピペして
楽をしたいだけです。
私は作成時期が最新のレコードを指定する方法があるのかと思って調べたのですが、
>>248 さんの仰るとおり何らかのフィールド内容を使用して
指定するしか方法がないことが分かりました。なので、作成年月日で参照して代入するようにしてみようと思います。
いろいろと御教授いただきありがとう御座います。実験してみてまた御報告しますね。
質問している奴が後から、 「実は***なんですよ」、って何だよ。
> 書類Aのあるフィールドを書類Bにコピペして データソース(tbl)が一緒なら別のフォームを同時に開けないでしょ ちなみに、桐なら簡単にできるよ
>>260 仰るとおり、同時は開けません。
桐を使いたくても、大枚はたいて買ったソフトですから。
初年度30万円、以後毎年15万円払い続けてますので。。。
262 :
248 :2006/10/27(金) 01:11:09
Access 製のそういう市販のソフトがあるんですか。へえ。 …ひょっとして、D○○○○○○S?
【 システム環境 . 】 WindowsXP ACCESS2003 【 VBAが使えるか .】 はい 【 VBAでの回答の可否】 可 現在クエリから新規のテーブルを作成する際に以下のように作成しているのですが、 その際に確認ボタンをでなくするようにしたいのですがどのようにしたらいいのでしょうか? 宜しくお願いします。 Sub テスト() SQL = "SELECT * INTO T_コピー先 FROM Q_コピー元; " DoCmd.RunSQL SQL End Sub
つDoCmd.SetWarnings False
266 :
名無しさん@そうだ選挙にいこう :2006/10/29(日) 09:50:45
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access グラフ Null、Access グラフ N/A アクセスのフォーム/レポートに表示する折れ線グラフで、Excelのように「未定義(N/A)の場合はプロット対象から外す」とするにはどうしたらいいのでしょうか? Nullの部分は無視して、そのまま線を繋げて描写して欲しいのですが……。
267 :
266 :2006/10/29(日) 09:52:39
>>265 私のような若輩が口を出すのはナンですが、一つ念のため(^^;
実行した後、DoCmd.SetWarnings Trueするのをお忘れなく。
コードを例示されたところで何も調べずに嬉々としてコピペで完結するするようでは
一度痛い目にあったほうがいいんでないの?
>>266 Nullの場合はx軸から除外するってこと?
>>266 Microsoft Graph グラフ(MSGraph.Chart)のことかね?
だとしたら、デザインビューで非連結オブジェクトフレームを
ダブルクリックすればインプレースアクティベートするから、
[ツール]-[オプション]-[グラフ]タブ-[空白セルのプロット方法]
あたりに目的のオプションがあるかどうか調べてみたら?
有ればそれを選べばいいし、無ければ無いんでしょうよ。
最近、アクセスがリンクテーブルのデータを全部クライアント側に 渡して、クライアントが処理しているというため、ネットワークDBと してはアホだということを、やっと理解しました。 どおりでモッサリな訳だorz.. MSさん、アクセスサーバー作ってくれよ。素人ですがいまさらSQL サーバーとか覚える気力は、ありません。
271 :
266 :2006/10/30(月) 21:15:55
>>269 どもっした。おっしゃるとおり
[ツール]-[オプション]-[グラフ]タブ-[空白セルのプロット方法] で、
「補完してプロットする」でOKでした。ありがとうございました(拝)
>>270 デスクトップDBの位置づけですから、アクセスサーバーは無理っぽ。
Accessと同じ使い方ぐらいなら、覚える必要なくSQL Serverでいける
よ。ただ、Accessと同じSQL関数ってのは無理なので覚える必要が
あるけど。
【 システム環境 . 】 WindowsXP ACCESS2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答の可否】 否 テーブルに日付を入れたいんだけど、日付でひとつのフィールドにするか それとも年、月、日で分けたほうがいいのか、悩ましいです 普通は前者なんだよね? メリット、デメリットを教えてくれっ!
WHERE (年月日 = #10/20/2006#) WHERE (年 = 2006) AND (月 = 10) AND (日 = 20) WHERE (年月日 <= #10/20/2006#) WHERE (年 <= 2005) OR ((年 <= 2006) AND ((月 <= 9) OR (月 <= 10) AND (日 <= 20)))
>>273 日付で格納したほうがいいと思うよ
日付はクエリで簡単に年、月、日と分割できるし
>>275 クエリだから分割できる訳じゃない。それを言うなら、フィールド分けたって
クエリで日付型にできるよ(DateSerialやCDateで)って言えるだろ。
>>273 桐にしたら良いよ
簡単に年月日の分割や結合できるから、どっちでも同じだよ
>>273 前者は複数の関数の組み合わせや自前のVBA関数によるチェックなしで
0月99日とか2月30日とかありえない日付の登録を100%防止できる。
これが最大のメリット。
デメリットは強いてあげるなら・・・
地球以外の惑星で使うから13月や14月が登録できないと困るんです!(><;)
とかいう要件には使えないこと。
279 :
名無しさん@そうだ選挙にいこう :2006/11/01(水) 15:41:26
ひとつ教えていただきたいのですが、 レポートの基になるデータの変更は 可能でしょうか? テーブルのデータを基にレポートを 作ってみたのですが、これをコピーして 別のクエリで利用出来ればと考えています。
280 :
名無しさん@そうだ選挙にいこう :2006/11/01(水) 16:06:08
不可能
>>274-278 どうもありがとうございます
もやもや悩んでたのが解決してすっきりしました
>>278 accessで金星日記つけるのでヤバイです
1年より1日の方が長いよ!
VBAによるチェック機能はやはりつけておいたほう良いと思うのです 6/100とか 56/9とか 33/11とか こういった悪ふざけのデタラメ入力も日付としては通ってしまうわけで たとえばキーボードによる入力は不可にするぐらいの用心深さはあってもよいのではないかと いずれにせよ個人的には日付型に一票
桐にしとけに一票
Access2007から年月日のフォームフィルタが超簡単便利になったから、 年月日データを分割して持つメリットは無くなった
テーブルにフィールドを追加したんですが フィールドリストにはでてるんですが、VBAではエラーになります 分かる方お願いします
いい質問だ、誰か答えてやってくれ どうでもいいけど最近Windows遅くないか、シャットダウンの時
>>285 問題なければ、フィールド名晒せ。
一文字目が全角数字だとエラーになるときがある。
日付を分けて格納するのはどうかと思うが、日付型もちょっと嫌だな。 日付型って空に出来ないでしょ。 だから、2006/11/05という文字列で格納するのに1票。 入力チェックはどうぜフォームやVBAでやるし、簡単に日付として扱うことも出来る。
> 日付型って空に出来ないでしょ。 ( ゜Д゜)ポカーン
むしろ、"0000/00/00"なんてデータがくると嫌だ。 DBによっては日付のフィールドにNullは許されないのか?
何だかよく分かりませんが 少なくともmdbはNull許してるでしょ あくまで個人的な趣味好みとして、Nullってのは何か落ち着かないので、うちの 名簿の生年月日フィールドでは#1901/1/1#をNullの替わりにしてるけど 105歳の人、実はいたりして
何が落ち着かないのか解りませんが、少しは大人になって下さい。
If 条件式 Then
処理1
Else
処理2
End If
例えばVBAで↑のような処理をする時、処理1もしくは処理2のどちらか片方は必ず実行されるはず・・・
と考えてるレベルの入門者にとってはNullは安心して使えない、
>>292 が言うところの
「何か落ち着かない」ものに感じられるんだろうな。
Null値の特性を理解できてないうちは無理して使わないのも選択肢の一つ。
そのためのIsNull関数だろう。 だいだい、「Null値」とか表現するからあたかもNullという値があるように思うのでは? Nullという状態と考えれば解りやすい。
296 :
名無しさん@そうだ選挙にいこう :2006/11/07(火) 10:21:52
ACCESS97をインストールするとデータベースウインドウが文字化けして○や□で表示される。 テーブル内のデータなどは問題なく表示される。 再インストールしても同じ状態。 コンパネの地域は日本で言語も日本語。 OSはMeです。 どなたかお願いします。
297 :
名無しさん@そうだ選挙にいこう :2006/11/07(火) 10:49:11
ACCESS97 と WindowsMe のサポートは終了しますた
規制は???
やっと解除された。
>>294 辻褄が合わないのだが・・・Nullの場合は必ずFalseって覚えればいいだけ
だから、別にNullでも片方は必ず実行されるよ。
Thenのはずと思ってたのにElseだった、は有り得るけど。
帳票型フォームの縦の集計では、たとえNullがあっても =Sum([]) はちゃんとやってくれるんですよね まずはこれでだまされちゃう Null + 3 = 3 ではない ここで痛い目にあい虎馬になってしまったりするわけです たとえば [textbox3]=[textbox1] & [textbox2] で、 textbox1がNullでも [textbox3]=[textbox2] となるのが、どうしても信じられない、罠だと思えてしまう If Isnull([textbox1]) then [textbox3]=[textbox2] else [textbox3]=[textbox1] & [textbox2] end if どうしてもこんな書き方をしてしまう、傷つきやすい人間もいたりするわけです
何つか、やっぱり語感だろ 人がこつこつ真面目につくってるときにさ、 とつぜん Null とか IsNull とか おまえはウナギかと バナナの皮かと 生真面目なだけが取り柄の俺をバカにしに来たのかと あとはMe! ね なめとんかいワリャ
アホらし。低次元な悩み話するなよ。
>>300 [textbox3]=[textbox1] & [textbox2]
↑ここのところを
[textbox3]=[textbox1] + [textbox2]
にすればご希望通り(?)、textbox3はNullになるよ。
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access Excel セル 読み込み Accessのフォーム画面で入力した内容をExcelの指定のセルに読書きしたいのですが、 個々のセルに指定して書き込み等できますでしょうか? テーブルのインポートなどはメニューからできると思いますが・・・。 例えば、フォームAのテキストA・テキストB・テキストCに入ってる データ(テーブルとは非連結です。)を、 テキストAはC3セルに、テキストBはD7〜D10が結合されたセルに、 テキストCはF1セルに書き込みという感じです。 読み込みの方も同様な感じになります。 分かる方、したこと在る方、お願いします。
>>304 CreateObject
Excel.Application
参照設定
306 :
名無しさん@そうだ選挙にいこう :2006/11/08(水) 13:32:34
回答のテンプレート 以後、お使いください 『こっちから聞き直さなきゃ分からんような質問は馬鹿丸出しだからするな。』
307 :
名無しさん@そうだ選挙にいこう :2006/11/10(金) 00:46:24
【 システム環境 . 】 Windows2000, Access2000 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 vba textbox lavel 関連づけ コントロール フォームにテキストボックスとラベルがあり、テキストボックスとラベルはひも付いています。 (編集でテキストボックスを動かすとラベルも付いてくる状態) ここでテキストボックスのイベントが発生したときなどに、自分に関連付いたラベルのコントロールを 取得することは可能でしょうか? 実際のプログラムではフォーム上に沢山テキストボックスとラベルの組み合わせがあるので、 ラベルに対する処理を1つにまとめたいと考えています。 よろしくお願いいたします。
テキストボックスとラベルは同じ名前にしてる?
ひも付きラベルのあつかいには実のところ全く興味はないんだが というか あれはウザいだけで何か使い道があるのか、ぐらいにしか考えていなかったんだが TEXT1 に対する LABEL1 TEXT2 に対する LABEL2 みたいな名前の付け方をすればいいんじゃないのか Dim i As Integer Forms!フォーム名("TEXT" & i) に対する Forms!フォーム名("LABEL" & i) な書き方でいいわけで そういう話とは違うのか 意味取り違えてたらごめんなさいだ
ん、308とかぶったか?
テキスト1に関連付けられたラベルは、 テキスト1.Controls(0) で取得できる。 関連付けられたラベルの有無は、 テキスト1.Controls.Count で分かる。 With テキスト1.Controls If .Count Then .Item(0).ForeColor = vbRed MsgBox .Item(0).Name & "の前景色を赤にしてみた。" End If End With
312 :
名無しさん@そうだ選挙にいこう :2006/11/10(金) 12:29:35
>>308-311 こんなに早くレスを付けていただきありがとうございます。
遣りたかったことは、テキスト1.Controls(0)で実現できました!
なぜラベルを関連づけて使っているかは、
フォームをデータシートで表示した場合、関連づけのラベルがあると
ヘッダの表示をラベルの内容にしてくれるからです。
(関連づけのラベルが無いとテキストボックスの名前になってしまう)
>Forms!フォーム名("TEXT" & i) に対する Forms!フォーム名("LABEL" & i)
この書き方の方が楽な気もしますね。。。
私個人のPGの書き方で、なんとなくコントロール(インスタンス)を持っていたいので、
..Controls(0)で進もうと思います。
ありがとうございました。
313 :
名無しさん@そうだ選挙にいこう :2006/11/10(金) 17:40:20
【 システム環境 . 】 Windows98+AccessVer7.0 と Windows2000+Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 Access バージョン違い Win98/Access7のデータを別のDBに移行したいと考えています。 そこで、OLEとRubyを使ってスクリプトを書いてました。 しかし、スクリプトから"select * from テーブル名"しても一部のレコードが出てこないのです。 確認してみると、明らかにレコード数が違っていました。 そこで、Win2000/Access2003 で変換して開いたのですが、 これでもやはり同じレコードが抜けています。 これは何が原因なのでしょうか? ちなみにAccess2003での変換時に以下のエラーがでていました オブジェクトの種類オブジェクト名エラーの説明 データベースファイル 'MSJETSQL.TLB' への VBA 参照がないかまたは壊れています。 データベースファイル 'dao2532.tlb' への VBA 参照がないかまたは壊れています。 データベースファイル 'STARFAX.OCX' への VBA 参照がないかまたは壊れています。 フォーム業者発注フォームまたはレポート '業者発注' の ActiveX コントロール 'STARFAX1' の読み込みエラーです。 モジュール"データベースの変換または復元をしているときにコンパイル エラーが発生しました。@これは、現在はサポートされていない、古い DAO 構文によるものと思われます。 コードの修正方法の例を参照するには [ヘルプ] をクリックしてください。@@2@611705@1" モジュールこのデータベースを変換または有効にするときにコンパイル エラーが発生しました。
日本語が伝わらない
315 :
313 :2006/11/10(金) 22:27:16
クエリの結果、本来得られるはずのレコード2000件だとすると、 1900件ほどしか帰ってこないというようなことなんですが・・
> 確認してみると、明らかにレコード数が違っていました。 何と何を比較したのかハッキリと。テーブルを直で開いたのと、select * 〜の 全件数が違うって言ってるのか?・・・絶対有り得ないだろう。 参照設定も含めいろいろ面倒だから、チェックするだけならテーブルをAc2003 にリンクだけすればいいじゃん。で、クエリでselect * 〜やってみ。 それでもNGなら、具体的にどういうレコードがNGになるのか共通項を調べると か、いくつか例をあげて質問するとか。
アクセス初心者です。本職はPGなのでRDBとかはわかります。 次のことをしたいのですがヒントをください。 【テーブル構成】 顧客情報:ID(主キー)、顧客タイプID(顧客タイプテーブルのキー)、年齢、住所 顧客タイプ:ID(主キー)、名称、プライス 入退出情報:顧客ID(顧客情報テーブルの主キー)、入室時間、退出時間、プライス 【やりたいこと】 1.顧客情報をフォームで入れる際、顧客タイプIDの入力部分で顧客タイプ名称だけ出してコンボで選択させたい。 2.入退出情報を入れる際に顧客タイプのプライスに基づき、時間に応じてプライスを計算したい。 1.をする際、ルックアップテーブルとかフォームの設定が絡んでると思うのですが、どこら辺をいじるのかよくわかっていません。 2.をする際、IDをもとに顧客タイププライスをひっぱって計算するのは式だけでいけるのかVBAをかかないといけないのか。 アクセスのオブジェクトの関係がいまいちわかっていないのでピンときていません。 ここを見ろ、ここを調べろのヒントだけでも助かりますのでよろしくお願いします。
1.については、きっとウィザードでもできるような話だと思うので省略するとして 入退出情報テーブルの"プライス"というフィールドが邪魔に見えてしょうがない SELECT 入退出テーブル.顧客ID, 入退出テーブル.入室時, 入退出テーブル.退出時, 顧客タイプテーブル.プライス FROM (顧客テーブル INNER JOIN 顧客タイプテーブル ON 顧客テーブル.顧客タイプID = 顧客タイプテーブル.顧客タイプID) INNER JOIN 入退出テーブル ON 顧客テーブル.顧客ID = 入退出テーブル.顧客ID こういうこととは違うのか 違うならごめんなさいだ
>>320 すいません。同じフィールド名にしたので紛らわしかったです。
顧客タイプテーブルのプライスは算出基準のプライスで、入退出テーブルのプライスはそれを元に時間をかけて計算したものです。
>1.については、きっとウィザードでもできるような話だと思うので省略するとして
省略しないでください・・・いまいちアクセスのオブジェクトの関係がわかってないのでピンときてないです。
計算基準の「プライス」でも、掛け算の結果の「プライス」でも同じことじゃないのかな SELECT 入退出テーブル.顧客ID, 入退出テーブル.入室時, 入退出テーブル.退出時, 顧客タイプテーブル.プライス ↓ これがこうなるだけでしょ ↓ SELECT 入退出テーブル.顧客ID, 入退出テーブル.入室時, 入退出テーブル.退出時, [基準プライス]*時間差 やっぱり勘違い? だったらごめんなさいだ
本職PGというなら、この程度は自分で調べられるはず。
>>324 相変わらずこういうやついるが、どんなことだって調べりゃできるでしょ?
そこでお互い助け合うための相談すれじゃないの?
全部事細かに教える必要はないけれど、方向性だけざっくりとでも教えてあげればいいのに。
何つーかけつの穴が本当に小さい。
326 :
名無しさん@そうだ選挙にいこう :2006/11/14(火) 11:43:36
自分で調べるのマンドクセーから聞いて見ただけだボゲア!
>>325 326 みたいなのが多いと思うよ。
本人かどうかは別にして。
はいはい、ここは相談所なので、釣りはスルーでよろ。
フォームに貼り付けられる、RecordSetの中身をそのまま表示して選択行のRecordを引っ張ってこられるコントロールってありますか?
330 :
名無しさん@そうだ選挙にいこう :2006/11/15(水) 14:29:19
何がわからないのかわかりません。 レコードセットそのまま表示できるリストみたいなもんでしょ?あるのかはしらん。
Access2007ではVBAいらねえな。マクロだけで全部済んじゃうしな。
334 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 00:08:50
こんばんは。 Access2000を使用してWindows2000/XPで動くシステムを構築中です。 選択クエリで、あるテーブルのフィールドAの条件を、 フォームBのテキストボックスCの値と一致するものにしたいのですが、 ここで抽出条件に使うフォームBの名前を、 テーブルD内の先頭の文字列型のフィールドに格納しています。 VBAの場合はフォーム名をテーブルDから取り出すことは出来たのです ( Forms(DFirst("フォーム名","設定テーブル"))!テキストボックス名 という風にして )が、選択クエリの抽出条件にこれを設定することが出来ません (!演算子の使い方が正しくないと出ます)。 VBAでの Forms(DFirst("フォーム名","設定テーブル"))!テキストボックス名 と同じようなこと(フォーム名を、テーブルから取り出して使う)を、 クエリの抽出条件で使う方法はありませんでしょうか? もしご存知であれば教えて頂ければ幸いです。
>>334 何をやってるのかサッパリわからん。テーブルDの存在意義って何???
クエリの抽出条件に、Forms![フォームB]![テキストボックスC]ってやれば
いいだけでしょ。
336 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 00:39:57
>>335 ありがとうございます。
何故こんな面倒なことをしているのかというと、
フォームBはサブフォームとして動かす予定でして、その場合
別のフォームからフォームBを操作したいとき、Forms!フォーム名の部分を
変更しなくてはならないと思いますので、
フォーム名をどこか一箇所に設定して変更が容易に出来るようにしておきたい
と思っているのです。
まわりくどいことをせずにおとなしくサブフォーム名を
決めて作ってしまうべきでしょうか?
何をやっているのかサッパリわからんのは同様として ついでにDFirst関数を使うのが妥当かどうかの議論は抜きにして !のかわりに.(ドット)じゃダメかな
338 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 00:57:25
>>337 ありがとうございます。
.では出来ませんでした。
DFirst関数に関しては、最初のレコードを取り出すという程度の動作かと
思って使っています。具体的な動作は調べたことがありません。すみません。
メインフォームの担当の者と話して、サブフォーム名を決定して 作ることに落ち着きました。 わかりづらい質問で失礼致しました。ありがとうございました。
>>339 設計的に、その方がベストでしょ。でも、名称違っててもサブフォームなら
Forms![メイン]![サブ].Form![サブのコントロール]みたいな表現でOKな訳
で、この「サブ」のところの名称が取れればいいんでしょ。
今、操作対象としてる親のコントロールをForEachとか使ってチェックして、
属性がSUBFORMってのを探せばいいだけでさ、確実にテーブルDは不要
だよな。
341 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 18:27:24
ACCESSのレコードのデータを、WEBサイトのフォームに自動入力する方法 上記のヒントありましたら御教示おねがいします。
to SharePointService
そろそろ会社に2007正規版来てるよね。
344 :
341 :2006/11/19(日) 19:50:45
>>342 申し訳ないです。WEBサイトとは自分が運営のサイトではなく、他のサイトです。
ローカルのACCESSのデータをコピペでWEBサイトのフォームに入れてるんですが、
ACCESSでIEを開きブラウジングして、HTMLフォームにデータ補完する方法です。
345 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 20:36:35
346 :
名無しさん@そうだ選挙にいこう :2006/11/19(日) 21:20:10
すみません。 WizHookのOpenFileでファイル名を初期表示 (例.book1.xls) みたいのをしたいのですが、 どのように、すればよろしいのでしょうか。
ACCESS2007試したいんですが、雑誌にはついてないんですか?
348 :
名無しさん@そうだ選挙にいこう :2006/11/20(月) 09:30:41
βで良ければ ny とか Share とかに流れてるよ
>>346 少なくともAccess 2003までのWizHookにOpenFileなんてメソッドは無いけど。
いったい何の話をしてる?
Access2003で、フォームのボタンからクエリの新規作成画面に飛びたいのですが、 これって可能でしょうか? 既存のクエリの編集はマクロから出来ると思いますが、あれの新規作成版みたいな感じです。
351 :
名無しさん@そうだ選挙にいこう :2006/11/22(水) 09:33:45
はい。
Access2003ですが、VB上からフォームで定義したフォームを表示するにはどうしたらいいんでしょう・・・(´・ω・`)
その日本語がよく分かりません。 具体的なコードでも示してもらえると分かるかもしれませんが。
>>354 Docmd.OpenForm "開きたいフォーム名"
ということ?
VBAではなく、本当のVBだったら知らん。
紛らわしくてごめんなさい。 "受注フォーム”をフォームオブジェクトとして作成した場合に、その”受注フォーム”をVBから表示させる方法を知りたいのです。
DoCmd.OpenForm("フォーム名")でひらけますた(´・ω・`)
359 :
名無しさん@そうだ選挙にいこう :2006/11/27(月) 13:14:20
この掲示板ではないかもしれませんが、Access2000のVBAで質問です。 (例) Dim x As String (記述) x = "Hello World!" とするとき、(記述)としては x = "Hello " x &= "World!" という形で記述したいのですが、これに代わる記述はあるでしょうか? (⇒実際やるとコンパイルエラーになります) 別に、x = "Hello " & "World!" と書けばいいんですが、あればいいなぁ 程度の話ですので、無視してくださって結構です。。すみません。
360 :
名無しさん@そうだ選挙にいこう :2006/11/27(月) 13:17:23
無視します
>>359 x = "Hello"
x = x & "World"
362 :
名無しさん@そうだ選挙にいこう :2006/11/27(月) 13:58:35
361さん ありがとうございました。問題なくできました。 なんと簡単なことだったかと、反省しきりです。
まあ、気持ちは分かる。 VB.NET で実現したが、VBA にもその演算子があれば少し便利だったろうとは思う。
DB板にあったAccessスレ、なくなった?
ふだんC# つかってるんだけど・・・ほんとうにVB使い図来。つうかよくわからん・・・(´・ω・`)
359の質問で何がしたいのか分からなかったが 361の答で意味が分かった
367 :
名無しさん@そうだ選挙にいこう :2006/11/28(火) 09:27:15
Access2007 イイヨ-- VBA イラネ マクロ だけで全部出来ちゃうもんね Share point service も簡単に連携できるもんね
368 :
名無しさん@そうだ選挙にいこう :2006/11/28(火) 19:32:57
マクロの中の一部をコメントアウトできたらいいなぁ そうか、中をジャンプできるでもいい 今(2000ですが)は、古い記述を最下部に追いやって、コメント部先頭に[マクロの中止] アクションで動かんようにしてる ※古いシステムのメンテで使用してます。現在はVBAを使ってるが
2007にシステム変更中でVBAで「SUB 商品・単価表示」のように 「・」がある名前のサブルーチンでエラーでまくりで泣きたい・・・ 「・」をはずすと正常に動くんだけどね 2003ではOKだったのに!!
【 システム環境 . 】 WindowsXP, Access2002 【 VBAが使えるか .】 多少 【 VBAでの回答 】 可 顧客情報テーブル[顧客ID][住所(例:北海道札幌市中央区旭ケ丘××)] 対応部署テーブル[担当部署][担当地域(例:札幌市、北見市][TEL] 上記のようなテーブルが二つあります。 パラメータクエリで顧客IDを入力して顧客住所とその住所に対応する担当部署とTEL番号を 抽出したいのですがまるでわかりません。 ※担当部署は県によっては一つの場合もあります(沖縄県は全て沖縄担当) ※エクセルファイルを読み込んでいるので住所フィールドの県や市を分ける事が出来ません。 データーベース、プログラミング初心者です。 申し訳ありませんが誰か教えてください。
テーブルそのものも困った形っぽいけど、入力されてるデータのカタチも何か面白いぐらい不安を誘う 担当地域 札幌市 北見市 網走市 帯広市 の形で並んでいるのか 札幌市と北見市 稚内と島々 旭川市(動物園も含む) 釧路市とか 沖縄県(基地は除外) みたいな形で並んでいるのか それをはっきりさせてくれるだけでも困らせ具合はだいぶ違ってくると思う
>>371 担当地域
札幌市
北見市
網走市
帯広市
の形で並んでます。
よろしくお願いします。
373 :
370 :2006/11/29(水) 00:12:36
>>371 分かり難くてすいません。
対応部署テーブルは更新される事は無いので作り変えれます。
現状は担当部署Aはa市、b市、c市、d市を受け持ち
374 :
370 :2006/11/29(水) 00:15:15
>>371 分かり難くてすいません。
対応部署テーブルは更新される事は無いので作り変えれます。
現状は担当部署Aはa市、b市、c市、d市を受け持つ
担当部署Bはe市、f市、g市、h市を受け持つ という感じです。
>>374 全然わからんわ。文章通り、素直に受け取るべきか?
担当部署 地域(1フィールドに複数)
A a市、b市、c市、d市・・・・・・これで1レコード
これはテーブルを変えるべき。
> エクセルファイルを読み込んでいるので住所フィールドの県や市を分ける事が出来ません
できます。都,道,府,県,市,区,町,村,郡などの文字を区切りにすればよい。もし、郵便番号付き
ならもっと簡単。総務省から郵便番号辞書CSVなどをDLし、利用すれば郵便番号から住所
を分けられる。
377 :
374 :2006/11/29(水) 01:23:58
>>375 郵便番号辞書の存在は知ってますが現状のデータに郵便番号はありません。
>都,道,府,県,市,区,町,村,郡などの文字を区切りにすればよい。
顧客情報テーブルの住所フィールドを都,道,府,県,市,区に区切ってみます。
>>376 >何々部署が○市と×市と△市、って考えるんじゃなくてさ
自分のスキル不足です。メリットがわかりません。
>全国13万市町村を相手に表つくったりとか、そういうのは嫌?
いぃ嫌ですw
エクセルファイル(顧客情報テーブル)が頻繁に更新されるので出来れば
そのまま使いたかったのですが難しいようなので住所を区切ってみます。
どうもお手数かけました。
>>374 一旦Excelに落として、郵便変換ウィザードを利用する。
Excel標準の機能ではないが、MSのサイトから無料でDLできる。
その際は郵便辞書の更新も忘れずに。
これで郵便番号を振ることが可能。
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 可能 【 VBAでの回答 】 可能 【したいこと 】 予定表の作成 アクセスで予定表を作成したいのですが、画面に本日の予定を表示させたいです。 特定の日付(例:2006/11/29)は簡単に作成できるのですが、毎月、毎週、特定曜日などを基準にした 曜日の設定のうまいやり方が思いつきません。 同じフィールド名でクエリを作成し、ユニオンクエリで結合する方法しか思いつきませんでした。これだとクエリの数 が多くなるとユニオンクエリも多くなってしまい、また、非常にクエリ数が多くなってしまいます。l なにかいい方法はありませんでしょうか?ここのサイトとかにあるっていう誘導でかまいませんので宜しくお願いします
>>379 テーブルの日付が例えば2006/11/29、2006/11/30になっていて、今日なら11/29のものを表示したいということでしょうか?
関数Date()を使えば今日を表示することは可能。
特定日はDateSerial関数を使えばよいかと。
何がしたいのかイマイチつかめてないので、こんな解答ですが・・・
381 :
379 :2006/11/29(水) 15:34:35
>>380 最終的にしたいこととしてはメイン画面上にリストボックスに本日の予定を載せたいです。
毎月【5日】であるとか毎週【木曜日】の様な基準がそれぞれに
違う予定表を作成するためには【毎月】や【毎週】であるような別個のテーブルを作成しないといけないのかなっと、、、
その後に該当になる(当日)になるクエリを作成してユニオンで結合してそれをリストボックスのデータソースに
する方法しか思いつきません、、、
>>379 月、水、金・・・生ゴミ 火、木・・・プラスチック
第2、4木曜・・・資源ゴミ 第3土曜・・・粗大ゴミ
上記のような予定を該当日(今日だと、水曜なので生ゴミ)にメイン画面上に表示したいってことですかね?
>>382 まさにその通りです!!!自分の考えた方法だとテーブルとクエリが大量に必要になり
なんとかすっきりと作ることができないかと・・・
宜しくお願いします><
>>379 簡単に考えかただけ
日付(1日や13日など)ごとのイベントを入力する月テ−ブル
曜日ごとのイベントを入力するテーブル、週テーブル
週テーブルには毎週、1、2、3、4の第何週かのフィールドを用意
それぞれにイベントを入力
例だとこんな感じ↓
ttp://up.mugitya.com/img/Lv.1_up65140.jpg あとは今日の日付から、該当日の月テーブルのイベントを表示、今日の日付から第何週の何曜日かを求めて、週テーブルの該当フィールドを表示するとすればよいかと。
>>384 イベントとイベントの実施日パターンは
それぞれテーブルでもった方がよくないか?
そうすればリレーションできるし。
>>385 おお!そうですね!
とりあえず作ってしまってからいろいろまとめるもので・・・ありがとうございます。
>>376 一応ツッコんでおくが、市町村は13万もないだろw
>>377 手作業ならいいがプログラム組む時は気を付けて。
都,道,府,県,市,区,町,村の文字で区切るとしても、見つけていく
順番や判定の仕方でとんでもないことになります。
極端だが、都で探して京都が見つかってしまったら。本当は、
府でマッチしなきゃいけないのに。というように、名称にその
区切り文字がある場合を考慮しないと。
表示参考価格は 1 ライセンスあたりの参考価格です。 ●Access 2007 新規購入ライセンス \26,300 ●ライセンス & ソフトウェア アシュアランス \41,500 桐V9-2006 ノーマル版 ビギナーからプロまで幅広くお使いいただける標準パッケージです。 CD-ROM,ライセンス証書,登録葉書,マニュアルAセットが入っています。 ●定価:オープン ●税込価格: 39,900円 桐V9-2006 アップグレード版 ●定価:オープン ●税込価格:15,750円 桐V9-2006 学割版 ●定価:オープン ●税込価格: 31,500円 桐V9-2006 追加ライセンス版 2本目以降の桐9-2006としてご購入いただくときのライセンスパッケージです。1本,5本セット,10本セットがあります。 商品にはライセンス証書,登録葉書が入っています。(CD-ROM,マニュアルは入っていません) ●定価:オープン ●税込価格: 27,300円 ( 1本) ●税込価格: 133,350円 ( 5本) ●税込価格: 262,500円 (10本) 桐V9-2006 アカデミック追加ライセンス版 教育機関限定の桐9-2006ライセンスパッケージです。10本セットのみの販売となっています。 商品にはライセンス証書,登録葉書が入っています。(CD-ROM,マニュアルは入っていません) ●定価:オープン ●税込価格: 241,500円
390 :
名無しさん@そうだ選挙にいこう :2006/11/30(木) 15:26:21
AccessのSQLで質問があるのですが、 一度に二つ以上のデータを追加する場合、どのようなコマンドを使うのでしょうか? 一度に13個くらい追加したいのですが、現在は INSERT INTO MEIBO VALUES (55,'TARO YAMADA'); INSERT INTO MEIBO VALUES (56,'MASAMI IWAKI'); INSERT INTO MEIBO VALUES (57,'KAZUTO TONOMA'); という風にひとつひとつクエリーを作っています。
391 :
名無しさん@そうだ選挙にいこう :2006/11/30(木) 15:32:55
テンプレ無視していました。テンプレを使用します。 【 システム環境 】 WindowsXP Professional SP2, Access2003 SP2 【 VBAが使えるか】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 Access SQL INSERT 【 質問内容 】 AccessのSQLで質問があるのですが、 一度に二つ以上のデータを追加する場合、どのようなコマンドを使うのでしょうか? 一度に13個くらい追加したいのですが、現在は INSERT INTO MEIBO VALUES (55,'TARO YAMADA'); INSERT INTO MEIBO VALUES (56,'MASAMI IWAKI'); INSERT INTO MEIBO VALUES (57,'KAZUTO TONOMA'); という風にひとつひとつクエリーを作っています。
>>391 どういう状況で使っているの?
普通は態々一件ずつinsert文を発行しないでしょ(動作的にはそうかもしれないけど)。
フォームで手入力だったら更新後処理でやればいいし、
出来合いのデータだったら、一括でinsertできるでしょ。
393 :
374 :2006/11/30(木) 17:53:19
394 :
名無しさん@そうだ選挙にいこう :2006/12/01(金) 00:52:43
【 システム環境 】 Windows98 Access2.0 【 VBAが使えるか】 少し 【 VBAでの回答 】 可 【 質問内容 】 どうしても2.0を使用しないといけない環境なので、AccessBASICでの回答をお願いします。 新規レコードにフォーカスを移動するのはなんと書けばよいのでしょうか? VBAだと DoCmd.GoToRecord , , acNewRec だと思うのですが。 よろしくお願いします。
>>394 ほぼ同じ。ヘルプ見れば。あれっ、マクロからに変換する機能は、
2.0になかったっけ???。
でも、環境的に終わってる環境だぞ、それ。
>>374 377で「都」の例が出たけど、全国が対象だったら
「市・町」の扱いに気をつけてね。
市川市、市原市、四日市市、町田市… etc
とかあるから(俺は挫折したけど)。
>>396 ふふふ、俺は郵便番号データから都道府県と市区町村フィールドと、
それぞれの文字数を出して、グループ化して、テーブルを作って。
それを元住所テーブルから作ったクエリでleft(住所,文字数の和)が一致
したら新しく作ったフィールドに出力したことがある。
俺のスキルはその程度orz...
上みたいな日本語を書くから、改造するより、作り直した方が 早い、ボロアプリになるんだがなorz....
402 :
名無しさん@そうだ選挙にいこう :2006/12/02(土) 11:04:48
【 システム環境 . 】 WindowsXP, Access2003,(EXCEL2003) 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 組み込みダイアログボックス ほかいろいろ やりたいこと ・レポートの印刷色を任意の色で設定したい 得意先からの注文(CSVデータ)を取り込むときに、ファイル名を指定する方法として 以下のコードで実行しています。 On Error Resume Next Set xlApp = GetObject(, "excel.application") If Err.Number <> 0 Then 'EXCELLが起動されていない Set xlApp = CreateObject("excel.application") End If FNAME = xlApp.Dialogs(xlDialogPatterns).Show 'ファイルを開くダイアログボックスでファイルを指定 If FNAME = False Then Exit Sub xlApp.DisplayAlerts = False xlApp.Quit ' 処理終了後、Quit メソッドでアプリケーションを終了し、 End If FNAME = xlApp.ActiveWorkbook.FullName 'ファイル名をフルパスで取得 これを、上記の目的のために、以下の変更をしたら ダイアログボックス自体が表示されないのですが、 わかる方がいたら教えていただけませんか。 改行が多すぎる出るので、レスを分割します
403 :
名無しさん@そうだ選挙にいこう :2006/12/02(土) 11:06:03
以下が、改変したコードです On Error Resume Next Set xlApp = GetObject(, "excel.application") If Err.Number <> 0 Then 'EXCELLが起動されていない Set xlApp = CreateObject("excel.application") End If 'Sheets(1).Select 'Range("a1").Select FNAME = xlApp.Dialogs(xlDialogPatterns).Show If FNAME = False Then xlApp.DisplayAlerts = False xlApp.Quit ' 処理終了後、Quit メソッドでアプリケーションを終了し、 Exit Sub End If 印刷色 = Range("a1").Interior.ColorIndex MsgBox 印刷色 xlApp.DisplayAlerts = False xlApp.Quit ' 処理終了後、Quit メソッドでアプリケーションを終了し、
回答じゃなくて悪いけど、Access 2003でしょ? なんでAccessに組み込まれてるApplication.FileDialog使わないで、 わざわざExcelに外注に出すような面倒なことしてんの? Access 2000環境にでも配布するのか?
405 :
402 :2006/12/02(土) 16:18:18
>>404 >なんでAccessに組み込まれてるApplication.FileDialog使わないで、
>わざわざExcelに外注に出すような面倒なことしてんの?
>Access 2000環境にでも配布するのか?
個人的な状況を言うと
・学校でプログラミングをなっらていない。
・ACCESSは自分と子に仕事のため独学
・HELPでは、組み込みダイアログボックスについて
EXCELのように発見できなかった。
・GOOGLEでもEXCELのダイアログボックスの
使い方は発見できたが、ACCESEはヒットしなかった
ということで402のコードになっています。
HELPなり、GOOGLEの検索キーワードでもよいので教えてもらえますか。
ヘルプはVBEの方でかけているんだろうね?
Accessのヘルプじゃ出ないと思うよ。
ダイアログ
これでで検索かければヒットすると思うが。
>>404 >Access 2000環境にでも配布するのか?
そうだったらAPIでやるんじゃね?
407 :
名無しさん@そうだ選挙にいこう :2006/12/02(土) 18:33:55
>>406 とりあえず、ありがとうございました。
ダイアログで検索したら、確かにFileDialogはでますね。
今動いているものを、いちいち直すのも面倒なので
次回機会があったら、使ってみたいと思います。
でも、その中には、今回の質問
>やりたいこと ・レポートの印刷色を任意の色で設定したい
に必要な項目は、見当たらないと思いますが?
>>407 ForeColor、BackColorでVBEのヘルプで調べてみ。
ACCESS初めて使い出して 2007が初試用なんですが、 Excelもよかったけど ACCESS使えるとマジでいろいろできますね。 すんごく使いやすい! たのすぃー!
410 :
402 :2006/12/02(土) 20:25:43
>>408 ありがとうございます。
最初の質問(組み込みダイアログボックスをいかに使うか)
とはずれますが、次の方法で自己解決とすることにしました。
実際使用する色は、6色ほどなので
1.フォームにオプショングループのトグルボタンを配置する。
2.トグルボタンの標題を■にし
3.それぞれの■の色を印刷したい色にする。
トグルボタンやコマンドボタン自体の色変更は、だめみたいですね
>>410 そう、できない。
なので、ラベルとかを代用しているらしい。
中にはコントロールを重ねてそれっぽくしている人もいるらしいが
あまりお勧めはしない。
412 :
名無しさん@そうだ選挙にいこう :2006/12/02(土) 22:23:23
スレ違いでしたら誘導して下さい。 Access2000にて、 モジュールに、下記のようなプログラムを書きました。 Public Function Func_A(B As Variant) On Error Resume Next Err.Raise(53) End Function 通常、この関数を実行しても何も起きないはずですが、 エラーが発生してしまいます。 複数のPCである1台だけ発生します。 何か環境に問題があると思うのですが、 どこをチェックすればよろしいでしょうか? 尚、異常があるPCの環境は以下のとおり。 WindowsXP Pro Microsoft Access2000 (Office SP3適用済み) VBA: Microsoft Visual Basic 6.0 Version 9972 VBA : Retail 6.4.9972 Forms3 : 2.01
>>412 > 通常、この関数を実行しても何も起きないはずですが
> エラーが発生してしまいます。
いや、コンパイルエラーが発生したらアウトだろ。
参照設定は大丈夫なのか?
415 :
412 :2006/12/03(日) 07:45:23
>>413 エラーの内容は、
On Error Resume Next
が無いときに
Err.Raise(53)
で出るエラー、
「実行時エラー'53':
ファイルが見つかりません。
終了(E) デバッグ(D) ヘルプ(H)」
です。
>>414 上記エラーなので、参照設定等の問題では無いと考えます。
>>414 関係ないと思うが、"()"はいらないよ。
一応、参照設定されてるものと、その順番をチェックしてみたら?
見落としてるちょっとしたミスだと思うが、どうしてもわからないな
らAccessをフルで再インストール(アンインストールしてから)し、
本当にAccessに関しては同じにしたって言える状態にして試す。
417 :
名無しさん@そうだ選挙にいこう :2006/12/03(日) 11:46:57
>>416 >>415 は参照設定の意味を勘違いしているんじゃまいか。
>>415 テーブルのリンクでなくて、VBAの参照設定のことだよ。
そんなのわかってたらごめんして。
でも、俺も参照設定をチェックするべきだと思うよ。
418 :
415 :2006/12/03(日) 13:44:54
415です。
>>416 >>417 参照設定でチェックしているのは下記の順序で4モジュールのみ。
しかも、これは複数のPC全て同じ設定でした。
Visual Basic For Applications
場所: C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VB
言語: 英語/標準
Microsoft Access 9.0 Object Library
場所: C:\Program Files\Microsoft Office\Office\MSACC9.OLB
言語: 標準
OLE Automation
場所: C:\WINDOWS\system32\stdole2.tlb
言語: 標準
Microsoft ActiveX Data Objects 2.1 Library
場所: C:\Program Files\Common Files\System\ado\msado21.tlb
言語: 標準
再インストールはしてみたけれども同じだったので、
416さんの言うように、一旦削除してから
再インストールしてみようと思います。
419 :
416 :2006/12/03(日) 13:49:08
ん〜、あとは失礼な指摘になるかもだけど、ここに書き込む際に 大幅省略しちゃってて、実は省略した方に問題点が埋もれてると か…今、わかる情報で第3者が考えられるのって、こんなもん。 見た限り、絶対有り得ない現象だし。
420 :
415 :2006/12/03(日) 15:14:12
>>419 そうですよね。。。もう少し考えてみます。
根本解決には至っていませんが、
とりあえず、上手く動く環境で使ってもらえることになりましたので、
仕事はまわるようになりました。
お付き合いいただきありがとうございました。
421 :
名無しさん@そうだ選挙にいこう :2006/12/03(日) 16:04:55
>>420 上手く動く環境ってのは、つまりはエラーになるPCでは動かさな
いってことか?
そういえばさ、デバッグでステップ毎に実行してみたの?
これで「どこで・何で」エラーになるのかわかれば見当がつきそう
なもんだが。マシンが遠隔地で自分が出来ないなら、ファイルに
情報を書き込むようなデバッグ用の出力文を入れてユーザーに
動かしてもらうとか。
ACCESS自体を知らない上司だと遊んでると思われて、 ACCESSは知っているが、使い方がわからない上司だと、放置される。 もうすぐ転職しますが、どうか理解してくれますよーに。。
>415 その内容からすると、Vsiual Basic Editorのオプション設定の問題じゃないか? オプションの全般の所で、「エラー処理対象外のエラーで中断」ではなく 「エラー発生時に中断」になっていないか? 普通はデバッグの時にしか使わない設定だが、エラートラップを無視した動作を しているようだから、これが一番可能性が高い。
424 :
名無しさん@そうだ選挙にいこう :2006/12/03(日) 18:12:12
425 :
415 :2006/12/03(日) 19:38:48
415です。
>>423 ありがとうございます!
おしゃるとおり、Visual Basic Editorのオプション設定でした。
こんな設定があるなんて知りませんでした。勉強になります。
これですっきり安心して運用できます。
ありがとうございました。
>>423 参ったぁ。
つうか、415!!
再インストールまでしてキレイにAccessの環境を同じに
したんじゃねぇのかぁ。
427 :
名無しさん@そうだ選挙にいこう :2006/12/03(日) 23:58:28
自分の場合、客先に出すことを考えたら、動作に影響を与えるような オプションはVBAで設定することにしてる。AutoExecマクロからプロ シージャをコールです。 415のようなミスは絶対に有り得ません。
>>428 できれば閉じるときに元に戻してほしいです。
いや久々にいいネタ来たコレ。
>>426 再インスコだと一部レジストリ設定が残るってのは聞いたことがあるけど、
これがその一部ってことなんだろうね。
>>429 これよく考えると難しいよ。
元々の環境がオプションXだったとするじゃない。
それをA.mdb開いたときにオプションYに変えられたとするわな。
さらにB.mdbを開いたときにそのオプションを元設定として退避すると、
本来は元設定はXなんだけど、Yの方を元設定だと思って退避しちまう
可能性がないか。
A.mdbを閉じる時に元のオプションXに戻しても、その後B.mdbを
閉じる時にオプションYにひっくり返されてアボーン、みたいな。
SetOptionが実行時だけ有効だったら問題ないけど、永続的変更だった
ような気がするしなー。この辺ちょっと記憶だけで書いてるんで、
杞憂だったらスマン。
431 :
428 :2006/12/04(月) 09:31:13
え〜とですね、自然とこのオプションで使うだろうってところを変更します。 矢印キーで次のコントロールではなく次の文字とか、もちろん話題になった エラー発生のやつとか。 複数起動はないので430がいう状況はないですが、まずユーザーがこっち が作ったシステムと関係なくAccessを使うことがないので、元に戻す必要 性が見つかりません。 もしあるなら、元設定を共通にReadするファイルに保存するようにし、430が 指摘する状況に陥らないよう対処するつもりですが、限りなく0%に近い確率 でやらないと思う。
432 :
415 :2006/12/04(月) 10:02:04
415です。
>>426 >>430 コンパネ>プログラムの追加と削除>MS-Office 変更>Officeの修復>Officeを再インストールします
での再インストールは実施しました。
一旦削除してからの再インストールは実施していません。
この状態では設定が残っていたということでしょうか。
>>428 VBAでオプションの設定もできるんですね。
またまた勉強になりました。
教えてもらってばかりでは申し訳ないので、
SetOptionの有効範囲が実行時のみか否か、
テストしてみようと思います。
(まずはSetOptionの使い方から勉強しなくては。)
433 :
415 :2006/12/04(月) 10:39:06
415です。
>>430 テストしてみました。
オプションの全般の所で、「エラー処理対象外のエラーで中断」から、
「エラー発生時に中断」に変更したあと、
Application.SetOption "Error Trapping", 2
を組み込んだモジュールを実行します。
実行後、再度オプションの全般の所で確認すると、
「エラー処理対象外のエラーで中断」に変わったままでした。
実行時のみの影響ではなく、実行後にも影響を与えていると思われます。
元の設定を保持していて最後に元に戻すように仕組んだとしても、
途中でコケて元に戻すステップが実行されなければ、
変更されたままなんですよね?
結構、根が深い問題だと思います。
AccessのVistaへの対応についての情報ってもう出てますかね? 探したけど見つからなかった。 Access2000についてはとりあえず動いてる感じだけど・・・。
http://アドレス/定数.html
と続くアドレスがあるのですが、テキストボックスからの値を取得して
定数にブラウザのURLを自動的に記入させ
起動する記述が上手くいきません。
過去ログではローカルにあるファイル名を指定する方法はあったのですが・・
ご教授お願いします。
Dim stAppName As String
Dim id As String
Dim hp As String
id = idtxt'入力テキストボックス名
stAppName = "C:\Program Files\Internet Explorer\iexplore.exe"
hp = "
http://www.アドレス/ " & id & ".html"
stAppName = stAppName & hp
Call Shell(stAppName, 1)
こんな感じでテキストボックス1個とボタン1個のフォームなのですが・・。
>>435 上手くいかないじゃなくて、現象やエラーメッセージを書こうよ。
とりあえず、VBAを見た限りでは、exeと引数(アドレスね)の間に
空白がない。
>>436 申し訳在りません。
スペースを入れてみましたが
「ファイルがありません」と言われ上手く挙動しません。
hp = "
http://www.アドレス/ " & id & ".html"
stAppName = stAppName & hp
を削除すればIEは起動するのですが。。
最終的に
http://アドレス/id(テキストボックスに入力した数値).html
例:http://docomo.co.jp/2000.html
みたいになれば良いのですが。。
重ね重ね申し訳在りません。
exeのパスに空白があるから、そこでわかれてしまう。Programが 実行ファイルと解釈されてる。「"」でかこむのだ。ってことで、 "\"C:\Program Files〜\iexplore.exe\"" で、もちろん次に指定するURLとの間には、先ほどの空白を忘れずに。
439 :
名無しさん@そうだ選挙にいこう :2006/12/04(月) 18:32:06
Access2007でフォームを作成すると タブに組み込まれた形でしか表示できません。 2003までのように表示するにはどうすればいいのでしょうか。
440 :
名無しさん@そうだ選挙にいこう :2006/12/04(月) 18:51:26
to オプション→カレントデータベース
441 :
名無しさん@そうだ選挙にいこう :2006/12/04(月) 19:30:04
2003のフォームで DateAddを使って求めた日付をデータベースに保存したいのですが 方法はあるのでしょうか?
>>441 あるよ
でも普通は計算値はテーブルに書き込まない
444 :
438 :2006/12/04(月) 21:30:23
>>442 あっ、指摘ありがとう。
>>437 ごめんなさい。今、自分がやってる仕事とゴッチャになってしまい
ました。\"の部分は、""に置き換えてください。
ただ、君の説明からすると、これでもNGのような気がする。URL指
定なしだと、IEだけちゃんと起動するって本当?
445 :
名無しさん@そうだ選挙にいこう :2006/12/04(月) 22:19:55
>>443 ありますか?
例えば「日付」と「更新周期」と「次回更新日付」があって
DateAdd("yyyy",[更新周期],[日付])
見たいな感じで「次回更新日」を求めてるんですけど
どういう方法で保存するんですか?
[次回更新日]のフィールドを作る 計算結果を手入力かマクロかVBかで入力する イベントで自動入力にしたら? つーか、計算値をテーブルに持つのは無意味だぞ 桐では普通に行うけど
おまいのレスのそもそもの目的は桐をバカにすることなのかと つーか桐使ったことないからよくわからんけど
448 :
名無しさん@そうだ選挙にいこう :2006/12/05(火) 08:24:13
桐だと簡単にできるよ 開発期間は Access の1/5 データ入力もバコバコ・ビュンビュンできる
449 :
名無しさん@そうだ選挙にいこう :2006/12/05(火) 08:57:31
2007のメモ型フィールドの履歴管理って SharePoint 併用しないと機能しないの?
>>444 重ね重ねレスを頂き有難う御座います。
IE起動は出来るのです。
stAppName = "C:\program Files\Internet Explorer\iexplore.exe"
Call Shell(stAppName, 1)
この2行で起動できました。
ただこの後URLを指定する事が出来ないかなと思いまして。。
更にURLが指定出来るなら、
http://abc.com/(ここがテキストボックスの値).html
に出来ないかなと思いまして。。
>>450 Dim stAppName As String
Dim hp As String
stAppName = "C:\program Files\Internet Explorer\iexplore.exe"
hp = "
http://www.google.com "
Call Shell(stAppName & hp, 1)
俺はこれでgoogleが開いたぞ?
本当にスペース入れたか?
452 :
451 :2006/12/05(火) 09:48:28
436を見逃してるな。変数がらみでうまくいかない時は、まずdebug.printを使え。
454 :
450 :2006/12/05(火) 13:24:26
皆様有難う御座いました。 お陰で出来ました。 "の後にスペースを入れたり入れなかったりのミスでした。 stAppName = "C:\program Files\Internet Explorer\iexplore.exe" hp = " http://アドレス/" & Me.テキストボックス名 & ".html" Call Shell(stAppName & hp, 1) で動きました。
455 :
439 :2006/12/05(火) 16:24:22
440さん ありがとうございました。
>>454 C:\program.exe という名の悪意のあるプログラムもあるから注意すべし。
2007で右クリックショートカットメニューはどうやって編集するの?
458 :
436 :2006/12/05(火) 20:25:01
>>454 入れたり入れなかったりって何だよぉ〜。オレが最初にコメントしてて
それで解決だったのに、ダメだったいったじゃん。アホ!!!!
>>453 ありがとう。ちょっとは救われたよ。
・・・c:\〜を「"」で囲めよな。Winのお作法だぞ。
テーブルA(Table.csv)のなかに部品Bが使われている製品を全て抽出し、 さらにそこからその製品が使われている部品を全て抽出したいのですが構文が思いつきません・・・ SELECT 部品,製品 from Table.csv where 製品 = (SELECT 製品 FROM table.csv Where 部品 = '部品B') 結果: 製品 |部品 製品A | 部品B こんな感じでやってみたのですが、部品番号が使われている製品しかリストに出無いらしく、 エラーが返ってきて1レコードしか抽出できないと言われました。 実際には以下のような感じになって欲しいのですがなかなかうまく行きません。 製品 |部品 製品A | 部品A 製品A | 部品B 製品A | 部品D 製品C | 部品B 【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 SQL Access 抽出 どなたかよろしくお願いします。
>>459 どんなテーブル(フィールド構成とか文字型なのかとか)かも含め、情報が
少ない。
「こんな感じでやってみたのですが、部品番号が使われている製品しかリ
ストに出無いらしく、 エラーが返ってきて1レコードしか抽出できないと言わ
れました。 」
この日本語の意味がわからない。
部品"番号"なんて、今までの文章にもSQLにもない。
ここはエスパーのオレ様の出番だな。素人は怪我しないように下がってな。 オプションの全般の所で、「エラー処理対象外のエラーで中断」ではなく 「エラー発生時に中断」になっていないか? という冗談はさておき、 SELECT T1.* FROM T部品 AS T1 INNER JOIN [SELECT DISTINCT 製品 FROM T部品 WHERE 部品="部品B"]. AS T2 ON T1.製品 = T2.製品; か
>>452 JaneStyle or JnaeLovely のバグだよ
他の専ブラや普通のブラウザで見れば
>>451 の " は、化けないよ
463 :
名無しさん@そうだ選挙にいこう :2006/12/06(水) 09:52:49
2007はナビゲーションウインドウ出なくしても、右クリックでテーブルやクエルやフォーム構造改編出来ちゃうんだけど、 xmlで記述して右クリックメニュー作らないと、他人に入力させるアプリ組めないのか?
超初心者的質問ですがフォーム表示の際 右と下の余白を消せないのでしょうか? 何か特別なオブジェクトやらは無いのに フォームビューではやたら大きい画面で鬱です。 デザインビューではちゃんと小さく纏まってるのですが・・・。
>>464 フォーム?レポートじゃなくて?
フォームヘッダー、フッターが表示されてるのかな。
メニューの表示のヘッダーとフッターのチェックをはずしてみれ
>>459 複数レコードが返されるselectなのに、単なる=の比較になってるから
だよ。In((select〜))で動くと思う。
461のやり方もええなぁ。クエリにクエリを使うやり方でもいいなら、
副selectの方だけでクエリにして、製品、部品を出すクエリで使って
もいいんでないか。クエリ使わずに、sqlって話なら余計なことだな。
テキストボックス1に001を入力すると テキストボックス2に別テーブルのテキストボックス1(001)と一致する レコードの別フィールドが表示されるようにしたいのです。 例 テーブル1 001 りんご テーブル2 001 500円 表示 [001]テキストボックス1(手動で入力) [りんご]テキストボックス2(ここが自動表示出来ない) [500円]テキストボックス3 ご教授お願いします。
>>467 テーブル1とテーブル2の「001」のフィールドを連結しておけばよい。
VBAを使うなら、テキストボックス1の更新後処理のところに、
Me.テキストボックス2 = DLookup("りんごのフィールド名","テーブル1","001のフィールド名 = '" & Me.テキストボックス1 & "'")
2007になっても痒い所に手が届かない感じ やっぱ桐だなぁ
470 :
名無しさん@そうだ選挙にいこう :2006/12/06(水) 23:53:53
仕事で使ってるmdbファルを開けようとするとオブジェクト'C\Documents and Settings\・・・・'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。 と出て開けません。データ吸い出し用のファイルを使用しても、問題のファイルを指定すると同じダイアログが出て吸い出せません。 この場合の解決策てあるのでしょうか?方法も含めて御教授いただけましたら幸いです。
>>470 データ吸い出し用が何を言ってるのかさっぱりわからん。
とにかく開きたいなら、データベースWindowが表示されるまでShiftキー
を押しながら開く。その先は、勝手にどうぞ。
472 :
初心者たな :2006/12/07(木) 01:19:46
>>470 ちゃんとテンプレに沿って質問しろよ。
オブジェクト'C\Documents and Settings\・・・・
ここの・・・部分は?
吸い出しってなんのことだよ。
なんかよくわからんけど、テーブルのリンク先が違うんじゃないの?
AccessでMicrosoft Date Time Picker Controlを使いたいのですが、 何が必要なのか解りません。 どなたか使えた方教えて頂けないでしょうか?
475 :
南 :2006/12/09(土) 09:36:03
OS WinXP PRO ACCESS Ver.2003 VB等 研修で習った程度 質問 はじめまして。 私は、今までメーカーに外注して 大型汎用機の開発をしていたのですが、 今回中小企業でACCESSで開発することになりました。 分からないことがたくさんなのですが、 一番分からないのは、 バッチ処理のような作業(月次処理)などをする場合 何で処理を作成するのが一番ベストかということです。 例えば、 営業所別 担当者別 売上げ推移を 指定された期間で求めることができるようにする場合です。 あとは、データ登録の担当者情報を各データに持たせて 入力日付も持たせ、更新者の担当者情報も各データに持たせて 更新日付も持たせる場合の、テーブルへの日付の編集方法も いまひとつ分かりません。。。 どなたかご教授いただける方いらっしゃいませんでしょうか
477 :
南 :2006/12/09(土) 23:39:37
設計的な見地から書いたのでだめなのでしょうか。。。 今までの通常の開発では、DBに付属する機能がほとんどないため 全てプログラミングしましたが、 ACCESSでは、付属する機能が多岐にわたると認識しています。 どこからプログラミングするかという切りわけで 一番良いと思われる部分を開発経験者の方々に教えていただきたいと 思っております。 例えば、 ここまでの機能は、マクロで十分 ここまでの機能は、クエリで十分 めんどうなら全部プログラミングで統一すべき などです。 開発工数の見地からや、 処理効率の見地からなど、見地を変えてのご意見も聞けたら助かります。
478 :
名無しさん@そうだ選挙にいこう :2006/12/10(日) 02:26:31
>>477 VBAで習った程度で、すべてVBAでできるの?
なんかさ、書き込み見る限り、『どれがベストか』って書いてあるけど、
『ベストな方法を一から教えてくれ』って感じをうけるよ。
全く自分で調べない初心者の感じをうける。
少しでもAccess知ってるなら
>>例えば、
ここまでの機能は、マクロで十分
ここまでの機能は、クエリで十分
めんどうなら全部プログラミングで統一すべき
なんて例え使わんよ。
面倒だから、マクロとかクエリを使ってるんだから。
VBAですべて書けるなら、それに越したことないんじゃない?
>>475 を見る限りじゃ、なにを聞きたいのかわからん。
漏れも初心者だけど、
基礎情報を持つテーブルをその項目ごとに作って、
売り上げテーブルに入力日付、更新日付、その担当者、金額とか持たせればいいんじゃないか。
テーブルへの日付の編集方法がわからないって意味わからんよ。
なにがわからんのか。。。
あぁ、漏れも酒呑みながらだから意味わからなくなってきたw
>>477 >>478 と同意見ですが、まぁいくつか答えてみましょうか。
前提として、マクロはダメ。実行時エラーが発生した場合の処理が出来ないから。
習った程度のVBAってのも怖いけど、VBAを使うべし。
>付属する機能が多岐にわたると認識しています。
ではなくて、どういう機能があるかを最低でも勉強してから質問するもんじゃないか。
日時指定の自動バッチ処理の考えは、Accessにはほぼありません。Winのタスク
スケジューラを絡めれば、できなくはないけど。
月次処理なんて、締めや月末にメニューから月次処理ボタンを選んで処理してく
ださいね、で終わりじゃん。月次処理が締め処理だとするならね。
>営業所別 担当者別 売上げ推移を指定された期間で求めることができるように
>する場合です。
そういう指定が出来るフォームを用意。実行ボタンなんか付けて、同フォーム・別
フォーム、もしくはレポートで結果をみせてあげればよい。
登録日付は、テーブルの登録日フィールドの既定値に=Date()とすればいい。時間
まで入れるなら、=Now()だね。これは最初のキー入力時の日時になるので、厳密
に登録時の日時なら、フォームの更新前処理でMe![登録日] = Now() (or Date())
です。更新日付も同じでしょ。
と、回答書いてて思ったけどさ、全くと言っていいぐらいAccessの勉強してないん
じゃねぇの。
>>471 あ、おいら
>>470 の言ってることがわかる。
ついこないだ、LAN組んでる仕事場で、
自分のPCで単独のAccessファイル作成して仕事してたら、
前の席のおねーちゃんが電気ストーブのスイッチ入れて、ブレーカーが落ちた。
で、再起動してファイルを開けようと思ったら、同じダイアローグでだめ。
ldpファイルがそばに転がってない?
ファイルが壊れちまったのよ。
Microsoftのサポートセンターで技術情報漁ってみ?
壊れAccessからデータインポートしようとする時に、フォルダを変えるってのも、肝の一つみたいだお。
Excel使ってやってみろっつーのもあったな。
まあ、やってみても、だめなケースがほとんどだけどな。
おいらはむかついたけど、またいちからやり直したよ。
1日前くらいから始めた仕事だったから、あきらめた。
仕事が忙しいのに、丸1日損したわ。
で、他の何ヶ月も使ってるAccessファイルには、開けた時点でとりあえずバックアップをとる
モジュールを組み込みますた。もうこれからは全てそうする。
>>480 そこまで壊れるのって、よほど運が悪かったんだね。
Accessは結構壊れるけど、割と修復で直ることが多い壊れ方が
ほとんどだから。
482 :
480 :2006/12/10(日) 15:30:55
>>481 ん、だな。
いままではなんとかテーブルデータは救えたり、
フォームを作り直すくらいで済んでたんだけど、
今回はまるでパー。
そのねーちゃん悪気はないけどデストロイヤー体質。
継続的に使うファイルはなにげにコピーしてバックアップしてあったけど、
それは一時的にデータを修正したりする作業に作ったヤツだったから、
その日の午前には終わる予定の仕事が、
翌日一杯かかって、スケジュールが押せ押せですよ。泣けてくるよ。
バックアップモジュール作って貼り付けとくべし、ですな。
データシートでの各項目の表示列幅の規定値を設定・保存・再設定する方法はありますか? 他人に操作させているのですが、触って表示列幅が変わってしまうのを当初通りに戻したい。
484 :
483 :2006/12/10(日) 19:27:46
× データシートでの各項目の表示列幅の規定値を設定・保存・再設定する方法はありますか? ○ データシートでの各項目それぞれの表示列幅の既定値を設定・保存・再設定する方法はありますか?
それはColumnWidthプロパティをヘルプで調べた上での狼藉か?
486 :
名無しさん@そうだ選挙にいこう :2006/12/11(月) 08:50:03
ColumnWidth 2003では確かそんなのがヘルプにあったな 2007では出てこない orz
487 :
南 :2006/12/11(月) 13:40:25
失礼しました。 私は、プログラマではないので、ソフト・言語問わず開発は行います。 ざくっとした開発方針は、決める必要があるので、質問してみました。 あとは、独学の中でいまひとつ分からなかった事も追加してあります。 事実上、開発効率、処理効率の見地から検証してみた方はいらっしゃらないのかな? 検証された経験のある方がいらっしゃり、その他の意見がありましたら、 また教えていただけると助かります。 とりあえずは、下手なオブジェクトはあまり利用しないで、 プログラミングしていく方針で行こうかと思います。
488 :
名無しさん@そうだ選挙にいこう :2006/12/11(月) 13:42:29
じゃあ、桐で開発すると良いよ。 困難の殆どが容易に解決するから。 でも、高いよ。
489 :
南 :2006/12/11(月) 13:51:43
何か論点が違う気がします。 プログラマは優秀ですから、安心してください。
490 :
名無しさん@そうだ選挙にいこう :2006/12/11(月) 14:21:29
こいつバカ過ぎるな
要するに、
「マクロやクエリはバグが多すぎて使い物にならないから
VBAでこつこつと書いた方がいいよ」
みたいに誰かが言ってくれたら迷わずに「VBAだけでやれ」と
指示出来て楽だなぁってことでしょ?
っていうか、
>>479 がとりあえず答えてくれてるんだから
それに対する返答くらいしろよ。
南ちゃ〜ん、ざくっとした開発方針を考えるにあたり、自分で調査はしないの? 安心できるほど優秀なPGなら、調査もさせて一緒に考えればぁ。設計の見地 じゃなく、Accessを使う際のオタクの社内規則だと思うが。マクロは極力 使うな、ビジュアルツールなんだからクエリ中心にしろとか、その程度でしょ。 あとは、仕様書があれば優秀なPGなら適切な選択で使い分けるだろうし、 Accessで無理な仕様、難しい処理は相談にくるんじゃないのかな。
スタートアップフォームを表示するようにしたんですが、Accessの画面は出さないようにすることが出来るんでしょうか? それともお客さんのところにAccessがあるときは必ず開いてしまうものなのでしょうか?
>>493 メニューやツールバーやデータベースウィンドウを隠すことはできる。
で、お客さんのところにAccessがないときはどーやっても開かないんじゃね?
495 :
南 :2006/12/11(月) 21:07:56
ここでの意見調査も調査のうちではないでしょうか? ん〜SEレベルで答えてくれる人が少ないようですね・・・ 設計は、開発工数から処理効率、保守に関することまで 考えながらするものだと思います。 とりあえず、動けばいいものを作るのは素人ですから・・・ ご意見を下さった方、ありがとうございました。
『こっちから聞き直さなきゃ分からんような質問は馬鹿丸出しだからするな。』
2007だとコマンドボタンにショートカットキー割り当てられないの?
南ちゃん、
>>479 に対しては個別に答えてあげることはしないんですか?
ただ聞くだけに徹してるのは、調査とは言いません。アンケート
調査だっつうなら別だけど。
だいたいアホみたいな質問の仕方にSEレベルでタダで回答す
る程ヒマな人はいないと思うけど。
> 設計は、開発工数から処理効率、保守に関することまで
> 考えながらするものだと思います。
してるよ。アンタみたいに他人をアテにしないで。まぁ、メンバー
と協力体制はとるけどな(大きい仕事の場合)。
499 :
478 :2006/12/11(月) 23:59:20
南さんへ
つっこみどころ満載でなんていったらいいか。。。まず、
>>487 あなたは、プログラマでなく、開発方針を決定する必要があるみたいだが、
プログラマ以前にAccessを全くっていいほど理解していないのに、
開発に関わってるのか?
なんもわからない素人がデータベース設計に関わるって、どういう会社だよ。
システムを使う会社の、その業務に関わっている人が、どういう業務でどういう事をしたいのか、
そういうことで関わるならわかるけどさ。
開発する側でプログラムもデータベースもわからんのに、開発設計って。
>>事実上、開発効率、処理効率の見地から検証してみた方はいらっしゃらないのかな?
ずいぶん見下した書き方するな。
それにな、あんな漠然とした内容で、開発効率、処理効率って馬鹿にしてんのか?
そんなに、教えてほしけりゃもっとちゃんとした質問しろってことだよ。
>>495 >>ん〜SEレベルで答えてくれる人が少ないようですね・・・
はぁ?おれが
>>478 で酔っ払いながら最低限のことは教えてやっただろ。
その内容ですら理解できてないんじゃないの?
>>479 の内容もわからないから、御礼も返事もないんだろ。
もっと仕様書並みに、詳しく書いてくれたら、俺が作ってやるよ。
どっかにうpしてやる。
それにしても南さんって、なんか釣りっぽいですねw
南ちゃんは色白で小柄でちょっと胸が大きめな自称SEのメガネっ娘 今度たたかれたら僕が味方になってあげりゅ ( ゚∀゚;)ハァハァ
501 :
名無しさん@そうだ選挙にいこう :2006/12/12(火) 08:49:40
桐V9-2007発売 age
502 :
名無しさん@そうだ選挙にいこう :2006/12/12(火) 16:21:00
Access2007でRTFワープロ作ったお! 智子の情報RTF版だお! もうMSwordいらないお! ワープロファイルも1つに集約だお!
503 :
493 :2006/12/12(火) 17:32:11
>>494 んー開かない分にはいいんですが、次のがどうなるか疑問です。
・お客の環境にACCESSが入っているときにスタートアップフォームだけ表示する方法があるのか。
・その設定をした場合に元に戻すことは出来るのか?またどうやってやるのか?
起動時の設定のあたりが絡みそうなんですが、いじったあとでそこをどうやっていじりなおすんでせう・・・(´・ω・`)
504 :
名無しさん@そうだ選挙にいこう :2006/12/12(火) 18:42:01
Access2002を使用しています。 初歩的な事なのですが、フォームにおいて 複数(テーブルとかクエリ等)のフィールドの選択方法が分かりません ウィザードで最初に出て来る、フォームに含めるフィールドの部分です 現在テキストボックスの非連結の部分を連結させていて テーブルAの項目とクエリAの項目を一つのフォームで使いたいのですが プロパティのレコードソースで選択しても 複数のテーブルorクエリが選択出来ません どのようにフィールドリストに追加させていくのでしょうか
505 :
名無しさん@そうだ選挙にいこう :2006/12/12(火) 18:48:19
>>503 > ・お客の環境にACCESSが入っているときにスタートアップフォームだけ表示する方法があるのか。
to ポップアップフォーム
> ・その設定をした場合に元に戻すことは出来るのか?またどうやってやるのか?
to AllowBypassKeyプロパティ
>>503 Accessのガワも表示したくないのか?
メニューバー・ツールバーなりをカスタマイズしてユーザーに提供できる
んだから、あまり面倒な設定にしなくてもいいんでないか???
これなら、起動時の設定でデータベースWindowを非表示にすればいい
だけだし。で、shift押しながら開けば↑これ表示されるし。
>>504 ソースに設定できるオブジェクトは1つだけです。テーブルなりクエリなり、
関連性がある複数のものを指定したいなら、それで更に直接SQLかクエリ(こっち
がお勧め)にして指定します。
select 社員ID, Max([残業時間]) As 最大残業時間 from 残業テーブル group by 社員ID
なんてクエリがあったとしてます。それと、基本的な社員テーブルとを繋げてクエリAを
作ります。↓簡単だけど、こんなの。
社員ID----社員ID
社員名 最大残業時間
このクエリAをフォームのソースに指定すれば、社員テーブルから社員IDと社員名、クエ
リAから最大残業時間を連結でコントロールを作成できます。
508 :
504 :2006/12/13(水) 01:02:45
>>507 解り易く教えて下さり有難う御座います。おかげで納得出来ました。
テーブル、クエリ、フォームと仕組みを多少理解出来たと思います
始めはテーブルとフォームで何とかなると思ってましたが
勉強するほどクエリの重要さが分かって来ますね
もう少しデータベースの基礎から覚えて行きたいと思います。
509 :
503 :2006/12/13(水) 10:13:42
>>505 ,506 レス(TдT)アリガトウございます。
参考にしてどうするか考えたいと思います。たぶんデータベースウィンドウだけ表示しない方向で行くと思います。
【 システム環境 . 】 Windows2000, Access2003 【 VBAが使えるか .】 Accessははじめたばかり 【 VBAでの回答 】 可 【 検索キーワード 】 テーブル 出来合いのdbを改造しようとしているんだが、あるテーブルの構成を 変えたら動きが変になった。(まあ当然か) そこでそのテーブルを参照したり利用している部分を探そうと思ったんだが、 VBAならエディタの検索で簡単に探せるが、クエリやコントロールのプロパティで 参照しているとなるとそうもいかない。ひとつひとつ探すとなると膨大な手間が かかる。 こういう場合、何かうまい手があるんでしょうか?
512 :
Access初心者気味 ◆3WmQZKDzxM :2006/12/14(木) 22:26:00
>>511 素人のオレから見て、
正直言って無理だと思う。
オレも知りたい。
>>511 2007だと以下のオプションがあるが、確か2003でもあったぞ
機能しないのか?
名前の自動修正オプション
・名前の修正情報をトラックする(A)
・名前の自動修正を行う(A)
・名前の自動修正の変更を記録する(A)
514 :
513 :2006/12/14(木) 22:36:23
意味が違ったようだ、良く読まなかったスマン
515 :
511 :2006/12/14(木) 23:41:08
無理にゃのかー。 とりあえず全体の構成からどこにつながっているか勘を働かせて、 時間をかけてトライしてみるよ。 レスどうもありがとう。
516 :
Access初心者気味 ◆3WmQZKDzxM :2006/12/15(金) 00:06:54
>>511 「ツール」にある「リレーションシップ」ではないのか
VBAが出来ない初心者なら諦めること。 簡単な例として、クエリならQuerydefでSQL文字列を参照・設定できるから InStr(SQL文字列, テーブル名)などでいける。全クエリに対してループ処理 すりゃいいわけでしょ。 フォームも似たようなもの。ただし、Formsオブジェクトは開いてるオブジェ クトだから間違わないように。 コンテナやドキュメントでも出来た気がするけど、今調べる余裕がないので。
【 システム環境 . 】 Windows2000, Access2003 【 VBAが使えるか .】 Accessははじめたばかり 【 VBAでの回答 】 可 【 検索キーワード 】 テーブル VBAでSQLを発行してテーブルを作成し、CSVデータを抽出するようにプログラムを組みました。 その処理を行った後にフォームのコンボボックスからテーブルの内容を参照させたいのですが、 コンボボックスをクリックすると、 「このフォームまたはレポートで指定されているレコードソース'"sq_cフォーム名,"sq_cコンボボックス'」は存在していません と出てしまいます。 データーベースウィンドのオブジェクトにあるテーブルを見るとテーブルが作成されておらず、 一度、別のオブジェクト(レポート、クエリ、マクロ等)に切り替え、再度テーブルを表示させるとテーブルが作成されています。 どうすれば、わざわざ、表示の切り替えを行わずにテーブルが作成できるのかわかりません。 どなたか教えていただけないでしょうか。よろしくお願いします。
Visual Studio 2005 Tools for the 2007 Office SystemにAccess 2007用ランタイム含まれてる?
523 :
511 :2006/12/15(金) 20:34:02
>>518 なるほど、クエリだろうがフォームだろうがVBAでいじれちゃうわけね。
クエリだとこんな感じでできたわ。
Public Sub ALL_SQL()
Dim i As Integer
For i = 0 To CurrentDb.QueryDefs.Count - 1
Debug.Print CurrentDb.QueryDefs(i).Name
Debug.Print CurrentDb.QueryDefs(i).SQL
Next
End Sub
おかげで大助かり。どうもありがとう。
フォームの方は少し難しそうだな。AllFormsで回してフォームを片っ端から
オープンし、かつ全コントロールをループしてControlSourceやRowSource
プロパティがあれば調べる、というゴリゴリきわまる方法しか思いつかんかった。
でもなんとかできた。2chさすがだね。
525 :
511 :2006/12/15(金) 21:05:24
>>524 ああ、こんなのもあるのか。
来週になるが試してみるわ。ありがとうございます。
でもこれだとクエリやフォームをひとつひとつ調べていくのがめんどそう。
何十個とあるので。
526 :
KK :2006/12/15(金) 22:10:59
フォームでフォームヘッダーが出てこないのですが、どうすれば 表示できるでしょうか?すみません。
>>526 AccessのVer.ぐらいは書いてくれ。
「表示」の所にないか?
528 :
名無しさん@そうだ選挙にいこう :2006/12/15(金) 23:01:44
うちのアクセスババアをなんとかしてくれ。 それしかできないからなんだろうが、 何でもかんでもアクセスでネット共有しちまうんだ。 バックアップも最適化も知らないからしてないんだが、 しろと言っても、安定稼動してるからとのたまう始末。 挙句の果てに、MySQLも同じでしょときた。 ババアにもアクセスにも怖くて誰も手を出さん状態だ。 何百人分もの社員マスタまであぼ〜んしてしまう訳なんだが・・・orz
>>528 とりあえず定期バックアップ取ってればいいじゃん。
一度痛い目を見れば耳を貸すようになるだろう。
530 :
名無しさん@そうだ選挙にいこう :2006/12/16(土) 02:31:39
すみませんがおしえてください。 ADOでFINDする場合インデックス番号では検索は出来ませんか?
何だかわからんがこれではダメなんですかそうなんですか rst.Open "---", --接続, adOpenKeyset, adLockOptimistic rst.MoveFirst rst.Find "[---]=" & ---
532 :
518 :2006/12/16(土) 11:22:14
>>523 おっ、できるじゃん。だったら、フォームももう少し調べよう。
開かなくても出来る方法がちゃんとある。
もちろん、使ってるコントロールをループしてというところは
ほぼ同じだが、開かないだけスマートかと。
Accessで作ったアプリケーションはそのままWeb化できるものでしょうか? 今までmdbファイルはデータベースとしか使ったことがないのですが Accessで作ったアプリケーション(フォームなど)をWebアプリケーション化 できるようなことを小耳にはさんだのですが。 私などはASP.Netなどを使わないとだめかと思っていたのですが・・・
>>533 できなくはないが、本当にそのままWEB移行は厳しいだろう。
扱うデータ量(1画面の)やインターフェースを検討し直す必要
がある。
>>534 ありがとうございます。
あるフォームだけをWeb化とかできるのでしょうか?
また、そのあたりのやり方が載っているようなサイトは
ないでしょうか?
ぐぐり方が悪いのかなかなかヒットしなくて困っております。
F1
537 :
名無しさん@そうだ選挙にいこう :2006/12/21(木) 12:39:27
>>535 to Share Point Service
>>536 ,537,538
ありがとうございます。
Access単体でできるわけではないのですね。
参考になります。ありがとうございます。
540 :
名無しさん@そうだ選挙にいこう :2006/12/21(木) 21:36:46
2000で作ったデータを、他のバージョンで開いて、 続けてデータ作業をすることが出来ますか?
開ければ作業できるよ
>>541 ありがとうございます。
開くことが出来ない可能性も多くあるのでしょうか。
あるよ
>>543 ありがとうございます。
素直にオークションで2000を購入したいと思います。
オークションで買うのが「素直」なのか?
他のバージョンってのをハッキリしろと言いたい。 2000より後ならOKだし、前のバージョンならNGってすぐわかるさぁ。
547 :
名無しさん@そうだ選挙にいこう :2006/12/21(木) 23:43:33
2007試したヒトいる?
ふと思ったが、スレタイの 【桐にしとけ】は、いつからあったっけ? 消しても良いんじゃないかい?
>>549 その13から。
このスレが埋まる頃には2007が確実に出ているだろうから、
【2007にしておけ】になるんじゃないか。
550 :
名無しさん@そうだ選挙にいこう :2006/12/23(土) 08:52:07
ACCESS総合相談所 その17 【桐にしとけ】
ACCESSに関する質問はこちらへ!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【 システム環境 . 】 Windows**, Access**
【 VBAが使えるか .】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
ACCESS総合相談所 その16 【桐にしとけ】
http://pc8.2ch.net/test/read.cgi/bsoft/1157195290/ 過去スレッド/関連リンクは
>>2 以降
551 :
名無しさん@そうだ選挙にいこう :2006/12/23(土) 11:22:38
ACCESSって2007単体で買ったらどのくらいするモノなの?
>>551 まだ未定。
Microsoftに訊いて、ここで報告よろ。
553 :
名無しさん@そうだ選挙にいこう :2006/12/24(日) 01:08:36
既出かも知れませんがサブフォームを含むフォームをデザインビューで開こうとすると50%位の確率でサブ部分が空白になってて、編集できないのですがこれはバグなのでしょうか?
メモリ枯渇(うそかも)
555 :
名無しさん@そうだ選挙にいこう :2006/12/24(日) 04:02:51
>>554 ちなみに会社(2003)、自宅(2000)を使用していますがどちらも同じくらいの確率で出ます。
何度か切り替えるとビューが表示されるのですが・・・
556 :
名無しさん@そうだ選挙にいこう :2006/12/24(日) 04:05:15
サブフォームに限らず、って感じかな 貼りつけたコントロールの表示がたまにおかしくなるなんてのは、 当たり前みたいにやりすごしてる べつに壊れてるわけでもなさそうだし
558 :
名無しさん@そうだ選挙にいこう :2006/12/26(火) 11:02:19
ご存知でしたらどなたか教えて下さい。 レポートのバーコードの印刷で 特定のマシンで不具合が発生しています。 Access2000にて、 「ABC」とい名前のレポートに 「Microsoft BarCode Control 9.0」 を貼り付け、データソースから得た英数字を バーコードに変換して印刷します。 帳票のスタイルは、レコード1件に対しレポート1枚。 バーコードのスタイルは、「Code-128」を選択。 レポートを印刷プレビューすると問題無いのですが、 直接マクロにて、 アクション:レポートを開く レポート名:ABC ビュー:印刷 フィルタ名:(なし) Where条件式:(なし) と指定してマクロを実行して印刷させると、 全て1枚目以降のバーコードが印刷されてしまいます。 複数のPCである1台だけ発生します。 何か環境に問題があると思うのですが、 どこをチェックすればよろしいでしょうか? 尚、異常があるPCの環境は以下のとおり。 WindowsXP Pro Microsoft Access2000 (Office SP3適用済み)
559 :
558 :2006/12/26(火) 11:06:07
>>558 ×:全て1枚目以降のバーコードが
○:2枚目以降も含め、全て1枚目のバーコードが
普通に抽出出来てないんじゃないの? 共有しえちる同じファイルをつついてる感じ?
561 :
558 :2006/12/26(火) 11:39:17
>>560 バーコード以外のデータは正しく出力されていますし、
レポートを印刷プレビューすると問題無いので
抽出に関しては問題ないと思います。
>>558 ・他の問題ないPCの環境
・出力するプリンタは同じか
・同じプリンタドライバを入れてみる
・問題ないPCから、ファイルごと渡してやってみる
・ダメなPCの、BarCode Controlを入れ直してみる
似たような現象で、バーコードコントロールを新規で 付け替えて事なきを得たことがある。同じとは限らな いが、やってみる価値はあるんじゃないかな。
>>558 俺もあった。
コントロールソースにFunctionを呼ぶようなコードを書いてあるんだけど、
何かをすると時々それが初期化される。
どういうタイミングで起こるかまったくわからなかったので俺も知りたい
>>558 >全て1枚目以降のバーコードが印刷されてしまいます。
回答じゃなくてすまんが、それはデータソースから得られるレコードセットが5件として
12345の順の印刷を期待してるのにマクロからは2345だけしか印刷されないってこと?
(でもそれだと2枚目以降ってことだよな・・・)
それとも22222と印刷されるとか、あるいは別のパターンなのか・・・
もうちょっと詳しく教えてくれ。
(・∀・)ニヤニヤ
ヒント:読解力
568 :
565 :2006/12/27(水) 23:30:32
暇ができたんでAccess2007(Beta2)いじってみた。 とりあえずADPを新規作成してSQLServer2005 Expressに繋げた。 ところで先行していじってる人達は新機能とか何で調べてんだ? Beta版のせいなのかヘルプがスカスカな気がするんだが。
test
571 :
名無しさん@そうだ選挙にいこう :2007/01/06(土) 23:15:38
【 システム環境 . 】 Windows2000, Access2002 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 フォーム内に複数のテキストボックスを配置しているのですが、フォーカスが次のテキストボックスに移るたびに 同じ定型処理(再計算)をするにはどうすればよりスマートな書き方が出来るでしょうか。 Private Sub テキストボックス名_Get Focus() 定型処理(再計算) End Sub をテキストボックスの数ぶんだけ書き連ねるのは力技っぽくてスマートじゃないですし、かと言ってワイルドカードを使って Private Sub *_Get Focus() 定型処理(再計算) End Sub とやっても、もちろんエラーになりますよね。。何かスマートな書き方がありましたら御教授頂ければ幸いです。
>>571 定型処理(再計算)を関数化すればいい。
アクセス(VB)に限らず、利用頻度の高いものは関数かするのが
プログラミングの基本だと思うよ。
callしてもいいと思うけど。
あと、ActiveControl使うのもいいかも。
574 :
名無しさん@そうだ選挙にいこう :2007/01/07(日) 00:11:03
>>572 素早い御回答ありがとうございます。
もちろん、定型処理部分は別モジュール化して、実際には
Private Sub テキストボックス名_Get Focus()
call 定型処理(再計算)
End Sub
としているのですが、その方法でも Private Sub テキストボックス名_Get Focus() 〜 End Sub部分がテキストボックスの数ぶんだけ
必要になりますよね。
そういった書き方はスマートじゃないと思うんで、もっとスマートな書き方があるのではないかと思った次第なのです。
つまり、フォーカスがどのテキストボックスに移っても定型処理イベントを発生させるような(ワイルドカードを用いた時のような)
数行で収まる簡略な書き方が無いものかと思った次第です。
>>としているのですが、その方法でも Private Sub テキストボックス名_Get Focus() 〜 End Sub部分がテキストボックスの数ぶんだけ >>必要になりますよね。 >>そういった書き方はスマートじゃないと思うんで、もっとスマートな書き方があるのではないかと思った次第なのです。 スマートかどうかはともかく subじゃなくfunctionにすれば、ちょっとは減る鴨 function hoge() --- end function にしとけば =hoge() で済む
クエリでフォームになにか入力されていたら、 その入力された値で抽出するけど、入力されていなかったら、 抽出をおこなわないですべてのレコードを表示する、 ってのをやりたんですけど、どうすればいいですかね? iif関数でやってるんですけどできないんですよね。
577 :
576 :2007/01/07(日) 02:04:58
すいません、Like演算子でできました。
>>571 アクセスってイベント駆動型だから、無理とは言わないが
余計手間がかかるんじゃないか。
実現できるかわからんが、
1. 表示しているフォーム(F1)を監視するフォーム(F2)を作る
2. ActiveControlでF1のコントロール名を取得
3. 2で取得したコントロールの定型処理(再計算)を実行
※2、3はF2の処理となる。
俺の頭ではこれぐらいしか考えられない。
579 :
名無しさん@そうだ選挙にいこう :2007/01/08(月) 16:02:35
【 システム環境 . 】 Windowsxp, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 困っています。質問させて下さい。 パソコン画面を2画面使用してるのですが、 アクセス使用の際、左画面で編集しつつ、 右の画面にはスライドショー?(パワーポイントのF5画面のような) を出す方法はありませんか? 編集結果がすぐに右画面に反映されると便利なのですが。
>>573 >>578 レスありがとうございます。Active Controlを使うほど大げさな処理じゃないんで・・・数は多いんですが、
単純な足し算引き算の組み合わせ程度の再計算なんです。((汗、
>>575 >スマートかどうかはともかく
>subじゃなくfunctionにすれば、ちょっとは減る鴨
---
end function
にしとけば
=hoge() で済む
おつきあいありがとうございます。それでも結局キー操作のトリガーとしてのGotFocus()部分はテキストボックス分羅列させる必要がありますよね。
結局、テキストボックスが20個程度なんでテキストボックス分のLostFocus()を
(LostFocusにしたほうがタイミング的に都合がいいような気がしたのでLostFocusにしました。)羅列してコードを書きました。
望む結果は得られたんですが、そこはかとない敗北感が、、、、
おつきあい頂いた皆様ありがとうございました。
↑何か違う気がするので、コメント。 共通の処理をsubじゃなくfunctionにすれば、というアドバイスは理解した? イベントプロシージャ書き書きしてそれぞれコールではなく、コントロールの プロパティのところに=function()ってできるんだが、それもNGだったんですか?
582 :
名無し募集中。。。 :2007/01/09(火) 13:44:01
【 システム環境 . 】 WindowsMe, Access97 【 検索キーワード 】 Access97 移行 2000 現在Access97をデータの読み書きのみで運用しておりますが(DBの作成は行いません) その古いPCの更新を迫られています。ですが手元に97のディスクがないためにAccese2000しかインストール出来ません。 MSの公式によると、2000で97のファイルを読む場合は・データの読み書き可・2000形式への変換可 とありますが、これはどれほどの互換性があるのでしょうか? ・ほぼ問題なく動作する ・データベースによっては問題が発生する この辺りではないかと思うのですが… くだらない質問で大変恐縮です、よろしくお願い致します。
MSの公式によると、2000で97のファイルを読む場合は・データの読み書き可・2000形式への変換可
585 :
名無しさん@そうだ選挙にいこう :2007/01/09(火) 17:28:30
>>582 > とありますが、これはどれほどの互換性があるのでしょうか?
MSの公式によると、2000で97のファイルを読む場合は・データの読み書き可・2000形式への変換可
586 :
582 :2007/01/09(火) 19:42:00
大変失礼しました。 文面通りということでしょうか、読解力に乏しくお恥ずかしい限りです… それではサブPCで動作確認してから移行を試みたいと思います。 くだらない質問でスレを汚してしまして申し訳ありません、ありがとうございました。 そしてとても助かりました!
システム構築してるなら多少の手直しは、必要かもよ。
588 :
名無しさん@そうだ選挙にいこう :2007/01/09(火) 20:13:30
すみませんが教えてください。 番号を入力したら氏名が表示されるクエリがあります。 番号入力テーブル優先で番号氏名のテーブルとの結合クエリです。 どちらも主キーは番号です。 クエリ上で入力したらすぐ氏名が反映されないものでしょうか。 閉じて開くことをすると反映します。 いままではすぐ反映した気がしたのですが、記憶違いでしょうか。 またフォームもこれで作成したのですが、反映しません。 再クエリとかさせないといけないのでしょうか。 よろしく願います
>>581 説明不足で申し訳ありません。
要は共通の処理が問題な訳じゃなくて、”同一のイベントをドリブンさせるトリガーが多数有ること” が問題なのです。
解りやすく言うと、どのテキストボックスをクリックしても同じ処理をしたいので、イベントのトリガー部分を簡略に書きたいと言う事なのです。
SubプロシージャかFunctionプロシージャかといった問題ではありません。
>>589 =
>>571 ?
判りづらいからレス番でいいんで名前入れてくれ。
共通処理を行いたいコントロールを全部選択してイベントプロパティのところに"=関数名(引数)"。
関数はFunctionプロシージャ。
test
592 :
581 :2007/01/10(水) 07:01:15
>>589 VBAで書き連ねるのがイヤって言うので、アドバイスがあったんだよ。
それを後出しで・・・でもよ。コントロールが違うんだから同一のイベント
ではないだろうに。その感覚で開発したいなら、MSのVC++にすれば。
> イベントのトリガー部分を簡略に
>>590 が再度詳しく説明してくれてるけど、これって簡略だろ???
function TOJIRU() docmd.close end function でさ コマンドボタン一個つくって、クリック時イベントに =TOJIRU() って書くの VBEにコード書くんじゃないのよ、ただそこに関数名を書くの たとえば既定値に=date() =now() とか書くのと一緒 このコマンドボタンは、10個コピペしても100個コピペしても全部おなじ働きをしてくれるの コードとして書かれるのは上の3行だけよ わかる? call す る た め の コ ー ド な ん て の は 要 ら な い の
【 システム環境 . 】 Windows2000, Access2000 【 VBAが使えるか .】 いいえ (素人です) 【 VBAでの回答 】 可? 【 検索キーワード 】 if else then 質問です。よろしくお願いします。 ボタン一つで、テーブルに連番を登録できるフォームがあり、今まで便利に使っておりました。 (テキストボックスに初期数字を入れ、ボタンを押すと自動的に連番が入力されるとい うものです) ところが、先日、連番の仕様が変更されてしまいました。今までは1ずつ加算されていく 単純な規則だったのですが、今後は一番後の桁を7までしか数えないとのことなのです。 具体的にはこうです。 1→2→3→4→5→6→7→10→11→12→13→14→15→16→17→20→21・・・・ そこで、if文を使用して、「もし下の桁が8になったら、2を足す」という処理を作ろうと思い つきました。 ところが普段クエリしか使わないので(フォームの作成者は私とは別な人なのです) いろいろ、検索したり、試してみたのですが、上の条件が作れません。 次のレスに、試した内容を書きます。(続きます)
595 :
594 :2007/01/11(木) 00:40:31
-------------------------------------------------------------------------------- Private Sub コマンド1_Click() SQL = "SELECT テーブル.連番 FROM テーブル ORDER BY テーブル.連番" Set Table01 = CurrentDb().OpenRecordset(SQL) SValue = "****" Do If Table01.EOF = True Then Exit Do If SValue = "*8" Then RenBan = RenBan + 2 Else RenBan = RenBan + 1 End If Table01.Edit Table01![連番] = RenBan + [テキスト10] Table01.Update Table01.MoveNext Loop Table01.Close: Set Table01 = Nothing End Sub ------------------------------------------------------------------------------- これでは普通に1ずつ加算されていく今までの形式と変わりません。エラーこそ出ないものの 最初の「if SKey〜」の文が機能していない模様なのです。 SQL文(?)というのか、Likeも使えないようで、どのようにしたら上の 「もし下の桁が8になったら、2を足す」のような処理が出来るでしょうか? それともなんか、根本的に間違ったりしちゃってるでしょうか? (なお、付け足したのは、6〜8行目と10行目の部分です) どなたか、ご教示頂ければと思います。
596 :
594 :2007/01/11(木) 00:56:58
>>595 に間違いが・・
×「if SKey〜」ではなく
○「If SValue〜」です。
>>594 コードの書き漏れがないのであれば、SValueの値が常に同じでは?
それから、
Do Until Table01.EOF
. ・
. ・
. ・
Loop
の方が、見やすいのでは。
どうして変数を二つ用意したのか、SValueとやらの役割はそもそも何なのか、謎だが 何にしても SValue = "****" として そのあといかなる操作もくわえないこの値が"*8"になるなんてことはあり得ないと思う おまけにこれをイコール(=)なんかで結んでたんじゃ、なんてことはまあ見なかったことにして 変数はいっこでいいんじゃないの SValue だけで Dim SValue As Long SValue = 0 ・・・・ If SValue Mod 10 = 7 Then SValue = SValue + 3 Else SValue = SValue + 1 End If ・・・・ Table01![連番] = SValue + [テキスト10] これでダメならごめん
かぶってるし (プ 寝よ
600 :
594 :2007/01/11(木) 02:29:28
>>597-598 ご回答ありがとうございます。
まったく他に手を入れることなく、見事にできました!
modを使うんですね。偶数奇数の判定に使っている
ほかのフォームがあったんですが、まったく思いつきませんでした。
あと、奇妙な変数でストレスを与えてしまったようで申し訳ないです。
こちらも見直してみます。おやすみなさいませ。
601 :
名無しさん@そうだ選挙にいこう :2007/01/11(木) 13:40:09
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 プリンタない レポート ACCESS 設定 勉強 現在レポート機能の勉強中ですが、完了ボタンを押下すると、 「レポートを作成する前にプリンタをセットアップする必要があります」 と表示されます。自宅にプリンタがないので、プリンタを設定することが できません。プリンタ不要でレポート画面を表示する方法はありませんか?
>>601 てきとーにプリンタドライバぶちこんどけ
仮想プリンタでも使ってみるとか…。
クセロとかでもいいんでない
>>601 WinXP付属のFAXを指定すると良いよ
606 :
名無しさん@そうだ選挙にいこう :2007/01/11(木) 21:17:53
プリンタの追加→このコンピュータに接続されているローカルプリンタ で、次へと適当にプリンタを指定しました。 その後、レポートの完了ボタン押下したら、 ちゃんとレポート画面が表示されました。 これで、レポートの勉強もできます。 ありがとうございました。
ACCESSからテキストへのエクスポートで困っています なぜか数値のフィールドに\が付いて取れません クエリをエクスポートしているのですが、クエリ上で数値のフィールドはFormatで数値化して書式も数値にしています でもなぜかテキストを見ていると\が付いています これはなんとかならないでしょうか?
>>607 そこのフィールドのデータ型が通貨型なんじゃないの?
エクスポート時にcdbl()とかでDoubleにしてやればいいかと
609 :
名無しさん@そうだ選挙にいこう :2007/01/17(水) 13:19:32
だって桐は高いでそ
611 :
名無しさん@そうだ選挙にいこう :2007/01/18(木) 00:21:00
大事なデータを扱うんだからなぁ。
非連結フォームの初期化って、みんなどうやっています? For Each 〜 Nextでコントロール総当たりするんだろうけど、 規定値持ちがいたりして案外面倒くさい。 なんか、簡単な方法とかありませんか。
再起動
桐通常版は4万円だよ。
615 :
名無しさん@そうだ選挙にいこう :2007/01/21(日) 19:21:05
▼━質問テンプレ━━━━━━━━━━━━ 【 システム環境 . 】 WindowsXP SP2, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】PDF ▼━質問━━━━━━━━━━━━━━━━━━━━ ACCESSに顧客データが0000〜9999まであります。 同じHDD内にそれぞれの顧客データに関連したPDFファイル(0000〜9999の番号をファイル名に含めています)が存在します。 ボタンひとつで、0000の顧客データをACCESSで表示させているときには0000.pdfを、 0001のデータをACCESSで表示させているときには0001.pdfを、…、起動させて画面に表示させたいです。 可能でしょうか。また可能であれば、やり方を教えていただきたいです。
▼━質問テンプレ━━━━━━━━━━━━━━━━ 【 システム環境 . 】 WindowsXP SP2, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】パラメーター 右メニュー でない ▼━質問━━━━━━━━━━━━━━━━━━━━ Access2000ではパラメーターの入力の画面で右クリックしたら貼り付けなどのメニューがでてきたのに Access2003ではでてきません。 なぜでしょうか?初歩の質問ですみません。 お願いします。
618 :
名無しさん@そうだ選挙にいこう :2007/01/23(火) 08:19:56
出ないように設定してあるんじゃねーの? 自分で作ったMDBなの?
619 :
名無しさん@そうだ選挙にいこう :2007/01/23(火) 18:32:54
Access2007で質問です。 Access2007のフォーム上にActiveXを貼り付けて、accdbファイルを作成しました。 これを、「デザインモードでのActiveX利用不可の環境」で、 該当のフォームを表示すると、 「このコントロールにはオブジェクトがありません」と出てしまいます。 (デザインモードでのActiveX利用可ですと、もちろん正常に動作します) 以前のAccessでは、正しく動作していたのですが…。 何かご存知の方いらっしゃいますか?
620 :
615 :2007/01/23(火) 22:33:31
すみません、もう少し詳しく教えてほしいです。 特定のファイルを実行させるのはできるのですが、現在表示させている顧客データに対応したPDFファイルを適宜実行させていきたいのです。 0000を表示させているときにボタンを押せば、0000.pdfが実行。 0001を表示させているときにボタンを押せば、0001.pdfが実行。 といった具合にです。 よろしくお願いします。
>>620 >特定のファイルを実行させるのはできるのですが、
どういうふうにやっているのかは知らんが、
"pdfファイルがあるフォルダーまでのパス" & "表示されているコントロール名" & ".pdf"
でやればいいんじゃないか。
ちょい修正 "pdfファイルがあるフォルダーまでのパス" & me!表示されているコントロール名 & ".pdf"
>>620 >>622 それでも通じないかもよ。
それと、新しいデータを表示してボタンを押した時に、前回のpdfは閉じたいん
じゃないの?
そういう要望がないのなら、基本616さんの回答でOKじゃん。それを詳しくして
くれたのが622さんだし。
表示されてるデータのMe!コントロール名を使うってことができないなら、前回
のを閉じるなんて高級な技は無理でねぇか。非連結オブジェクトフレームを
利用すればどうよ。ここに内容表示させてもいいし、アイコン表示でもいいし。
ボタンの代わりに、ここをダブルクリックでAcrobat Readerで表示。閉じるのは、
自己責任でってことで。
624 :
名無しさん@そうだ選挙にいこう :2007/01/24(水) 09:35:31
Access上とはいえ、PDFを表示するのにshell関数使うとかってのは、ちょっと稚拙すぎじゃない?
>>615 が起動って言葉を使ってるけど、
PDFファイルを開いて表示したいだけでAcrobatなりAcrobat Readerを起動する必要はないんだよね?
それならば、Access内で別Formとか顧客データと同一Formでも表示はできるよ。
AcrobatのActiveXコントロール使えばいいじゃない
閉じたり・切り替えたりするのも問題ないし。
WebBrowserなコントロール使うのも楽だと思うよ。
625 :
名無しさん@そうだ選挙にいこう :2007/01/24(水) 10:55:13
WebBrowserなコントロール使うのも楽だと思うよ。 WebBrowserなコントロール使うのも楽だと思うよ。 WebBrowserなコントロール使うのも楽だと思うよ。 WebBrowserなコントロール使うのも楽だと思うよ。 なんで不毛なの
幼稚なフォームよりAdobeReaderのほうが使いやすいよ。
その考え方が幼稚だよ。 基プログラムから管理しづらいよ Acrobat Readerとか外部プログラム立ち上げちゃうと。 閉じるのはユーザー任せとか、仕様として終わってるよ。
ろくに知識もない人任せな奴が作ってんだから、ユーザー任せで いいのだ。だいたいActiveXはバージョン異なると・・・も含めて、理 解して作れると思うかぁ?
割って入ってすまんが、そもそもスクリプトでもないのに PDF が 「shell "ファイル名"」だけで開くのか? 自分の環境ではファイル名だけだと実行時エラーになるが、 プログラムを指定していないから当然だと思っていた。 自分は Foxit を使っているが、Adobe Reader 入れていれば プログラムの指定は要らないのか? なんか腑に落ちないんだが。
ものがインストールされていないケースなんてのは取りあえず無視して アクロバットexeの場所は人によって違うと思うけど きっとこんな感じ Call Shell("""C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe"" ""pdfファイルパス""", 1)
そんなんだったら、IEで開いたほうがいいだろ。 パスも固定だし。
ああ、ごめん 書き方がよくなかった こうすりゃできるって話じゃないのよ やっぱプログラム指定しなきゃ動かねぇじゃんってことを言いたかったの、ほんとは
634 :
名無しさん@そうだ選挙にいこう :2007/01/25(木) 16:34:30
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 可 【 検索キーワード 】 印刷 初心者で大変申し訳ないのですが教えていただけませんでしょうか;; 現在フォームから”印刷”と名前をつけたアイコンを押してレポート(印刷プレビュー)に飛び、 印刷を行おうと思うのですが今までフォームからテーブルに入力した内容が全て出てきてしまいます。 ”テーブルの最後のフィールドを印刷”、 もしくは ”今まで印刷したことの無いレポートを抽出して印刷” と、したいです>< どなたか宜しくお願いします><;;
>>634 君は上司から書類を渡されて判断材料もないのに
『いままでコピーしていないやつはコピーしといて』
と言われて、判断できるか?
Accessだって同じだ。
テーブルにフラグをもたせるとか(印刷していないものを印刷)、
登録順序がわかるような(最後を印刷)フィールドがないと不可能だろう。
VBAでデータインポートするマクロ(つかプロシージャ)を作ったのですが、ACCESSではどのようにして実行するのですか? VBEを呼び出して実行ってのは面倒だし、といってもDBの基本画面にはマクロ登録できなそう出し、 フォームを作ってコマンドボタンに登録するのが一般的ですか? ACCESSでいうところのマクロからはVBEで作ったマクロは実行できませんよね? CALLできるマクロってあります?
マクロのアクションに「プロシージャの実行」ってのがあるわけだが?
あああ、本当だ この場合、 Sub あ() ていうSubFunctionの場合マクロをプロシージャの実行にして「= あ」って書き方でいいんですよね?
Sub Functionなんてない。Subプロシージャ、Functionプロシージャ。
そして、マクロやイベント直に =〜 でコールできるのはFunctionプロシージャ。
>>637 のヒントがあるんだから、このくらいは自分で調べろや。
640 :
名無しさん@そうだ選挙にいこう :2007/01/26(金) 10:04:26
>>635 ご返事ありがとうございます。
”テーブルにフラグを持たせる”というのを確認してみます><
641 :
名無しさん@そうだ選挙にいこう :2007/01/26(金) 10:37:33
>>640 おい、
希望のレコードだけ印刷したいなら、
印刷時に印刷設定ダイアログで印刷対象ページ指定するとか
レポートのデータソースで印刷対象レコードを選択するとか
テーブルの最後のフィールドを印刷・・・・ (・∀・)イイ!
643 :
名無しさん@そうだ選挙にいこう :2007/01/26(金) 19:27:30
【 システム環境 . 】 Windows98, Access97 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 ACCESSでVBAで、プログラム作っているものです。 今日、見たこともないエラーがでて 驚きました ACCESSを終了しようとしたら、インスタンスが他のコンピュータかユーザにより変更されました 保存しますか 破棄しますか とか出て わからなかったので 保存を選びました どうなったのでしょうか レス お願いいたします
644 :
名無しさん@そうだ選挙にいこう :2007/01/27(土) 10:04:12
インスタンスが他のコンピュータかユーザにより変更されたんだよ。
645 :
名無しさん@そうだ選挙にいこう :2007/01/27(土) 13:30:17
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 勉強中 【 VBAでの回答 】 可 【 検索キーワード 】
646 :
名無しさん@そうだ選挙にいこう :2007/01/27(土) 13:35:41
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 勉強中 【 VBAでの回答 】 可 IE中のボタンをクリックして別ウインドウに表示されるHTMLソースを 取得するにはどのようにすればいいですか?
>>647 ありがとうございます。参考にしてやってみます。
649 :
名無しさん@そうだ選挙にいこう :2007/01/28(日) 21:51:18
AccessとExcelのピボットテーブルの違いがわかる方いますか?? それぞれの長所と短所とか教えていただけたら助かります。 よろしくお願いします。
ただの感想なんで、無視してもらって構いませんが。 なぜそんなことを質問しようと思ったのか、動機を説明した方が 適切な意見を聞ける希ガス。
>>649 AccessとExcelのクエリの違いとよくにている。
桐ってまだ売ってるんですか? 昔、管理高額研究所、みたいな名前のところから出てた気がする。
管理工学研究所 貧乏人はAccessにしとけ、何倍も開発時間費やして苦労する エクゼクティブは桐で仕事して、余った時間はホテルのプールでリフレッシュ
>>653 Accessスレの桐ネタもそこまでいけば立派な文化だなw
確かに桐なら開発期間1/5だしAccessはバグ多すぎだし
そっか、今だに管理高額研究所なんだな。 じゃ松茸とセットなら入力効率五倍なのもいまだにデフォなのか?
▼━質問テンプレ━━━━━━━━━━━━ 【 システム環境 . 】 WindowsXP SP2, Access2002SP2 【 VBAが使えるか .】 見習いレベル 【 VBAでの回答 】 可 【 検索キーワード 】ACCESS フォーム 集計 SUM ▼━質問━━━━━━━━━━━━━━━━━━━━ サブフォーム上の演算結果を集計し、メインフォームに反映させたいのですが 2点不明な点がありまして、教えていただけないでしょうか? (1)演算コントロールはSUM関数では足しこめない? テーブルに「単価」フィールドと「個数」フィールドがあり [料金]は演算コントロールとして、コントロールソースに =「単価」*「個数」 で問題なく出ますが、それをサブフォーム上でフォームフッターにコントロールBOX を設けて、そこで =SUM([料金]) とすると「#エラー」と出てしまいます。 テーブルに料金フィールドを設けて、そこに格納した値を集計するのは問題ないの ですが、やはりテーブルに書き出すしかないのでしょうか? (計算で導き出せるデータはなるべくDBに持たない方がいい、と思ったので設けてい なかったんですが、集計が絡むような値はやはりDBに持つべき?) (2)SUM関数の実行タイミングについて サブフォーム上で[単価]や[個数]を変更したら、即再集計掛けたいのですが、 レコードを保存しないと集計してくれないですよね? これって、やはり即再集計&メインフォームへの反映って無理でしょうか? (演算コントロールだと、即反映するので、そのイメージでできるとうれしいのですが、 無理な注文でしょうか?) 以上よろしくお願いします
>>657 (1)だけ簡単に
=SUM([料金]) → =SUM([単価]*[個数])
659 :
名無しさん@そうだ選挙にいこう :2007/01/31(水) 01:49:15
既出かもしれませんが、発見できませんでしたorz よろしくお願いします 3台のPC(XP)で、ACCESSのデータベースを共有にしています 特に問題はなかったのですが、最近、LOCK FILEが出て、困っています フォルダを新しくして、LOCK FILEを消そうとしましたが、追いつきません よろしくお願いします
>>659 全てのmdb閉じれば、勝手に消えるだろ。
残っていたとしても、もう一回開いて閉じれば消える。
少なくとも、2002ではそうなるぞ。
オートナンバーを1に戻すにはどうしたらいいんでしょうか? 教えていただけたら幸いです。
663 :
名無しさん@そうだ選挙にいこう :2007/01/31(水) 17:23:43
先生、日本語がおかしいです。
>>663 テーブル空にして、最適化。
これでいい?
665 :
名無しさん@そうだ選挙にいこう :2007/01/31(水) 17:35:27
先生、テーブル空にしたら意味がありません。 オートナンバーを1に戻すのではなく新たに最初から作るのと同義です。
だったらオートナンバーフィールド削除して、また追加ならどう?
>>665 普通データ退避させて、インポートしなおさないか?
667 :
名無しさん@そうだ選挙にいこう :2007/01/31(水) 17:51:53
> だったらオートナンバーフィールド削除して、また追加ならどう? 先生、それでいけそうです。 > 普通データ退避させて、インポートしなおさないか? 最初からテーブル作ってと同義です、意味ありません。
テーブルの複製って出来なかったっけ?
う〜ん・・・ 言われた通りにやったが出来ない・・・ 以前に一回出来たんだけどやり方忘れた><
確かMSのサポート技術情報にあったよ
671 :
名無しさん@そうだ選挙にいこう :2007/01/31(水) 20:03:49
659です レスありがとうございます >全てのmdb閉じれば、勝手に消えるだろ。 >残っていたとしても、もう一回開いて閉じれば消える。 その通りなんですが、開くとまた出てきてしまいます そんなこんなで、ひとつのPCからしか、開けない状態です よろしくお願いします
下のような親子関係のテーブルがあります [親] 主キー:顧客番号 それ以外には住所とか名前とか [子] 主キー:顧客番号&販売日 それ以外に合計売上額とか [孫] 主キー:顧客番号&販売日&品物ID それ以外に個数や品物名など [子]のテーブルをレコードソースとして 作ったフォーム上からレポートを印刷する際に、 [孫]のデータに関しては、サブレポートにすれば印字できるのですが 親テーブルにあるデータをレポートに印字するのはどうすればよいのでしょうか? メインレポート上に非連結コントロールを作り、そこのコントロールソースに SQL文を直書きすればできるのかと思い試してみたのですが、うまくいきません。 SQL文の書式とか自信がないので、クエリーを作ってそれをSQLビュー利用して コピったのを貼り付けたり、たどたどしく直接書いたりしたのですが どうにもうまくいきません 親子関係の子供側から親側テーブルの値を参照する方法を教えてくださいm(__)m
>>671 排他で開いてるからです。オプションで共有にする(設定するのはマシン毎)か、
Accessの開く時のダイアログで排他のチェックを外してから開く。
通常、ショートカットやMDBダブルクリックで開くだろうから、前者のオプション
変更で対応だろうな。
だって桐は高いでそ
>>672 関係ないことだが、何故合計をデータにもつ。通常は、SUMなど集計で求める
データなのに、いろいろ事情があるのか?
さて、レポートだがすっげー単純に考えるとメイン-サブ-更にサブって形式で
いける。が、普通は違うべ。基本、サブレポートは使わない方がいい。
親・子・孫、全部繋げてクエリを作る。レポートのグループ化・ソート・改ページ
を設定。親・子、それぞれのグループヘッダを用意してデザインすればいい。
孫は、詳細部分に帳票フォームのような感じで1行分のデザイン。
後は、勉強してください。
678 :
素人 :2007/02/02(金) 00:14:59
>>672 子と孫は一緒にできる予感だし、
クエリー作って参照するといいかも
参照する文はウイザードで作れますよ
SQL書けなくても、マクロとクエリーでほとんどのことはできるみたいですよ
効率は多少悪いかもしれないけど
679 :
672 :2007/02/02(金) 01:21:35
>>677-678 レスありがとうございます!
クエリーの方が利便性高いということがなんとなく理解できました。
クエリーならなんとかできるので、そちらでいきます
合計欄に関しては、単純な個数×単価という計算ではなく、
値引きコードや値引率、消費税等が絡むので、フォームやクエリーで
その都度式を指定するのもどうかと思ったんでデータで持つようにしたんです。
けど、よく考えてみたら、その算出式を自作関数で生成し、フォームやクエリー
ではそれを呼び出すようにすればなんのことはなかったんですね・・・orz
(自分にとっては、まだフォームのイベントで呼び出す方法までしかたどりつい
ていなかったので、関数の実装の仕方を理解できていませんでした。
今日始めて標準モジュールに関数作り、クエリーで動いたのみて感動してたり・・・)
ありがとうございました!
680 :
名無しさん@そうだ選挙にいこう :2007/02/03(土) 02:15:47
ご存じの方がいたらお助け下さい。 業務で使っているAccessのファイルが開かなくなってしまいました。 開こうとすると"開く、実行"する権限がありません。管理者から権限をもらってください。 とでます。インポートもエクスポートも出来ず。最適化もできません。 所有者が<不明>となっており、どうやらその不明な所有者に権限を らわないといけない状態のようです。 なんとかデータを復旧する方法はありませんでしょうか? 新規に作ったファイルにインポートするというのも試してみましたが だめでした・・・・ OSはWinXP、Access2003を使用しております。
681 :
名無しさん@そうだ選挙にいこう :2007/02/03(土) 11:58:03
>>680 > 業務で使っているAccessのファイル
コピーして自宅のPCで開いてみて
>>681 自宅にPC & Accessの環境があると断定の元でレスするのは
おかしくねぇか?
個人で揃えるには、もったいない金額だぞ。
683 :
名無しさん@そうだ選挙にいこう :2007/02/03(土) 14:01:57
じゃ、お金持ちの友人の自宅PCで開いてみて たぶん、MDW が壊れてるんでしょ
684 :
名無しさん@そうだ選挙にいこう :2007/02/04(日) 04:10:10
【 システム環境 . 】 Windows2000, Access2003 【 VBAが使えるか .】 はい 【 VBAでの回答 】 否 【 検索キーワード 】 引数がありません AODを使ってエクセル上のデータをAccessのテーブルにインポートしたところ 「引数がありません」(エラーコード失念)となりVbaがストップ。 アクセスを立ち上げ、データベースの最適化を行ったところ 「引数がありません」とメッセージボックスが上がり 最適化が実行された。 その後セキュリティ警告も上がらず、DBオブジェクトに接触できなくなった。 PCを再起動してアクセスを立ち上げて 表示>データベースオブジェクト> としてもテーブルからモジュールまで反転表示のままで何もできない。 DB復旧にはどのような手段がありますか?
>>684 定番だが、新しいmdb作ってテーブル等をインポート。
ところで、問題が発生したmdb以外にもその現象は
波及しているの?
もしそうならば、修復インストールしてみたら?
>>685 テーブルのインポートやリンクは他のDBにはできるのですが、
問題のDBにはできませんでした。
(オブジェクトのインポートのダイアログボックスが出ない)
他のmdbには問題は発生しておりません。
あと先ほど確認できたのですが、プロパティを見ると1.91GBのサイズ
になっていました。これが原因なのでしょうか?
【 システム環境 . 】 WindowsXP PROFESSIONAL, Access2000 【 VBAが使えるか .】いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 ACCESS 別なデータベースのテーブルを参照する 田舎の会社に務めていて、つい最近までパソコンが無かった事務所 にようやく社長がノーパソ買って、WORDで見積書を入力しています。 そういう会社の田舎会社員です。 仕事の自分の範囲のデータを管理するためにACCESSのテーブル入力だけは 前からやってて、さて、システム化しようとして困ったことがあります。 ACCESSのデータベースの概念がわかってなかったので、顧客リストや 機械の型式リスト等、それぞれのテーブルを別々のdbに作っていることに 気がつきました。それらのテーブルを一つのデータベースにまとめるか、 データベースの枠を越えてリレーションをかける?(自分で言ってて 訳がわからない)か、一旦全部のテーブルをEXCELに掃き出し、一つの データベースに吸い込みなおすか? はたと困っております。 正規化をはじめちゃったデータベースもあるんで、厄介な事になっております。 なにかお知恵はございますでしょうか?
>>686 新規MDBを開いてインポート。この時、1.91GBのMDBを選択するんだよ。
何か日本語が変かと思ったので、念のため指摘してみた。
>>687 複数のMDBのテーブル同士でにリレーションは無理だよ。
1MDBに一緒にしたいテーブルを全部インポートする。元々、1MDB内で
リレーションが組んであったとしても無駄なので、外してください。
作業上、Excelに出力してから主キーも含め見直し・整理が必要なら、そ
れでもいいでしょう。作業がし易い方をアナタが選ぶだけです。
どちにしろ整理する作業の面倒臭さは変わらないでしょ。
>>688 ありがとうございます。
ということは、クエリやフォームも棄てなきゃいけないって感じですね。
データの再入力しなくていいぶん気が楽だけど、住所録の中に他のを
吸い込むかなぁ・・・。「どっちにしても面倒くさいことはおなじです」って、
言い得て妙というか神の言葉というか、現実を直視する事にします。
げげ〜、改めてRDBMSって設計が大事だという事がわかった。
相談です 伝票のテーブルとそれを集計するクエリがあるのですが、この集計クエリに伝票日付から会計期間を入れたいと思います たとえば1/1-1/31が会計期間1とかです この場合、単純にクエリの会計期間フィールドにIF式で会計期間をいれるようにしたほうがいいでしょうか?
すいません、追加でこの場合の式ってVBAでいうところのCASEみたいなのはないでしょうか? IF式だとめんどくさくて
692 :
684 :2007/02/04(日) 13:29:39
>>688 お付き合いありがとうございます。
新規にMDBを作成して、
ファイル>外部データの取り込み>インポート
で問題のMDBを選択しても
「オブジェクトのインポート」
が表示されません。
693 :
名無しさん@そうだ選挙にいこう :2007/02/04(日) 16:09:43
access初心者なんですが、こちらで質問しても構いませんか? 初心者スレがあれば、そちらで質問させていただきたいのですが、見つからなくて。
694 :
素人 :2007/02/04(日) 17:02:27
>>689 フォームやクエリーもインポートできますよ
>>690 月だけを取り出す日付関数とかは、
役に立たないですか
>>692 Accessの制限に抵触しているのだと思うよ(2GB制限)。
修復って出来たかな?
>>694 細かいこというと、〆日が25日で休日の時は前日に移動になります
なのでIF式で日付を取り出すのが面倒なんですね
だから
select case 日付
= #2007/01/25# < #2007/02/22 : 1
= #2007/02/23# < #2007/03/25 : 2
みたくなります
この条件のテーブルを作るほうがいいのかな?
697 :
684 :2007/02/04(日) 17:26:05
>>695 以前にも2GBの壁にぶつかったんですが、その時はテーブル開けることはできたんですけど
今回はエクセル側からテーブル追加をしてエラー終了しているのでDBが壊れているのか不安です。
修復はまだです。一応新たなDB(テーブルを分割)を作成する準備はしているのですが、
量が多いので気が滅入ります。
あと気づいたのですが、問題のMDBを立ち上げても、「レコードロック情報」
が立ち上がりません。他のMDBのときは立ち上がるのですが。
これも要因なのでしょうか?
>>697 2GBにぶつかったことあるなら、もうAccess使わないでやろうって
思わなかった?少人数なら、MSDE(今、違う予備名のがあったっけ?)
とか。
それと、そこまで大きくなる予想がつくなら何でフォームやクエリも詰め
込むの。テーブルと分けて、リンクして使うでしょうに。
まずさ、最後のお試しって感じで別MDBからOpenDattabese使ってアク
セスしてみ。どこかでエラーが出るかもしれないから、それで見当がつ
くでしょ。エラーが出ずにリードできたとしたら、それを保存して退避すれ
ばいいじゃん。
おまけ。最適化・修復やるときは、壊れてて使いもんにならないのかも
しれないけど、オリジナルのバックアップは忘れずに。
>>696 Functionプロシージャで関数を作ってしまえば?
>>699 ですよね
ただ今後それだと重くなりそうな気がするんです
みなさんはこういう場合どのような設計にしますか?
伝票テーブルが書き込まれるのと同時に期間も入力されるようにすればいいのかな
701 :
684 :2007/02/04(日) 18:35:58
>>698 いままで、テーブルの分割で対応できておりテーブルリンクを使っていましたので
特に不便を感じていませんでした。
今回も3つのDBから必要なレコードを抽出し、エクセルで加工した結果をいったんシートに蓄積し、
シートに入りきらない量になったら4つ目のDBのテーブルにインポートする、ということをエクセルVBAで行っていました。
データの大きさに関しては全く気にしておりませんでした。
「OpenDatabese」でググって見たのですが分かり易い説明のあるサイトが見つかりませんでした。
これは他のMDBから問題のDBを開けてみるということなのでしょうか?
>>700 似たようなのを作っていたのでためしに作ってみた。Shimebi(日付)でyyyy年mm月で区分されてるけど。
Function Shimebi(var年月日) As Variant
Dim datdate As Date
Dim datdate2 As Date
Dim simedate As Date
Dim sime As Integer
datdate = DateSerial(Year(var年月日), Month(var年月日), 1)
datdate2 = DateSerial(Year(var年月日), Month(var年月日) + 1, 1)
simedate = DateSerial(Year(var年月日), Month(var年月日), 25)
Select Case Weekday(simedate) '---休日設定
Case 1 '25日が日曜の場合
sime = 23
Case 2 '25日が土曜の場合
sime = 24
Case Else 'その他の曜日
sime = 25
End Select
If IsDate(var年月日) Then
Select Case Day(var年月日)
Case 1 To sime
Shimebi = Format(datdate, "yyyy年mm月")
Case Else
Shimebi = Format(datdate2, "yyyy年mm月")
End Select
Else
Shimebi = "?"
End If
End Function
>>702 なるほど、〆日の曜日を取得しておけばいいんですね
考え付かなかったです
助かりました
>>703 >>702 だと祝日には対応してないので今年の11月は23日が〆日になってしまうから、祝日の設定をしてないといけないっす
705 :
698 :2007/02/04(日) 19:51:26
>>701 なぜOpenDatabase利用でのReadごときでサイトを検索する?
ロジックあったら丸々コピペで楽しようとしてないか?
この程度、ヘルプを見なさい。
>>703 >>704 春分・秋分等可変のものがあるけど、むこう30年くらいは月日が
わかってるから祝祭日はデータとしてもてるよ。
祝祭日設定画面みたいな入力は不要だね、ってのが言いたかった。
707 :
698 :2007/02/05(月) 23:28:07
>>706 お〜そうかぁ。時代の移り変わりは激しいのぉ。
4GBでも限界をむかえるのが見えてるなら、ハナからSQL Serverだな。
社内使用なら、MSDNサブスクリプションで購入した方がお得かもよ。
>707 おいおい、MSDNのライセンスは開発とテストを主目的での使用以外 許可されておらんぞ。 実際に運用するなら、製品版を買わないとね。
ご存じの方、教えていただけないでしょうか。 起動時にフォームを開くAccess2000形式のmdbがあります。 このmdbが置いてあるフォルダとこのファイルにUsersグループへの フルアクセスの権限を与えておいてUsersに属するUserに使用させて いますが、AdministratorsなUserがこのファイルを開くとこのmdbの Usersグループへのアクセス権が削除されてしまい、UsersなUserが このファイルを利用できなくなってしまいます。 この現象はAccess2000がインストールされている環境のみで起き、 同じmdbファイルでもAccess2003がインストールされた環境では 起きません。 これを回避する方法はないものでしょうか? よろしくお願いします。
>>708 テスト目的の社内運用でいいじゃん。それを糧にして、顧客に提案できるよう
にもなるし。MSもそういう使い方を認めてくれるよ、きっと。少なくとも、前社で
はそういう方向でサポートもキッチリ受けてたよ。
MSDNのSQLサーバ幾ら?
712 :
名無しさん@そうだ選挙にいこう :2007/02/09(金) 13:02:12
【 システム環境 . 】 WindowsXP, Access97 【 VBAが使えるか .】はい 【 VBAでの回答 】可 【検索キーワード 】 背景 文字 レポート Access すみませんん、、教えて下さい。レポートの背景の任意の位置にページ毎に 任意の文字列を印字することはできますか? セクション内の任意の位置に印字するならprintでできると思うのですが、、 ページ内の任意の位置に印字するとなると、、、難しいです。 ダメなら画像を自動生成して、レポートのpictureプロパティに設定しよう と思うのですが、、、 何か良い方法はないでしょうか?
>>712 やりたいことがさっぱりわからないのだが、理解できるエスパーはいる?
レポートの背景って言葉が出た瞬間、はがき作成ソフトの背景画像を
思い出してしまった。
714 :
名無しさん@そうだ選挙にいこう :2007/02/10(土) 08:25:46
>>713 ごめんなさい言葉が足りなかったです、、
やりたいことはレポートの中央になるべく大きく文字列を表示したいのです。
ウォーターマークみたいな感じで。「社外秘」とか「コピー禁止」とか書類の
背景に薄く出てる書類ありますよね。。あのイメージです。ただ違うのは文字列を
ページ毎に任意に指定したいのです。
printメソッドを使うとセクションの高さより大きな文字は使えないのでちょっと
イメージと違います。文字列が固定なら背景画像をpictureプロパティに指定して
やればいいんですけど今回は固定じゃないんで頭を悩ませてるというわけです。
イベントを間違ってるだけじゃないのか。 セクション内じゃなくページ内なら、ページフォーマット時イベントだよ?
716 :
名無しさん@そうだ選挙にいこう :2007/02/11(日) 05:08:53
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 不可 【 検索キーワード 】 Access Excel グラフ 読み込み 20万行ほどのX座標Y座標他のtxtデータがありこれを使って散布図を作りたいのですが エクセルでtxtデータを読み込むと65536行までしか表示されず仕方ないのでいったんアクセスで読んで整形してから エクセルに流し込もうと考えたのですが整形がうまくいきません。何かいい方法はないですか? たとえばこんな感じに20万行並んでて A B C D E F G 001 5.9 22.0 0.006 0.009 0.011 57 001 51.4 487.7 0.004 0.004 0.005 45 ↓ D、E、Fのセルの値を1000倍して50,000行区切りに列で分ける ┌──┬──┬──┬──┬─┬───┬──┬──┬──┬── │No. │A'1 │D'1 │E'1 │F'1│No. │A'2 │ D'2 │E'2 │F'2 │1 │001 │ 6 │ 9 │11│50001 │003 │20 │ 1 │ 0 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 │50000│003 │ 3 │ 22 │11│100000│ 004│15 │ 40│ 41
>>714 プリンタの機能を使えば・・・・・もしかして、それも出来ない安いページ
プリンタで実現したいの?
>>716 どのようにうまくいかなかったのか書け!!
719 :
名無しさん@そうだ選挙にいこう :2007/02/11(日) 09:30:13
>>714 フォームから印刷するのなら、。「社外秘」とか「コピー禁止」のトグルボタンなり、を配置して
ページフォーマット時のイベントで処理すればできるんじゃないかな。
>>716 その表を見る限り、エクセルに50,00行ずつ吐き出して、エクセルに出切り貼りするしかないんような気がする。
>>717 >714じゃないけど、安くないページプリンタには、ページごとに違う文字列を
ウォーターマークにできる機能があるのか?
>>721 オレは、ページ毎に変えたい趣旨の方が良くわからない。
>>714 桐にすれば簡単にできるよ
でも、桐は高いよ
724 :
714 :2007/02/12(月) 17:20:16
皆さんありがとうございます。 プリンタの場合ウォーターマークを入れることはできますが、、、 残念ながら該当のPCはページ毎には文字を入れ替えることができないようです。 あと、ページフォーマットイベント時にPrintメソッドを使用すると、 背面ではなく、前面に文字が印字されるようで、駄目です、、、 特定のページだけにウォーターマーク入れたいって人はかなりいると思うの ですが、そういう人たちはどうやってるんでしょう、、、
>>724 はずしてたらゴメンだけど・・・
あらかじめ明細部に何パターンか絶対位置指定で文字(画像)を作っておいて、
ページヘッダーのタイミングに判断を入れて可視をON/OFFするって駄目なの?
726 :
名無しさん@そうだ選挙にいこう :2007/02/12(月) 19:57:32
お聞きしたいんですがアクセスのひとつのテーブルに 1 あああ 1 あいう 2 さささ 2 さすす 3 へへへ というテーブルがあってエクセルに1、2、3のリストがありそれを選択して ボタンを押すとエクセル上にその項目だけが表示されるという方法を教えていただき たいのですが どなたかお願いします!!!
どう考えても、excelだけで完結させた方がいい
728 :
726です :2007/02/12(月) 23:31:34
これからデータをふやしていく予定なんですがエクセルだけのほうがいいんですかね?
じゃ、Access だけで完結させたほうが良い
年月日のデータで 自 至 1 2000/4/1 2001/3/31 2 1999/4/1 2000/3/31 3 1999/4/1 2001/3/31 4 2000/10/1 2000/12/31 5 2001/4/1 2002/3/31 6 2001/1/1 2002/3/31 というようなデータがあって、例えば 2001年度のデータ及び2001年度を含むデータを抽出したい場合 どのようにしたらよいのでしょうか? 上の例だと1、3、4、6を抽出したいのですが、うまい式が思いつかなくて
(自 Between 年度始め And 年度終わり) OR (至 Between 年度始め And 年度終わり)
733 :
730 :2007/02/13(火) 07:22:30
734 :
714 :2007/02/13(火) 13:39:21
>>725 ありがとうございました、、、実はパターンが2000種類ほどあったので、
それだけの画像を用意するのはいかがな物かと思っていたのですが。
結局用意しました。疲れた、、、
と言う訳で無事目的の表示ができました。皆さんありがとうございました。
735 :
超初心者(その1) :2007/02/16(金) 00:27:33
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 不可 【 検索キーワード 】 正規化 Access2003で顧客管理や仕入れ管理を行いたいと考えています。 当初はテーブルを顧客テーブルと仕入先テーブルに分けようと考えました。 それぞれのテーブルは主キー、会社名、住所、TEL、FAXです。 住所は5個のフィールドを使おうと思い、↓のように作成してみました(住所入力支援機能は使います。) 顧客テーブル 主キー、顧客名 、郵便番号、都道府県、市区郡、町村域、建物名、TEL、FAX 仕入先テーブル 主キー、仕入先名、郵便番号、都道府県、市区郡、町村域、建物名、TEL、FAX ところが、データベースの入門書を読んだら『正規化』の話しが出ていたんです。 たとえば上記テーブルの場合、郵便番号を指定したら、都道府県、市区郡、町村域までは 自動的に決定されるので、それは別テーブルに分けた方がいいというものです(よね?)。↓なかんじでしょうか。 顧客テーブル 主キー、顧客名 、郵便番号ID、建物名、TEL、FAX 仕入先テーブル 主キー、仕入先名、郵便番号ID、建物名、TEL、FAX 住所テーブル 郵便番号ID(主キー)、郵便番号、都道府県、市区郡、町村域 当初の予定のように、顧客テーブルや仕入先テーブルに住所を含めた方がシンプルですが、 正規化を求めると住所は別テーブルにしないと駄目なようなんです。住所テーブルを作った場合、 総務省のサイトから郵便番号のCSVファイルDLしてテーブルとしてインポートできるかなと試しました。 でも、当社の顧客の中には事業者別の郵便番号を使っている企業もあって、インポートするだけでは 駄目でした。住所入力支援機能も事業者別の個別の郵便番号までは対応していません。
736 :
超初心者(その2) :2007/02/16(金) 00:36:24
>>735 のつづき
ノースウインドや、ACCESSの入門書付属のサンプルデータ等も見てみました。
それらは住所を別のテーブルにすることなく、すべて顧客テーブルや仕入先テーブル
の中に含めていました。でも、これは正規化に反することなんですよね?
知り合いに質問してみると(その人はちょっとACCESSできます。)、きちんと正規化すること
なく、住所はすべて顧客テーブルや仕入先テーブルに含めているとのことでした。
また、へたにテーブル同士のリレーションシップを複雑にすると、メンテが大変になるかもしれないし、
それが恐かったとも言ってました。
ここで質問なのですが、正規化とは一体どこまですればいいのでしょうか?
今回の場合のように、住所程度なら正規化して別テーブルをつくる必要はないのでしょうか。
それとも、別テーブルを作って、総務省の郵便番号csvファイルなどを活用した方がいいのでしょうか?
>>735 そこまで深く考えなくていいと思うよ。
それで飯食っていくと言うのならともかく。
むしろ問題となるのは、部署によって電話番号や階、
場合によっては住所そのものが違う事もあるから
その対処じゃないかな。
まぁ、ケースバイケースでいいと思う。
初心者でそこまで考えるなんて先が楽しみだ 俺はプロではないけれど何だかんだで抱えたAccsess雑用係の仕事が積もり積もって 本業が圧迫されつつある とっととVBAおぼえて俺の助手になれ 時給850円でどうだ
>>735 こだわる人・こだわらない人、それぞれだから何とも・・・。
オレ個人は、正規化にこだわらない。冗長もなるべく避けるけど、リレーションが
複雑・テーブル数過多になるほど明らかに処理速度に影響する。
住所に限定するなら、分けない。しかも、あなたのようにも細かく分けない。仕様
にもよるけど、都道府県、市区郡、町村域、建物名と分ける意味は?
>>739 印刷の見栄えを考えると、できるだけ分けてあった方が楽だけどね。
結合するのは簡単だが、分割するのは非常に面倒くさい。
俺は番地も別フィールドにしている。
住所支援使用前提で主に郵便番号入力だから、
そのほうが面倒が少ない。
テーブルに書き込むとき、結合してしまってもいいんだけどね。
741 :
名無しさん@そうだ選挙にいこう :2007/02/16(金) 07:12:19
ExcelからVBAで起動したAccessのデータベースウィンドウを前面に表示するにはAPI使わないと無理?
>>741 acObj.DoCmd.SelectObject acTable, "テーブル1", True
743 :
名無しさん@そうだ選挙にいこう :2007/02/16(金) 21:26:31
>>735 正規化はデータを一元化するための理論。正規化を行うと、
拡張性の高いDBとなる。が、当然性能は落ちたり、作りこみの手間が
増えたりする。これらのバランスを考えていくのが設計かと。
一般的には最初に、なるべく正規化し、本来こうあるべきというモデル
をつくる。その後、なるべくデータ構造を壊さずに性能向上させていく。
まぁケースバイケース。
リレーションシップ(参照整合性制約)に関しては確かに最近は使わない
傾向かもしんない。変更がうかつにできなくなるから時代に合わないのかね、、、
漏れもAccessにテーブル持つ場合はほとんど使わん。正規化もほとんどしない。
住所も顧客テーブルに直に持たせてる。
でも、最近市町村の合併が多くて住所変更を大量にしたんだが、、、その時は
少し後悔した、、
>>743 えっ。。。リレーションは使うよ。変更がうかつにできなくなるからなんて理由なら、
ISAMファイルでも使ってればいいじゃんぐらい、すっげぇ理由じゃねぇかなぁ。
私もリレーションは普通に使います
本業ではなく735さんとおんなじような立場の者ですが
>>735 私も似たようなDB組んでいる最中です。
正規化をどこまで進めていくべきか、悩みましたが
ここでレスされている方とほとんどおんなじ結論です。
住所関係データを別DBにはしないほうがいいと思います。
自分の場合
住所関係データ自体は、住所入力支援を使わず別システムの
コード表を移行して対処しました。(コードのメンテという手間は承知の上です)
また、構成は(郵便番号を必要とする場合は)
「区町名コード」&「区町名コード連番」、「丁目」「番地」「号」「棟室等」
に分けて、必要に応じて連結しています。
(連番は同一区町名で別郵便番号というやつに対応するためです)
740さんが言われているように
結合するのは楽ですが分割するのは非常につらいので
746 :
745 :2007/02/17(土) 11:26:42
特殊郵便番号に(自分が)対応したところの補足 自分のDB構成は ○顧客DB 顧客番号、顧客名、区町名コード&連番、丁目、番地、号、棟室等 ○区町名コード 区町名コード、連番、郵便番号、区名、町名、備考 例えば新宿区西新宿の場合 コード 連番 〒 区名 町名 備考 通常 04001 00 1630001 新宿 西新宿 都庁 04001 01 1638001 新宿 西新宿 都庁専用 んで区町名コードはクエリー使って区町名コードと連番を連結しておいて 顧客DB入力画面でコンボボックスで表示させ、 顧客DBの区町名コード&連番フィールドには連結した値を放り込む、という感じ まぁコードメンテの手間が出てくるけど、自分的には問題ないと判断した
747 :
名無しさん@そうだ選挙にいこう :2007/02/20(火) 13:32:53
' フォームプロパティを用いて、開いている全てのフォームを取得 Sub AllOpenForms(ByVal app As Application) Dim AcObj As AccessObject Dim allfrm As AllForms Dim ctl As Control Set allfrm = app.CurrentProject.AllForms For Each AcObj In allfrm Debug.Print AcObj.name ' 各フォームの Controls コレクションを列挙します。 For Each ctl In allfrm(AcObj.name).Controls Debug.Print ">>> " & ctl.name Next ctl Next AcObj End Sub こういう風にプロジェクトに含まれる全てのフォームと それらの上にある全てのコントロールをデバッグ出力させたいのですがうまくいきません どうすればいいでしょうか?
748 :
名無しさん@そうだ選挙にいこう :2007/02/20(火) 14:14:36
ACCESS2007の情報が2ちゃんねるで無さ過ぎる。何か話題を出して下さい。
>>747 開いているフォームなら AllForms じゃなくて Forms 使えばでいいんでない?
>>749 Sub AllOpenForms(ByVal app As Application)
Dim AcObj As AccessObject
Dim frm As Form
Dim ctl As Control
For Each AcObj In app.CurrentProject.AllForms
Debug.Print AcObj.name
'フォームを開く
app.DoCmd.OpenForm AcObj.name
' 各フォームの Controls コレクションを列挙します。
Set frm = app.Forms(AcObj.name)
For Each ctl In frm.Controls
Debug.Print ">>> " & ctl.name
Next ctl
'フォームを閉じる
app.DoCmd.Close acForm, AcObj.name
Next AcObj
End Sub
これで上手くいきました。どうもです。
751 :
名無しさん@そうだ選挙にいこう :2007/02/21(水) 22:51:14
Access2007ですが、Dropdown Listってのはあるのでしょうか? Dropdown Comboはあるのですが、テキストボックスの用に入力できる必要はなくて、 ドロップダウンしたリストから選択だけ出来ればいいのですが。
752 :
名無しさん@そうだ選挙にいこう :2007/02/21(水) 23:13:55
受注伝票を印刷するためのレポートを作っていますが 複数商品を購入した際に購入商品を全て表示させる方法が分かりません。 Access2002で受注管理のテンプレートを自分なりにカスタマイズして使っています。 受注に関するテーブルは3つあります。 関連するフィールドは下記の通りになっています。 【受注】 受注ID … key 【商品】 商品ID … key 商品名 単価 【受注明細】 受注明細ID … key 受注ID … 受注テーブルの受注IDと一対多 商品ID … 商品テーブルの商品IDと一対多 数量 単価 レポートには、複数商品を購入した場合に 全ての商品名と購入数、価格を表示させたいと思います。 VBAはわかりません。アクセス2002+WinXPです。 検索きキーワードは「access レポート 複数のフィールド」とかそんな感じです…。
>>752 受注IDしかない受注テーブルって無駄です(もし、省略してるなら一言
他のフィールドは省略って入れて欲しい)。しかも、これと1対多でリレー
ションしてる受注明細って・・・。
要は、商品テーブルと受注明細テーブルを商品IDで繋げたクエリを
ソースとするレポートにすること。詳細部分に1行分の出力したい商品
の情報コントロール(連結コントロール)を作成すること。
754 :
735 :2007/02/22(木) 02:25:47
>>753 説明不足ですみません。
受注テーブルは他には顧客テーブルと関連させる顧客IDやらなにやらありますが
商品には関係ないので省略させていただきました。
ちなみに、このテーブルを作ったのはマイクロソフトです。
新規作成でテンプレートから作りましたので。
755 :
753 :2007/02/22(木) 08:28:13
>>754 > このテーブルを作ったのはマイクロソフトです。
そんなの知らんよ。サンプルなんて見る気も起きねぇから、インストール時に
除外してるもの。
で、クエリ使えばできるでしょって話でうまくいったのか?
>>751 リスト外入力時のイベントで処理したらダメなん?
>>752 テンプレートからMDB作ってまで解釈してくれる人は少ないかと。
それに、単純にすべての…ってわけでもないんだろうし
レコードソースとかどのように表示したいのかも分らんからレスに困る。
757 :
名無しさん@そうだ選挙にいこう :2007/02/22(木) 14:06:20
ControlオブジェクトにはControlTypeなるプロパティがあるんですが、 これはオブジェクトブラウザには表示されていません。 このような隠しプロパティを全て表示するにはどうすればいいでしょうか?
758 :
名無しさん@そうだ選挙にいこう :2007/02/22(木) 14:23:07
DoCmd.RunCommand acCmdObjBrwShowHiddenMembers という一文を実行すると、 実行時エラー '2046': コマンドまたはアクション 'オブジェクトブラウザ隠しメンバの表示'は無効です。 と表示されて終わります。 VBAのオブジェクトブラウザでは機能的制限があり表示できないのでしょうか?
760 :
名無しさん@そうだ選挙にいこう :2007/02/22(木) 20:01:10
>>759 リストボックスで通常は選択された一行のみ表示で、
選択時はドロップダウンされたリストからって出来るの?
>>757 とりあえずマウス右クリックしてみる。そこからは見れば分かる。
ただし、「ControlオブジェクトにはControlTypeなるプロパティ」など
ないと思う。
何が目的なのか吐いたほうが楽になれるかも。
listbox と textbox の combination が combobox だよ
>>761 右クリックで出来たんですね。なるほど。
フォームをユーザーが作成できるようにする。
ごく簡単な独自のウィザードを作りたい。
その準備として、DBにフォームとコントロールのプロパティ値を保存して、
データを扱いやすく、かつビジュアル的に分かりやすい形にして保存したい。
で、そのときに
For Each aobj In CurrentProject.AllForms
DoCmd.OpenForm aobj.Name
Set frm = Forms(aobj.Name)
For Each ctl In frm.Controls
Debug.Print ">> " & aobj.Name & "." & ctl.Name & " type:" & ctl.ControlType
For i = 0 To ctl.Properties.count - 1
Debug.Print i & " " & ctl.Properties(i).Name & " " & ctl.Properties(i).Value
Next i
Next ctl
DoCmd.Close acForm, aobj.Name
Next aobj
こんなようなコードを実行してたら、オブジェクトブラウザで表示されない項目が出てくるので
これらをブラウザで表示するにはどうすればいいんだろうっていう疑問ですね。
765 :
761 :2007/02/22(木) 23:21:20
>>764 なんで存在しないプロパティを探しているのか不思議でしたが、了解です。
カスタムウィザードですか。。。
大変そうですが、がんばってください。
767 :
名無しさん@そうだ選挙にいこう :2007/02/25(日) 13:21:14
エクセルでいくかアクセスでいくか、どっち?
そういう人は桐が良いよ。
769 :
名無しさん@そうだ選挙にいこう :2007/02/26(月) 09:31:38
parameters [table_name] text; drop table table_name; こういうパラメータクエリを作るのは無理でしょうか? select,update,insert,delete,createのキーワードのどれかが入ってないといけないみたいで。
>>769 何がやりたい?
見たまんま、テーブルの削除がやりたいの?だったら、素直にVBAに
すればいい。テーブル名を入力するフォームを作って、VBAでそれを
拾ってSQLにするなり、削除が目的ならSQLにしなくてもVBAでテーブ
ル削除できるし。
桐だったらテーブルなんて簡単に消せるよ
772 :
名無しさん@そうだ選挙にいこう :2007/03/01(木) 10:04:51
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 少しならいけます 【 VBAでの回答 】 少しならいけます 会社で顧客名簿を作っています。2台のパソコン(両方ともXP)をLANで接続しておりまして作った mdbファイルを共有フォルダで共有しているのですが、クライアント側のパソコンからクリックすると 「*****を開くことができませんでした。ほかのユーザが排他的に開いているか、データを 読み取る権限がありません」と表示され開くことができません。直接アクセスを起動させて 当mdbファイルを開くと「データベースファイル******が見つかりません。」と表示され、やはり 開くことができません。ただし、サーバ側の共有フォルダから一旦、mdbファイルを出して再び 共有フォルダに入れなおすとクライアント側から開くことができます(読み込みだけで書き換え はできません。)が、一時的なものでサーバ側からmdbファイルを開くとまたクライアント側 から開くことが出来なくなってしまいます。また、別のmdbソフトを作って共有フォルダに 入れたのですがそれは、何の問題もなくクライアント側からアクセスできます。いろいろ調べた結果 共有フォルダのアクセス権限やmdbファイルのアクセス権等の問題があるのではないかということが わかったのですが、どれを試してもうまくいきません。どうすれば常にクライアント側のパソコンから 常に顧客名簿mdbファイルを開くことができるようになるでしょうか?初歩的な質問で申しわけないのですが 宜しくお願いします。
Microsoft 社の Lead Program Manager である Clint Covington 氏が自身のブログで明かしたところによると、 Access 2007 の Developer Extensions とランタイムが無償提供されるそうです! これは、今までアプリケーションの開発・配布に Office Developers Edition や Visual Studio Tools for Office の別途購入を余儀なくされていた Access 開発者にとって、まぎれもない朗報でしょう。 提供時期や詳細はまだ未定ですが、すでに MSDN において正式な告知がされています。
774 :
初心者 :2007/03/01(木) 20:48:23
【 システム環境 . 】 WindowsXP, Access2002 最近、できるaccess2003,2002でアクセスを勉強し始めたのですが、グラフの挿入を しようとしたら、「Microsoft accessではこのウィザードを開始できません。この機能は現在インストール されてません。インストールしますか?」と表示されたので、OKを選んでもインストールしようとしたのですが、 このパソコンにWINDOWS XPをインストールした時のCD-Rを紛失してしまったので、インストールできないみたいです。 このような場合は、新たにACCESSを購入するしかないのでしょうか?
>>774 > このパソコンにWINDOWS XPをインストールした時のCD-Rを紛失してしまったので、
CD-R?
>>774 > このような場合は、新たにACCESSを購入するしかないのでしょうか?
一度買えば、新たに買わなくても良いよ。
777 :
774 :2007/03/01(木) 23:35:43
>>775 CD-Rかどうか良くわかりませんが、Windows XPのことです。
>>776 インストールしようとしたら、「"Microsoft Office XP Professional with FrontPage"ディスクを挿入し、
OKをクリックせよ。」と出るのですが、このディスクを今持っていません。
なくしたから、ただでよこせ、と。
with FrontPageっていうと、Dev持ちなのか? ほかにあったっけ。
>>772 解決にはならないと思うけど
複数のPCでデータベースを扱うなら、データ用のファイルと操作用のファイルを作っておくといいよ
同時にアクセスすることも可能だし、ファイルが破損しておしゃかになる危険性も減るしね
782 :
名無しさん@そうだ選挙にいこう :2007/03/03(土) 05:10:11
Access2000 VBAを使わず、クエリフィールド内の関数で 100の位を四捨五入するにはどうしたら良いのでしょうか。 ROUND([hoge],-2) とするとエラーになってしまいます。
Roundは仮に使えたとしても「丸め」であって「四捨五入」とは違う。 無理やりやるならこう。 =Fix(([hoge]+IIf([hoge]>0,500,-500))/1000)*1000
>>782 ちょっと説明が違う気がする。VBA(の関数)は絶対使う必要があって、
自前で用意した関数は使いたくないって事ではないのだろうか。
785 :
名無しさん@そうだ選挙にいこう :2007/03/03(土) 14:01:45
女性は働きたければ働いて、働きたくなきゃ働かない、辛くなったらやめていい。 そもそも女性に辛い仕事を押し付けないこと。かといって雑用やらせるのもダメ。 それで給与も昇進も平等にね。ただし残業、転勤、深夜当直させたら女性差別だよ。 間接差別禁止規定って知ってるでしょ。なんでも平等にね。髪形と服装は女性の自由だけど。 それからアファーマティブアクションと管理職30%目標もね。産休育休もね。当然給与40%保障で。 主婦と言っても、家事を強制される言われはないし、出産するかどうかは女が決めること。 でも産まれたら育児を女性に押し付けないでね。二人の子供なんだから当然でしょ。 ただし離婚したら親権は母親のものだよ。育児は女性のほうが向いてるんだし。 それから働く夫を妻が支えるなんて時代遅れの女性差別。 これからは働く妻を夫が支えなきゃ。 あ、もちろん収入は夫の方が多くて当然だけどね。妻には扶養請求権だってあるんだから。 それと夫は妻に優しくね。妻が望まないセックスは家庭内レイプだよ。 夫が妻のセックスの求めに応じないと離婚事由になるけどね。 離婚したら慰謝料とか財産分与とかまあ当然だけど。 女性はか弱いから母子手当ても生活保護も税金控除も当然だよね。足りないぐらい。 それと女性に女らしさを押し付けないでよ。 そんなの窮屈で面倒だし、いまさら男尊女卑ですかって感じ。 でも男はやっぱ男らしくないとね。 いつになったらレディーファースト覚えるの?ワリカンなんてありえないし。 少子化だって男のせいでしょ。男がだらしないから女性が結婚できないんだよ。 え?レディースデー?あれはいいの。 別に私たちが頼んだ訳じゃないし。店が勝手にやってるんでしょ。
786 :
名無しさん@そうだ選挙にいこう :2007/03/03(土) 16:26:36
>>785 かしこましりました
そちらの条件すべて呑みます
787 :
名無しさん@そうだ選挙にいこう :2007/03/03(土) 16:58:30
789 :
名無しさん@そうだ選挙にいこう :2007/03/04(日) 10:48:59
790 :
名無しさん@そうだ選挙にいこう :2007/03/04(日) 10:52:36
【 システム環境 . 】 WindowsXP, Access2007 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 ACCESS サブレポート サブレポートに対象となるレコードがない場合 サブレポートが親レポートの印刷プレビューで 表示されません。 親レポートのレイアウトビューや サブレポートの印刷プレビューでは対象となる、 レコードがなくても、表示され合計値なども0として ひょうじされるのですが・・・。 何とか親レポートの印刷時にも表示されるように する方法はないでしょうか?
791 :
名無しさん@そうだ選挙にいこう :2007/03/05(月) 00:08:52
レポートにて、グループ化したデータを段組にして出力したいのです。 こう出力したいのですが、 ------------------- 表1 表2 表3 [ ] [ ] [ ] 表4 表5 [ ] [ ] ------------------- こうなっちゃいます。 1枚目 ------------------- 表1 表2 表3 [ ] [ ] [ ] ------------------- 2枚目 ------------------- 表4 表5 [ ] [ ] ------------------- 用紙2枚にまたがらないで、表3の後折り返してくるにはどうしたらいいすでか?
質問の意味を理解したかどうか自信を持てないまま無責任に答えてみる レポートの「ページ設定」→「レイアウト」あたりを見てみると 何かいいことがあるかもしれない
793 :
名無しさん@そうだ選挙にいこう :2007/03/05(月) 12:55:17
>>780 アドバイスどうもありがとうございます。
試行錯誤を繰り返してるのですが、何をしてもうまくいきません。
794 :
名無しさん@そうだ選挙にいこう :2007/03/05(月) 20:45:01
・DAOのみ ・RDOとDAOの併用 ・RDOとRDOX Access単体の場合、みんなデータベースアクセスはどれでやってるの? バージョンは2000以降ってことで
ADO
Form
大企業はoracle、中小企業は桐 Accessは中途半端
>中小企業は桐 ほんまか
たとえばあれだよ スターリンをスータリンとか書くと急にお茶目になっちゃうみたいな
801 :
名無しさん@そうだ選挙にいこう :2007/03/07(水) 04:47:09
802 :
名無しさん@そうだ選挙にいこう :2007/03/07(水) 11:35:40
2003 xp 条件付き書式が印刷時に反映されない俺はどうしたらいい? すごいひと教えてくれ
803 :
名無しさん@そうだ選挙にいこう :2007/03/07(水) 15:32:05
SQL Server 2005 Compact Edition ってAccessで使える?
804 :
シゴト中に2ch …org :2007/03/07(水) 16:59:30
【 システム環境 . 】 WindowsXP SP2, Access2000 【 VBAが使えるか .】 少々 【 VBAでの回答 】 可 すいません。どのようにデータを合成すればよいでしょうか? フォームで2つのテキストボックスに入力された数字を合成して コマンドボタンで他のコントロールに入力したいです。 しかし思ったように合成ができません。 Dimやら、rightやらを使ったとしてもどうすればよいかが分かりません。 ◆具体的に◆ テキストボックスが2つあります。 Box1: 070307 (日付を6桁の数値として入力) Box2: 01〜99 (作業部署の番号など) ↓ 合成 ↓ ◆理想◆<目標コントロール> 07030701,07030702,07030721,・・・,・・・,などなど ↓ ↓ ↓ ◆失敗している現実◆ 00703071,00703072,07030721 <現在の方法> vbaで dim x as variant dim y as variant x = Me!Box1 y = Me!Box2 Me!目標コントロール = x & y ・・・という記述です。 Box2が一桁だとうまくいきません。(2桁だとok) 1桁の数値を二桁として取り込むにはどうすればよいでしょうか?
805 :
804 :2007/03/07(水) 17:36:20
試行錯誤してみましたが駄目でした。 (実際のデータ合成は4つの合成です。w & x & y & z) ↓ ◆vbaコード◆ Private Sub コマンド16_Click() Dim w As String Dim x As String Dim y As String Dim z As String w = Me!日付 x = Me!品目 y = Me!作業工程No z = Me!作業部署 If (x < 9999) And (y < 10) And (z < 10) Then x = "0" & x y = "0" & y z = "0" & z End If Me!作業工程Logコード = w & x & y & z End Sub ◆方向性◆ if式使えば出来るかな、という気はしてきました。 けどif式でやると8通りの記述をしないといけないみたいで・・・。 (年月日以外で)2×2×2 どなたかお願いします。
>>804 全部書かないけど、変数に入れる値を
w = Format(Me!日付, "00")
みたいにして組み合わせたらどうだろ?
>>804 こんなんでいいんでない?
Private Sub コマンド16_Click()
Dim w As String
Dim x As String
Dim y As String
Dim z As String
w = Format(Me!日付, "00)
x = Format(Me!品目, "00)
y = Format(Me!作業工程No, "00")
z = Foramt(Me!作業部署, "00")
Me!作業工程Logコード = w & x & y & z
End Sub
↑の訂正 w = Format(Me!日付, "00) → w = Format(Me!日付, "00") x = Format(Me!品目, "00) → x = Format(Me!品目, "00")
まずは、むやみやたらにvariantを使うな。少しは型を意識しろ。 それが根本の間違いだ。それを補って目的の答えが出せるの は、既にみなさんがレスしてる。
810 :
804 :2007/03/08(木) 09:01:30
>806>807>809 ありがとうございます。出来ました! variantも勉強してみます。 ・・・レス遅くなってしまいすいませんでした。 家でインターネットが出来ない状態なので会社からカキコミしてます(汗 中途半端な知識が少しだけついてしまっているので いつもAccessで苦労しています。 自分で出せる有益な情報はあまり無いんですが、 「谷尻かおり」という人の本はなかなか役に立つと思います。 入門本の類ほど基礎過ぎず、かといって読みづらい高度な書物ほど難しくなく。 受験本でいったら「実況中継シリーズ」に近いカンジの本です。 自分のように基礎的な知識が無く、 それでもAccessやExcelのvbaを使っている人にお勧めします。
>>810 VBAの辞典持っていると結構いいよ
自分は秀和システムのVBA辞典にお世話になってる
逆引き使用例があるから、やりたいことのヒントになってる
812 :
804 :2007/03/08(木) 10:13:43
「AccessVba辞典」という本ですね。 調べて、さっそくセブンアンドワイで購入しようとしました。 しかし、在庫無しでした。残念。 週末に本屋でも寄ってみます。
【 システム環境 . 】 Windows**, Access** 【 VBAが使えるか .】 はい・いいえ 【 VBAでの回答 】 可・否 【 検索キーワード 】 Googleやヘルプでの検索キーワード 先月、正規化について質問させていただいた者です。ご返事が遅れてすみませんでした。 これからは、会社にとってデータベースは必須との意気込みだったのですが、社内で 「データベース?何それ(笑)。」みたいな言い方をされて、やけっぱちになっとりました。 「仕事ができない奴は、そういうことやるんだよね?」みたいな言い方。 そうやって自分の存在意義をみつけようとするんだよね、みたいな・・・・ やっとこさ気持ち的に復活してきました。 これからもデータベース作成をやっていきます。 レスをくれた方々に感謝します。
【 システム環境 . 】 WindowsXP, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 正規化の件ですが、自分はきっちり分けていこうと思います。 正規化を第三正規化までやっていこうと思います。 なぜなら、正規化をきちんとすると拡張性が高まるとのご指摘があったからです。 じつは、顧客管理は第一弾にすぎず、ゆくゆくは経営データベースまで拡張していきたいからです。 で、さっそく質問させていただきます。 たとえば(たとえ話で恐縮ですが)、会社・工場・工場内の建物というデータベースを作りたいとします 会社テーブル→工場テーブル→建物テーブル それぞれの会社はいくつかの工場を持ち、各工場にはいくつかの建物があるという具合です。 この場合、住所は各工場に割り振られるので簡単です。 ところが、顧客の中には工場内の各建物に住所が割り当てられています。 この場合に、困難が生じます。 なぜなら、正規化をきちんとやった結果、会社・工場・建物ごとにテーブルが作成されているからです。 ある会社は工場テーブルに住所フィールドを必要としますが、 別の会社では建物テーブルに住所フィールドが必要になっていきます。 工場テーブル・建物テーブルの両方に住所入力が必要になるかもしれないのです。 自分なりに考えましたが、空欄が大量に生じる覚悟で、 工場テーブルと建物テーブルにそれぞれ郵便番号フィールド(及び、郵便番号以下の住所フィールド) を作るしかないのでは?と考えました。 この作り方は間違えているでしょうか? それともそういう作り方もありなのでしょうか? ご教示のほど、よろしくお願いします。
たとえば運送業か何かで 配送先が一軒家かマンションの一室か、みたいな話かな 配送先CODE 会社CODE ADDRESS1 ADDRESS2 00000001 9987 xx町123 xx工場 西xx号棟 00000002 4534 xx町345 xx工場 (空) 00000003 8675 xx町567 xx工場 xx部研究室 これで会社CODEとADDRESS1にあんまり同じものが並ぶようなら、工場テーブル作る意味もあるかもしれないとは思う どっちが気持ち悪いか気持ち悪くないかみたいな選び方でいいんじゃない とか 無責任なことを書いた俺は、実のところ正規化の意味が良く分かっていない素人だったりする
住所テーブルつくっちゃえば?
>>814 >空欄が大量に生じる覚悟で、工場テーブルと建物テーブルに
>それぞれ郵便番号フィールド(及び、郵便番号以下の住所フィールド) を作るしかないのでは?
こういうときこそ住所マスタテーブルを作るもんじゃないの?
正規化の勉強してないからよく解らんが。
文面推敲している間に被った…
> 正規化の件ですが、自分はきっちり分けていこうと思います。 > 正規化を第三正規化までやっていこうと思います。 > なぜなら、正規化をきちんとすると拡張性が高まるとのご指摘があったからです。 正規化、正規化、第三正規化 って 掛け声だけ出してダメだよ。 DB設計での正規化とは何かをちゃんと学ばないと。 言葉だけではなくて、理解してよ。 そしたらこんな質問は出てこねぇよ。
建物に住所割り当てるだけでよくないですか? 建物すべてが同じ住所(工場での一括住所)のトコロの「住所」を活用する時には 建物として「ALL」とかテキトーな建物を作っておいてソコの住所使うとか。 あるいは、「建物名」をクエリとかで入れなければその工場の住所はグループ化されて一つしか出ないと思うけど・・・
821 :
名無しさん@そうだ選挙にいこう :2007/03/09(金) 10:08:53
>>735 現代ではメモリーもHDDも安価になり気兼ねなく使えます。
正規化は死語です。
運用のしやすさを優先してください。
桐でシステムを構築するのが近道です。
>>821 やっぱ正規化ってそれが第一だったのか。
テーブル分けすぎると、レポート1枚出すのも苦労するよね。
(*‘∀‘)<・・・
【 システム環境 . 】 WindowsXP SP2, Access2000 【 VBAが使えるか .】 少々 【 VBAでの回答 】 可 フォームにてイベントプロシージャで困っています。 データが移動した時、 Dlook等を使ってコード番号から名前を読み出すテキストボックスを作っています。 ******************* Private Sub Form_Current() 〜〜云々カンヌン〜〜 End Sub ******************* ただしこれだと、新規レコードを入力した時にエラーが出てしまいます。 対策としては → 新規レコード入力用のフォームを作る。 → 既存レコードの修正は別のものを用意する。 といった対策が考えられます。 しかし、現在フォーム自体の作りこみ中でフォームを分派させてしまうと コードの書き直しなどが増えてしまいます。 (フォーム内にサブフォームを3つ持つ構造で、 複雑になっているのでますます避けたいです。) 新規レコードへの移動時に、イベントを中止する、 あるいは別のイベントを起こして逃げるようなことできないでしょうか? 皆様方、ご教示のほど、よろしくお願いします。
825 :
824 :2007/03/09(金) 18:18:53
真ん中あたり(12行目を)訂正します。 ******************* Private Sub Form_Current() 〜〜云々カンヌン〜〜 End Sub ******************* ただしこれだと、新規レコードに移動した時にエラーが出てしまいます。 (新規レコードは空白データなのでデータ参照が出来ないので) ・・・「カキコミの確認」見て直そうと思ったら、 すんなりと確認・同意無しで書き込めてしまいました。 すいません。。
肝心の 〜〜云々カンヌン〜〜 の中身が判らないけど想像するに・・・ Me!テキストボックス=DLookup("名前","テーブル","コード番号=" & Me!コード番号) こんな感じで書いてて、新規レコード移動時はMe!コード番号の値がNullだから 結果として落ちるってこと? だったら問題の本質は「新規レコードだから」じゃなくて 「コード番号がNullだから」になるんで・・・ If Not IsNull(Me!コード番号) Then Me!テキストボックス=DLookup("名前","テーブル","コード番号=" & Me!コード番号) EndIf こうした方がよさげ。 個人的にCurrentイベントに頼るようになったら開発的には詰み寸前のような気もするけど、 まあ頑張って。
828 :
名無しさん@そうだ選挙にいこう :2007/03/10(土) 00:35:08
【 システム環境 . 】 WindowsXP Profecional Access2000 【 VBAが使えるか .】 使用可 【 VBAでの回答 】 不可 何が原因かわからないのですが、いきなりAccessが使用できなくなりました。 症状としては、リンクが貼れなくなったり、今まで見れていた、テーブルが「不明」というエラーとともにみれなくなりました。 オフィスを入れ直してもだめでした。 OSから再インストールしないとアクセスは使用できないでしょうか?
>>Currentイベントに頼るようになったら開発的には詰み寸前のような 同意wwwwwww
830 :
824 :2007/03/10(土) 09:44:42
>826>827 すいません。ホントありがとうございました。 827サンの手法でやらせてもらいました。 最初は826サンの手法が面白そうだったのでトライしてみたんですけど、駄目でした。 自分の力不足です。 現状はデータ入力の方法が完成したトコロです。 後はおおまかに作っておいたデータの出力と検索を、細かく見栄え良く作り込んでいく段階です。 Access構築やってると仕事時間外でも全体的なテーブル構造、リレーションシップ、 フォームでの効率よいサブフォームの挿入とか考えてしまいますね。 時間外労働、、長い! けど、なんだかんだで楽しいです。 …ビルゲイツは偉い人だーとか思ってます。
>>828 バージョン変えてしまったとかは無い?
データの方の問題じゃないかな、と思うけど。
832 :
名無しさん@そうだ選挙にいこう :2007/03/10(土) 14:13:34
Accessってさぁ、残高計算できないから出納帳とか会計処理は出来ないよね。 VBAでレコードセットの更新掛けても、整列項目値が同じレコードの順番が指定できないから、正確な残高が保証されないよね。 桐だと論理レコード番号があるから、正確な残高計算できるからGoodだね。
833 :
名無しさん@そうだ選挙にいこう :2007/03/10(土) 14:25:30
487 名前:ど素人 :2007/03/06(火) 21:37:03 ID:???
すいません。
関西の中堅ぐらいの印刷会社のものなんですが、
手書きの伝票が限界になり、
システムの導入を考えています。
要求仕様を考えているところなんですが、
ご相談に乗ってはいただけないでしょうか。
http://www27.atwiki.jp/printing トップページ一番下のエクセルファイルが一番見やすいと思うんですが。
要は現在の手書きの伝票をシステム化したいということです。
確かにAccessでは累計とか連番とかは結果が保証されない。 だから何?
837 :
828 :2007/03/10(土) 20:08:16
>>831 バージョンは変えてないのですが、officeのUpdateは行いました。
参照dll等が変に書き変わってしまったのでしょうか。
ええええーーーーーーーーーーっ!!!!!!!!! accessで残高計算できないのーーーーーーーーーー
できるように設計すればできるっつの
840 :
名無しさん@そうだ選挙にいこう :2007/03/11(日) 00:59:12
霧って何?
841 :
名無しさん@そうだ選挙にいこう :2007/03/11(日) 08:19:59
100m を 7秒で走れるようにしれば金メダルとれるっつの
842 :
名無しさん@そうだ選挙にいこう :2007/03/11(日) 13:33:20
外部データの取り込み→インポート でCSVを取り込みたいのですが a,[半角スペースが10個],b,...... のように(クオーテーションで括ってない)半角スペースのみのデータがNULLに変換されてしまいます このデータを半角スペース10個として取り込むには どうすればよいでしょうか? Access2000を使っています
データ型何になってる?
844 :
842 :2007/03/11(日) 13:43:05
一度、桐でインポートしてからアクセスに再度インポート
なんでここ桐使いがこんなに多いの?
えっ、桐のスレでしょ?
【 システム環境 . 】 WindowsXP Pro, Access2003 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 可 現在フィールドに 基本給料 手当て があり源泉を求めたいのです。 給料2000〜2500は源泉2 2501〜2600は源泉3と範囲が決まっていて 給料を打ち込めば自動的にその範囲内の源泉を表示させたいのです。 源泉データをテーブルにしたのですが、クエリでどうしたらいいのか さっぱり分からなくなってしまいました。
源泉区分はテーブルで用意してある?テーブル構成は?
【 システム環境 . 】 WindowsXP Pro, Access2000、2003
【 VBAが使えるか .】 6年前に一度簡単なものは作りました。C言語は習得済みでASP初心者です。
【 VBAでの回答 】 可
・やりたいこと
社員データ、取引先データの2つのExcel(orCSV)ファイルのデータをそれぞれ
フォームのボタン一発でAccessのテーブルに取得させる。
1 社員データ取得
2 取引先データ取得
1、2をそれぞれボタンだと仮定して、ボタンが押されるとExcelファイル参照先
選択画面を出してOKボタンで取得
これを社員データ、取引先データ毎に一回ずつクリックしてもらう。
といった流れでASP上で表示されるデータ更新を、フォームを使って、
パソコン初心者が触れるような簡単なものを 作りたいのですが、
簡単なサンプル等おいてあるサイトはないでしょうか?
ttp://www.friendlysw.com/knowhow/Knowhow.asp さんのところに有る
「CSVファイルをAccessのテーブルに自動的にインポートするサンプルデータベース
Access 2000 (04/17/2001)」
がかなり理想に近いのですが、多機能すぎてちょっと解析に時間が掛かりそうなのです。
触ってもらうExcelファイルはデータ入力形式がDBのデザインのままなので、テーブルの
整合性チェック等は必要がないので、とにかくシンプルなものを希望してます。
>>850 解析っつうほど複雑じゃないぞ。
ImportCsvFile_FS読め。
つかSQL勉強してADOから逃げろ。
そしてレコードが無い時のシステム固有の反応に苦しめ。
852 :
850 :2007/03/12(月) 20:23:32
テーブル構成は 以上 未満 源泉 9300 9400 3 9400 9500 6 で、以下ずら〜っと続きます。
たぶん
>>848 SELECT hoge.*, Nz(源泉区分.源泉, "ね〜よ") AS hage
FROM hoge LEFT JOIN 源泉区分 ON ((hoge.給料 >= 源泉区分.以上) AND (hoge.給料 < 源泉区分.未満))
>>852 2つのテーブルを単純にJOIN(テーブルを追加して線で結ばない)して、その中から
WHERE ((源泉マスタ.以上<=給与テーブル.給与) AND (給与テーブル.給与<源泉マスタ.未満))
で絞りこむと出るよ。
855 :
854 :2007/03/12(月) 21:12:41
856 :
853 :2007/03/12(月) 21:21:11
やっていることは基本的に同じなんだけどね 直積、WHERE条件で外部結合に当たるものができるかを考えると?
857 :
854 :2007/03/12(月) 21:27:15
>>856 考え方を掴ませるためにあえて崩したんだよ。
もう一回社員マスタとLeftJoinすればいいんだ。
これならSQLビュー使わなくても突破できる。
…嘘ですすいませんでした。
全然OKサー
>>856 は興味を持った人へのキーワードとしてさいたまでです
レコード数増えると遅くて使い物にならないんジャマイカ 無理に正規化せずに源泉額をイベントで記入しちゃった方が実用的ジャマイカ 源泉額は数年に一度程度変更されるし
社員数10万人以上とかだと厳しくなってくるかもしれん。
まあ
>>848 がそういう企業のシステム担当かどうかは
推して知るべしなんだがw
はい、そこで無理に正規化せずに桐で処理しましょう。 源泉徴収額表の変更にも対応できます。
どなたか教えてくださいませ。 R25に掲載されている”大人の合コン力検定”のようなソフトを作成するように指名されてしまいました。 (問題ごとにいくつかの選択肢が用意されていて、選んだ選択肢ごとに点数が設定されていて、最終的にその合計の値で判定するというもの) 当初、EXCELにて作成しておりましたが、設問に写真を掲載する要求があり、もしACCESSを使用したら前述の内容を満たす写真付きのものを作成できるのではと考え、ここでの諸先輩方のご意見を伺いたくカキコさせていただきました。 自分はデータベース初心者なので誠にお恥ずかしい限りなのですが可能であるなら 1.どのように作成したらよいか 2.参考にすべき書籍 3.参考にすべきWebサイト などをご教授くだいませ。 頼み事ばかりで申し訳ありません(>_<)
Excelの方が写真はるの簡単じゃね?
>>862 俺に頼めば作るよ。
>>863 設問が次々出てきて、写真入りの設問もあるなんて場合は、
Excelじゃやってたられないだろ。
866 :
名無しさん@そうだ選挙にいこう :2007/03/13(火) 11:32:26
フォームについての質問です。 直前に入力したデータを新規登録するレコードに引き継ぐ方法を教えてください。 OS:windows2000、ソフト:access2000です。 よろしくお願いします。
867 :
名無しさん@そうだ選挙にいこう :2007/03/13(火) 13:16:33
Ctrl + 7 じゃダメなん? Access に 直前に入力した なんていう概念ないから、そういうのは 桐 か Excel でやれば? それとも、非連結テキストボックスとかに入力データ退避しとくとか まあ、桐にしとけ
なんかスマートな方法ないの?
適当な変数を用意 元テキストボックスのアフターアップデイトイベントか何かでその変数に値を入れる 次テキストボックスのエンターイベントか何かで変数に入ってる値を入れる
870 :
名無しさん@そうだ選挙にいこう :2007/03/13(火) 17:21:03
途中のレコード訂正したりしたら困るな
たしかに困るな
>>869 =俺 orz
とすると DLast("","")か
これはもっと困った事態が起こりそうな気g
AfterInsertイベントで行を特定するキーを保持、キーがなければ全項目退避しといて BeforeInsertイベントで全項目をコピー。 まあ桐のほうが圧倒的に簡単らしいが・・・
BeforeInsert の時点でインサートするレコードが存在してるのか? やってみてないけど
875 :
862 :2007/03/13(火) 23:08:44
返事遅れて申し訳ありません(^^ゞ 節約でまとめレスお許しください。
>>863 それがよくわからないのです...トホホ! 当方Excelで作成したものはVBAのユーザーフォームで以下のような記述を何種類か組み合わせです。
'●●の値を代入する
If OptionButton1.Value = True Then
Range("b5").Value = "-1"
ElseIf OptionButton2.Value = True Then
Range("b5").Value = "0"
ElseIf OptionButton3.Value = True Then
Range("b5").Value = "5"
Else
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
End If
このユーザーフォームの設問に写真を張り付けたいのですが、VBAのツールボックスにある”イメージ”でユーザーフォームに画像をつけたら”大きすぎます”と怒られて貼り付けられません...。
Accessならば可能なのではと考えて質問させていただいたのです。 Excelだと、どのようにすれば簡単にできるのが教えてくださいませ。
>>864 本当は頼みたいとおもいますが、当方貧乏でそれこそビール券10枚程度の謝礼しかできません。
ですので生意気とは思いますがヒントというかご指導だけでもなどと考えた次第でして...。
>>865 明日にでも本屋でチェックします! 情報提供に感謝いたします(^^ゞ
>Excelだと、どのようにすれば簡単にできるのが教えてくださいませ。 ・・・
877 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 03:29:43
Access2000 ファイルインポートにてテーブルを新規作成する際、 1.インポートしたファイル名 2.インポート日時 を表示するフィールドを作成したいのですがどのようにしたら良いでしょうか。
Access2007ではコマンドボタンへのショートカットキー割当てが出来なくなったのですか(>_<)
879 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 12:22:24
880 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 12:22:37
Access2007で一つのカラムに複数の値が入ったりするのって?誰か試した?
881 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 12:23:54
最近どっかで試してる人のブログ読んだけど何処だか忘れた・・・・・orz
>>875 ユーザーフォームに直接貼り付ける?
ユーザーフォームにImageコントロールを貼って、
それのpictureプロパティで写真のファイルをしたら?
>>877 2007だとインポート操作を保存できるよ
884 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 13:15:35
885 :
865 :2007/03/14(水) 13:21:22
>>862 いや、すんません。ごくごく初心者向けの本です。
そして875の文章から、862サンには全然必要のないものでした。
わりと
【 VBAが使えるか .】
でいいえと書く人もいたから紹介してみました。
まあ、幅広く情報を共有しようということで。
VBAとは何ぞや、という初心者の方にはオススメしますよ。
サクッと読めちゃいます。
886 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 14:06:56
>>885 ネタにマジレスされて、慌ててフォローw
887 :
名無しさん@そうだ選挙にいこう :2007/03/14(水) 14:07:28
888 :
862 :2007/03/15(木) 00:27:24
>>882 ありがとうございます(^^ゞ
画像の貼り付けできました!
このスレでというのが皆様に申し訳ないのですが、Excelで何とかなりそうです。
(機能的に実際どうなのかは私にはまったく不明ですが)
ただ、今持っているOffice2007にAccessが付いているので、これを使ったほうがスマートなのかと素人考えで...すみませんでした。
でもこのままだと正に”宝の持ち腐れ”ですね...。
しばらく皆様のカキコを拝見させていただきますので、もしアドバイスがありましたらよろしくお願いいたします。
889 :
862 :2007/03/15(木) 00:31:03
連投お許しください
>>885 かえってお気を使わせて申し訳ありませんでした。
当方も参考書片手にやっと形にしてる程度の知識しか持っていないのです。
今後ともよろしくお願いいたします。
891 :
名無しさん@そうだ選挙にいこう :2007/03/18(日) 00:10:06
SQLServerからインポートしてID列が追加されたデータを もう一度SQLServerに戻したいのですが何か楽をする方法はないでしょうか? 現状では一列ずつ対応させたクエリを作っているのですが列数が100以上ある データベースが数十個あるので作業量を減らす方法を模索しています
>>891 たとえば、@tablenamefromに指定されたテーブルから列名を抜き出して、
@BangColname以外の列を@tablenametoに突っ込むクエリを書くクエリ。
(SQL鯖側でしか動かんのでアクセスからリンクテーブル貼らんと動かんが。)
これをストアドにして各テーブル毎の設定をどっかテーブルに置いてバッチで流す。
Access側でやるなら、確かADOは列名が取得できたはずなのでそれを同様に組み立てる。
Declare @tablenamefrom nvarchar(512),@tablenameto nvarchar(512),
@BangColname nvarchar(512);
Set @tablenamefrom = 'db1___tbl1';
Set @tablenameto = 'dummy';
Set @BangColname = 'key';
DECLARE @tmptable TABLE
( TableQ sysname, TableO sysname, TableName sysname,
ColumnName sysname, DataT smallint, TypeN sysname,
Prec int,Length int,Scale smallint,
Radix smallint, NULLABLE smallint,REMARKS varchar(254),
CULUMN_DEF nvarchar(4000),SQL_DT smallint,SQL_DS smallint,
COL int,OP int, ISNULLABLE varchar(254),SS_DT tinyint);
INSERT INTO @tmptable exec sp_columns @table_name = @tablenamefrom;
DECLARE @Cur Cursor,@CurrentColName nvarchar(512),@Str nvarchar(4000); Set @Str = ''; Set @Cur = Cursor FOR SELECT Columnname From @tmptable; Open @Cur; Fetch Next From @Cur Into @CurrentColName; While (@@FETCH_STATUS = 0) BEGIN if @CurrentColName <> @BangColname BEGIN Set @Str = @Str+','+@CurrentColName; END Fetch Next From @Cur Into @CurrentColName; END Close @Cur; Deallocate @Cur; if Len(@Str) > 1 BEGIN Set @Str=RIGHT(@Str,Len(@Str)-1); /*最初1文字を消す。*/ END Select ' INSERT INTO '+@tablenameto+' ( '+ @Str+' ) ' + ' SELECT ' +@Str+ ' FROM '+@tablenamefrom;
894 :
名無しさん@そうだ選挙にいこう :2007/03/18(日) 21:12:14
【 システム環境 . 】 WindowsXPSP1, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 可 【 検索キーワード 】 Csv 取り込み access Access2000でCSVを取り込みたいです。 参照ボタンを押してCSVを選択。(テキストボックスに参照したCSVを表示させます。) その後、取込ボタンを押して、予め決めておいた定義でCSVを取込む。 上記の方法を使わず取り込むことはできたのですが、上記の方法で取り込む方法が思いつきません。 何か方法はないでしょうか?
>>894 お前
>>850 じゃねーか?basImportCsvFileの75行目から121行目読めよ(w
違ったら
>>850 参照。
Recordsetとかが判らんのなら、とりあえず汎用性とエラー処理を捨てて、
0.必要なら、挿入先テーブルの内容を綺麗サッパリ削除する(76行目)。
1.ファイルから1行読んで、ばらす。(81行目〜92行目。strFileNameがファイル名、avarBuffがバラした結果だ)
2.「INSERT INTO テーブル名(列名、列名…) Values ('値','値'…)」ってSQL文をVBで根性と泥縄ででっち上げる。
3.そいつをExecuteする(76行目みたいな感じ。)
4.1.に戻る(85行目、119〜120行目)。
以上を書けばとりあえず動く。がんばれ。
ここって○投げほぼ許容してないし次スレからこれでいいんじゃない? ▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━ 【 システム環境 . 】 Windows**, Access** 【 VBAでの回答 】 要・可・否 【 検索キーワード 】 Googleやヘルプでの検索キーワード
マルチポストお疲れ様です>俺 Access使うことになったんだけど、どうやってこれリビジョン管理するの? お奨めをおせーて。
【 システム環境 . 】 WindowsXP, Access2003 【 VBAでの回答 】 可 【 検索キーワード 】 Access 印刷 プレビュー アイコン プレビュー内 レポート メニューバー Accessのレポート表示時に、レポートウインドウ(最大化してないと仮定)の方に、 印刷のショートカットアイコンを表示することは出来ないのでしょうか? Accessのメニューバーにはついてると思いますが、レポートの方につけたいので・・・。
900 :
名無しさん@そうだ選挙にいこう :2007/03/20(火) 22:09:22
>>899 めんどくさがらずに
アクセスのメニューでしとけ
>>899 そこまでのカスタマイズを望むなら選択肢は桐しかないよ。
>>899 こだわりが強いなw
ググってみたがACCESSでは無理かも知れない
903 :
名無しさん@そうだ選挙にいこう :2007/03/21(水) 07:10:48
>>899 フォームの中にレポートを表示じゃだめなのかね?
駄目なんだろうなぁ、、、
904 :
名無しさん@そうだ選挙にいこう :2007/03/21(水) 08:38:15
>>899 正攻法の報告が無いね〜。
邪道技としては、API呼んでフックして強引に
ボタンが張り付いてるように見せかける事はできる気がする。
但し、その手間賃で有償帳票印刷コンポーネントを確実に買える。
Vista Ult64 + ACCESS2007なんだけど 文字入力中に”TABキーを押すと予測候補を表示します” ってポップしてそのメッセージが消えると入力中の文字が 変換できないんだけど 教えて Word NOTEPADは問題ないんだけど
907 :
名無しさん@そうだ選挙にいこう :2007/03/22(木) 23:30:47
>>905 有償帳票印刷コンポーネントのおすすめ
おしえて
908 :
名無しさん@そうだ選挙にいこう :2007/03/23(金) 13:16:16
【 システム環境 . 】 WindowsXP, Access2000 【 VBAが使えるか .】 はい 【 VBAでの回答 】 可 【 検索キーワード 】 Access ファイル 容量 軽減 肥大 Accessにデータを取り込んだらインポート前のテキストデータに比べて 2倍以上の容量になってしまいました(110Mbyte>260Mbyte) 何か容量を削る策や設定、注意すべき点などは無いでしょうか? データは200万件、すべて項目はテキストに設定、メモは使用していません インデックスは20byteほどの英文字のみのフィールドにのみ設定 半角カナを使っているフィールドもありますが1箇所だけで長さも短いです 元データにインデックス領域とかレコードの情報が付加されると考えても 2倍以上になるのがちょっと納得出来てません、なにか容量を抑えるアイデアがあればお願いします
フィールドサイズを弄れ
910 :
908 :2007/03/23(金) 13:39:43
>>909 内容の最大長から必要なサイズにまでは削っています
ほとんどが10〜20桁程度なデータです
じゃ、しょうがねえだろ それ以上削ると必要なデータ飛んじゃうんだろうから
>>908 最適化してみるとか。
実は、テキストデータのほとんどは半角(1バイト)文字というオチだったり。
windows2000SP4+access2003SP2(adp)+MSDE2000SP3 なにやら突然、単票フォームでの並べ替えに指定したID列の並び順が 1,2,51,52 … 1000,3,4, … 49,50 と、3-50 番目の ID が最後にくるようになってしまったのだけれど、 何でだろう… 結果が例えば60件だと、 … 59,60,3,4, … というようになってしまう。 直前にやったことといえば、 (1)MDAC2.7 とそれにかかる修正プログラムの導入 (2)ビューの更新(ただし、問題のフォームでは呼び出していない) 並び順はフォームのプロパティで指定したけどだめ。 レコードソースで指定するとDocmd.Openform でエラーがでるので不可。 ID列は主キーではない。 なにかよい解決策、無いだろうか?
916 :
913 :2007/03/23(金) 21:56:39
とりあえず解決しますた。フォームのレコードソースに ORDER BY ID とつけたら ID 順になりますた。 はじめは ORDER BY A.ID というように別名付きで書いていたからだめだったみたい。
>>908 こういう話を聞くとACCESS2000のMDB内部は本当にUNICODEで
データ格納してるんだって実感できるな。
何の為にフィールドサイズを設定するのかと小一時間 桐だとテキストフォールドは可変長だけどな
918がどれに対するレスなのか知らんが Accessのフィールドサイズは文字数で、 バイト数ではないよ。
>>918 Accessも可変長で格納してます。一応、定義として最大文字数を設定する
礼儀と考えれば良いかと・・・。
>>908 マルチユーザーによる同時アクセスが絶対に無い(バックエンドDBだったりしない)
のであれば、ツール-オプション-詳細タブの「レコードレベルでロックして開く」を
オフにしてから最適化してみる。
ちなみに、英文字のみであればUnicode圧縮(既定でオン)が効くので、単純に倍に
なったりはしないはず(オフであれば当然ASCII/SJISの倍)。
AccessのGUIから作成したテキスト型であれば、フィールドサイズを削っても、
>920 さんの指摘どおり、容量削減の観点からは無意味。
アクセスのフィールドサイズってハッタリかよ藁
>>922 設定した文字数制限ができるからハッタリまでは落ちぶれてないよ。
バイト数じゃなくなったので非常に使いづらいけど。
924 :
908 :2007/03/24(土) 09:56:05
>921 この回答を見たときに小躍りしながら試してみました。 「レコードレベルでロック」>すでにチェック入り 一度テキストに出力しレコード定義にUnicode圧縮を設定してから取り込み直し>ほとんど変わらない >912さんのお察しの通り内容はほとんど1バイト英数文字です。 内部がUnicodeとは言えさすがに全部の文字に2バイトずつ割り当てないだろうと 思っていましたがどうやら甘かった様ですね・・・・。
925 :
921 :2007/03/24(土) 11:31:29
>>924 おはようございます。
> 「レコードレベルでロック」>すでにチェック入り
えーと、一応確認ですけど、チェック入りだったからチェックを
外して最適化した、という意味でおk?
926 :
921 :2007/03/24(土) 12:59:40
927 :
908 :2007/03/26(月) 10:10:59
>925
焦ってて書き方がおかしかったですね
「レコードレベルでロックのチェックボックスを外すのはチェック済み」です
>>926 を見る限りUnicode圧縮の設定のON/OFFで容量が変わるはずなのに
ほとんど変わらないのが気に掛かってます
ちょっと別の環境で同じ処理を試してみます
928 :
908 :2007/03/26(月) 16:57:24
Unicode圧縮有りでテーブルを再定義しでデータを追加し直ししてみましたが変わらず MDBファイルをバイナリエディタで開いてみたんですがフィールド内容と思われるACSII文字列に しっかり00が付加されてました(1バイトごとに) 圧縮かかってないですよね、これ
929 :
908 :2007/03/26(月) 19:51:18
ttp://www2.moug.net/bbs/acm_v/20070327000012.htm >Excelで開くと決まった位置にデータが並んでいるので、セル位置として指定
>しやすいからという理由です。
>>わざわざExcelを使う必要はないと思います。
>逆にわざわざExcelを使わない必要はあるのでしょうか?
これってどうなん?
俺は素人さんがcsvの中身を確認できるように
Accessに取り込んでExcelにエクスポートしているが。
つうか、絶対開くなと言っているのだが。
931 :
921 :2007/03/28(水) 01:21:12
ちょっとAccess 2003でテストしてみた。 空のMDBを作成し、そこに英数字のみ32文字×1万行のCSV(ASCIIで保存)を 新規テーブルとしてインポート(当然テキスト型フィールド)。 1. インポート前のdb1.mdbのサイズ →96.0kb(98,308byte) インポート前のtest.csvのサイズ →332kb(340,000byte) 2. test.csvをインポート直後のdb1.mdbのサイズ →900kb(921,600byte) ※1フィールドのみ、インデックスなし、Unicode圧縮なし 3. 2の状態からそのまま最適化した直後のdb1.mdbのサイズ →908kb(929,792byte)
932 :
921 :2007/03/28(水) 01:23:20
4. 2の状態からUnicode圧縮を「はい」にして最適化した直後のdb1.mdbのサイズ →588kb(602,112byte) 5. 4の状態から[レコードレベルでロックして開く]をオフにして最適化した直後のdb1.mdbのサイズ →588KB(602,112byte) 結論。 このテストに限れば、[レコードレベルでロックして開く]は容量と関係なかった。 スマン。 単純に考えるとUnicode圧縮なしで元ファイルの2倍、有りだと1倍で済む ような気がするかもしれないが、実際はUnicode圧縮なしで3倍近く、圧縮 ありでやっと約2倍に抑えられている模様。 なんかいろいろやってるんでしょう、としか自分には言えません。w なお、バイナリエディタで確認してみたけど、Unicode圧縮後はちゃんと ASCIIになってました(00なしの1バイトで格納されてた)。
933 :
908 :2007/03/28(水) 09:34:16
Unicode圧縮が出来るケースと出来ないケースがあることを確認しています メモ型で4K以上は出来ないとありましたがそれ以外にも何かありそうです まだ原因を絞り込めてないのですが20万件の同じデータ(並び順だけ違う)を 使用して出来た場合と出来なかった場合で今の時点発見している違いは ・ファイルが違う (片方は他テーブル有りで圧縮がかかっていなかったファイル 成功したのはテーブル構造をコピーして単独のテーブルに切り分けしたファイル) ・インデックスの指定の有無(成功した方には無かった) ・空文字を許可しているかいないか(成功した方は許可、実際に空のデータ有り) レコードでは無く項目を削るとUnicode圧縮が出来たのを確認したんで 徐々に調整しつつ項目を増やしていったのですが全部Unicode圧縮がかかるファイルと かからないファイルが出来てしまいました ファイル側で何か要因があるんでしょうか・・・
934 :
名無しさん@そうだ選挙にいこう :2007/03/29(木) 00:57:47
アクセス97 にSR-2を当てタイのですが、 SR-2のダウンロード先ありますか?
936 :
名無しさん@そうだ選挙にいこう :2007/03/30(金) 02:21:32
あのー2002なんですが、win2000からXPに乗り換えたというか壊れたので入れ直したのですが、 既に登録済みですとなってユーザー登録ができません。 もうあきらめるしかないものなんですか? それとも2000のaccessをアンインストールする時にMSになにかコードを送っているのですか? もう2000はまともに起動しないのでアンインストールできません。
937 :
名無しさん@そうだ選挙にいこう :2007/03/30(金) 02:25:32
あと、タイトルの桐にしとけってどういう意味ですか?キリ? インストールできなくて気力ほぼゼロです・・・・日本語になってなくてすいません。 とにかく試用解除ができないんです。アドバイスお願いします。
940 :
名無しさん@そうだ選挙にいこう :2007/03/30(金) 13:09:10
どもです、ACCESS2000+WINDOWS2000す。 テーブルと連結したフォームで、以下のよーなテキストボックスを持ったとき、 フッタ部に金額の合計を表示したいのです。 ・単価:テーブル連結、入力可 ・数量:テーブル連結、入力可 ・金額:テーブル非連結、入力不可、コントロールソースに『=[単価]*[数量]』って設定 ポイントは、 カレント行を移動しなくても(=テーブルのデータが更新されなくても) 単価や数量からフォーカスが無くなったときに金額の合計を最新にしたいんす。 遍歴 ・金額の合計のコントロールソースに『=[金額]』→カレント行の金額だけが表示。。 ・金額の合計のコントロールソースに『=SUM([金額)]』→"#Error" だって。。 ・金額の合計のコントロールソースに『=SUM([テーブル].[金額]*[テーブル].[数量])』だと、 テーブルの行が更新されるまで変わんないのん。。 金額の合計のコントロールソースの設定だけで実現可能で初夏。 VBAで組まなきゃムリかなぁ、 単価と数量のフォーカスが無くなったときレコードセットぐりぐりループさせてさ。 よろしくです〜
[Shift]+{Enter] 押してごらん
桐V9最高だよーーー
そういえば、Access97が出てから、丁度10年経過するんだなぁ・・・・・ 今でも現役で使ってるのにw
946 :
名無しさん@そうだ選挙にいこう :2007/04/01(日) 00:50:31
ジャストシステムのつかえ
ACCESS2007で、フォームを使っている時にクエリやテーブルを使いたい場合は どうやって選択したらいいの?
948 :
947 :2007/04/01(日) 10:14:31
自己解決スレ汚謝々
949 :
940 :2007/04/02(月) 00:30:18
>>941 ありがとね、でも使う人はタブで移動させるんだって。
やっぱレコードセットぐりぐり回すしかないんかなぁ。。
>>942 MS-DOSまでOSダウングレードしなあかんのん(笑)?
>>946 三四郎?
>>946 、947
ガンバッタナ!
>>949 何を解らねえ事言ってんだ、イベントでレコード更新掛けりゃ良いだろ
何だかレコードセット回しは最後の手段とか勘違いしてるみたいだけど
レコード更新前の状態でレコードぐるぐる回しても合計欄に表示されてる
使えない合計しか得られないと思うんだが。
レコード更新後なら意図した合計は得られるけど、そもそもその時点なら
レコード回すまでもなく合計欄は意図する数字になってるはず。
よって
>>950 が普通に正解。
それ以外の脳内仕様にこだわるなら桐。
うん、桐は項目訂正で更新されるよ
勝手に更新が嫌なら、姑息だけど別の方法はあるな。 =SUM(〜)は非表示にして、カレントレコードの目的フィールド の差異(現在の値とOldValueでいけるだろ)を求める。 これで、非連結フィールドに合計表示ができるだろ。VBA必須。
954 :
940 :2007/04/03(火) 13:14:42
>>950 、951
うん、それ思った。結局更新しなアカンのよね、ありがとねん。
>>951 、952
桐ってもしかしてカユイとこにしっかり手が届く?
>>953 ありがとね、OldValue使えるね。
悩んだけどVBAでゴリゴリ書くとミスるから、連結フィールドにするわ〜
『=SUM([単価]*[数量])』 ※ 単価と数量はテーブルの項目ね
このスレで出る質問の殆どは、桐なら容易に実現できるよ Access みたいにバグ多くないし でも値段が高いよ
956 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 00:36:14
おまえ等本当に「桐」みたいなマイナーソフト使ったことあるんか
中小企業は桐、大企業はOracleでしょ、他は不要
958 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 10:31:39
桐よりFileMakerのが多いんじゃなかろうか
FileMakerだったらAccessで良いじゃん
962 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 12:56:51
>961 んじゃ、SQL Serverは?
お布施企業
964 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 19:35:56
はじめまして ACCESSのテーブルへの追加クエリをマクロに入れて名前を AutoExecで定義してWindowsのタスク起動で1時間おきに 自動起動させて自動的にデータを更新させようとしています。 しかし追加クエリが動くとき”データ○件追加しますか”等のメッセージ ボックスがでてしまって自動的に処理を完了してくれません。 こういった場合はどうすればいいでしょうか。 誰かアドバイスください。
>>964 マクロに「メッセージの設定」というのがあるから、それを「いいえ」に設定すれば出てこない
これをクエリを実行するアクションより前に設定すればいい
966 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 20:12:55
こんにちわ Accessを最近入門したところです。 テーブルデータからレポートを作っているんですが例えば数値が100以上であれば字を赤色に、 フォントをゴシック体に・・・のように動作させたいのですがどこを触ればいいんでしょうか?
967 :
名無しさん@そうだ選挙にいこう :2007/04/04(水) 21:14:34
>>966 ACC2000以降であれば、フォント以外は条件付き書式で対応できる。
どうしてもフォントも変えたいと言うのなら、
VBAでテキストボックスだかラベルだか知らんが、
2つのコントロールを重ねて、条件によって可視不可視を
切り替えてやればいい。
要は、ヴァージョンぐらい書けって言うことだ。
ほ
レポートを印刷しようとすると最初のページに空白ページ(背景オブジェクトのみ)が入ってしまいます。 2ページ目以降ではデータがきちんと入ります。 データもとのテーブルには頭からデータが入っています。 このくらいしか書けないのですが、何か思いつく間違いありますでしょうか? XPの2007です。
971 :
名無しさん@そうだ選挙にいこう :2007/04/07(土) 20:04:49
>>970 ページヘッダーも含め、どこかのセクションの改ページ設定が
関係してるはず。・・・レポートの頭に改ページコントロールが
あったなんてオチじゃないだろうな。
ume
うめ
梅&次スレに質問きてるど
>>973 ご意見ありがとうございました。
しかし色々と見てみましたがどうやらそれではありませんでしたorz
根本的解決はあきらめ、作り直してみたら何とかなりました。
978 :
名無しさん@そうだ選挙にいこう :2007/04/10(火) 01:38:58
ちゃんと使い切ろうよ、これ
埋め
980 :
名無しさん@そうだ選挙にいこう :2007/04/10(火) 10:58:24
【 システム環境 . 】 Windows98, Access2000 【 VBAが使えるか .】 いいえ 【 VBAでの回答 】 否 【 検索キーワード 】 ヘルプは役立たず、検索にはヒットせず。 アクセスのクエリにてSQL(ユニオンorデータ定義)で右側の空白を削除するSQLを書いているのですがうまくいきません。 Rtrimは詳しくないのですが select rtrim(from フィールド)from テーブルとしています。 間違いがあれば指摘して貰えれば助かります。 また、PHP+SQLであれば問題なく動いていたSQLですが 新型 という文字を消去する際に select trim(’新型’ from フィールド)from テーブル というSQLもうまく作動しません。助けてください。
・Dlast関数が最後に入力されたデータを持ってこれなくなってしまいました。 (バージョン変換に伴い) 【 システム環境 . 】 WindowsXp, Access2007(昔ファイル 97?,2?) 【 VBAでの回答 】 可 【 検索キーワード 】 Dlast、Dend 1年前に前任者からの業務を引き継ぎました。 前任者がAccess2、3、97などで作っていたデータベースがありました。 交代時に1つのマスターファイルが変換できずver2(97?)のまま。 他の4つの実働ファイルは2000へと変換されました。 近頃、ver2であるマスターファイルへのリンクを差し替えて2000形式に変更しました。 (テーブルのみの構造のマスターファイルだったので 空のデータベースを作り、デーブルを全てインポートしました。 そして、この新規ファイル名を旧ファイル名と入れ替えました リンクの張替えではないですが、実質的には張替えと同じく動いています) けれども一部不具合が。 入力フォームで、『日付明細』をDlastで既定値として取得し日付入力の簡略化を行っていました。 しかし、このverUpに伴い、Dlastが最終入力データを持ってこれなくなってしまいました。 何故か理解に苦しみます。 さらに、『明細番号』はオートナンバーなのですが、空いた欠番にも番号が入ってしまいます。 スレの寿命もわずかなところ長文にて失礼しますが、どなたかお願いします。
982 :
980 :2007/04/10(火) 11:18:06
事故解決しますた
ウメ
985 :
名無しさん@そうだ選挙にいこう :2007/04/10(火) 20:58:45
MicrosoftACCESS2003パッケージ版は一つで複数のパソコンで使用可能でしょうか?
>>981 ヘルプを読めば解るがDLastは最終入力データを持ってくる関数じゃないぞ。
今までは運が良かったがこれを機に仕様を考え直せ。
987 :
名無しさん@そうだ選挙にいこう :2007/04/11(水) 09:54:22
Access2000で個人情報やアンケートなどの管理をしています。 質問ですが、抽出結果のレポートを、 PDFなどの単独データに変換(出力)する事って出来ますか? 先方が印刷物だけでなく、データの提出を求めて来たので、 この数日、かなり悩んでいます。
別にAccessに限らないけど、アプリケーションの印刷出力は普通にPDFにできます。