1 :
名無しさん@1周年 :
2000/08/07(月) 11:09 スレ乱立するのもあれだからACCESSの質問・回答はここでまとめてやりましょう。 ・質問する人は可能な限り具体的に書くこと。回答がなくてもキれないこと ・分かる人はできるだけ回答して下さいませ
2 :
名無しさん@1周年 :2000/08/07(月) 11:29
で、自分の質問ですが、 まず、テーブルXがあります。これは 伝票ID,商品,数量,発送先,発送日 001,商品A,5,東京,8/8 001,商品B,1,東京,8/8 002,商品A,3,大阪,8/10 と、上記のような構成になっています。 次に、レポートAとそれに埋め込んだサブレポートBがあります。 レポートAはテーブルXからクエリで作成したテーブルY(IDでグループ化。 よって伝票IDは1つにまとめられる。フィールド構成は伝票ID,発送先,発送日) をレコードソースとします。 サブレポートBに、同じくテーブルXから作成したテーブルZ(フィールド構成は伝票ID,商品, 数量)を指定するのですが、こうするとどうしてもテーブルXから全てを抽出してしまうのです。 Where条件にどういうのを指定してやれば、サブレポートBにレポートAの伝票IDと同じ 伝票IDのレコードを抽出できるのでしょうか。 宜しくお願いします。
ちょっと訂正 サブレポートBのレコードソースは SELECT Z.伝票ID, Z.製品, Z.数量 FROM Z WHERE Z.伝票ID=レポートAの伝票ID でした。最後の「レポートAの伝票ID」の式をどうすればいいか教えて下さい。
4 :
名無しさん@そうだ選挙にいこう :2000/08/07(月) 12:51
よく見てないが サブレポートの LinkChildFieldsとLinkMasterFieldsに伝票ID をいれれば?
Reports![レポートA]![伝票ID]でいけました。 こんな簡単だったのか… 4さんもありがとうございます。
6 :
名無しさん@1周年 :2000/08/09(水) 12:21
ACCESSのsqlなんですけど フィールドAA A001 A002 | A009 A010 B001 B002 | Z009 Z010 というデータがありまして、この中から「X???を除いたデータを選択」 するクエリはどういう式になりますでしょう? select * from テーブル where AA <>(left("AA",1)="X") とか、AA <> (like "X*") とか試してみたんですが、全てのレコードが 選択されてしまいます。like "X*" だとちゃんとX???だけ表示されるのに… left("AA",1)="X" ではXで始まるレコードだけ選択しないので、根本的に 間違ってるんでしょうか?
あーなんか根本的に間違ってるのは自分の頭だったみたいです。 where AA = left([AA],1)<>"X") でいけました…
8 :
牧内千船 :2000/08/10(木) 17:34
大変困っているので、 分かる方、教えて下さい。 Windows95でAccess2000のRanntaimuをインストールしようとしたら、 下記のエラーメッセージが表示され、インストール出来ませんでした。 Insttallation of System Software Installer SHIP Command line option syntax error. Type Command/? for Help. なお、同一のセットアップをWindows98にインストールしても上記のエラーは 出ませんでした。 原因は何でしょうか? どうすれば、Windows95にインストール出来るのでしょうか? 教えて下さい。お願いします。
9 :
名無しさん@1周年 :2000/08/11(金) 18:08
テーブルA ID,フィールドX 1,100 というテーブルがあります。この100をテーブルBのフィールドYへ放り込みたい 時はどうすればよいのでしょうか? VBAで 変数I= "select A.X from X where ID='1'" update B set Y = SQL実行関数(変数I) とやっても0が入るだけなんです。 宜しくお願いします。
10 :
>9 :2000/08/16(水) 00:39
「from A」 じゃないのか?
11 :
名無しさん@そうだ選挙にいこう :2000/08/16(水) 23:56
レコード数によって条件分岐する方法について教えてください。 フォームに入力した条件に合致するレコードを表示したクエリが開くというものを作っています。 そのときに、抽出されたレコードがたとえば50件を超えたら、条件を絞り込まないとクエリが開かないようにしたいのですが、どんな方法がありますか? 得意先データなので、あまりたくさん表示できないようにしたいのです。 よろしくお願いします。
12 :
9 :2000/08/17(木) 13:10
>10 そうです。書き間違いで、コードではAになってます。 >11 クエリが開かないように、ってのはできないんじゃないですかね。 サブフォームにテンポラリテーブル読み込ませるようにして tenmテーブルをDcountでレコード数えて50overならサブフォーム を開かないようにする、という風にしか思いつかないです。 dim Asql as string dim I as integer Global Const subf =サブフォーム'レコードソース はtempテーブル I=0 Asql ="select * into temp from X;" runsql (Asql) 'テンポラリテーブル作成 I=Dcount("得意先ID","temp") 'テーブルのレコードを数える 'レコード数の評価 if I > 50 then msgbox("条件を絞り込んで下さい") else 'サブフォームを親フォームへ挿入 [Forms]![親フォーム]![埋め込み1] = subf end if 自分も初心者なんで間違った文法、抜けまくりな処理があると 思いますけど、大体感じは掴めていただけるんじゃないでしょうか
13 :
名無しさん@1周年 :2000/08/17(木) 15:22
Access97使っているんだけど、あの悪名高い(漢数字の"〇"(ゼロ)が無視されるとか) 日本語ソートはAccess2000では直っていますか?
14 :
名無しさん@1周年 :2000/08/19(土) 15:38
テキストボックスのプロパティで「ハイパーリンクあり」にして
テキストボックスの内容は
http:// 〜としているのにダブルクリック
してもそのurlに飛んでくれないのですが(何も起こらない)
どうすればそのページへ飛んでくれるようになるのでしょうか。
15 :
名無しさん@そうだ選挙にいこう :2000/08/21(月) 10:15
VC++6.0でCDaoRecordsetを基本クラスとしてクラスを派生させ、 access2000で作成した.mdbファイルにアクセスすると、 「認識できないファイル形式」というメッセージが返り、 読めません。 access97で作成したファイルであれば正常に処理されます。 どうしたら良いでしょう?
16 :
名無しさん@そうだ選挙にいこう :2000/08/21(月) 20:21
マクロの「アプリケーションの実行」のコマンドラインの引数に変数を渡したいのですが どうすればよろしいでしょうか。 *.exe [forms]![object].[text] とかやるとそのまんまで実行されてしまうんです。
17 :
名無しさん@そうだ選挙にいこう :2000/08/22(火) 15:11
業種 企業名カナ 総合 アタリ 総合 コナミ プレス ナムコ プレス ニンテンドウ 電気 エスエヌケイ 電気 アイアイ 業種のフィールドを任意の順にソートして、かつ会社名で ソートをしたいのですが、上手な方法はないのでしょうか? 会社名のソートは出来たのですが。
18 :
名無しさん@1周年 :2000/08/22(火) 16:37
DAOはそのうちなくなって、ADOに移行していきます。 ACCESS2000にはADOを使うとうまくいきます。ADOを使う場合にはOLE DB を使います。 しかし、ADOはACCESS97には使えません。
19 :
名無しさん@そうだ選挙にいこう :2000/08/23(水) 04:00
20 :
名無しさん@そうだ選挙にいこう :2000/08/23(水) 09:49
>19 アクセスできました。 助かりました。ありがとうございます。
21 :
名無しさん@そうだ選挙にいこう :2000/08/23(水) 13:59
モジュールで、ある文字を置換しようとして入力したら 入力が確定した瞬間に違う文字に変わってしまいました。 たとえば、「見積」と入力すると「倹」と言う漢字になってしまいます。 OSはWindows2000でAccess2000とAccess97が入っています。 この現象はAccess97でも起こります。 OSから再インストールしてみましたが直りませんでした。 いろいろ調べてみたら、漢字一文字では起きないようです。 複数の文字(漢字以外も含めて)を入力すると変になってしまいます。 何が悪いのでしょうか?
22 :
名無しさん@そうだ選挙にいこう :2000/08/24(木) 02:06
>17 選択クエリを作ってグループ化するといいです。 SQLだと SELECT 業種, 企業名カナ FROM テーブルA GROUP BY 業種, 企業名カナ ORDER BY 業種 ASC ,企業名カナ ASC; かな。
23 :
名無しさん@そうだ選挙にいこう :2000/08/25(金) 00:03
>21 97に関しては仕様です(マジ) エディタで書いてコピペするしかないです
24 :
21 :2000/08/28(月) 10:23
>23 同じ様にソフトをインストールしている 他のマシンでは正しく入力できます。
25 :
名無しさん@そうだ選挙にいこう :2000/08/31(木) 13:38
Access2000をインストールしていないマシンでmdbを動かしたいのですが、 エクセルのビューワーのような感じでランタイムのようなものはあるのでしょうか。 MSのサイトを回って見ましたが見あたりませんでした。
26 :
名無しさん :2000/09/05(火) 16:06
1ページ目 A 1 B 2 C 3 合計 6 -------- 2ページ目 D 4 E 5 F 6 合計 15 -------- 2ページ目の合計が全体の合計21になってしまうのですが合計を15にする方法 はありますか?
27 :
>26 :2000/09/05(火) 18:49
28 :
名無しさん :2000/09/06(水) 09:27
27さんありがとう。2000ですが、97でも同じ方法で動きました。
29 :
リストボックス :2000/09/06(水) 09:41
ちょっと説明しにくいのですが。 リストボックスにデータが表示しきれない場合、 縦スクロールバーが表示されますよね(もちろん有効にした場合)。 このときスクロールバーを動かすと、マウスを放した時点ではじめて画面がアップデートされます。 スクロールバーを一番下に持っていき、データを全て表示しきると、スクロールバーを動かしている最中も 画面は更新されます。 この動作を、リストボックスがフォームに表示された時点で行うことはできないのでしょうか。
30 :
29 :2000/09/07(木) 10:36
最初のページに表示されなくなったのでage
31 :
名無しさん@そうだ選挙にいこう :2000/09/15(金) 16:51
ACSESS2000で特定の文字列(ローマ数字等)を含むデータを、インポートすると 文字化けしてしまいます。 何か回避方法はありますか? (97では大丈夫です)
32 :
>29 :2000/09/15(金) 20:58
>>29 フォームを開いた瞬間に、リストの最大の値を
入れて、すぐにNullを入れてやるのはどうでしょうか?
33 :
名無しさん@そうだ選挙にいこう :2000/09/15(金) 22:16
>32 ナイスなアイディアですね。 件のファイルは会社なので、月曜日早速やってみます
34 :
29>31 :2000/09/20(水) 15:25
できた。 さんきゅう
35 :
名無しさん@そうだ選挙にいこう :2000/09/20(水) 15:25
>32 だ
36 :
名無しさん@そうだ選挙にいこう :2000/09/21(木) 22:29
VBScript使ってAccess開くとき、 WScript.CreateObject("ここに何て書けばいいの?")
37 :
KI :2000/09/22(金) 03:43
はじめまして KIといいます。よろしくお願いします。 いきなり質問で申し訳ないのですが アクセス+MSDEで 携帯電話販売DBのようなものを作っているんですがその中で 商品DB キャリア 機種 色 卸DB キャリア 機種 色 仕入れルート 仕入れ値 卸値1、卸値2・・ 仕入先DB 仕入先名 機種 色 卸値 と3っつあるのですがこの中で 卸DBの中で入力するときに商品DBを参考にして キャリアを選べば機種が絞られ機種を選べば色が絞られるようにして、同じように 仕入先名を選べば 仕入先DBを参考にして入力された機種に準じて仕入れ値が自動で 出るようにしたいのです。 このようなことを行いたい場合はどのような機能を使うのでしょうか?できれば商品ID や仕入先IDを打つ込んで出るのではない方法がいいのですが。・・ SQLでクエリーを書くべきなのかリレーションで解決すべきなのかVBなのかなやんでいます。 もしかしたら すごく頓珍漢な質問かもしれませんがよろしくお願いします。
38 :
名無しさんMe :2000/09/22(金) 03:59
リレーション。
39 :
DB初心者 :2000/09/22(金) 22:25
ODBCでのアクセス2000のファイルの開き方を教えていただけないでしょうか? できれば、MFCをつかったやり方と使わないやり方で両方あるとありがたいです。 DAO(MFC)ではわかったのですが、ODBCではさっぱり。 ちなみに、環境はスタンドアローンで直接アクセスのファイルを指定したいです。 ご教授願います。
40 :
名無しさん@そうだ選挙にいこう :2000/09/22(金) 23:38
>>37 ACCESS2000の仕様はよくわからないのですが、
基本的な売上管理システムと同じじゃないでしょうか。
テーブル構成でいうとこんな感じかな。
(仕入先DBの卸値は仕入れ値の間違い?)
商品DB :商品コード(key)、キャリア、機種、色
仕入先DB:仕入先コード(key)、仕入先名、住所、TEL
仕入値DB:仕入値コード(key)、仕入先コード、商品コード、仕入値
卸値DB :登録ID、仕入値コード、卸値1、卸値2・・
これらをリレーションでつないで、クエリーで必要な情報を組み合わせて
見れるようにしたら良いと思います。
ただ、仕入れ値に値動きがあって、なおかつ履歴(実績)に残す
必要がある場合には、マクロやプロシージャを使う必要が出てくる
と思います。
41 :
40 :2000/09/22(金) 23:52
あ、「できれば商品IDや仕入先IDを打ち込んで 出るのではない方法」って書いてる....。 コンボボックスは? それから、もし段階選択をさせるのであれば検索専用フォームに 検索キーを埋めるテキストボックスとリストボックス作って テキストボックスの更新ごとにプロシージャでリストボックスの 値集合ソースを書きかえる仕組みにして、選択したら元のフォームに 引き渡して閉じる形にします。
42 :
名無しさん@そうだ選挙にいこう :2000/09/23(土) 18:34
>21 同じ症状でMSインテリマウスのソフト、インテリポイント削除したら直った。 インテリポイントはいってませんか?
43 :
CLE :2000/09/26(火) 04:27
多対多リレーションシップを2重に使いたいのですが、可能でしょうか? 項目A,Bで多対多リレーションシップを作り、更にその項目BとCで多対多リレー ションシップを作りたいのです。 具体的には、項目A,B,Cがあって、それぞれ{A1,A2,A3,....},{B1,B2,B3,.....} {C1,C2,C3,.....}とデータがあります。 で組み合わせとして、 {A1,B1,C1} {A1,B1,C2} {A1,B2,C1} {A2,B3,C2} {A2,B2,C3} といった具合にリレーションを設定したいのです。 今のところ、テーブルA,B,Cとそれぞれの中間テーブルA-B,B-Cを作って リレーションを設定するところまでは出来たのですが、データインプットの際、 データが重複するため、更新できないとのエラーが出ます。 テーブルA,Bだけの多対多リレーションシップは正常に処理されるのですが・・・。 この方法自体に、問題があるのでしょうか? ご教示いただければ幸いです。
44 :
名無しさん@そうだ選挙にいこう :2000/09/26(火) 11:41
何か質問ばっかりだな。
45 :
21 :2000/09/28(木) 23:16
>>42 入ってます。今度試してみます。
ちょうど今再インストールしているところです。
46 :
21 :2000/09/29(金) 17:16
>>42 試してみました。
入れる前は正しく入力できました。
入れると正しく入力できませんでした。
アンインストールしたら正しく入力できませんでした。
インテリポイント逝ってよし!
47 :
名無しさん :2000/10/03(火) 13:58
c:\1.bmp c:\2.bmp c:\3.bmp とテーブル1に入力してレポートでbmpファイル一覧を表示したい マクロの式の代入でアイテムは [Reports]![レポート1]![イメージ0].[Picture] 式は [Reports]![レポート1]![イメージ0].[Picture]=[テーブル1]![フィールド1] アクションの実行エラーになりました。 レポートでbmpファイル一覧はできないですか?
48 :
名無しさん@そうだ選挙にいこう :2000/10/03(火) 15:56
Access2.0から2000にしたら妙に不安定です。 他の人もそうですか?
49 :
名無しさん@そうだ選挙にいこう :2000/10/03(火) 21:37
レポートで全ページ数でなくて、グループレベルのページ数を表示する方法は ないでしょうか。何ページの何枚目とかいれたいんですが。
50 :
ナナ氏 :2000/10/04(水) 10:46
51 :
名無しさん@そうだ選挙にいこう :2000/10/04(水) 19:19
ナナ氏さん、ありがとう。
52 :
名無しさん :2000/10/07(土) 18:50
アクセスのレポートで1111がフィールドに入っていた場合、 壱千壱百壱拾壱と表示する場合どうすればよいのでしょうか?
53 :
名無しさん@そうだ選挙にいこう :2000/10/10(火) 17:20
48ではないのですが Access2.0からAccess2000に変換しようと思い データベースユーティリティーの変換を使いmdbファイルを変換したところ 「このデータベースを変換、または有効にする際にコンパイルエラーが発生しました」 というエラーが表示されコンパイルされない状態で表示され そこから自分でコンパイルし直せって指示があるんですけど指示に従ったところ 「モジュールではなく、変数またはプロシージャを指定してください」 というコンパイルエラーが表示されます。 これはAccessBasicで作られたためだと上司に言われたのですが 構築し直す以外に何か良い手立てはないでしょうか?
54 :
名無しさん@そうだ選挙にいこう :2000/10/11(水) 19:42
53> 2.0→95→97→2000とバージョンアップしつつコンバートする と良いのでは? しかし確証がないのでそーゆーやり方もあるっていう 理解に留めておいてくれよ! 責任とれないから... スマン
55 :
名無しさん@そうだ選挙にいこう :2000/10/15(日) 17:53
Access2000でOSはWindows98、ハブ1個で6台(全部同環境)をつないでNT(4.0)サーバーに 接続、という感じなんですけど、サーバーに入ってるmdbファイルが開けないんです。2台だけ・・・。 (どっちもe-oneというのも関係してるんだろうか(汗))「ディスクまたはネットワークのエラーです。」 となってしまって・・1台はOSごと再インストールしてみたんですけど、効果なし、、 その2台はoffice関連だけ(word、excelは開くことはできる)保存もできません。(「ディスクがいっぱいです。」) 巧く説明出来なくて申し訳ないのですが、どなたかわかる方教えてください。
56 :
55 :2000/10/15(日) 17:55
あ、開けない、保存できないのはサーバーにだけで、 自分のとこにコピーしてくると開いたり保存できたりします。。 もしかして、ネットワーク板で聞いた方がいいのかな・・・
57 :
鏝半>52 :2000/10/27(金) 12:31
自力で関数作成しかないです。
58 :
>57 :2000/10/27(金) 19:38
自力で作成してみます。
59 :
名無しさん@そうだ選挙にいこう :2000/10/28(土) 01:52
質問です。 エクセルだと縦も横もSUMでNULLを除いた合計が出ますが、アクセスは横(同レコード) の合計、平均、順位等はどうすればよいのでしょうか? どなたか、宜しくおねがいいたします。
60 :
名無しさん@そうだ選挙にいこう :2000/10/28(土) 17:00
ここでは教えてもらえないんでしょうか?
61 :
名無しさん@そうだ選挙にいこう :2000/10/28(土) 19:15
クエリ使ってくださいませ。
>59 select フィールド1 + フィールド2 from TAB where PrimaryKey = 'KEY';
63 :
名無しさん@そうだ選挙にいこう :2000/10/29(日) 00:06
>55 質問です。 複数のAccessから1つのmdbファイルを利用するって、 どうゆう神経してるんですか。 まあよくあるパターンなんだけど、私には理解できないよ。 msdeでも拾ってくればいいじゃない。
>>55 よくわからんが、ディレクトリのアクセス権、共有フォルダのアクセス権
アクセスで設定するアクセス権、全部適切に設定してる?
65 :
>62 :2000/10/29(日) 02:39
>select フィールド1 + フィールド2 nullがあってもOKですか? avg([],[])でいいんですか?
66 :
62 :2000/10/29(日) 09:28
>65 select TAB2.A TAB2.A / 2 ,TAB3.A from ( select (decord or nvl (フィールド1,NULL,1) + decord or nvl (フィールド2,NULL,1) ) as A, PrimaryKey as B from TAB ) as TAB2, ( select COL_NUM as A, PrimaryKey as B from TAB ) as TAB3 where TAB2.B = TAB3.B Access形式に変換してくれ。
67 :
62 :2000/10/29(日) 09:30
間違い select TAB2.A TAB2.A / 2 ,TAB3.A from ( select (decord or nvl (フィールド1,NULL,1) + decord or nvl (フィールド2,NULL,1) ) as A, PrimaryKey as B from TAB ) as TAB2, ( select COL_NUM as A, PrimaryKey as B from TAB order by 順位Key ) as TAB3 where TAB2.B = TAB3.B
68 :
教えて下さい。 :2000/10/31(火) 17:00
エクセルとアクセスでは、どちらの方が使いやすいですか?? 顧客管理とかをしたいんですけど。 あと、インターフェイス(?)が初心者でもわかりやすく、 カスタマイズしやすいのはどちらですか? 今から購入・勉強しようと思ってるのですが。 私的にはアクセスの方が使いやすいように見えますが。 どちらでしょうか?? 教えて下さい。よろしくお願いします。
69 :
質問です。 :2000/10/31(火) 19:10
あ 1個 あ 2個 あ 3個 あ 4個 あ 5個 い 1個 い 2個 い 3個 う 1個 う 2個 テーブルからレポートをあ、い、う に分割して印刷したいのですが グループでは1行になってしまいます。 ------- あ 1個 あ 2個 あ 3個 あ 4個 あ 5個 ------- い 1個 い 2個 い 3個 ------- う 1個 う 2個 ------- と別々の紙に印刷するにはどうすればよいですか?
70 :
名無しさん@そうだ選挙にいこう :2000/10/31(火) 19:10
>>68 エクセルとアクセスにはどの程度習熟されてますか?
(個人的にアクセスは使いこなすのが難しいと思いますが。)
データ数にもよりますが、基本的な操作なら使い慣れているものを用いた方が良いのでは。
最初にエクセルで作っておいてアクセスに移すという手もありますね。
71 :
鏝半 :2000/10/31(火) 23:19
そうならないようにするのが「テーブルの正規化」>59 59のような問題が起きるのもACCESSとEXCELを似た者同士 として混同してるせい。全然別物と考えよう。>68 グループフッタに改ページコントロールいれたらできひん?>67
72 :
質問です。 :2000/11/01(水) 10:26
------- あ 1個 ------- あ 2個 ------- あ 3個 ------- あ 4個 ------- あ 5個 ------- 改ページ入れたら1行1枚になりました。
>質問です。さん どういうテーブルになっているのかわかりません。 まずテーブルの構造を先に示して下さい。
74 :
質問です。 :2000/11/01(水) 13:52
フィールド1 フィールド2 あ 1個 . . となっています。 オブジェクトの新規作成でテーブルを新規に作成しました。
うむ。各フィールドはどういう意味を持っているのかなぁ。 データベースの目的がわからないしこれではなんとも言えない。。。 テーブルをどうやって作りました?どのフィールドが主キー担っているのですか? このスレで解決するのは時間がかかりそうだし、それ系のサイトをめぐって見られてはいかがでしょ。 へててぺ://www.acc.gr.jp/kb/index.shtml へててぺ://www.people.or.jp/~Niki/ ここでやるなら他の方の参考にならなければいけないんだろうし。どうなんでしょ?<ALL
76 :
ZIP :2000/11/09(木) 09:12
はじめましてZipともうすます。 質問です。 例えばXというテーブルに下記データがあります。 主キーの設定は無し、会社名+支店はインデックス(重複あり)の設定をしています 会社 支店 最終売上日 A 01 20001009 B 01 20000605 データをインポートし下記のような結果になった場合に(別サーバーからテキスト抽出したものをインポート) 会社 支店 最終売上日 A 01 20001009 A 01 20001110 ←インポートされたデータ B 01 20000605 インポートした際にA 01 20001009のデータを削除又は売上日のみ更新をしたいのですが どうしたらよろしいのでしょうか。
77 :
ZIP :2000/11/09(木) 09:13
◎76の付けたし よろしくお願いします。
78 :
>74 :2000/11/09(木) 18:16
遅レス&既に解決済みかもしれんが。。。 1.レポートのデザインで、フィールド1のグループフッターを設ける。 2.グループフッターのプロパティを開く。 3.書式タグ->改ページ項目を「カレント セクションの後」に設定する。 4.「詳細」以外(ヘッダー&フッター)の余白を詰める。 5.保存 これで、目的のレポートを出力できる。 4.を省略すると1枚目とそれ以降のページの印字位置が 異なったり、最後に白紙が余計に出てくるので。。。
>78 解決していませんでしたが78の方法で解決しました。 ありがとうございました。
80 :
名無しさん@そうだ選挙にいこう :2000/11/14(火) 20:04
エクセルのシートのデータの一部を簡単に(コピペ並に)Accessのテーブル に移す方法って無いですか?CSVのエクスポート・インポートを繰り返すの に疲れました。
81 :
名無しさん@そうだ選挙にいこう :2000/11/14(火) 22:10
レポートのラベルで均等割付を使って文字が全部重なって しまうことってありませんか?特にプリンタを変えたとき。 いったん均等割付を解除してやり直しても直りません。 良い対策はないでしょうか。
82 :
名無しさん@そうだ選挙にいこう :2000/11/16(木) 19:46
access2000を一度インストールしたのだが、理由があり access97に戻したいのですが、なんか 2000 uninstall->97 インストールでは正しくインストールしてくれないようです。 (起動してくれない) 誰か解決策を教えてくれませんか? (97と2000の同居方法でもいいですが)
83 :
ウェブ太郎 :2000/11/16(木) 21:20
MSDE を利用しています。フォームを使わずに、データシートビューである程度の入力・更新が出来るようにしたいと考えています。(特に更新の場合は、一覧を見ながら更新出来ると便利ですので。) 商品テーブルと販売テーブルがあり、販売テーブルにレコードを追加する際には商品テーブルから選択して追加します。(例です。) MDB ファイルの場合は、データシートビューに相当する画面でリストボックスを用いて、商品テーブルから選択するように出来ます。MSDE でこれに相当する方法が分かりません。 MDB ではテーブルのデザインビューのルックアップのタブで、リストボックス等の設定が出来て上のようなことが実現出来るのですが、MSDE では同様の設定はないのでしょうか? よろしくお願いします。
84 :
une :2000/11/17(金) 08:20
>82 それ私もやってしまいました。2000を入れると97のJETを消してしまうようで、97はJETが無いと動かないんじゃ ないかと思います。オフィス2000を全部アンインストしても直りません。ウィンドウズのDBシステム自体を書き換えて しまっていますから。 アクセス97を残して2000を入れることでしか両方を起動できるようにしておく方法はないと思いますが・・・。 もっと詳しい方のレス求む。
85 :
名無しさん@そうだ選挙にいこう :2000/11/17(金) 19:45
>80
できます。文字では説明しにくいし、どういう形式のデータを
インポートさせているかわからないし、
元のExcel側の表がどんな風になっているかもわからないので
本屋で立ち読みor購入して勉強して下さい。
ところでなんで、わざわざcsvにしてからインポートするの?
Excel形式のままでもインポートできるのに。
>82・84
順番としては、97がインストールされている環境に
別フォルダに後から2000を入れなければいけません。
その順番が逆ではダメです。
[OFF2000] 同一 OS に複数のバージョンの Office をインストールした時の注意点
J055139
http://www.microsoft.com/JAPAN/support/kb/articles/J055/1/39.htm 既に逆にインストールしてしまった場合の解決策については
そこのページには載っていません。
個人ユーザのサイトも検索してみましたが、見つかりませんでした。
やはりOSから入れなおすしかないと思いますが・・・
86 :
名無しさん@そうだ選挙にいこう :2000/11/19(日) 00:12
すいません。1点どうしてもわからないことがあったので 教えてください。 Access2000で、レポート"A"を作成します。 その際、レポートを横向きに設定します。 そのデータベースでフォーム"B"を作ったとします。 その条件で、フォーム"B"のVbプロジェクトでエラーが 発生するとなぜか"A"のレポート設定がデフォルト状態 (この場合だと縦向き)にもどってしまいます。 どなたか、原因と解決方法が分かる方いませんか? よろしくお願いします。
仕様です。 修正パッチが出ているので当てときましょ。2,3ヶ月前の雑誌の付録CDなどにも入ってますよ。
88 :
名無しさん@そうだ選挙にいこう :2000/11/21(火) 01:06
>82 ACC2000アンインストール後インストールフォルダが残るので、こいつもフォルダごと削除してください。 その後、ACC97を再セットアップしてみては?? >83 フォームを使うしかありません。 フォームのコンボでルックアップし、フォーム自体はデータシート形式で設定します。
89 :
ウェブ太郎 :2000/11/21(火) 18:09
83 を書き込んだものです。ご解答ありがとうございます > 88 仕方がないので、アクセス・データベースで、「ファイル」>「外部データの取り込み」>「テーブルのリンク」の機能を使いました。 テーブルを作るのはアクセス・プロジェクトで、使うのはアクセス・データベースなので、使うものが 2 つに分かれて面倒ですが、仕方ないですね。
90 :
80 :2000/11/21(火) 22:26
>85 えーと、私ができたらいいなと思っているのは、すでにあるテーブルに、 データをあるフィールドのデータをExcelから貼り付けるということです。 例えば、 ID | F01 | F02 | F03 | F04 | 1 | 456 | 234 | 652 | | 2 | 764 | 749 | 345 | | : | : | : | : | | というテーブルのF04フィールドのデータをExcelから貼り付けるとか、 F02フィールドの100〜199レコードまでのデータをExcelからコピーして くるとか。Excelのデータを範囲指定してCtrlのドラッグで持ってくると レコードが追加されてしまいますよね。何かうまい手あるんでしょうか。
91 :
90 :2000/11/21(火) 22:29
うわ、ずれてる。すみません。
92 :
名無しさん@そうだ選挙にいこう :2000/11/22(水) 13:28
>90 こんな風な考え方は? Access テーブル Ttest (ID, f01, f02) IDは主キー(プライマリキー) インクリメンタルな数値型 その他のフィールドf01,f02のデータ型は適宜(テキスト、数値etc.) Excel ワークシート Book1 Sheet1 A,B,C セルA,B,Cは、各々テーブルTtestのID,f01,f02に対応 上記ExcelワークシートをAccessのリンクテーブルにする リンクテーブル Sheet1 F1,F2,F3 F1〜F3はワークシートのセルA,B,Cのリンクテーブル上での表記 追加、更新用のクエリーを作成する クエリー作成するうえでの条件として、セルAの値を用いて テーブルTtestに追加、更新する範囲を指定する 追加クエリー insert into Ttest (ID, f01, f02) select Sheet1.F1, Sheet1.F2, Sheet1.F3 from Sheet1 where Sheet1.F1 between [p1] and [p2]; 更新クエリー *ここではテーブルTtestのf01フィールドを対象とする update Sheet1 inner join Ttest on Sheet1.F1 = Ttest.ID set Ttest.f01 = Sheet1.F2 where Ttest.ID between [p1] and [p2]; ってな感じでVBA使わんでもクエリーでお茶を濁せそうだが。。。 制約として、Excel側のセルA(テーブルTtestのIDに対応)には 最低、なにかしらの値を用意しなきゃならんこと。 と、同時にユニークな値にしなきゃならんね。 ま、これは答えじゃなくて、考え方のひとつってことで。
93 :
名無しさん@そうだ選挙にいこう :2000/11/27(月) 09:14
んと、これが元ネタね。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 1 名前: ピーター 投稿日: 2000/11/26(日) 17:06 ども。アクセス2000で、レポート作成時の日付を英語で入れたいのですが 、うまくいきません。「=Now()」で日本語風の日付を入れられることは知ってます。 が、英語風(september,20,2000見たいな・・・)の表記ができないっぽいの ですが、ご存知の方はぜひお願いします。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− nowで得た値を format関数で整形すれば、望みのモノ得られます。はい。 format(now(), "mmm d yyyy") -> Nov 27 2000 format(now(), "mmmm d yyyy") -> November 27 2000 「書式」とかいった類のキーワードでヘルプファイルを検索 すれば、ひっかかりそうな気がするんですが。。。 って言うか、format関数のサンプルがそのものズバリ。 当方、Access97にて確認。 2kで同じかどうかは別の話。
94 :
名無しさん@そうだ選挙にいこう :2000/11/27(月) 10:49
Access 97 の話なんですが、Access のデータで HTML 作ってる人います? その場合、どのような手順をとってます? 僕の場合、エクスポートで吐き出されるのがただのテーブルなのが気に入らないので、 クエリで出力用データ選択 →テンプレートでとりあえずHTMLテーブルに落とす(スタティックHTML) →sedを使ってテーブルタグをタブ区切りレコードに変換、他の不要なタグを消す →得られたタブ区切りファイルからHTMLを生成 という遠回りをやってます。 グループを dt、個別データを dd にするとか細かい書式制御をやりたいからなんですが。 2000ならもっと融通きくんですかね。
95 :
94 :2000/11/27(月) 10:52
HTMLでなくCSVで出力しないのは、 ・ハイパーリンクで登録してるデータがありこれをそのまま使いたい ・マクロで極力自動化しているが、CSVに吐き出すための設定がわからない ためです。
>94 IIS(or PWS)+ASP+VBSで加工する。。。ってなると Accessそのものの範疇でなくなるか。 Accessの環境で閉じるんだったら、VBAでhtmlフォーマットに 整形しつつ、write # でファイルに書き出してしまうな。 自分だったらね。
97 :
ランタイム関係 :2000/11/27(月) 17:41
Access97なんですけど、
ODEでランタイム版のデータベースを作って、そのフォルダの中にある
Msaccess.exeで他のmdbを開くのってどうなんでしょうか?
最初に開くと「System.mdwを見つけることができませんでした」とい
うメッセージが出て、でも2回目以降は問題なかったのでそのまま運用
してたらmdbが壊れまくって。
System.mdwってセキュリティ関係のファイルではないんですかね?
あ、ちなみに
>>63 の忌み嫌う使い方してます(俺だって嫌だよ、、、)
98 :
名無しさん@そうだ選挙にいこう :2000/11/27(月) 18:34
>>95 コメントありがとうございます。
なるほど、VBA・・・そこまでやれますか。ちょっと勉強してみます。
>94 writeで書き出してます。CGIやSSIは良く知らないのですが、恐らく同じような形でやってるような気がします。 ただ、問題は同一ファイル名で書き出した場合に既に存在しているファイルが後から書き出されるファイルより サイズが大きいときに前のファイルのゴミが残ってしまいます。 それで前のファイルを消去してから書き出すようにはしています・・・。
100 :
名無しさん@そうだ選挙にいこう :2000/11/28(火) 13:10
初めて書き込みます。よろしくお願いします。 現在、ACCESS2000でを使って報告書のデータを保存するテーブルを作成 しているのですが、保存できるレコード数の制限はどれくらいなのでしょうか? オートナンバー型のカラム(報告書のIDとして用いる)を設けているのですが、 このカラムのデータ型(フィールドサイズ?)によって制限されると考えていいのでしょうか?
101 :
96 :2000/11/28(火) 13:18
>99
ごめん。write だと書き出した内容がcsv形式(?)になってしまうので
整形フォーマットで生のまま、書き出すんだったら print を使った方
がいいです。
あと、テーブルからハイパーリンク型のフィールドを読み出すと
データの内容が www.hoge.co.jp#
http://www.hoge.co.jp# の
形式になっているんで、分離する必要があります。
102 :
96 :2000/11/28(火) 13:31
AccessからHTMLファイルを吐き出すゴミなサンプル テーブル Turl (id, url, memo) [id,数値型][url,ハイパーリンク型][memo,テキスト] url項目には「www.hogehoge.xx.jp」の形式でデータを格納 フォームのボタンを押すとC:\にtest.htmlを書き出すVBAコード Dim db As Database Dim rs As Recordset Dim Sql_rd As String Dim Header, Footer, LineFeed, Out_Str As String Dim sep_val, cp_len As Integer Set db = CurrentDb LineFeed = Chr$(13) + Chr$(10) Header = "<html>" + LineFeed + "<body>" + LineFeed Footer = "</body>" + LineFeed + "</html>" + LineFeed Open "c:\test.html" For Output As #1 Print #1, Header Sql_rd = "select * from Turl;" Set rs = db.OpenRecordset(Sql_rd) Do Until rs.EOF sep_val = InStr(rs![url], "#") cp_len = Len(rs![url]) - (sep_val + 1) Out_Str = "<a href = " + Chr$(34) Out_Str = Out_Str & Mid(rs![url], sep_val + 1, cp_len) + Chr$(34) + ">" Out_Str = Out_Str & Left(rs![url], sep_val - 1) + "</a><br>" + LineFeed Print #1, Out_Str rs.MoveNext Loop rs.Close Print #1, Footer Close #1 これで、アンカーを含む最低限のhtmlファイルを吐き出せる ので、あとは必要に応じて膨らませていくだけ。。。
103 :
名無しさん@そうだ選挙にいこう :2000/11/28(火) 14:31
>97 >ODEでランタイム版のデータベースを作って、そのフォルダの中にある >Msaccess.exeで他のmdbを開くのってどうなんでしょうか? それは問題ないのでは? system.mdwのエラーは、開こうとしているmdbファイルが置かれている ディレクトリ(フォルダ)にsystem.mdwファイルを置いてみては? 自分は、こうして逃げてますけど。 batファイルで c:\program files\app\msaccess.exe d:\db\xxx.mdb /runtime /compact なんてのを動かす際に、「mdwが見つからない」ってエラーが出たので d:\dbにsystem.mdwをc:\program files\appからコピーして、更に batファイルのプロパティ->作業フォルダの項目にd:\dbを指定したら おさまりました。
104 :
103 :2000/11/28(火) 14:55
続き。 system.mdwは、それに登録されているユーザと、そのユーザ毎に 設定されたオブジェクト(フォーム、レポート、テーブル etc.)の 使用権限を管理しているだけでしょ。 個別にユーザ登録したり、権限を設定していない場合は、そのmdw ファイルが対象とするmdbファイルの作成者のデフォルトが適用 されるんじゃないですかね? んで、mdbファイルが開かれている時のアクセス制御(排他制御?)は mdwファイルではなくて、ldbファイルの方で見ていると。。。 mdbファイルの破損とmdwファイルの存在有無が、直接に結びつく ようには感じられないんですな。
105 :
103 :2000/11/28(火) 15:14
で、ここらへんに目を通してます? 「Microsoft Jetデータベースエンジン プログラマ−ズガイド」 セカンドエディション Jet3.5対応 アスキー出版局 \8,500- これにも、ODE添付のAccess97開発者向けマニュアルにも、 mdbファイルを共有環境下で使用する場合は、mdbをプログラム用と データ用に分けるように推奨しているんですが、その様にしても 駄目なんですかね。
106 :
名無しさん@そうだ選挙にいこう :2000/11/28(火) 16:12
>100 当方、Access97ですがヘルプで「Accessの定義」をキーワードに 検索かけるとデータベース、テーブルの仕様が確認できたんですが、 2000には、そのような項目ありませんか? レコード数に関しては無制限のような気がしますが。。。 mdbの総容量=< 1Gbyteの範囲内ならば、いくらでもってとこですか。 ちなみにオートナンバー型はLongで換算すると約42憶。
107 :
97ランタイム関係 :2000/11/29(水) 12:10
103殿、いろいろありがとうございます。 怒らないで聞いてください 破損は全く別の原因でした。ユーザーがランタイム環境で修復/最適化をするバッチファイルを実行していたからでした。 まだしばらく様子を見てみないとなんともいえないのですが。 ごめんなさい。 mdwファイルについてありがとうございました。 とりあえず、必ずショートカットから起動させるようにして、 ローカルのmdwがあるフォルダをショートカットの作業フォルダに指定しました。 >mdbをプログラム用と データ用に分けるように推奨しているんですが、 これもやったんです最初に でも、検索とかのパフォーマンスが悪かったので仕方なくファイル共有にしています。 私が作ったものではないので必要以上にいじると作り直しということになってしまう。 バグ取りだけこそこそとやっています。 >「Microsoft Jetデータベースエンジン プログラマ−ズガイド」 今度探してみます。 どうもありがとうございました。
108 :
名無しさん@そうだ選挙にいこう :2000/11/30(木) 08:01
>>106 補足っす。
ACESS2000はmdbの最大サイズは2GBです。
もっともUNICODE対応した関係で倍になっただけで、格納できるデータ量はかわりませんが。
109 :
Excelへ書き出し :2000/12/02(土) 18:59
書式が決まっているExcelシートに、Accessのデータを 流し込むことができずに苦労しています。 たとえば、元々存在するC:\hoge\hoge.xlsの中の hoge1というワークシートの特定のセルに、 クエリーの値を埋め込む、というのは可能なのでしょうか? アドバイスをお願いします!
110 :
94,95,98 :2000/12/03(日) 15:33
>>94 でHTML出力について質問した者です。
>>99 >>101 >>102 でもコメントいただいて本当にありがとうございました。
102 のコードを参考にファイル出力できるようになりました。
すっかり VBA コーディングがおもしろくて、どっぷりはまりこんでいます。
凝れば、どんな HTML コンテンツでも Access だけで管理するなんてことが
できそうですね。そこまでやるのだったら、2000 で XML 対応になった
SQL Server を検討した方がいい気もしますけど。
111 :
名無しさん@そうだ選挙にいこう :2000/12/03(日) 19:40
112 :
109 :2000/12/04(月) 12:22
>>111 どうもありがとうございます。
参考にさせていただきます。
113 :
名無しさん@そうだ選挙にいこう :2000/12/05(火) 18:24
質問です。会社のPC(Office2000 Premium)でAccess2000の関数EDATE,EOMONTHを 使おうとしたらその部分の機能がインストールされていないとのメッセージが出現。 何の疑いも無くOfficeの該当部分(というか残り全部)を追加インストール。 で、Excelはツール→アドイン→分析ツール を追加して問題なく使用できたのですが、 Access2000の方は#Name?エラーが出てしまいます。どうしたら使えるようになりますか? 初歩的な質問で板を汚してしまい、申し訳ありません。宜しくお願いします。
114 :
名無しさん@そうだ選挙にいこう :2000/12/06(水) 01:26
> Access2000の関数EDATE,EOMONTHを使おうとしたら そんな関数ないと思う。ExcelにあるからといってAccessにもある というわけではない。
115 :
名無しさん@そうだ選挙にいこう :2000/12/06(水) 08:53
114さんに同意。 つぅか、EDATE,EOMONTHでヘルプひくとワークシート関数って 表示されてません?
116 :
名無しさん@そうだ選挙にいこう :2000/12/06(水) 11:23
>114さん,115さん ご回答、感謝します!! なるほど、そもそもAccessでは使えないというわけですか。 ヘルプを見ても何だか的を射ないことばかりで、「何故使えないのか」その理由は 得られず仕舞いでした。(もっとも、コマンドリファレンスなんだから当然と言えば 当然なのでしょうけど) つまり、ワークシート関数とは文字通りExcel用の関数であり、Accessには適用されない、 と理解して宜しいのですね?
117 :
114 :2000/12/07(木) 00:48
>116さん ExcelとAccessの関数は全く別物と考えた方がこの先幸せになるだろうと思う。 DayとかMonthなどのように同一の働きをするものもあるけれど、それはたまた まそうなんだと考えよう。 EDATE、EMONTHはAccessではDateAddかな。
118 :
名無しさん@そうだ選挙にいこう :2000/12/08(金) 08:34
あげ
119 :
>116 :2000/12/08(金) 23:37
VBAのメニューで「ツール」→「参照設定」で、Microsoft Excel 9.0 Object Libraryにチェックすると、 Excel.Application.[なんかの関数] ってぐあいにexcelの一部の関数が使えるようになる。 edate、emonthなんかは、evaluateを活用してもだめみたい。
120 :
もけこ :2000/12/13(水) 00:50
質問です。お願いします。 今フォームを作っているのですが、コンボボックスで、複数の値から選択する ようにできますよね。それを、複数の値から複数を選択できるように したいのです。チェックボックスか何かで。 教本にもヘルプにも載っていませんでしたが、できるのでしょうか? ファイルメーカーだと、コンボボックスとほぼ同じ作り方で、 値一覧を作って、それぞれの値にチェックボックスをつけてできるんですけど。 で、1つのフィールドに、コンマ区切りか何かで選択したものが全部入ります。 わかりにくくてすいません。
121 :
名無しさん@1周年 :2000/12/14(木) 01:51
自分は特許庁のweb電子図書館から特許情報を検索する仕事を任されたの ですが、あまりに膨大な量なのでデータベースで管理したいと思ってます。 そこで、アクセスで特許情報を管理するための、サードパーティ製の アドオンソフトや、マクロ集、コンポーネント集みたいな物は存在しますか? 実はアクセスをこれから購入する段階なので、自前で構築するには習熟する 時間がありません。もしアクセス用でそのような製品があれば知りたいです。 もし無かった場合は特許情報専用のデータベースソフトを探すしかないです。 (そのような物があるかどうかわからないのですが、、) もしそれも無かった場合は、、、結局アクセスで自前で構築するしかないと 思うので、あらためてアドバイスいただきたいと思います。。。
122 :
名無しさん@そうだ選挙にいこう :2000/12/14(木) 05:36
>121 とりあえず、Googleとかで「特許情報 ソフト Windows」ぐらいで 探してみたら。色々でてくるよ。もしお望みのソフトがなくて自前 構築になるにしても、Accessを使うかどうかと云うのは仕様次第で しょ。まずAccessありきという発想は捨てたほうがよくないかな。
>121 あくまでもWEBから得た情報だけをデータベース化するんだよね?(この部分大事) --------------------------------------------- 【公開番号】特開平11−235200 【公開日】平成11年(1999)8月31日 【発明の名称】スクロースをベースとした疎水性生成 --------------------------------------------- こんなんだな なら10分くらいで雛形は作れるんじゃないか? 前に似たような仕事したことあるから息抜きに作ってみようか? まぁAccessが入ってるのが前提だけど会社のどっかにころがってるでしょ 興味があればメールを カネはいらないよ
124 :
121です :2000/12/16(土) 00:00
>>122 >>123 お返事どうもです。
実は自分が整理すべき特許情報は、見出しだけではなく、
出願者・権利者、要約と請求の範囲、詳細な内容とそれに付随する図まで、
全ての情報をHD上に多数蓄積して、その時々で分野別、業務別、登録日別
などに分類、整列、HD内検索などをするというかなり複雑なものです。
ただそれら全ての情報は、特許庁のページからHTML化された状態で
入手できるので(古い時代のは紙書類をスキャンしたままですが・・)
HTMLファイルのデータベース化とも考えられます。
また、アクセスでできないかと思ったのは、MSオフィスの新しい
バージョンを購入する前なので、どうせならプロ版にして、それに
付いてるアクセスを利用しようと思ったからです。特許情報専用の
データベースを別で購入するなら、スタンダード版にしときます。。
ただ、アクセスにしとけば、後で他のデータベースも構築したい時、
色々情報や文献などが豊富なので、便利かなあと。
一応、特許情報専用のソフトは色々あるようなのでそちらを調べて
みますが、アクセス用で何か良いのがありましたら、教えていただけ
れば幸いです。
125 :
ウェブ太郎 :2000/12/19(火) 11:21
ACCESS の MDB ファイルで 20 列 3,000 行程度の商品テーブルを管理しています。常時 3 〜 4 人でデータの入力を行っているのですが、一日に数回壊れてしまうそうで、強制的に修復させられるそうです。入力には ACCESS でテーブルを指定して「開く」をクリックした際の画面をインターフェイスとして用いています。 MSDE の利用も考えましたが、83 で質問させて頂いた点をはじめとし、MDB の方が便利なことが多いため、現在は MDB によりシステムを運用しています。 知り合いの技術者に聞いたところ、ACCESS を複数の人で使うとよく壊れるそうなのですが、そのようなものなのでしょうか?解決策等ありましたらご教示下さい。
>125 ひとつのMDBファイルを複数人で同時に共有さすなて どうしても複数のオペレータが同時に編集する必要があるなら MDBではムリやて
127 :
>125 :2000/12/19(火) 16:18
テーブルをそのままいじってるってこと? それは危なすぎ せめて、そのテーブルをもとにフォームを作って、 フォームから入力するようにする。 その際、フォームの連結フォームをローカルのmdbのテーブルに指定しておいて、 フォームの登録ボタンを押したタイミングでローカルmdbから共有mdbに書き込みに行くようにする感じ これも結構問題あるけど、今みたいな状況よりはましかと すげエ簡単に書いたので、分からなかったらまたレスくれ と、ここまで書いて83に「フォームを使わずに」って書いてあるな、、、U2山車
128 :
名無しさん@そうだ選挙にいこう :2000/12/24(日) 02:06
>125 そもそもJetエンジン自体がC/S向きではないからどーしようもないですね。 というのは、全部クライアントサイトで処理するから。 例えば3000件のデータから任意のデータを1件抽出させる作業を行った場合、 Jetはサーバー上の3000件の全データをクライアントに取り込み、クライアント側で抽出の処理をさせる。 こんな処理をマルチユーザで行えば、ネットワークのトラフィックはおのずと上がるし、 データ取り込み中にネットワークにトラブル起きたら、それこそ簡単に破損してしまう。 それに比べ、例えばMSDE+ADPにすれば、抽出処理などは全部サーバー側で行うことができる。 ネットワークに流れるのは抽出された1件だけ。 これだけみても、どっちがC/Sに向いているかわかるでしょ。
129 :
名無しさん@1周年 :2001/01/05(金) 11:46
質問です。 フォーム上にレコードの検索ボックス(?)みたいなのを 設置したいのですが・・・できますか??よろしくお願いいたします
130 :
名無しさん@1周年 :2001/01/05(金) 12:55
>129 大抵のことはできるけど、あなたには無理そう。。。 質問が厨房すぎるもの。
そうですよ。この板の人達から見たら僕はまだまだ厨房です。 認めます。検索ボックス、やればできないこともないんですね??
132 :
どきどき名無しさん :2001/01/05(金) 15:07
>>130 口が悪い。もっと言い様があるでしょ
>>129 既にフォーム作ってるなら、デザインモードでコンボボックス
あたり貼り付けて。やってみれば結構簡単。
133 :
130 :2001/01/06(土) 00:11
じゃあ少し親切に逝こうか?
まず
>>129 の言う検索ボックスって具体的にどんなイメージ?
フォームに検索条件を入力して、その条件を使ってテーブルから
レコードを抽出するなら、
@フォームにデザインモードでテキストボックスとボタンを配置
Aテキストボックスの内容を抽出条件に、テーブルからレコードを
抽出するパラメータクエリーを作成
Bフォーム上のボタンの「クリック時」のイベントにAのクエリー
を実行するマクロかプロシージャを割り当てる
さらに、予め選択肢のリストを用意しておいて、そのリストの中から
検索条件を選択することも出来るよ。
やり方は、上記@でテキストボックスの代わりにリストボックスか
コンボボックスを配置する。選択肢のリストは、予めテーブルor
クエリーで用意しておいても良いし、プロパティで設定することも
出来る。
簡単なのはリストボックスorコンボボックスのウィザードに従って
設定する方法だけど、アクセスの標準インストールではヘルプや利用
頻度の低いウィザードがインストールされないので、その場合は追加
インストールが必要。
また、検索条件入力用のボックスは、定型入力や入力規則のプロパ
ティを設定して、変な入力が出来ないようにする方が親切。
最後に、お薦めの本を2冊紹介
『ACCESSVBA初級プログラミング』『ACCESSVBA応用プログラミング』
谷尻かおり 技術評論社 各\2,780
がんばってね
>>129
134 :
130 :2001/01/09(火) 12:46
おーい、129どこ行った。 煽りには反応するのにマジレスしたらシカト?
135 :
名無しさん@そうだ選挙にいこう :2001/01/15(月) 04:46
初心者の質問ですみません。 例えば、現在のフォームの中で「住所」という名前のフィールドにアクセスする 場合は Me.住所 = "東京都新宿区…" で行けますよね。 では、 Dim field As String field = "住所" となっていた場合、変数「field」を使ってどのように目的のフィールドに アクセスすれば良いのでしょうか?
136 :
135 :2001/01/15(月) 09:49
お騒がせしてすみません。 自分で解決してしまいました。 Me(field) = "東京都新宿区…" で良かったです。
137 :
名無しさん@そうだ選挙にいこう :2001/01/15(月) 17:37
>>135 -136
フィールド名とコントロール名は別にしておいた方がいいよ。
エラー発生時の原因追求が楽になるから。
138 :
135 :2001/01/16(火) 16:12
139 :
名無しさん@そうだ選挙にいこう :2001/01/22(月) 21:58
SELECT hoge FROM table WHERE column="あいうえお"; というクエリーで column="アイウエオ" の時はヒットしないようにしたいのですが どのようなSQLにすれば良いのでしょうか?
sage
age
142 :
名無しさん@そうだ選挙にいこう :2001/01/27(土) 16:15
ソートする順番を任意に設定できる方法はありませんか? たとえば、 「経営、情報、システム、工学、福祉、ビジネス」 という6つのデータがあったとしてそれを 「情報、工学、システム、経営、福祉、ビジネス」 というような任意の順番に自動的に並べ変えたいのですがどうしたらいいでしょうか?
143 :
ちゅーぼー=オレ :2001/01/27(土) 16:32
>>142 フィールド1 フィールド2
1 情報
2 工学
3 システム
4 経営
5 福祉
6 ビジネス
というテーブルを作って、フィールド2でリレーションして、
フィールド1でソートすればいいのでは?
144 :
143 :2001/01/27(土) 16:33
へんな改行は無視してください。意味ないです。
145 :
名無しさん@そうだ選挙にいこう :2001/01/27(土) 19:05
もうちょい詳しくお願いします。ある程度の意味は分かったのですが、リレーションをしてからどうやってソートするかが分かりません。(リレーションシップの定義後テーブルをソートしても今までどおり何の変化もありません)
146 :
143 :2001/01/27(土) 19:17
>>145 クエリーで、上で新たに作ったテーブルのフィールド1を表示させてます?
147 :
名無しさん@そうだ選挙にいこう :2001/01/27(土) 19:42
Access2000のVBAで、文字列操作の動きがデタラメで 困っています。(Excelは問題ない) ?Replace("ァィゥェォャュョッ", "ッ", "ツ") ァツゥェォャュョツ ?Replace("ァィゥェォャュョッ", "ィ", "イ") ァイゥェォャュョイ ?iif("ィ"="ッ","同じ","違う") 同じ (最後の例はADPの現象でMDBでは問題ない) ボクのマシンが変なのかな?
148 :
143 :2001/01/27(土) 20:20
選択クエリーでやるんだと思って話してました。 選択クエリーのデザインの画面で、フィールド1の"並び替え"のところを 昇順か降順にしておけば自動的にソートされるので、このときは フィールド1を表示させなくても良くなります。 難しいこと分からないです。中途半端に話に乗ってすみません。
149 :
名無しさん@そうだ選挙にいこう :2001/01/27(土) 20:50
>>147 Replace()関数の第6引数をHelpで調べてみな。
150 :
147 :2001/01/27(土) 21:29
>149 どれを使っても期待通りにはなりません。 ?Replace("ァィゥェォャュョッ", "ィ", "イ", , vbUseCompareOption) ァィゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ィ", "イ", , vbBinaryCompare) ァィゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ィ", "イ", , vbTextCompare) ァイゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ィ", "イ", , vbDatabaseCompare) ァイゥェォャュョイ ?Replace("ァィゥェォャュョッ", "ッ", "ツ", , vbUseCompareOption) ァィゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ッ", "ツ", , vbBinaryCompare) ァィゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ッ", "ツ", , vbTextCompare) ァツゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ッ", "ツ", , vbDatabaseCompare) ァツゥェォャュョツ
151 :
147 :2001/01/27(土) 21:38
>149 すみません。 カンマの数が間違っていました。 お陰様でこの件は解決しました。 有り難うございます。 ?Replace("ァィゥェォャュョッ", "ィ", "イ",,, vbTextCompare) ァイゥェォャュョッ ?Replace("ァィゥェォャュョッ", "ッ", "ツ",,, vbTextCompare) ァィゥェォャュョツ
152 :
mk :2001/01/30(火) 14:34
すいません、どなたか教えてください。 アクセス97(お客様希望)で簡単なデータベースをつくり、 CD-Rに焼く、までの仕事なんですけど CDに焼くとプロパティが絶対「読みとり専用」になりますよね。 CDから起動するとそれでエラーになってフリーズしてしまうのです。 ハードディスクにコピーして…と思っていたのですが それは絶対だめといわれてしまいまして…困りました。 CDのほうはメーカーに聞いたところプロパティはいじれないそうで アクセスでエラーにならない方法しか残っていません。 なにか打開策ありますか? 助けてください。
153 :
名無しさん@そうだ選挙にいこう :2001/01/30(火) 16:37
>>152 無理。
Accessはmdbを読みに言ってデータ書き換えなくても
検索とかするだけでファイルは更新されている。
CD-R上にあったら何もできないでしょ。
お客の要望をよく聞いてネットワークやら他のリムーバブルメディアでの
代替案を提示すべし。
それが出来なきゃビジネスやる資格無し。
154 :
mk :2001/01/30(火) 18:08
やはりそうですか… 説得できない理由は間に1社はさまっているからなんです。 今の所は自己解凍形式でCDに焼くくらいしか方法思いつかないので 鬱です。
155 :
名無しさん@1周年 :2001/01/31(水) 14:44
Win98環境でAccess2000を使って顧客情報を登録する簡単なシステムを作成し、 その中で顧客データ入力用のフォームがあります。 フォーム上にコマンドボタンウィザードで、ボタンの動作が次のレコードへ移動 するように設定したボタン等があります。(進む、戻る、新規作成等のボタンあり) Win98,Win98SEでは問題無く動作しているのですが、WinME上で動作させると レコード移動等のボタンを2回続けて押すと、Access自体が終了してしまい ます。(特にメッセージは表示されません) 何か考えられる原因は、ありますでしょうか?
>154 153の言っていることが正論。 ひとつ補足しておくと、プロパティうんぬんの前に、LDBファイルが作成できないんだから、 CD-Rなどの書き込み不能メディアからの起動は、どうあがいても絶対に無理!!
157 :
名無しさん@そうだ選挙にいこう :2001/02/05(月) 02:09
155ですが、どうやらAccess自体の挙動がおかしかったです。 空のMDBファイルを作成して、ウインドウサイズを変更しようとしたり、 フォームをデザインで開こうとしたり、Ctrlキーを2回押したり等など、 するだけでAccessが終了する。 ???
158 :
名無しさん@そうだ選挙にいこう :2001/02/05(月) 13:36
155ですが、解決しました。 あれから調べてみると、他のOffice製品も挙動が変(FrontPage等も同じ現象発生) だったので、Office2000 Premiumを再インストールしても駄目。 よくよく見てみると、元々Office2000 Peasonal SR-1がインストールして あり、その上に更にOffice2000 Premiumをインストールしていた為に 挙動がおかしかった様です。 よって、Peasonal SR-1でインストールされているWordやExcelは全然問題 なくて、PremiumでインストールされたAccess等が挙動が変になっていました。 両方ともアンインストールした上で、Premiumだけインストールすると 正常に戻りました。 どうも、お騒がせしました。
159 :
名無しさん@そうだ選挙にいこう :2001/02/06(火) 02:16
>>152 OracleだかSQL Serverだかで、そんなことができた気がする。
高いけど。
160 :
名無しさん@そうだ選挙にいこう :2001/02/08(木) 19:54
Access2000でDBFファイルをリンクさせたいのですが INDEXが複数設定してあります。 MDXファイルを設定しても、テーブルを開くと INDEXがありません。というエラーが発生し、 開くことができません。 またMDXファイル設定後、固有レコード識別 の選択が表示され、フィールド名が表示されるのですが、 1フィールドしか選択できません。 INFファイルの記述の変更とか必要なので しょうか?
161 :
初心者 :2001/02/15(木) 17:09
皆さん初めまして。ACCESS2000を勉強中の 学生です。 初心者的質問なので恐縮なのですが… 例えば、PC販売の代理店で、 1、PC購入者のデータ(住所氏名連絡方法備考など) 2、1の購入したPCのスペック(細かく) 3、1の購入した周辺機器の一覧(細かく) 4、分割払いの場合のローンの詳細 顧客1人あたり大きく分けて↑の4つ、細かく分けて 数十項目のデータを扱うとします。 (住所、氏名などの欄、テキストボックスを 数十個作るという意味です。) そして、この数十個の項目を1人分全て1ページに表示して 印刷したかったのですが、重くて表示すらままなりません。 私の取った方法は、フォームプロパティでデザインから入り ひたすらテキストボックスを詰め込んでいき、あとからテーブル プロパティをいじって完成させました。 テーブルは1個だけで、クエリはまだ使用してません。 何が悪いのかが分からないので弱っています。 どなたか、御教授下さいませんか。
162 :
匿名希望さん :2001/02/15(木) 17:14
yy/mm/ddのままのデータだと2001年をクエリーに抽出するときにおかしくなるので mm/dd/yyに変換したいのですがやり方がわからないです。 おしえてください。
163 :
名無しさん@そうだ選挙にいこう :2001/02/15(木) 18:09
164 :
名無しさん@そうだ選挙にいこう :2001/02/15(木) 18:14
設計が悪い。
RDBの考え方だったら、少なくとも1,2+3,4は別々のテーブルにして、
リレーションでつなぐ。
>>161 例えば1が複数PCを購入したら2のレコードが複数になって、でも1の
住所が同じだったらその分重複データができて無駄だし重くなる。
165 :
名無しさん@そうだ選挙にいこう :2001/02/15(木) 18:49
>>161 >そして、この数十個の項目を1人分全て1ページに表示して
>印刷したかったのですが、重くて表示すらままなりません。
テーブルを細かく分けたとしても、どっちにしろ一つのフォームに
数十個も入れたら重くなるんじゃあ?
つーか印刷したいんだったらレポート作ろうよ。
167 :
名無しさん@そうだ選挙にいこう :2001/02/16(金) 21:23
>>161 まず、「正規化」について勉強しなさい。
168 :
リゾット :2001/02/16(金) 23:47
こんにちは。Accessの勉強を始めた学生です。 ひとつ引っかかっているところがあるので教えてください。 現在選択しているレコードナンバーを引数として得る方法を知りたいのですが、 極力簡単な方法をお願いします。 一覧表示されているデータがあって、そこから単票形式のフォームを表示 させるようにしているのですが、単票フォームにも「レコードの移動」ボタンを つけて移動できるようにしたいのです。 どなたかお力を貸してください。
169 :
名無しさん@そうだ選挙にいこう :2001/02/17(土) 09:21
私はそういう場合は主キーなどのレコードが一意で識別できるフィー ルドの値を利用する。もし主キーがないとしたら、テーブル設計がお かしいと考えた方がよいかもしれない。 ところで、単票フォームのレコード移動ボタンでレコードナンバーを どのように使うのだろうか。単票フォーム自体にもレコード一覧を用 意するのかな? だったら上に述べた通り主キーで代用できる。単に 前後へ移動したいなら Docmd.GoToRecord でよいと思う。移動後に また戻ってきたいという場合は Bookmark というのを使うと聞いた ことがある(が、私は使ったことがないので説明できない)。
170 :
リゾット :2001/02/17(土) 10:52
主キーをオートナンバー型にしています。 そのまま利用していれば主キーをレコードNoとして利用できますが、 一度でもレコードの削除をするとオートナンバーに欠番ができますよね。 そうすると、主キーをレコード番号とすると狂ってきちゃいます。 主キーを検索してそのレコードに移動してもいいんですが、それだと 処理が重くなってしまう気もしますし、スマートでない気がします。 オートナンバー使うからいかんのですかね(^^; どんどん新規に追加していくようなテーブルの場合、どうやって ID決めますか?オートナンバー以外でいい方法があれば教えてください(^^;
171 :
169 :2001/02/17(土) 16:20
>主キーを検索してそのレコードに移動してもいいんですが、それだと >処理が重くなってしまう気もしますし、スマートでない気がします。 一覧からの移動の場合はこれが普通じゃないのかな。特に重くはな いと思う。検索って言っても、リストボックスやコンボボックスで の一覧なら列幅=0で主キーもリストに潜ませておけばいいんだし、 サブフォームなら主キー用のコントロールを非表示にしておけばい いし。 IDの決定法、私は採番テーブルを用意する。新規レコード追加時 に(1)採番テーブルを読んでその値を新規レコードのIDに設定 (2)採番テーブルの値を+1、という方法。DMax+1やDCount+1 という人もいるね。仕様によって使えないこともあるけども。 レコードナンバーを使う方法が普通なのかな(私は使ったこ とがない…)。他の人の意見も聞きたい!
172 :
名無しさん@そうだ選挙にいこう :2001/02/17(土) 23:58
>>170 絶対的なレコード番号をあてにするのは初心者だよ。
Access のようなタイプのデータベースの場合、並べ替えやレコード削除などで
いくらだって変わり得る。
レコード番号なんて概念は忘れて、何でもいいからユニークなフィールドで
ひきなさい。
フィールドの設定で「重複なし」ってのができるから、ユニークに
するのは簡単。オートナンバーはそうなってると思うぞ。
173 :
名無しさん@そうだ選挙にいこう :2001/02/18(日) 00:02
>>170 絶対的なレコード番号をあてにするのは初心者だよ。
Access のようなタイプのデータベースの場合、並べ替えやレコード削除などで
いくらだって変わり得る。
レコード番号なんて概念は忘れて、何でもいいからユニークなフィールドでひきなさい。
フィールドの設定で「重複なし」ってのができるから、ユニークに
するのは簡単。オートナンバーはそうなってると思うぞ。
174 :
リゾット :2001/02/18(日) 10:59
痛い所を衝かれてしまいましたね(^^; 要するに、一覧表示から詳細画面を作るときなんかに詳細画面から また一覧に戻るのが大変なので詳細から「次レコードへ」移動する 処理をつけようと思ったのです。 オートナンバーがユニークなフィールドということは知ってます。 でも欠番があるのは困るんです(^^; リレーションを組んでいるのでナンバー振り直すわけにもいかんし。 処理も1系統じゃないから、そういった処理用にテーブルを設ける ようなこともできませんしね。 あと、レコード番号を知りたいのはこれを元にすべてを処理するという ことじゃなくて、単に一覧から詳細に移る際に該当する詳細画面を スマートに出す方法として知りたかったんですが・・・
175 :
名無しさん@そうだ選挙にいこう :2001/02/18(日) 11:35
172=173ではないけど.... つまり、詳細画面を開くときは... 一覧画面から、詳細画面を起動し、一覧画面を閉じる。 一覧画面に戻るときは... 詳細画面から、一覧画面を起動し、詳細画面を閉じる。 という操作そしているわけ? 一覧画面を起動したタイミングでは先頭レコードなので、 「レコードの移動」アクションでオフセット値を指定させるために「レコード番号」を取得したいってことかな。 もし、そうだとしたら、その処理自体がおかしい。 通常172=173さんが指摘しているとおり、ユニークな列でレコードを識別させるのが筋。 一覧画面は RecordsetClone + Bookmark の組み合わせでレコード移動させる。 そもそも詳細画面を開いたとき、一覧画面を閉じないのが一番楽だけど。 表示させたくないのならフォームのVisibleプロパティを操作する。 Accessは奥が深いので、小手先だけ見て作ると後で痛い目に遭うよ。 テーブルや主キーとかの設計はなおさら。 それでも、なおかつレコード番号を取得したいのなら、「CurrentRecord」プロパティを紹介する。 このプロパティは現在表示されているフォームのレコード番号を返す。 では。
176 :
リゾット :2001/02/18(日) 23:29
なるほど・・・勉強になります。 ただ、今回やりたい内容とは若干違うみたいです。 詳細から一覧に戻るときに元のレコード番号に戻りたいのではなくて、 詳細画面から次のNoの詳細画面に移動させたいんです。 いちいち一覧に戻って次のレコードを選択してまた詳細、というのが 大変なので、直接次のレコードへ移動できないかと・・・ 設計からすれば一覧に一度戻らせるのがスマートですし簡単ですが、 次のNoの内容を続けて編集するケースが多いんですよね・・・ この場合にいいアイディアがありましたら教えてください。 CurrentRecordプロパティを使う以外の良い方法があればお願いします。 なんだか根本的に考え方が間違ってる気もしますし(^^;
177 :
名無しさん@そうだ選挙にいこう :2001/02/19(月) 00:09
一覧から詳細(単票フォーム)を開くときはどういう方法を 使ってるの?
178 :
リゾット :2001/02/19(月) 00:41
現段階では、一意なレコード(オートナンバーによるID)で 全レコードから絞込みすることで一件だけ表示させています。 この方法では簡単に前後のIDに移動できないように思うので、 (IDに欠番ができる可能性があるし・・・) 全レコードで詳細を表示してその該当レコードに移動する、という 方法をとろうかと思っています。 その場合に現在選択されているレコード番号を取得することができれば 簡単に該当レコードを指定できるのではないかと思いまして(^^;
> 全レコードで詳細を表示してその該当レコードに移動する、という > 方法をとろうかと思っています 単票フォームで前後へ移動したい以上はその方法が妥当だと思います。その場 合、単票フォーム上での移動は DoCmd.GoToRecord で間に合うでしょう。帳票 フォームから単票フォームを開いたときの目的レコードへの移動は DoCmd.FindRecord でしょうか。単票フォーム側に主キーを格納するコントロ ールを用意しておく必要がありますが。 あとは帳票フォームから単票フォームを開くときに OpenArgs で主キーの値を 単票フォームに渡したりすればできるでしょう。開いた後に目的のレコードを 検索して移動、という手順を踏むことになります。
180 :
名無しさん@そうだ選挙にいこう :2001/02/19(月) 22:10
> 帳票フォームから単票フォームを開いたときの目的レコードへの移動は CurrentRecord でカレントレコードのレコードナンバーを取得して、 Docmd.GoToRecord ... acGoTo で offset にその値を指定してやれば えーんでないのかいという気がする。
181 :
リゾット :2001/02/19(月) 23:21
なるほど・・・やはりそういうことになりますよね。 あとは移動の方法としてユニークなテーブルを利用してFindRecordするか、 CurrentRecordで移動するかという方法の違いみたいですね。 レコード番号を採用しようとした理由は「サーチするのは処理が大変なのでは ないか」と思ってたからです。こういう関数があるのであれば楽チンですね。 ありがとうございました。ひとつ肩の荷が下りました(^^;
182 :
名無しさん@1周年 :2001/02/20(火) 01:44
183 :
ponta :2001/02/21(水) 02:35
Access2000でランタイムを使う方法を教えてください。 Office2000のデベロが必要ということで用意してもらったのですが、 そこからパッケージの作り方が分かりません。ヘルプにはアドインで 作るようなことが書いてありましたけど、できれば詳しい方法を 教えてくだされ。 また、そのときの注意点なども併せて。 「ランタイムなんて不安定だからやめとけ」というのは聞き飽きました。
184 :
名無しさん@そうだ選挙にいこう :2001/02/21(水) 13:34
最後の一文の書き方が気に食わないので教えなーい
185 :
名無しさん@そうだ選挙にいこう :2001/02/21(水) 18:43
Set wsp = DBEngine.Workspaces(0) wsp.BeginTrans DoCmd.RunSQL "insert XXXX" wsp.Rollback してもロールバックできなんやけど,rollback って Docmd.Runsql で 使えないんでしょうか? sql をロールバックする方法教えてください.
186 :
名無しさん@そうだ選挙にいこう :2001/02/22(木) 07:36
>>185 Docmd.Runsqlはトランザクションの管理下には入れられないよ。
DatabaseオブジェクトのExecuteメソッドでSQLを実行する必要あり。
CurrentDb.Execute "insert XXXX"
187 :
名無しさん@そうだ選挙にいこう :2001/02/22(木) 18:02
ありがとう >186
期待あげ!
189 :
グリーン :2001/02/26(月) 08:51
現在AC97を使っている者です これからAC2000も始めようと思っているんですが AC97の知識があればAC2000もスムーズに入っていけるものなんでしょうか? 例えばイベントプロシージャの書き方とか使うプログラムとかに大きな違いってあるんでしょうか。 漠然とした質問ですがAC97とAC2000の両方使ったことある方々 使ってみた感想等を教えて下さいませんか。m(__)m
190 :
名無しさん@そうだ確定申告に行こう :2001/02/26(月) 12:53
>189 ACCESS2000になって、標準のデータベースの参照方式が 「DAO」から「ADO」に変わりました。 この2つは相互に互換性がない為、97で書いた SET DB = CURRENTDB SET RS = DB.OpenRecordset〜 というような記述はそのままでは使えません。但し、追加セットアップ でちゃんとDAOもサポートさせる事ができるので、心配はいりません。 私は今更ADO覚えるのがメンドクサイのでDAOのまま。。。
191 :
名無しさん@そうだ選挙にいこう :2001/02/26(月) 21:12
ADOとDAOの参照設定の優先順位に注意せよ。下位のほうには DAO.とかADO.とかの接頭語をつける必要があるじょ。
>191 ADOの場合は、ADODB. だよね。
193 :
グリーン :2001/02/27(火) 00:43
190さん191さん192さん レスありがとうございます。 ADOとDAOの違いはよく分からないので,今NETで色々検索して見ています。 両方使ってみたらやはり上位バージョンだけあって 「これからはAC97よりAC2000だよなっ!」って感じに思えるんでしょうか。 思えたらいいんですが。。 使うときは両方を共有させて使うつもりなんですが、HDDの残りが少ないため HDD増設&ACCESS2000購入(どうせならデベロッパーを買ってみたいと思ってます) 等で出費がかなり掛かりそうで(´ヘ`)な気分なんですが とりあえずもう少ししたら始めようと思います。 どうもありがとう。
194 :
名無しさん@そうだ選挙にいこう :2001/02/27(火) 14:18
両方共有はドツボにはまるかも…
195 :
勉強中 :2001/03/06(火) 12:07
ACCESS2000で顧客データベースを作成中です。 顧客情報が1人あたり60項目位あって、それを4グループの テーブルに分けて(正規化)して作り始めています。 それを、フォームを作ってしまって入力の際にフォームから入力するように したいのですが、その設計の段階で疑問があります。 入力・印刷の際に出来れば一人分の情報をまとめて一画面に表示させ、 他の項目を参照しつつ入力していきたいのでフォームを1人分まとめて 1ページ60項目で作ってしまいたいのです。 一度勘違いしてテーブルをひとつのままで60項目作った際には 恐ろしく重くなりましたので4つに分けました。その際に正規化という概念を 知りましたし抽出・重複回避を考えて分ける意味は分かっているのですが、 フォームもテーブルと同じようにいくつかに分けて作るべきなのでしょうか? でないと何か不都合があるのでしょうか。 どなたか教えて下さい。
196 :
名無しさん@そうだ選挙にいこう :2001/03/06(火) 15:41
一番使いやすく作るのが正解
197 :
名無しさん@そうだ選挙にいこう :2001/03/06(火) 15:52
複数のテーブルからひとつのフォームに入れるの?
198 :
195 :2001/03/08(木) 16:58
済みません、判り辛くなってしまったので書き直します。 一人当たり60項目ある情報のデータベースを作りたい →テーブルは抽出・並べ替えのために4つに分けた →色々と使い道はあるけど、そのうちの一つとして… ⇒一人分の60項目を一遍に表示させたい。 以上です。 最後の行の目的は、 1、入力の際にやり易い 2、一人分の情報を参照する用途がある というものです。 どなたか教えてくださいませんか? 宜しくお願い致します。
199 :
名無しさん@そうだ選挙にいこう :2001/03/08(木) 17:27
4つにテーブルを分けたのがいいか悪いかは別にして すべての項目があるクエリーを作ってそれでフォームを作ればいいんでない?
200 :
名無しさん@そうだ選挙にいこう :2001/03/09(金) 06:15
ACCESS97だけがインストールされているマシンで ACCESS2000で作ったランタイム版のデータベースを 使うことは出来るんでしょうか? ACCESS2000はインストール出来ないパソコン(ACCESS97インストール済み)で ACCESS97で作ったデータベースとACCESS2000で作ったデータベースの両方を 使用したいためなんですが。 どなたかご教授下さい。
201 :
名無しさん@1周年 :2001/03/09(金) 09:53
正規化の概念を知ってテーブルを4つに分けた・・・とあるが、 その4つのテーブルが実際にどうなってるのかが知りたい。 ひとつは顧客コードをユニークキーにしてる顧客マスター的な テーブルであろうことは想像できるが・・・
202 :
ゾッド :2001/03/09(金) 19:18
こんにちは、ひとつ教えてください。 フォーム上の操作でフォントを変更して印刷することを考えています。 たとえば、あるフォーム(フォント名選択フォーム)で指定したフォント名を あるテーブル(フォント選択テーブル)に格納しているのですが、 これをどのように利用してフォント名として利用すべきか迷っています。 不可視の状態で常に開いているメインフォームの一部に(フォント選択テーブル)を サブフォームとして埋め込んでおき、そこから参照させてプロパティの フォント部に入れようとしたのですが、うまくいきません。 メモリエラーとか、一般保護違反が出てしまいます。 もしくはテーブルに保存してあるデータを引き出すにはよりよい方法が あるのでしょうか。モジュールから呼び出して設定すべき、とか・・・ これを利用していろいろな書体で印刷できるようにしたいのです。 よろしくお願いします。
いろんな書体で印刷できる必然性がどれだけあるのかをよく考 えた方がよいと思う。投入する作業時間にみあうメリットはあ るのかしら。ワードに吐き出して後は手作業とか、まえもって 書体別にレポートを用意しておいて印刷時に選ぶとか、代替案 もあるだろうし。
204 :
ゾッド :2001/03/10(土) 23:57
ちなみにサブフォーム以外にdlookupを使う方法も試したのですが やはりうまくいきませんです。
205 :
名無しさん@そうだ選挙にいこう :2001/03/11(日) 00:33
問題は一つずつ切り分けよう。サブフォームとかDLookupの前に、 そもそもフォントの変更はできるのか? モジュールで直接フォ ントを入れてみるとどうなる? コントロール.FontName = "MS明朝" とか。これができたらサ ブフォームなりなんなりから目的のフォント名を取得できるかど うかを確認。これができたら両者を組み合わせる。
206 :
名無しさん@HOME :2001/03/11(日) 11:46
へぇー、いいスレじゃん!
207 :
名無しさん@1周年 :2001/03/12(月) 09:28
P明朝とかPゴシックとかが切り替え可能だったとして、 特定帳票の特定項目で特定フォント使用時に 印字幅が足りなくなったりとか・・・ 出来る出来ない以前に、いろいろと副次的な問題を 招きやすい設計だと思うぞ。
208 :
ゾッド :2001/03/12(月) 16:48
なるほど・・・確かにフォントによって幅が違いますから 印刷物の保証が難しくなりますよね・・・ そりゃそうです(笑 システムを考え直すことにします。 便乗でもう一つ質問なんですが・・・ 1999/02/10、のような日付のフィールドがあって、クエリーで このフィールドに抽出条件をつけようとしています。 あるフォームに開始、終了日付を入力させるフォームをつくり、 その非連結のテキストボックスを参照してBetweenで範囲指定するように 考えているんですが、うまくいきません。0個の抽出になってしまいます。 ちなみにBetweenに直接日付を指定するとうまくいきます(あたりまえか) 参照方法も間違ってないと思うんですが・・・ ひとつ気になっているのは、テキストボックスに日付型のデータを どうやって入力させるか、ということです。 入力規則を日付型にして、既定値に「1999/01/01」としてみたら、 表示されるものが「1999/__/__」となってしまいます。 どうやら既定値を割り算してしまっているようです。 どのように指定すべきなんでしょうか。教えて下さい。
209 :
名無しさん@そうだ選挙にいこう :2001/03/12(月) 18:49
・書式を「日付(S)」にして ・規定値を「="1999/01/01"」もしくは「=#1999/01/01#」にして ・入力規則に何も入れない もし日付の入力範囲が限定できるならば ・書式は無しで ・規定値を「="1999/01/01"」もしくは「=#1999/01/01#」にして ・入力規則を「>=#1998/01/01# And <#2000/01/01#」とかにする
210 :
名無しさん@そうだ選挙にいこう :2001/03/13(火) 21:55
はじめまして。ちょっとスレの趣旨と違うかもしれませんが、質問させてください。 今学生で、ACCESSを勉強しようと思っているのですが、 友人から絶対ファイルメーカーの方がいい、と、進められました。 ちょっと調べただけなのですが、簡単そうなスクリプトエディタ(のようなもの)や、 ネットワーク上での利用の柔軟(っぽい)なところから、ファイルメーカーのほうが 使いやすそう、とっつきやすそうな気がしてきました。 で、実際両方使ってみた方がいましたら、違いはどうか、使い心地、 実際にこれから学んでおくならどちらを進めるかなど(あいまいですいません) 教えていただけませんでしょうか。 また、やはり企業内での使用率は圧倒的にACCESSなのでしょうか (ORACLE、SQL Serverはおいといて) 長文失礼。
211 :
名無しさん@そうだ選挙にいこう :2001/03/13(火) 23:13
>>210 個人的に必要で FileMaker 4 と Access 97 両方評価したことが
あるんですが、僕の用途では次の点が大きな違いでした。
・FileMaker: 1ファイル1テーブル
・Access: 1ファイルで複数テーブル管理
データの性質上たくさんテーブルを作ってりレーションをかける
必要があったので、ファイル名を変えたりするとリレーションが
切れる可能性のある FileMaker より Access の方がいいかもと
選びました。
最新バージョンでも同じだと思うけど。
こういう選択もあるってことで。
212 :
名無しさん@そうだ選挙にいこう :2001/03/14(水) 00:36
>>210 業務上 二つともさわったことがあるけれど、
Access95・97・2000を先に使っていたので
FileMaker 4 がどーも 不便で使いにくくて・・・・
どこが?と聞かれてもちゃんとは答えられない程
FileMakerはあまりさわったことが無いのですけれどもね。
企業内の使用率は、勝手にAccessの方が高いと思っていますが、
業界・職場にもよるのではないでしょうか。
先にFileMakerを使っていた人にしてみれば、自分とは逆に
Accessが使いにくいってことで、FileMakerでDBを構築して
運用しているかもしれない。
(両方ある 恵まれた?職場で、実際にそういう人はいた。)
そんな部署に行ったら、カスタマイズするのも参考にするのも
FileMakerになってしまうかもしれない。
ぐたぐた書いてしまいましたが、結論としては やっぱりAccessを
お勧めします。
理由:シェアが高いと思われる。
Accessの方が「できること」が多かったような気がする。
213 :
ゾッド :2001/03/14(水) 00:48
ありがとうございます。書式設定せなあかんかったんですね(^^; そして、規定値には”もしくは#ですか・・・勉強になります。 ところで、西暦4桁表示をさせたいのですがうまくいきません。 書式の中に西暦できちんと表示できるものないですよね・・・ 手で入力するときにはちゃんと上二桁が認識されていると思うんですが 規定値で4桁をいれたときにどうもうまく認識できていないようでした。 あと、各テキストボックス毎に「年」「月」「日」というような 分割入力をしようかとも考えているんですが、そういう場合には どのように範囲指定をすればよいのでしょうか。
214 :
名無しさん@そうだ選挙にいこう :2001/03/14(水) 01:17
書式は yyyy/mm/dd ではどうですか(""とかで括らない)。 「書式(S)」とかはコントロールパネルでの設定値に左右さ れたような気がします。 「年」「月」「日」のテキストボックスから合成した日付を 格納する非表示のテキストボックスを用意しておき、クエリ ではそちらを参照するとか。クエリ実行の前に日付として正 当かどうかをチェックする必要がありますが。
215 :
210 :2001/03/14(水) 15:01
>>211 ,212
ありがとうございます。参考になります。
とりあえず、ACCESSをはじめることにしようと思いますが、
もうひとつだけ質問させてください。
FMに、リストからコマンドを選んでスクリプトを間単に作成できる機能がありますが、
ACCESSでも同じような機能は装備されているんでしょうか。
それとも、VBSで書いていくことになるんでしょうか。
VBの経験がないので、ちょっと不安なんですが・・・
216 :
212 :2001/03/14(水) 19:03
>>210 FMでは、スクリプトまでは作成したことが無いので
そっちの方はわからないけど、
Accessでは、ある程度のものなら
「マクロ」でプルダウンリストから選択しながら自動処理の作成はできます。
ちょっと凝ったものになると、モジュール(VB)。
自分は、モジュールめったに使った事が無いので、
初級者向け本に書いてあることしかできないけど、
「マクロ」だけでも、それなりにいろんなことが出来るよ。
217 :
212 :2001/03/14(水) 19:10
216 で、 >210をいれちゃったけど、 見てわかるとは思いますが 210宛てへの、215への返信です。
218 :
名無しさん@そうだ選挙にいこう :2001/03/14(水) 20:56
Accessでマクロを使うならFileMakerのスクリプトの方がいい しテーブルの設定が簡単 素人に間口が広いのはFileMaker VBAを使うならAccess
219 :
210 :2001/03/14(水) 21:40
>>216 ,218
結局、とっつきやすいのがファイルメーカー、
いろいろやりだすと使えるのはACCESS、
って感じでしょうか。
まだしばらく時間もあることですし、ACCESSはじめることにします。
同時進行でVBもやってみます。
ありがとうございました。
220 :
名無しさん@そうだ選挙にいこう :2001/03/15(木) 00:33
VBとVBAは似てるけど違うじょ。Accessさえ使えればいいというので あれば、VBAだけやればいいと思うじょ。コントロール名とコントロ ールソース名を明確に区別するのがコツだじょ。
221 :
名無しさん@そうだ選挙にいこう :2001/03/15(木) 02:15
アクセス97で終了時に最適化するには、 マクロどう組めばいいですか? モジュールのほうがいいですか? スマートでいい方法があれば教えてください。 それと、フォームのデザインでfor nextとか使って グラデーションを書きたいけどいい方法ありますか? あとグラデーションをtimerとかで伸ばすにはどう書けばいいでしょうか? 本体の機能とは関係ないけど、見た目がいいと楽しいから…
222 :
名無しさん@1周年 :2001/03/15(木) 18:16
起動時にはAUTOEXECマクロがありますが 終了時には・・・なんかありましたっけ? というか「スマートでいい方法」を求めるなら 2000にバージョンアップ、の一択だと思います。
223 :
名無しさん@そうだ選挙にいこう :2001/03/15(木) 18:50
1.マクロで最適化は不可能(だと思う)。モジュールでは可能だけど 面倒だよ。有名どころの掲示板で過去ログを探せば必ず出てくる。 僕もバージョンアップが一番いいと思う。 2.終了時はフォームを閉じるときのイベントで代用するしかないかな。 3.グラデーションって具体的に何をどうしたいの。
224 :
ゾッド :2001/03/16(金) 18:35
たびたびお世話になってます(^^ いつもアイディアを戴いて心強く思っています。 今回は、必要条件の表示について、なのですが・・・ 例えば、ある商品があります。 この商品にはオプション品が付けられることになっています。 買う人はオプションを指定して購入します。 国内で販売する場合には「このオプションが必要!」と義務付けられているものが あります。 商品は輸入物なので、国内販売する場合にはオプションが国内対応かどうか チェックする必要があります。 これらの条件を元に、見積書を作りたいと思います。 問題はオプションの必要条件をどうチェックするかです。 プラン1:商品の型番を指定したときに必須オプションを先に表示してしまう。 これにより、入力する側が入力用紙を見ながらチェック&入力を行う。 プラン2:型番指定後、オプションリストの型番をすべて入力すると、 「国内販売に必要な***が装備されていません!!」と警告が出る。 仕組みを考えるとプラン1は簡単だと思います。 ただ、先方のイメージにはプラン2があるようで、これを実現させるとしたら どのような形でチェックをすればよいのでしょうか・・・想像つきません。 データ入力後に「必要条件リストをひとつずつ参照し、それと同じオプションが ついているかチェックする」というシーケンスを動かすんですよね? こういうのはモジュールで行うんでしょうか。 スマートな方法、よく使われている方法を教えてください。
225 :
ゾッド :2001/03/16(金) 23:48
よく考えたら不一致クエリ使えばいいんですね(^^;
226 :
名無しさん@そうだ選挙にいこう :2001/03/17(土) 01:11
>>223 グラデーションはフォームの背景とかにしようと…
それをtimerで動かしたりしたら見た目面白いと思ったからです。
変な質問ですんません。
227 :
名無しさん@そうだ選挙にいこう :2001/03/17(土) 01:29
フォームは単色か画像貼付かどちらかしかできないはず。だから、 グラデーション画像を用意しておいてそれをタイマーで貼りかえ ていくか、ボックスをいくつも貼り付けておいて色を変えていく ということになるかな。他のテキストボックスとかとの兼ね合い を考えると前者がいいかな。
228 :
名無しさん@そうだ選挙にいこう :2001/03/19(月) 17:17
すごく初心者的な質問です。 テーブルを2つ作ったとして、重複する項目(例えば顧客IDなど) を設けた場合、一つ目のテーブルにデータを入力すれば 二つ目の方にも自動的に同じデータが入るようにするには どうすれば良いのでしょうか。
229 :
名無しさん@そうだ選挙にいこう :2001/03/20(火) 17:40
■□注意■□注意■□注意■□注意■□注意■□注意■□注意■□ ▲無知だった人間が無知な人間に対しての知らせ▲ 後から書き込む人は隠れた過去ログを読んでノリではなく良く考え てから[E-mail]の空欄をsageと半角で入れてから書き込みましょう。 このスレッドはすでに価値のある情報がありません。 私のように無責任な人がヤジを入れて真面目な議論にならないから 別のスレッドを作ってください。ここで問われている真面目な議論 についてですが、別のスレッドを立てて話し合ったほうがいいです。 ■□注意■□注意■□注意■□注意■□注意■□注意■□注意■□
230 :
名無しさん@そうだ選挙にいこう :2001/03/24(土) 22:46
相談のって
231 :
名無しさん@そうだ選挙にいこう :2001/03/24(土) 23:41
のってあげる
232 :
名無しさん@そうだ選挙にいこう :2001/03/25(日) 20:45
どうしてもoならが臭いんです。
ACCESS初心者です。 えと、日付の範囲を指定してデータを抽出する クエリを使用し、そのデータに関する金額の合計を 表にしたレポートを作成しているのですが、 レポート作成時に指定した日付の範囲を、そのレポートに 表示したいのです(2001/2/21〜2001/3/20という風に)。 つまり、クエリで指定する >=[いつから] And <=[いつまで] をレポートに表示するにはどうしたらよいですか? どなたか、ご回答をよろしくお願いいたします。
234 :
名無しさん@そうだ選挙にいこう :2001/03/26(月) 20:44
235 :
名無しさん@そうだ選挙にいこう :2001/03/26(月) 22:37
237 :
ゾッド :2001/03/27(火) 13:21
>233 範囲指定する場合に値を直接書き込むのではなく、たとえばフォームの 非連結コントロールなどからデータを読み出すようにしておいたらいかがでしょうか。
あ
240 :
名無しさん@そうだ選挙にいこう :2001/03/31(土) 13:39
レポートで印刷する時、負のデータを「-1,234」ではなく、「Δ1,234」としたいのですが、 どうやればできるのでしょうか?書式をいろいろ試して見ましたが「-Δ1,234」となって しまいました。どなたか、私に愛の手を!!
241 :
名無しさん@1周年 :2001/03/31(土) 20:38
>>240 例えば
#,##0;"△"#,##0;0;"-"
とすると、
正の数= 1,234
負の数= △1,234
0= 0
Null(数字なし)= -
と表示できるはずですが・・・
242 :
名無しさん@1周年 :2001/03/31(土) 20:39
ちなみに、 #,##0;"△"#,##0;0;"-" はテキストボックスの「書式」プロパティに設定します。
243 :
240 :2001/03/31(土) 23:18
>>241 -242
なるほろ、テキストは""で囲むのね。ありがとうございました。
あなたの愛をひしひしと感じております。(*^o^*)
244 :
名無しさん@そうだ選挙にいこう :2001/04/01(日) 18:05
単票形式のレポートをツールバーの印刷ボタンで印刷すると、全部のレコードが印刷されます。 特定のレポートのみ印刷したい場合、ファイルメニューの印刷からレコード番号(ページ番号) を指定して印刷してやる必要があるのですが、プレビュー画面で見ているレコードのみ簡単に 印刷できるようにするには、どうすればいいのでしょうか?
245 :
名無しさん@そうだ選挙にいこう :2001/04/01(日) 18:11
テーブルのデータ型をルックアップウィザードの「値をここで指定する」にして たとえば「男」「女」と2項目設定しました。テーブルでデータを入力しようと するとセルの右端に▼が出て、「男」「女」を選べるのですが、フォームにした 時、▼が出てきません。フォームでどのように設定するとテーブルで指定した値が 選択できるようになりますか?
246 :
名無しさん@そうだ選挙にいこう :2001/04/01(日) 18:51
>>246 コンボボックスの使い方も分からない初心者なので、もっと勉強してきます。
248 :
名無しさん@そうだ選挙にいこう :2001/04/03(火) 10:14
コード 氏名 001 A 002 B コード 名前 001 A 003 C 2つのテーブルがあり、その中で名前が一致するレコードを抽出したいのです。 コード 名前 001 A テーブルでフィールド名が氏名と名前になっていますが統一したほうが良いですか? 不一致クエリの反対ができませんか?
249 :
名無しさん@そうだ選挙にいこう :2001/04/04(水) 00:14
>>248 単純にクエリー作って、等結合すればいいような気がするが。
すみません、教えてください。 レコードセットにクエリーをかける時、VBAでどのようにSQLを書けばよいのでしょうか。 テーブル1にA、B、Cというフィールドがあり、レコードセットの名前をrsとした場合、 rs.open "・・・Where((A=100) and (b=50))・・・",cn,adOpenStatic と記述し、 RecordCountが1以上だったらrsの中から (c=25) であるものを取り出したいのです。 よろしくお願いします。
すみません。質問を間違えました。 RecordCountが1以上だったら rs の中から Cの最大値を取り出したいのです。 Dmax関数を使うことも考えたのですが、フィールド名・ドメイン名を VBAの中でどう記述すればいいのかわからないのです。 どなたかご教授ください。お願いします。
>>249 回答ありがとう。
等結合は同じテーブルを1つのクエリで使いますよね?
2つのテーブルから等結合できますか?
DLookup関数って、テーブルやクエリーから抽出条件指定して抽出できるのです が、その時の抽出条件指定は1つの項目しか指定できないのでしょうか? 例)DLookup("NAME","USER","NAME ='鈴木'") ○ DLookup("NAME","USER","NAME ='鈴木' and AGE = 18") ×?
254 :
名無しさん@そうだ選挙にいこう :2001/04/06(金) 09:02
255 :
名無しさん@1周年 :2001/04/06(金) 11:13
すいません。この仕事について日が浅いので教えて下さい。 ACCESSのテーブルにファイルをインポートしたいのです。 しかし、ファイルはいつも同じディレクトリから拾ってこないんです。 Cドライブだったり、Aドライブだったりするわけです。 で、私アクティブXでファイル選択できるようにしたのですが、 客先のPCではXをインストールしてないので使用不可でした・・・。 アクティブXつかわないで、ファイル選択できるようになるものなのでしょうか?
手抜き Option Compare Database Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Public Function Openfile() As String Dim ofn As OPENFILENAME Dim rtn As Long With ofn .lStructSize = Len(ofn) .hwndOwner = Application.hWndAccessApp .lpstrFilter = "テキスト ファイル(*.txt)" & Chr(0) & "*.txt" & Chr(0) & "全てのファイル(*.*)" & Chr(0) & "*.*" .nFilterIndex = 2& .lpstrFile = "lpstrFile" & Chr(0) & Space$(246) .nMaxFile = 255& .lpstrFileTitle = Space$(256) .nMaxFileTitle = 255& .lpstrInitialDir = "C:\" .lpstrTitle = "ファイルを開く" .flags = OFN_EXPLORER End With rtn = GetOpenFileName(ofn) If rtn = 0 Then Openfile = "" Else Openfile = ofn.lpstrFile End If End Function
>>253 DLookUp("NAME","USER","NAME = 'ひろゆき' AND AGE = 26")
これでうちのPCじゃ全然問題ないけど。
私がよくやるのはクエリで表示されてないテーブルのデータを読み出すタイプだが、
今、デザインモードで表示しているテーブルを"HITO"とし
"HITO"には[namae][toshi]というフィールドがあるとする。
で、表示されていないUSERテーブルのNAMEフィールドを取り出したい場合
DLookup("NAME","USER","NAME=' & [namae] & " AND AGE=" & [toshi]) とする。
ちなみにVBAでは
str = DLookup("[NAME]", "[USER]", "[NAME] = " & [namae] & " AND [AGE] = " & [toshi])
>>251 ワークテーブル作ったほうが早い。
作業的にも、処理時間的にも。
>>257 本当ですか?!
まさしくそれをしたかったのですが、フォームがあってフォーム上にクエリー
(テーブルに対して抽出をかけたもの)が張りついており、そのクエリーに
対して2つの項目指定でVBAでDLookup関数で抽出した所、エラーが出て
上手くできませんでした。
もう一度、やってみます!!
260 :
名無しさん@1周年 :2001/04/09(月) 12:49
>256 256様。ソースまで書いて頂いてありがとうございました。 お礼が遅くなり、申し訳ありません。 無事取り込むことができました。感動です・・・
>>259 ヘルプでいいサンプルがあった。
VBA側でヘルプを開き「DCount 関数の使用例」というのを見てくれ。
フォームを使った事例も載ってる。
262 :
名無しさん@そうだ選挙にいこう :2001/04/12(木) 09:07
248です。
結合を3種類ためしてみたのですが
全ての組み合わせで巨大になっていきます。
>>248 のテーブルがあると
コード 氏名
001 A
001 A
002 B
002 B
となってしまいます。簡単な解決方法を教えてください。
>>257 あれから再チャレンジしてみた所、問題無く出来ました!
自分の中では同じ様にやっていたつもりなのですが、やっぱり
どこかコーディングミスをしていたんだと思います。
(今となっては分かりませんが...。)
ありがとうございました!
264 :
244 :2001/04/12(木) 11:12
>>244 ですが、どなたかレスいただけないでしょうか・・・
265 :
名無しさん@そうだ選挙にいこう :2001/04/12(木) 13:26
>>244 レポートプロパティのFILTERを使う
もしくはレポートのレコードソースをクエリにして
抽出条件をつける
266 :
:2001/04/13(金) 23:08
>>262 おいおい、それくらいはどんな本にも載ってるだろう。
クエリプロパティを開いて、[固有の値]ってやつを「はい」にするだけだ。
267 :
名無しさん@そうだ選挙にいこう :2001/04/16(月) 14:36
248です。 [固有の値] [固有のレコード] どちらも「はい」にしてみましたが。 グループ化で同じデータが表示されるのはなくなりましたが、結果は同じでした。
268 :
名無しさん@そうだ選挙にいこう :2001/04/17(火) 17:07
REPLACE関数が使えないんですけど、考えられる理由は??? 実行すると、未定義関数となってしまいます。
269 :
名無しさん@そうだ選挙にいこう :2001/04/17(火) 17:29
270 :
名無しさん@そうだ選挙にいこう :2001/04/17(火) 19:42
>> 269 はい。おしゃるとおりで・・・クエリー内部だとダメなんですね。 勉強不足でした。
271 :
名無しさん@そうだ選挙にいこう :2001/04/18(水) 03:17
>>248 複雑なことやりすぎてませんか?
単純に新規デザインビューで二つのテーブルを、
コード −− コード(用途によってこの結合は不要ですが)
氏名 −− 名前
とすればとりあえず、
>コード 名前
>001 A
となります。
272 :
名無しさん@そうだ選挙にいこう :2001/04/18(水) 11:05
>>271 248です。
メモ型または OLE オブジェクト型 (<名前>) のフィールドを結合することはできません。(Error 3118)
メモ型になっていました。
メモ型からtext型に変換できますか?
それとも最初からtext型でテーブル作ったほうが速いですか?
273 :
名無しさん@そうだ選挙にいこう :2001/04/18(水) 19:10
>>272 >メモ型からtext型に変換できますか?
テーブルのデザインでデータ型を変更すればよい。
保存時に警告が出るけど桁数がオーバーしなければ
正しく変換されると思う。
念のためMDBをバックアップしてからやってね。
274 :
名無しさん@そうだ選挙にいこう :2001/04/20(金) 11:07
クエリを実行すると 「レコードに検索キーが見つかりませんでした」 ってメッセージが出るんだけど原因はなんでしょうか? データシートビューで見るとちゃんとデータは 抽出されているんですが・・・・。
275 :
名無しさん@そうだ選挙にいこう :2001/04/20(金) 17:48
いいスレですね。 >274 何をどうしたいかもう少し詳しく。
rr二二二二二ニニニ--__、 r/r/l l r二二二二二二二二ニニ--_、 ,'ニ三| | l 川川r二三三三三二=====ヽ、 ,'二三三二川川川川川三三二二二=====ヽ ',二三;r'::::::::: ` ̄::::::ヽ二三三二=ヽ, ,'三=;/:::::::::: ::::::::`、二三三=ヽ, ;三=;;l:::::::::: :::::l三三三三ニ=ヽ ;二三:|:::::::,,,,,, ...,,,,,,,,,,, ::::l三三三三ニ=; ;三=;|::..kkkkkiiiiiis::.. ..::wlllffffffffffffffs ::::|三三三二 ;//;l:::: il' ` '' `ヾ、 :::ヾ三三三二ニ;; l l l|:: _, -r。- 、 ::: ::: ,- r。-- 、_ ::::l三三三二; l:l: l:  ̄ー  ̄ ̄_'.:r ヽ `  ̄ ̄ ー ̄ ::::|ヾヾヾ=r ̄ヽ l l|::  ̄:/ ヽ ` ̄ ::::::|j'j'j'ヾ=f `l | `ll: :| ヽ ::::|jjj:::`=f rノ .| ,r---( _)ー 、 :::::::::::::::::〉ゝ r' | |::::.:::::::::`⌒:ー:⌒' :::::::::::::.ヽ :::::::::::::l、_,| .| |:::::::::::::- ― --―― 、..::::::::l :;:::::::::::::::| ヽ ヽ ::::::く rtT_T T TコTt、ヽ::::::::| .:::::::::::::::| ACCESS好き好き! ヽ ヽ::::::`、_`´ `´__/::::::ノ :::::::::::ノ ヽ、 :::::::::::_::::::: ̄ ̄:::::::::::::;_:::::: ,:::::::::| ヽ、::::::::::::::::::::::::::::::::::::::::::::::::, ノ ..::::::;;;;:| ヽ 、:::::::::::::::::::::::::::::::::::::: ................ :::;;;;;;;;;;::| l ー――――-- ' ;;;;;;;::::::::::::|
277 :
名無しさん@そうだ選挙にいこう :2001/04/24(火) 02:49
得意先テーブル、明細テーブルがあり、得意先IDでつなげています。 毎月得意先1件に明細が1レコードのみ必要なのです。 そこでフォーム等で一覧表示したときには最初から 得意先の件数分、明細レコードが追加されて欲しいのですが 初めからクエリでそういうことは出来るのでしょうか? それとも他のやり方がありますか?
278 :
名無しさん@そうだ選挙にいこう :2001/04/24(火) 10:40
>>277 得意先と明細でつなげて(LEFT JOIN等ね)つなげられなかった
データを作成するクエリを元に(IS NULL を条件にして)
明細テーブルへINSERTしてあげれば出来なくないとは思う
このクエリー遅そうだなぁ VBA使えば楽勝だと思うけどなぁ
こんにちは。 最近仕事にAccessを導入しはじめたばかりです。 入力フォーム、レポートを作成しましたが、 レポートを印刷する際、入力フォームで新しく作成したレコードのみを 印刷したいのですがどうしたらいいのでしょうか? 入力フォームに印刷ボタンを配置したところ、 全部のレコードが印刷されてしまいました。 いまは仕方なくレポートを開いて、 該当レポートを一回一回指定してやっています。 もしおわかりでしたら教えてください。
>>279 重複しないコードかナンバーを振っておいてから(仮に[コード]とすると)
1.クエリーを作る
2.クエリーデザインで[コード]に抽出条件を入れる
例:[Forms]![フォーム名].[コード]
3.レポートのレコードソースをこのクエリーにする
他にもいろいろあるけど、これが楽かも?
281 :
名無しさん@そうだ選挙にいこう :2001/04/25(水) 09:20
>>279 テーブルに印刷するしないの項目を作っておいて
新規作成したときには「True」を入れておき印刷終了時に
「False」を入れてあげるような処理を作れば済む問題じゃん
業務アプリ開発者なら知ってて当然な処理なんだけどな(^^;
印刷について質問したところ、 とても早いアドバイスありがとうございました。 早速実践してみます。
283 :
名無しさん@そうだ選挙にいこう :2001/04/25(水) 23:24
Access97を使用しています。初心な者で本当に基本的な質問で 申し訳ないのですが、教えてください。 定型入力の書式を変更するにはどうしたら良いですか? (ちなみにテーブルウィザードで作成しています) 例えば、郵便番号や電話(東京)はいいのですが それ以外の市外局番や携帯電話の時の書式を変えたいのです。 (東京がデフォルトになってしまっています) どうぞよろしくお願いします。
284 :
名無しさん@そうだ選挙にいこう :2001/04/25(水) 23:43
目的のテーブルをデザインで開き、フィールド プロパティにある定型入力を電話番号の設定に
285 :
名無しさん@そうだ選挙にいこう :2001/04/25(水) 23:48
283です。 284さん、「設定に」の後は何ですか? というか、その設定をどうしたらいいのかわからないんです。 ¥999”999・・・とかいうのをいじれってことですよね? スミマセン、もっと詳しく教えてください。
286 :
名無しさん@そうだ選挙にいこう :2001/04/25(水) 23:50
!\(9999")-"9999\-9999;0;_
287 :
名無しさん@そうだ選挙にいこう :2001/04/26(木) 00:34
286さん。283ですが、それって「電話(一般)」の書式(?)ですよね? でも、いざフォームに移り携帯番号を入力しようとすると ()− −のようなフォームが出てきてしまいます。 全然変わってないじゃん、って(笑 ちなみにこれで入力をしようとしても()の部分には2桁しか入りません。
288 :
名無しさん@1周年 :2001/04/26(木) 09:55
質問です。 レコードを前後させると最後に空白のレコードが出てきますよね? この空白のレコードを表示させたくないのですが・・・ レコード移動ボタンに 「移動先が空であるかどうか」のチェックをさせなければならないんで しょうか。もう少し簡単な方法があれば教えてください。
289 :
名無しさん@そうだ選挙にいこう :2001/04/26(木) 11:00
>288 (゚Д゚)ハァ? 基本的には何かを入力しなくちゃ 空白のレコードなんて出てこないぞ 新規レコード用の場所の事か? それならフォームの新規の許可を「いいえ」にするか Me.NewRecord で現在の状態を調べろ!
290 :
名無しさん@そうだ選挙にいこう :2001/04/27(金) 23:38
<<195 超遅レスですが誰も答えてないようなんで・・・ ユニオンクエリーで結合すれば良いんじゃない。 横にずらずら伸びた項目を一覧表示させたいわけでしょ? 60の項目を1項目ごとに分解して(つまり60個の選択クエリー を作る)それをユニオンクエリーで結合させてやれば項目が 縦に一本にまとまります。それで表形式フォームを作りサブフォーム として入れてやれば一覧で見る事が出来ます。
>>278 とりあえず追加クエリで変数、処理年月で全件追加するようにしました。
他の処理と相まって10件位しか得意先入れてないのに遅いです。
もう少し勉強したらVBA使ってみたいと思います。ありがとう。
294 :
初 :2001/04/30(月) 16:20
初めて質問させてもらいます 集計クエリーを使用して月ごとの商品別売上を集計する場合、 まったく売上げのない商品も”0”と表示できますか? 例えば次のような場合です。 テーブルA ID 月 商品名 -------------------- 1 4月 A 2 4月 B 3 5月 A 4 6月 B 5 6月 A この時5月はAが一件だけですが、次のように表示させたいのです。 A 1件 B 0件 最終的にはユーザーから任意の月を入力させてその月の集計結果のみを レポートに表示させたいので、クロス集計のように全部の月の結果は 出す必要ありません。 どなたかよい方法をご存知の方、お力貸していただければ有り難いです。
295 :
VBA使おう :2001/05/01(火) 10:32
>>294 基本的にはそういったクエリーの作成は不可能
計算結果を別のテーブルに書き込んで足りないレコードは
自分で足してあげればいいと思う
単月しか集計しない、商品マスタがあるならば
商品マスタにテーブルAのクエリーをつないであげて
件数がNULLのところにNZ関数で0を入れてあげれば
とりあえず出来なくは無いと思う
但し、動作スピードに問題が出そうだから最初に書いた
方法でやったほうが良いと思う
(・∀・)/じゃーねー
296 :
名無しさん@そうだ選挙にいこう :2001/05/01(火) 12:46
>>294 商品マスタが無くて、とにかく売上データだけで何とかしたいということを
前提に書きます。
クエリを3つ作ればよいと思います。
<クエリ1>
集計クエリにて売上データ内の全商品名を抽出する。
<クエリ2>
集計クエリにて5月の売上データを集計する。
<クエリ3>
クエリ1の全レコードとクエリ2を結合する。(実行用のクエリ)
参考に各クエリのSQL文を載せます。
(クエリデザインでSQLビューに張り付ければ再現できます)
<クエリ1>
SELECT テーブルA.商品名
FROM テーブルA
GROUP BY テーブルA.商品名;
<クエリ2>
SELECT テーブルA.商品名, Count(テーブルA.商品名) AS 商品名のカウント
FROM テーブルA
GROUP BY テーブルA.商品名, テーブルA.月
HAVING (((テーブルA.月)=5));
<クエリ3>
SELECT クエリ1.商品名, IIf(IsNull([商品名のカウント]),0,[商品名のカウント]) AS 件数
FROM クエリ1 LEFT JOIN クエリ2 ON クエリ1.商品名 = クエリ2.商品名
ORDER BY クエリ1.商品名;
次に、
>最終的にはユーザーから任意の月を入力させてその月の集計結果のみを
の件ですが、クエリ実行(又はレポート印刷等)のためのフォームを
作成すればと思います。
・フォームのテキストボックスに対象月を入力させる。
・クエリ2はフォームから対象月を取得して抽出条件とする。
尚、データ件数が多い場合、テーブルAの商品名を重複インデックスに設定すれば
処理スピードが向上します。
297 :
VBA使おう :2001/05/01(火) 13:19
>>296 ちょっち気になるので一言付け加え
前提の一つに「売上データの中には全ての商品が必ず入っている」
という事が必要になるんじゃないかと思う。
過去に一度も売っていない商品の場合はやっぱり出てこないので
商品毎の集計表の場合は問題になると思うよ
(これがネックになるのでこのクエリーは提案しなかった)
298 :
仕様書無しさん :2001/05/01(火) 17:09
強引にhWndもらう方法というか、 強引な方法と常道な方法と、今夜のご注文がどっち?なのかよくわからんので とりあえず常道な方のヒントだけ書いておくと・・・ @テキストボックスのBeforeUpdateイベントで長さによりCancel=True A手っ取り早く、連結フィールド。 このあたりがAccess的には常道なのかなと思ってます。
294です。 295さん、296さん早速有難うございます。 296さんが書かれているとおりに試してみると、なるほどきちんと表示されました。 あまりにあっさり出来たので感激です。 295さんが指摘した現象は確かにそのとおりでした(長期だと問題ないですが) 出来ればこちらも解決したいのですが、295さんのやり方は集計結果格納用の テーブルを別途作って、そちらにクエリーの集計結果を書き込むということですか? この場合、書き込むタイミングや、集計結果が更新されたときの処理がいまいち 解りません・・・。
301 :
VBA使おう :2001/05/02(水) 10:50
>>300 あんまり難しく考えなくても良い方法
296さんの<クエリ1>の部分をテーブルAではなくて
「商品マスタ」等のテーブルに置き換えるだけでOK
(商品マスタには当然ながら全商品を登録しておく)
(・∀・)/じゃーねー
302 :
名無しさん@そうだ選挙にいこう :2001/05/02(水) 19:53
2001年5月2日の1番目のデータ=01050201という形式のIDを自動で振れるように したいと考えています。イベントで、日付を更新したとき数字が入る、というふうに したくて、year関数やmonth関数に桁数を掛ける式を作りましたが、なかなか上手く 動きません。Dmax関数やDcount関数を その日2個目以降のデータを入れたときに、または日付をさかのぼって9個目や10個目 のデータを入れたときに、自動的に適切な値が代入されるようにするにはどのような 式を組めばいいでしょうか。ご存知の方、教えてください。
303 :
やる気なし :2001/05/03(木) 21:10
> Accessのtextboxってウインドウハンドル取得できないですよね? accessのtextboxで入力バイト数を制限する方法の常道はどんなの でしょう? >ヒントだけ書いておくと、 > (略) > > textchangeイベントでstrconvしろって事ですよね。 そうではなくて、KeyPress イベントでやります。 ただし、クリップボード上の文字列をペーストされた場合は KeyPress イベントは通らないので、AfterUpdate イベント でチェックする必要があります。 ・・・別にWindowハンドルは要らないと思いますが・・・??
304 :
お願いします :2001/05/04(金) 16:47
今までmdbで構築したDBをadpに移行しようとしています。 ところがインポートやらエクスポートやら使って テーブルやフォームを全部新規作成したadpファイルに移動すると、 何故かどれもこれも新規書き込みが出来なくなってしまいます。 やり方が間違っているのでしょうか? 厨房な質問で申し訳ないです。よろしくお願いします。
アクセスから、特定のエクセルやワードのファイルが起動するように するには、どうしたらいいですか?
306 :
名無しさん@そうだ選挙にいこう :2001/05/07(月) 08:02
>>304 それは、主キーがついてないじゃないかな。
307 :
名無しさん@そうだ選挙にいこう :2001/05/07(月) 08:05
>>305 Shellで呼ぶか、ShellExecute(API)で関連づけ起動してみるか。
>307 ありがとうございます。 でも、どうやっていいのかわからないっす(^^;
309 :
仕様書無しさん :2001/05/09(水) 10:27
310 :
名無しさん@そうだ選挙にいこう :2001/05/09(水) 13:52
>>308 最低限、そのくらい自分で調べてみろ!!
何もしないで「教えて君」はやめようね
この情報(
>>307 )で分からないなら、
やり方を教えてやっても、絶対に出来ないだろうな
>>288 -289
で、289の
>新規レコード用の場所の事か?
>それならフォームの新規の許可を「いいえ」にするか
>Me.NewRecord で現在の状態を調べろ!
「フォームの新規の許可」ってAc97でもその機能ある?2000だけ?
と思ったらスナップショットにすればいいのか sagetoku
312 :
名無しさん@そうだ選挙にいこう :2001/05/09(水) 17:40
みなさんこういう現象に出くわしたことはありませんか? ・最適化/修復するとレポートの用紙設定がリセットされる ・レポートを編集・保存しただけでMDBのサイズが十数倍になる ・ちゃんと定義してある関数なのにときどき「関数が定義されてません」と言われる ・使えば使うほど動作が重く、不安定になる 鬱だ...
313 :
仕様書無しさん :2001/05/09(水) 18:10
>>312 SR-1をあててない
レコード単位のロックをしている
参照設定が氏んでいる、Win2000で開いて保存した
Access2000だから
に思い当たるフシは?
314 :
312 :2001/05/09(水) 20:08
>>313 レスありがとうございます。
Win2K + Access2000です。まさかダメなのか、この組み合わせ?
最初Access97で作ってて2000に変換後、いまいち調子悪いんで
2000で最初から作った空MDBで総インポートしたものです。
そういえばインポート前はよく出ていたクエリーでの関数未定義エラー
がインポート後は出なくなった。(そのかわりMDB肥大化が激しくなった)
レコード単位のロックはしていません。
参照設定は大丈夫だと思うけど(DAOを追加した)
今、手元に無いんで確認できないけど、SR-1当ててないかも...
まずはSR-1でしょうね。SP-2は必要ないのかな?
315 :
名無しさん@そうだ選挙にいこう :2001/05/09(水) 23:42
>>312 最適化するとレポートの用紙設定がリセットされる件はSR-1で直る。
それはMS技術情報にがいしゅつ。
あと安定性のためにはWin2000側にもSP-1が必要。
双方のSP-2はリリースノートをよく確認してみるとよいかと。
316 :
312 :2001/05/10(木) 08:00
>>315 >最適化するとレポートの用紙設定がリセットされる件はSR-1で直る。
>それはMS技術情報にがいしゅつ。
ああっ本当だ、KBに載ってる!
「名前の自動修正」がオンだと起きるって、こんなもんがデフォで
オンになってるのか...知らなかった。
いや、お恥ずかしい。もっとよく調べてから質問するようにします
どうもありがとうございました。早速試してみます。
317 :
名無しさん@そうだ選挙にいこう :2001/05/10(木) 14:52
アクセス超初心者です。 VBAの中で今日は休日かどうかの判断をしたいのですが、 これは祭日テーブルを作成した上でいちいちチェックしないと いけないのでしょうか?もし便利な方法があるのであれば教えて下さい!
318 :
仕様書無しさん :2001/05/10(木) 16:14
>>317 未来の「休日関連法案改正」、「大喪の礼」とか「即位の礼」とか予言できるか?
そういう意味でも、休日テーブルもっとけ。
そうすればメンテをユーザに任せられるだろ?
319 :
名無しさん@そうだ選挙にいこう :2001/05/11(金) 00:54
>>317 休日がすべて規則性のあるものなら関数を書くこともできますが、
春分の日、秋分の日は毎年変わります。規則性もありません。
よって休日テーブルは必須。
320 :
Be名無しさん :2001/05/11(金) 16:38
アクセスに画像を取り込みたいのですが、OLEオブジェクトにJPEGファイルを 取り込んでもアイコン表示しかされません。 BMPだと画像表示するのですが… どこを変えればいいのでしょうか?
321 :
名無しさん@そうだ選挙にいこう :2001/05/11(金) 22:17
>>320 操作は間違ってなさそうですね。
恐らくjpegのOLEサーバーが無いのでしょう。
officeをインストールするとPhoto Editorがサーバーになります。
(Wordだけでいいのかも)
探せば他にも対応ソフトがあるかもしれません。
322 :
名無しさん@そうだ選挙にいこう :2001/05/11(金) 22:21
>>321 ありがとう。
PhotoEditorをインストールしなければいけないのですね。
インストールしてみます。
でもなんで標準でインストールされてないんだろう。
323 :
りな :2001/05/13(日) 13:43
>310 わたしは、ユーザーなの、ドキュソなプログラマーと一緒にしないで!!! VBAなんてかけませんよ。だから質問してるんじゃない。 けんかごしなのは、君がうだつのあがらないPGだからね。。。
324 :
名無しさん@そうだ選挙にいこう :2001/05/13(日) 18:32
>>323 色々と方法はあると思いますが、マクロを使ってみてはいかがでしょうか。
マクロのデザインで、アクションを[アプリケーションの実行]に
設定し、コマンドラインに下記の様なコマンドを書いてみて下さい。
("C:\test.xls"の部分は開きたいファイルのフルパス)
<エクセル>
excel "C:\test.xls"
<ワード>
winword "C:\test.doc"
作成したマクロはダブルクリックで実行できますし、フォームから実行
したいのであればコマンドボタン等のイベントに指定して下さい。
325 :
安置M$ :2001/05/14(月) 14:30
324 > こんな相手に説明してやる気によくなりますね。 よほど人間ができているのか、それともお人よしなのか・・・。
>>325 女性名騙ればレスがつくというネタじゃないのか?
放置プレイが適切かと思われ。
327 :
質問です! :2001/05/18(金) 01:47
お世話になります。 ACCESS97を使っています。 次のようなクエリーは可能なのでしょうか? 品 数 -------------- みかん 5 みかん 3 りんご 1 なし 4 というテーブル「A」に対して、クエリー式 select 品,sum(数)as total from A group by 品 によって, 品 total -------------- みかん 8 りんご 1 なし 4 というクエリーが得られるはずです。 さて、ある理由があって、このクエリーの中に品の種類数を各行に記入したいのですが、 どのようなクエリー式を書けばいいのでしょう? すなわち、 品 total 種類 ----------------------- みかん 8 3 りんご 1 3 なし 4 3 のような形にしたいのです。(品物の種類は3種類ですので) しかし, SELECT 品, Sum(数) AS total, (select count(select distinct s.品 from A s)) AS 種類 FROM A GROUP BY 品; のような式とかいろいろやってみたのですがうまくいかず, 結局, 品 ------- みかん りんご なし のようなテーブル「B」をselect distinct で作って, SELECT 品, Sum(数) AS total, (select count(s.品) from B s) AS 種類 FROM A GROUP BY 品; のような式を作ってやりすごしました. 別テーブルを作らずにスマートな一つのSQL式にできないものでしょうか? 初心者なのでよろしくお願いします.
328 :
名無しさん@そうだ選挙にいこう :2001/05/18(金) 16:42
>>327 >別テーブルを作らずにスマートな一つのSQL式にできないものでしょうか?
ACCESS97ではクエリが2つになってしまうんですかね。
<クエリー1>
SELECT 品
FROM A
GROUP BY 品
<クエリー2>
SELECT 品, Sum(数) AS total, (SELECT Count(品) FROM (クエリー1)) AS 種類
FROM A
GROUP BY 品
ACCESS2000では、
SELECT 品, Sum(数) AS total,(SELECT Count(品)
FROM (SELECT 品 FROM A GROUP BY 品)) AS 種類
FROM A
GROUP BY 品
でいけます。
329 :
名無しさん@そうだ選挙にいこう :2001/05/18(金) 21:57
328さんへ レス有難うございました。 97では、FROM句の中にサブクエリーを書き込むとエラーになって しまうようです。 後で気づいたのですが、294の方が同様の質問をなされています。 あの質問では、「5月」の件数の出し方だったようですが、 それに留まらず、たとえば1月〜12月、さらには数年にわたる月別の件数を 一度にクエリーで出すにはどうすればいいのか、疑問に感じました。 この種の計算はこれまでエクセルマクロを使っていましたが、 アクセスでもVBAで解決するしかないのでしょうか……
>>329 クエリの中にDCountを書いてあげれば1文になるかもな。
#邪道だが。
331 :
名無しさん@そうだ選挙にいこう :2001/05/21(月) 11:20
基本的な質問ですみません。 Access2000でできるだけファイルサイズを少なくするにはどうすればよいでしょうか。 やはりフォーム・レポート・テーブル・モジュールなどを少なくすることなのでしょうが、 他に注意点はありますでしょうか?
332 :
名無しさん@そうだ選挙にいこう :2001/05/21(月) 15:10
>>331 データの正規化を行って冗長性を排除する。
使ってるうちにどうしても肥大化するから最適化を定期的に行う。
で、どのくらいのサイズのファイルをどのくらいケチりたいの?
333 :
Be名無しさん :2001/05/21(月) 16:33
フィールドの値によって動的に変化するコンボボックスを作成することは 出来ないでしょうか? 例えばフィールド1の値が東京都だとしたら、フィールド2には 東京都の区だけが表示するように・・
334 :
Be名無しさん :2001/05/21(月) 16:39
ついでに、コピーソフトを手軽にミスすることなく作成することは 出来ないでしょうか? 例えばフィールド1の値が東京都だとしたら、フィールド2には 東京都の区だけが表示するように・・
>>333 フィールドの値によって動的にRowSourceを書き換えるだけ。
フィールド1の値を参照するクエリーをRowSourceにしてもよい。
つまんないこと訊くなよ。
>>334 (笑)
336 :
VBA使おう :2001/05/21(月) 17:00
>>333 そんなのフィールド2の集合値ソースのクエリーに
フィールド1で範囲指定を入れておいて、フィールド1の
更新後処理にフィールド2のリクエリーを書いておけば
OKじゃんか〜 問題なっしんぐぅ〜♪
コピーソフトってなんでしょ? ヽ(´∀`)ノ
337 :
名無しさん@そうだ選挙にいこう :2001/05/22(火) 09:46
こちらも基本的ですいません。 テーブルを作成しているんですが、主キーを10桁の数字にしました。 (例、6030000336。続き番号ではありません。) で、保存しようとすると、「一部のデータが失われる可能性があります。 フィールドサイズプロパティの設定が小さな値に変更されました。」 と出て保存できなくなります。また、「主キーには、Null値を使用 できません。」とも出てきてしまいます。 バラバラの数字を主キーにしようとしているのが間違いなのでしょうか?
338 :
名無しさん@そうだ選挙にいこう :2001/05/22(火) 11:24
>>337 データ型、フィールドサイズプロパティが間違ってるのでしょう。
ちなみに数値型のデフォルトは長整数型で、
-2,147,483,648 〜 2,147,483,647
です。
ヘルプでデータ型、フィールドサイズを調べて下さい。
テキスト型で充分では・・・。
339 :
VBA使おう :2001/05/22(火) 12:57
>>338 テキスト型はデータ食うし、検索も遅いから不可!
単精度、倍精度浮動小数点型を使うといいよ〜
340 :
名無しさん@そうだ選挙にいこう :2001/05/22(火) 14:30
単精度、倍精度浮動小数点型はどこで指定するのでしょうか? 基本的ですみません。
>>337 キーを9桁にすればOKOK。
何もいじらなくてよい。
342 :
VBA使おう :2001/05/22(火) 18:01
>>340 「データ型」を「数値型」にして
「フィールドプロパティ」の「フィールドサイズ」を変更する
343 :
名無しさん@そうだ選挙にいこう :2001/05/23(水) 03:03
344 :
名無しさん@そうだ選挙にいこう :2001/05/23(水) 09:29
337です。色々ご指導ありがとうございました。おかげさまで解決しました。 もう一つ教えてください。 337569587という、9桁の数字を0337569587と表示 したいのですが、方法が分かりません。電話番号なので03−3375−9587 と表示できればなお良いのですが・・。定型入力ウィザードを使ってみたのですが、 うまくいきませんでした。よろしくお願いします。
345 :
名無しさん@そうだ登録へいこう :2001/05/23(水) 11:08
>>344 電話番号だったらテキストで保持した方がよいだろうな。
346 :
名無しさん@そうだ選挙にいこう :2001/05/23(水) 11:23
337です。定型入力を"0"000\-00\-0000;;_としたら出来てしまいました。 お騒がせしました。
347 :
名無しさん@そうだ選挙にいこう :2001/05/23(水) 16:32
贅沢かもしれませんが、フォーム作成時等に選択するフォントの順番を 変える事は出来ないのでしょうか?使うのはだいたい決まってまして・・。
348 :
名無しさん@そうだ選挙にいこう :2001/05/23(水) 17:05
標準にしとけばいいじゃん
349 :
347 :2001/05/23(水) 17:58
>>348 オプションのデータシートの所を変えてはいるのですが、フォームで
ラベルを作るともとのフォントに戻ってしまうんです。
標準とは、オプションの変更の事ではないのですか?
また、ラベル作成時の背景も白でないんです。ウィザードで作っている
からでしょうか?茶色ですごく見にくんです。
350 :
非公開@個人情報保護のため :2001/05/23(水) 19:54
>茶色ですごく見にくんです。 茶色ですごく見にくいんです。 の間違いです。失礼しました。
351 :
名無しさん@まいぺ〜す :2001/05/24(木) 05:48
アクセスを検討中なのですが、DOS時代のソフトのように マウスを使わないフルキーオペレーションのデータベースは 作れますか? ファンクションキーとテンキー操作だけでほとんど事足りるような 奴です。 例えば入力フィールドにきたら自動的に候補のウィンドウが開き そこからテンキーで番号を選択するだけで入力できるという感じ。 調べてみてポップアップウィンドウが使用可能なのはわかったのですが それだとマウスが必要なので。 極力マウスオペレーションを減らしたいのです。
>>351 素直にDOSを使いなさい。
不可能ではないけど手間ばかり掛かるよ。
そのぶん金と時間をちゃんともらえ。
そもそも、そういうこというユーザは氏んでよい。
353 :
VBA使おう :2001/05/24(木) 08:50
>>351 とりあえずコンボボックス使ってみ
キーボードの「F4」もしくは「ALT+下矢印」でリストが開ける
上下キーで選択して「ENTER」で決定できる
500件ぐらいまでのリストならそれなりに動くし簡単だよ
漏れは別フォームをポップアップさせ、そこから選択させてるけど
352さんの言うとおりにかなり手間かかってるよ
354 :
名無しさん@そうだ選挙にいこう :2001/05/24(木) 11:40
チェックボックスの、オン・オフの入力データを−1・0以外に 定義するにはどうしたらよいのでしょうか?
355 :
VBA使おう :2001/05/25(金) 08:58
>>354 たぶん出来ないと思うよ
基本的にチェックBOXはYes/No以外は必要ないはず
どうしても、違う値で保存したいならチェックBOXを非連結で
定義しておいて、フォームの更新後処理あたりで値を変換して
本来の項目に保存するようにすればいいかも
356 :
354 :2001/05/25(金) 12:39
>>355 ありがとうございました。アプローチだとチェックボタンの定義って
あってオン・オフ時の入力データを簡単に変えることが出来るんです
けどね。そういう機能は無いということですね。残念。
通常YES/NOの所に既に有/無というデータが入っていまして、
そのデータを生かしてチェックボックスにしたいんです。
無理なのでしょうか。有/無を−1/0にするのは大変そうなので・・。
>>356 アプローチのチェックボタンなるコントロールがどんなものか知らないのですが
つまりUIをチェックボックスに限定する必要もないという事ですよね。
ならばオプショングループなどの使用も考えられてはいかがでしょうか。
この場合、グループ内にボタンが2つ(有ボタンと無ボタン)できあがってしまいますが
それぞれ個別に任意な値を割り当てられますので・・・
>有/無を−1/0にするのは大変そうなので・ をいをい。そんなの更新クエリーで一撃じゃん。 頭使えよ。
359 :
356 :2001/05/25(金) 23:15
>>358 更新クエリーですか・・。う〜ん 勉強します・・。
360 :
麒麟 :2001/05/26(土) 21:25
以前のバージョンを持っていないのですが、 Access2000アップグレードのインストール方法を教えてください。
361 :
名無しさん@そうだ選挙にいこう :2001/05/27(日) 08:39
362 :
358ではないが :2001/05/27(日) 08:42
>>359 更新クエリーわかんなけりゃ、データシートで一括置換。
ただ、更新クエリーはデータベースの基本中の基本。
363 :
VBA使おう :2001/05/28(月) 11:12
>>360 それライセンス違反だってば(^^;
ちなみにアクセスのアップグレード版を使うと
前のバージョンのライセンスは消滅するらしい
(それぞれ動くように出切るけど)
364 :
名無しさん@そうだ選挙にいこう :2001/06/03(日) 22:36
クラスモジュールの書き方、使い方、使うタイミングなど とにかくクラスモジュールってのが何者なのかよく判らないんです。 標準モジュールは色んなモジュールから使用できるっていうか 一番グローバルなものだってのは判るんですが。 (というか標準モジュール結構使ってます。) どなたか教えてくださいませんか?
365 :
名無しさん@そうだ選挙にいこう :2001/06/04(月) 16:45
サブデータシートを含むデータシートを印刷するときに、 サブデータシートが展開された状態で印刷することはできるのでしょうか。 データシートビューでテーブルを開き、 書式→サブデータシート→すべて展開 の状態で印刷してもサブデータシートが印刷されません。
366 :
名無しさん@そうだ選挙にいこう :2001/06/05(火) 22:16
アクセス毛が生えた初心者です。 アクセスのマクロで「アプリケーションを起動する」というのがあります。 パスでエクセル本体を指定するとエクセルは起動します。 でも、エクセルのファイルを指定しても、エクセルは起動せずファイルは開きません。 アクセスのマクロで、エクセルのファイルを開かせる方法はないでしょうか? 初歩的な質問で恐縮しますが、お教えください。 お願いいたします。
367 :
名無しさん@そうだ選挙にいこう :2001/06/05(火) 22:48
368 :
366 :2001/06/05(火) 23:21
>>367 さん
ありがとうございます!
心から感謝申し上げます!!!
369 :
名無しさん@そうだ選挙にいこう :2001/06/06(水) 03:13
XPはどうでしょう?
370 :
ACCESS97 :2001/06/11(月) 16:36
フィールド1 北海道 青森 岩手 フィールド2 小学生 中学生 高校生 といった項目をチェックボックスで選択し、 適合したレコードのみを宛名ラベル印刷するような フォームを作りたいのですが、どうしたらいいでしょうか? 元データ(テーブル)からクエリーでデータを抽出して、それを元に レポートで宛名ラベルの全件表示&印刷、 それにアドインから「メニュー用フォーム」で 簡単な表紙を作ることまではできました。 詳しい方、ぜひ教えてください。
371 :
名無しさん@そうだ選挙にいこう :2001/06/11(月) 20:42
>>370 関数を使った方がいいのでは?
あまりいい例とは言えませんが、とりあえず書いてみます。
1.モジュールを作成する(下記はその内容)
Option Compare Database
Option Explicit
Public Function 関数(フィールド1, フィールド2) As Boolean
Dim X As Boolean
Select Case フィールド1
Case "北海道"
X = Forms.フォーム1.北海道
Case "青森"
X = Forms.フォーム1.青森
Case "岩手"
X = Forms.フォーム1.岩手
Case Else
X = False
End Select
If X = True Then
Select Case フィールド2
Case "小学生"
X = Forms.フォーム1.小学生
Case "中学生"
X = Forms.フォーム1.中学生
Case "高校生"
X = Forms.フォーム1.高校生
Case Else
X = False
End Select
End If
関数 = X
End Function
2.クエリに下記のようなフィールドを追加する
<フィールド>
式1: 関数([フィールド1],[フィールド2])
<抽出条件>
True
372 :
ACCESS97 :2001/06/11(月) 22:05
うおー、
>>371 さん、ありがとうございます!
ワンタッチで検索&印刷ができるよう、
検索フォームを作りたかったんです。
また、よい方法があったら教えてください。
373 :
Be名無しさん :2001/06/12(火) 19:05
いま、アクセスVBAを勉強してます。 今度質問させてもらいマース
374 :
名無しさん@そうだ選挙にいこう :2001/06/13(水) 14:55
Dim DB As Database Dim d1 As Recordset Set d1 = DB.OpenRecordset("SELECT * FROM ユーザー情報 " & _ "WHERE (ユーザーID=Me.[ユーザーID]);") とやると「パラメータが少なすぎます。1を指定して下さい。」エラー3061 と出ます。これってどうやって処理したら良いのですか?
IDが数値型なら Set d1 = DB.OpenRecordset("SELECT * FROM ユーザー情報 " & _ "WHERE (ユーザーID=" & Me.[ユーザーID] & ");") IDが文字列だったら Set d1 = DB.OpenRecordset("SELECT * FROM ユーザー情報 " & _ "WHERE (ユーザーID='" & Me.[ユーザーID] & "');") でどうよ
376 :
名無しさん@そうだ選挙にいこう :2001/06/13(水) 15:58
>>375 できましたー。ありがとうございます。感謝。
377 :
名無しさん@そうだ選挙にいこう :2001/06/13(水) 18:27
374です。 ちなみにオートナンバー型だったらどうやるのですか? たびたびすみません。
378 :
デフォルトのやる気なし :2001/06/13(水) 19:07
>>377 オートナンバー型は長整数型とおなじです。
(新規レコード追加時に値が自動インクリメントされる点を除いて)
自分で調べる & 考える習慣を身に付けないと進歩しないと思いますよ。
(初心者にはむずかしいとは思いますが・・・)
379 :
名無しさん@そうだ選挙にいこう :2001/06/14(木) 09:13
>>378 大変ありがとうございます。
教えて君ですみませんでした。
早速出ございますが、先日購入いたしましたofficeXPより・・・ Access2002のクエリーをWord2002の差込のデータにしようとしたかった のですが、クエリー条件に"*"を使うと、データを呼んでくれません! 2000のときはそんなことなかったのに! いったいどうゆう訳???
>>380 "*" の代わりに "%" かな
ADOならそうなる
382 :
岡本太郎 :2001/06/15(金) 20:12
ありがとうございます。MSサポートに電話したところ同じ回答でした。 しかし2000のほうが使いやすかったですよね! ・・即レスに感謝・・
383 :
超初心者 :2001/06/15(金) 20:39
クエリーに連番を振る方法はありますでしょうか? きっと何かの本を見れば書いてあると思うのですが、田舎なもので 近所の本屋には置いておらず、取り寄せなければならなくて…。 また、お勧めの入門書等ありましたら、教えてくださいませ。
384 :
名無しさん@そうだ選挙にいこう :2001/06/17(日) 17:31
>>383 インプレスから出てる「できるAccess2000」っていうのがあるんだけど
結構わかりやすいよ。
385 :
アクセん苦闘 :2001/06/17(日) 19:43
以下のようにフィールド2つの 単純な帳票形式のレポートを印刷するとき f1 f2 1 伊東 2 加藤 3 足立 4 田村 5 飯塚 ・ ・ ・ 100 鬼瓦 というふうにやると 何ページも使ってしまうので 1 伊東 31 丸胃 61 小松 2 加藤 32 ペレ 62 ・・ 3 足立 33 ・・ ・ 4 田村 34 ・・ ・ 5 飯塚 35 ・・ ・ ・ ・ ・ ・ ・ ・ 30 鈴木 60 青木 のように横に並べて1ページに収めたいのですが いろいろやったけどわかりません。 ビギナーのアホな質問で悪いかと思いますが プロパティいじるだけで簡単にできるんでしょうか? 誰かお答えくださいませ。
386 :
名無しさん@そうだ選挙にいこう :2001/06/17(日) 20:00
>>385 ページ設定のレイアウトで列数・印刷方向等を設定すれば
何とかなります。
387 :
P :2001/06/18(月) 09:45
はじめまして。お聞きしたいことがあるのですが、アクセスって 一般的に独学でどれくらいで使いこなせるようになるものなのですか? わたしはプログラミングはやったことのない初心者です。 さいきん、お店の出納帳というかデータベースをつくる仕事を 出来る人がいないか相談されたのですが、知り合いにそういう 人物がいなくって、自分でやってみるかと思ったのですが、なかなか 難しそうです。本当に、へんてこな質問してすみません。
>>387 出納帳の成り立ちというか、そういうお金の流れについての業務知識
があれば、泥縄式でもそれなりのものはつくれると思うよ。
「Accessを使いこなす」≠「出納帳を作れる」
ってことは自明。
389 :
アクセん苦闘 :2001/06/18(月) 18:43
>386 どうもありがとう そんな簡単だったのね。
390 :
名無しさん@そうだ選挙にいこう :2001/06/18(月) 21:32
高度な内容のこのスレに、こんな質問で恐縮です。 Access97をノートパソコンで動かしています。CPUが近くにあるためか、 パームレストが、飲み頃のお茶ぐらいの熱さになります。 フォームの作り方などで、CPU負荷を低くする方法が有りましたら お教え願います。
392 :
390 :2001/06/18(月) 23:04
>>391 早速のレスありがとうございます。
Access2000以降にしないと難しいようですね。
システムの入換と、CPUの冷えピタもできないので
断熱材を探して、パームレストに貼ってみます。
>>387 まずは手頃な市販ソフトを探すべし。
「業務に合わない」「難しそう」などと言われても、ACCESSでプログラム開発
するのは最後の手段ね。
市販ソフトがたとえ数万円したとしても、それをどっかのソフトハウスに頼んだ
場合10倍以上かかるから、結局はお得よ。
394 :
名無しさん@そうだ選挙にいこう :2001/06/19(火) 00:26
>>392 断熱材貼るとパームレストから熱が逃げにくくなってまずいのでは?
アルミの板にでも載せて下から冷やしましょう。
週刊アスキーに載ってたノート用冷却台バカ高。
395 :
名無しさん@そうだ選挙にいこう :2001/06/19(火) 07:29
388.393> 早速のレスありがとうございました。大変参考になります。 この仕事、2ヶ月間程の猶予があって、バイト料が30万なんです。 そして、市販のを使うというわけにはいかないんです。ちょこちょこっと 使いやすいように改造する必要があるわけですが、それが難しくて。 やはり自分でやるにはすこし難しすぎるようです。とりあえず、自分でもも やっては見ますが、だれかできる人を探すことにします。
396 :
392 :2001/06/19(火) 07:53
>>394 パームレスト以上に底面が熱いので、こちらの方が効きそうですね。
場違いな質問にレスしていただいて、ありがとうございました。
397 :
名無しさん@そうだ登録へいこう :2001/06/20(水) 23:50
下がっちゃいかん。
398 :
名無しさん@そうだ選挙にいこう :2001/06/21(木) 18:32
97の事なのですが教えて下さい。 テーブルの中身を固定長のCSVにエクスポートしたいのですが どうやるのかヒントを下さい。
399 :
名無しさん@そうだ選挙にいこう :2001/06/21(木) 21:16
すみません、教えてください。 フィールドAの値がBのときにフィールドCに 連番を付けていきたいのですが、どのように書けばよいのでしょうか。 素人なりに思い付く限りのことはやってみたのですが どれもうまくできずにいます…。 もしよろしければ、ご教示くださいませ。
>>399 > 思い付く限りのことはやってみたのですが
> どれもうまくできずにいます…。
「何を」(What)思い付いて、「どう」(How)うまくできないのか、まったく記述されていない。Accessのバージョンも書いていない。
質問の書き方としては零点ですね。(辛口)
DAOなら、下記の要領。インデントが潰れていて読みにくいと思いますが、頑張って( ×嗅いどく ×買い得 ○解読 )してくださいな。
(もちろん、変数/プロシージャ名、エラーメッセージ等はてきとーに変更すること)
Sub ItteYoshi
Dim i As Long
Dim strSql As String
Dim strSMG As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
i = 1 '初期化。
strSql = "SELECT *
strSql = strSql & " FROM
strSql = strSql & " [Table]
strSql = strSql & " WHERE
strSql = strSql & " [A] = B
strSql = strSql & " ORDER BY 条件"
Set db = CurrentDb
DoCmd.Hourglass True
Set rs = db.OpenRecordset(strSql,DbOpenDynaset)
On Error Goto SAGE
DbEngine.WorkSpaces(0).BegineTrans
With rs
Do Until .EOF
.Edit
.Fields("C").Value = i
.Update
i = i + 1
.MoveNext
Loop
DbEngine.WorkSpaces(0).CommitTrans
.Close
End With
db.close
DoCmd.Hourglass False
ExitLine:
Set rs = Nothing
Set db = Nothing
Exit Sub
SAGE:
DbEngine.WorkSpaces(0).Rollback
DoCmd.Hourglass False
Beep
strSMG = Cstr(Err.Number) & " : " & vbCrLf
strSMG = strMsg & Cstr(Err.Description)
strSMG = strMsg & vbCrLf & vbCrLf & "逝ってよし!(Help読めや、ゴルァ!)"
strSMG = strMsg & vbCrLf & vbCrLf & "SMGはサイテーです!"
Call SMGBox(strSMG,vbCritical,"SAGE")
Resume ExitLine
End Sub
>>440 ダメな質問に答えてくださってありがとうございます。
バージョンは2000で、if…であれこれとこねくり回しておりました。
こんなに難しそうなことやらなきゃダメだったのですね。
解読できるかどうか、かなり不安ですが頑張ってみます…。
402 :
名無しさん@そうだ選挙にいこう :2001/06/22(金) 00:40
>>400 の人はAccess97(DAO)前提で書いています。
細かいところまで配慮した、プロが書いたと思われるコードです。
しかし、このままではAccess2000(ADO)では使えません。
いろいろなところをADO用に直さなければいけません。
次からはバージョンを書くようにしましょう。
ADOはVBからしか触ったことがないので 間違ってたら誰かツッコミ求む。
404 :
名無しおやぢ :2001/06/22(金) 09:32
>>402 -403
Access2000でもDAOは使えます。だから、既存のPGなら、無理に
ADOに移行する必要はありません。
ただ、DAOは(枯れてはいるが)将来性がないので、新規PGを作成
するなら、ADOの方がよいとは思います。
>>398 エクスポートするファイルフォーマットを定義して、
DoCmd.TransferText
でよいけど。
で、 固定長のCSV って何のことだい?
ヒントとしては、
CSVというのは、何の略か知ってイマスカ?
カンマで セパレートされた バリュー?
昨日
>>399 で質問させて頂いた者です。
せっかく
>>400 で教えて頂いたのですが、
昨日の時点で、DAOって何?という状態だった私には
今日1日かけてなんとなくわかってはきましたが、
ちゃんと解読するには、かなり時間がかかりそうです。
取り敢えずその場しのぎで、
テーブルDからテーブル作成クエリを使って
フィールドAがCの抽出条件でテーブルD’を作り、
フォームのマクロでそのクエリを実行させて
Private Sub Form_BeforeInsert(Cancel As Integer)
If DCount("*", "D’") = 0 Then
A = 1
Else
A = DMax("A", "D") + 1
End If
End Sub
としてみました。
が、連番は自動挿入されるのですが、レポートに新しいデータが入らず、
また、一度終了させてしまうとフォーム上から入力しているものより
前のレコードを見れなくなってしまいました。
(それ以前に入力したものは普通に見られます)
ちなみに、フォームはフィールドAがCの抽出条件の選択クエリ経由で、
テーブルDに入力しています。
フォーム上からレコードを参照できるようにするにはどうしたらいいのか、
また、どこに問題があるのか、もしよろしければご教示ください。
408 :
あほなトーシロ :2001/06/22(金) 21:20
お助けください。2000でも、97でもよいですが、 コード 内容 1 aaa 2 bbb 3 ccc というテーブルで、別の単票フォームの非連結のテキストボックスに「1」を いれておいて、選択クエリを開くと、「1 aaa 」が表示され、単票フォームが、 空欄のまま、クエリを開くと、「1 aaa , 2 bbb , 3 ccc 」が表示させたい のですが、思うようにいきません。 選択クエリの抽出条件には、 IIf([Forms]![フォーム]![コード]="",Like "*",[Forms]![フォーム]![コード]) としています。 If文は、機能してるのですが、Likeが機能してないようです。・・・・・なんで?
409 :
名無しさん@そうだ選挙にいこう :2001/06/23(土) 21:56
>>408 抽出条件でそのような式が書けるのかどうか分かりませんが、
下記のようなフィールドを追加すればできます。
<フィールド>
式1: IIf(IsNull([Forms]![フォーム]![コード]) Or [Forms]![フォーム]![コード]=[フィールド1],True,False)
<抽出条件>
True
私の環境では、
[Forms]![フォーム]![コード]=""
という式ではうまく動作しませんでしたので、
IsNull([Forms]![フォーム]![コード])
としています。
410 :
あほなトーシロ :2001/06/23(土) 23:49
>>409 ありがとうございました。
とりあえず、これでしのぐことが、できそうです。
でも、なぜ、うまくいかないんだろう?
411 :
409 :2001/06/24(日) 02:19
>>410 確かに、「とりあえず・・・」ですね。
書いた後で気付きましたが、
>>409 では全てのレコードを評価することとなり、
パフォーマンス的に問題有りですね。(思ってるよりACCESSは賢いかも知れませんが)
IIf([Forms]![フォーム]![コード]="",Like "*",[Forms]![フォーム]![コード])
>>408 の様に、抽出条件を演算子無しで書いた式の値はSQLでは、
WHERE フィールド1 = 値
であり、値が1の場合、
WHERE フィールド1 = 1
で問題有りませんが、空白の場合、
WHERE フィールド1 = Like "*"
とあいまいな評価をされるのかもしれません。
(本来は WHERE フィールド1 Like "*" ですよね)
それをふまえて抽出条件を書いてみますと、
Like IIf(IsNull([Forms]![フォーム]![コード]),"*",[Forms]![フォーム]![コード])
と書けます。
とりあえずパフォーマンス的に問題ないと思いますが、 ・・・Likeを評価したことないもので
>= IIf(IsNull([Forms]![フォーム]![コード]),0,[Forms]![フォーム]![コード])
And
<= IIf(IsNull([Forms]![フォーム]![コード]),999,[Forms]![フォーム]![コード])
と書く方がいいのかもしれません。
(999はそのフィールドの最大値)
色々と勉強させていただき、有り難うございました。
412 :
408 :2001/06/24(日) 19:32
完璧です。ありがとうございました。 Likeを前に出せばよかったんですね。 なんとお礼をいったらいいか。重ね重ねありがとうございました。 そう言えば、パラメータクエリのウインドウに、一生懸命 「Like "*"」 って、入力してダメだった時も、Like の後ろに[message]をつけて解決 してたことを、今、思い出しました。 最近物忘れが激しく、アクセスもちょっと離れると、さっぱり忘れて しまって、苦労しますわ。・・・・・・・では、また。
414 :
名無しさん@そうだ選挙にいこう :2001/06/28(木) 15:20
選択肢から複数選択可の場合、別にマスターテーブルを設けるのでなく 選択肢そのものをフィールドにしてデータ型をYes/No型にし、 チェックボックス化するのってやはり邪道ですか? 入力がラクなのでチェックボックス使いたいんですが・・・ よい方法はないでしょうか。同じような状況にあった人おられますか?
>>414 状況によりだよね。
さすがに選択肢としてチェックボックスが150個くらい並ぶと、
キモいとおもう(藁)
フォームウィザードみたいに、リストボックス2個並べて、
矢印ボタンで選択/非選択/全選択/全非選択とかって方法もある。
416 :
414 :2001/06/29(金) 11:28
>>415 選択項目を後から追加する際ちと面倒ですが
当面自分以外は触らないし多分項目も増やさなくていいから
チェックボックスでいきます。
なるほど、リストボックスって結構使い道あるんですね。
試してみます。ありがとうございました。
417 :
名無しさん@そうだ選挙にいこう :2001/06/29(金) 14:11
97の事なのですが、 レコードセットをサブフォームのレコードソースにしたい場合はどうするのですか? Set Me!フォーム名.Form.Recordset = レコードセット では駄目なのですか?
>>417 それで動いたのか?
動くのならそれで良しだが。
Set Me!フォーム名.Form.RecordSource = レコードセットの元になってるテーブルorクエリーorSQL文
じゃないのか?
419 :
Access97らー :2001/07/05(木) 16:03
こんにちは。 NyukoSumの値が0より上ならNyukoSumの値を、それ以外(NULLも含め)なら0を テキストボックスへ入れたいのですが、 =IIf([倉庫入庫フォーム].[Form]![NyukoSum]>0,[倉庫入庫フォーム].[Form]![NyukoSum],0) だと、間延びしてスマートじゃないように思うのですが、 もっとすっきり書く方法はないでしょうか。
420 :
名無しさん@そうだ選挙にいこう :2001/07/05(木) 16:46
>>419 0に見せるだけでよいなら書式プロパティを設定すればよいかも。
正の値;負;0のとき;Nullのとき
だっけ?ヘルプ見てくれ。
421 :
名無しさん@そうだ選挙にいこう :2001/07/05(木) 23:07
ACCESSでアプリケーションを作るとき、 住所入力を補助するような機能(郵便番号から入力・地名から等) を付けたいような場合どうしてます? 自作しようか迷ってます^^;
422 :
名無しさん@そうだ選挙にいこう :2001/07/06(金) 09:06
>>421 IMEの郵便番号→住所変換機能をONにして使わせてる。
ACCESSにもその機能があることは承知してるけど・・・
423 :
421 :2001/07/06(金) 10:35
>>422 それじゃユーザーは納得しないでしょ^^;
>>423 手作りなら追加料金10万円、IMEの機能ならタダ
って言ってやれば、たいていの客はIMEで納得すると思われ。
ちゅうか、Accessのアドインだか標準機能なんだか、 そういうの無かったか?
426 :
419 :2001/07/06(金) 15:29
>>420 出来ました。「0;0;0;0」って書きました。
すっきりしたよ。よかったー。
ありがとうございました。
427 :
421 :2001/07/06(金) 18:31
428 :
名無しさん@そうだ選挙にいこう :2001/07/08(日) 07:50
429 :
名無しさん@そうだ選挙にいこう :2001/07/08(日) 14:46
>>428 情報感謝・・・でも。。。すでに知ってるんだよなぁ・・^^;
作れってこと。。(^^?
430 :
名無しさん@そうだ選挙にいこう :2001/07/09(月) 08:35
>>429 金もらえるなら作れ
ってことでお互いはっぴいOKOK.
431 :
名無しさん@そうだ選挙にいこう :2001/07/09(月) 11:15
432 :
429 :2001/07/09(月) 21:53
>>430 ちょびっとだけね(涙)
>>431 電話番号かぁ。。。一瞬をを。。っと思ったが、
東京だと2000件もあるし死ぬ(^^;
それに、どの道つくらなあかん....
うーむ・・・
433 :
店長 :2001/07/10(火) 00:01
サーバー上のデータを利用してグラフを5種類くらい表示するやつで、 クエリーとフォームをそれぞれ2つか3つ作ればできそうなんだけど、 いくらぐらい貰えばいいの教えてください。 3日あればできそうだけど、安すぎて、次々注文がきても嫌だし、 取引先なので、不当に高額も請求しにくいです。
434 :
初心者 :2001/07/10(火) 02:09
Access2000を勉強中なのですが、 テーブルの作成中にデータ型のところで他のテーブルを参照しようとして ルックアップウィザードを使おうとすると ”複数のルックアップウィザードのインスタンスを 同時に実行することはできません。” というエラーメッセージが出てしまいます。 今までは、普通につかえてたのにどういう事なのでしょうか? また、インスタンスとは何の事なのでしょうか? よろしくご教授ください。
435 :
アクセン苦闘 :2001/07/10(火) 20:05
DAOプログラム使って、レコードセットにデータを取りこむ時に フィールドが数値型だと、Null値(空白)を受け付けてもらえず エラーになってしまいます。 なぜこうなってしまうのか? フィールドを数値型にしたままNull値を取りこむ方法はあるんでしょうか? 大雑把過ぎて説明が足りないかもしれませんが、分かる方 おられましたらお願いします。
436 :
名無しさん@そうだ選挙にいこう :2001/07/10(火) 23:57
客先個人別管理のデータベースを作って、お中元・お歳暮や年賀状の 管理をしています。 お中元の配送先を会社か自宅かリストボックスで選択し、レポートには 選択されたほうの住所が出力されるようになっているのですが、 会社と自宅両方に送る場合、ひとつのレコードを会社送付用と自宅送付 用のふたつにするにはどうしたらいいでしょうか? 具体的には、送付先のリストボックスに「会社と自宅」という値を増やし、 それを選んだ場合は、レポートに会社の住所が表示されるレコードと 自宅の住所が表示されるレコードを続けて出力したいのですが。 現在は会社送付用と自宅送付用とレコードをふたつ作っているのですが 個人のレコードがふたつあると何かと面倒なので、あくまでもテーブル上 のレコードはひとつにしたいのです。 いまちょっと思いついたのは、レポートにまったく同じコントロールを 2行配置し、「会社と自宅」の値があったときのみ、上の行に会社住所、 下の行に自宅住所が出力されるようにすればいいのかな? それ以外の値のときは、下の行のコントロールはすべてnullにして データが空のコントロールは印刷しないプロパティ(名前失念)を 設定しておけばうまくいくかも? 考えかたとしてはこれで合っているでしょうか? それとも他に良いやりかたがあればご教授ください。 長文でごめんなさい。
437 :
名無しさん@そうだ選挙にいこう :2001/07/11(水) 00:11
会社住所と自宅住所それぞれに対応した Yes/No フィールドを作って、 リストボックスと関連づけるのでも何でもいいからそれにチェックを つけるようにして、その有無で配送を判別すればいい気がするけど。
438 :
436 :2001/07/11(水) 09:48
437 さん、ありがとうございます。 しかし、今日会社でテーブルをよく見てみたら、会社と自宅 両方に送る場合はそれぞれ送る品が違っているので、ひとつの レコードに収めようと思ったら品物のフィールドをもうひとつ 作らねばならないことに気がつきました・・・。 もうそこまでやると煩雑なんできっぱりあきらめようかと (現時点ですでにフォーム上のコントロールもいっぱいあって わけわからなくなりそうだし(ToT)) #関係ないけど、ワタクシ一介の事務OLなんで中元も歳暮も 縁がないのですが、自宅と会社両方に送る場合もあるの^^;?
439 :
名無しおやぢ :2001/07/11(水) 20:12
>>435 > DAOプログラム使って、レコードセットにデータを取りこむ時に
> フィールドが数値型だと、Null値(空白)を受け付けてもらえず
> エラーになってしまいます。
その前に入力画面のチェックに問題がないか検討しなおすのがスジ。
Nullが入って都合が悪い項目には最初からNullが入り得ない設計に
しないと、開発(デバッグ、保守)に余計な負荷が掛かります。
>>435 初期値を0にしといて、0をNull代わりにすれば?
プログラムのいたるところにIsNullカマシまくらないとならなくなるから、
プログラム内にはNullは持ち込まないほうが良いと思う。
クエリーを作り、その中で演算フィールドを作ることがありますが、 その作ったフィールドのデータ型はどうやって決まるのでしょうか。 例えば、[費用]と言うフィールドを通貨型として[予算]テーブルで規定しておき 以下のようなフィールドを含むクエリーを作ります。 [費用] [予算]テーブル [消費税] 式:Int(費用*0.05) [合計] 式:[費用]+[消費税] これをクエリーのデータシートビューで見ると 費用 消費税 合計 \1,000 50 \1,050 となります。同じ演算フィールドで片方は数値型、もう片方は通貨型に なってるように見えるのですが・・・。 ちなみに単純に、[費用]/1000とやると1(数値型?)で表示されます。 Why???
442 :
店長 :2001/07/12(木) 20:47
除算と式に小数があれば結果の値に小数が含まれる可能性があります。 したがって自動的に数値型にしてしまいます。たぶん! 加算・乗算葉その心配が無いのでその中に通貨型があればつうかがたとします。たぶん!! 通貨型を数値がたの特別な場合と考えるとわかりやすいのではないですか。
>>441 [消費税] 式:Int(費用*0.05)
INTすれば数値になるに決まってんじゃん!
あと、消費税5%で将来固定かどうかも怪しいし。。
端数処理は?
くだらないこと考えるよりやることありそだな。
[消費税] 式:CCur(Int(費用*0.05) ) だとどうなるかな。
>>444 >[消費税] 式:CCur(Int(費用*0.05) )
>だとどうなるかな。
何の意味があるんだ・・・(--?
だいたい、通貨型と数値型の違いわかっているのか?
>>445 >何の意味があるんだ・・・(--?
さあ?
質問者の意図が「消費税にも¥がついて欲しい」かと思ったんだが。
447 :
名無しさん@そうだ選挙にいこう :2001/07/13(金) 14:50
教えてくださいませ。 氏名 希望理由 順位 ---------------------- ヤマダ *** 1 ヤマダ ●●● 2 サトウ +++ 1 サトウ @@@ 2 サトウ &&& 3 ・ ・ ・ ・ ・ ・ ・ ・ ・ こういう感じのテーブルを 氏名 1 2 3 ------------------------------ ヤマダ *** ●●● サトウ +++ @@@ &&& ・ ・ ・ ・ ・ ・ ・ ・ ・ こういうふうにしたくてクロス集計クエリーで試しているのですが よい方法はありませんか?よろしくお願いします。
>>447 クロスをデザインで開いて、「値」のところを最大値とでもしてみ
テーブル設計も厨房だが、ここではふれないでおこう(笑)
449 :
名無しさん@そうだ選挙にいこう :2001/07/13(金) 16:43
>>448 出来たっ。ばかだなあこんなのも分からないなんて。
レスありがとうございました。
>テーブル設計も厨房だが、ここではふれないでおこう(笑)
上のテーブルですか?
表示したいフィールドしか書かなかったんですけど・・・
テーブル設計はどうすれば上手くなりますか?
>>449 氏名Tと希望の順位Tは分けるべきだな。
理由も重複する理由が出るなら希望理由Tを作って3っつだな。。
>テーブル設計はどうすれば上手くなりますか?
重複するものはクエリー(SQL)で表示することを心がけ、
(すべてではないところが難しい(^^;)修練あるのみじゃ!
451 :
名無しおやぢ :2001/07/13(金) 17:44
>>449 > テーブル設計はどうすれば上手くなりますか?
「正規化」をキーワードに調べましょう。
452 :
名無しさん@そうだ選挙にいこう :2001/07/14(土) 04:02
テキストボックスに入力したファイル名をすべてのドライブから検索して、 存在すれメッセージボックスでそのフルパスを表示させたいのですが、やりかた がわかりません。ありがちな質問かも知れませんが、教えてください。
453 :
名無しさん@そうだ選挙にいこう :2001/07/14(土) 23:57
Accessの顧客管理テーブルをデータファイルとして、 Wordの差込印刷機能を使って顧客の宛名を大量に印刷したいのですが、 郵便番号の処理が上手くいきません。 郵便番号の「-(ハイフォン)」が無視されるのです。 ハイフォンを表示させる方法ないのでしょうか?
454 :
名無しさん@そうだ選挙にいこう :2001/07/15(日) 22:01
質問 Accessって何のソフト? つか、Office XP Pro持ってるんだけど全然使わない PowerPoint,Outlook,AccessアンドFrontpageはただの付録と化している
455 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 00:04
>>454 データベースソフトだよ。
まぁ、パーソナルユースじゃたいして大量のデータベースを扱う
必要もないから、住所録なんかはExcelとWordの差し込み印刷
機能で充分事足りるかも。
データベースって何? という質問なら、自分で調べてね^^;
PowerPointも同じく。
個人でプレゼンテーションなんかしないもんね。
個人的には、むしろWordより自由度の高い文書が作れると思う
けれども。
456 :
421 :2001/07/16(月) 00:59
>>455 >PowerPointも同じく。
>個人でプレゼンテーションなんかしないもんね。
>個人的には、むしろWordより自由度の高い文書が作れると思う
>けれども。
そうかぁ?
自由度が高い文章なら、エクセルで書くに決まっておろう。
かなりいるものだぞ(笑)
457 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 11:07
>>455 でもAccessって「大量のデータベースを扱う」には、貧弱ではなかろうか?
ネットワーク環境下で複数ユーザーの同時使用に耐えられないし、パフォーマンスも低いし...
>>456 >>455 はレイアウトの事いってるんだろうよ。
なんにしても、ワードは使えないってことか。
459 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 11:18
>>457 そういう使い方をしたい人には SQL Server ってことでしょ。
Access は個人用 & マルチユーザーのデータベースサーバーのフロントエンド。
想定されていない機能を要求してもとんちんかんなだけ。
>>457 激しく同意!!
ファイルメーカーの方がレコード数もユーザー数も耐えられるらしいね
461 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 11:29
MSDEはどうよ?
462 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 11:37
MSDE は SQL Server へそのまま移行するのに使えるってだけでしょ。 Access だけで使い続けるなら Jet と変わりない。
>>462 >>457 厨房が多いな・・
MSDEとSQL鯖はほとんど同じものだぞ。
JETもマトモに知らない厨房が、DBを語るんじゃない!
464 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 12:03
あんたがアホ。 内部はともかく、ユーザーから使える機能が SQL Server 並になるわけじゃないだろう? MS のセールストークに踊らされてんじゃねえよ。
465 :
421 :2001/07/16(月) 12:13
466 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 12:27
どっちもどっちだ
467 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 12:30
468 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 12:30
オラクルにしろよ。サンまではいらないだろ。 オラクルまでいらない厨房にはファイルメーカーでいいだろうよ。
469 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 12:37
>>468 ACCESS&oo4o&oraで使ってるぞ
VBみたいに妙なDLLバラまかずにすむ分、
個人的には、こちら推奨しているがな
470 :
名無しさん@そうだ選挙にいこう :2001/07/16(月) 15:02
>>467 知ったかぶり厨房どもは、全て消えたな(笑)
JetとMSDEの区別もできない厨房は置いといて... やっぱEnterpriseManager抜きのSQLServerは使いづらいね。 開発はSQLServerでやって、客に配布するときはMSDEでもいいな。
472 :
名無しさん@そうだ選挙にいこう :2001/07/17(火) 16:04
フォームのテキストボックスで条件付書式の設定というのがありますが、 その条件により8通りの色分けをしたいと思ってます。 でもこの条件付書式設定では4通りの設定しかできません。 それで困っているのですがモジュールかなんかで8通りの色分けを できないのでしょうか? どなたかお願いします。
473 :
名無しさん@そうだ選挙にいこう :2001/07/17(火) 17:10
>>472 8個も分けてどーするんだ?
まず、お馬鹿な設計見直しなさい(藁
474 :
教えてください :2001/07/17(火) 19:01
OLEオブジェクトにBMPファイルを取り込んだのですが その画像にモザイクがかかった様な状態でしか表示され ません。 何が原因なのでしょうか? その画像は画像ソフトなどで観ると何ら問題無く表示 されるのですが。
475 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 00:58
レポートで明細書を印刷したいのですが 1ページずつ3分割にして写しを作る方法ってありますか? 明細セクションは1回しか使えないし、 サブレポートは上手く改ページしてくれないし。(レコードの多い1件を複数ページにしてくれなかったり) VBAでも何でもかまわないので。 説明がわかりづらいかもしれませんが…
476 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 07:39
>>475 work使えばできるよ、チト面倒だけどね。
477 :
472 :2001/07/18(水) 08:59
>475 お馬鹿な設計とはいかに? とにかくそーする必要があるので、やり方知ってる人教えて欲しい。
478 :
スケベおやぢ :2001/07/18(水) 09:39
>>474 > モザイクがかかった様な状態
H画像ですか? (違
479 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 10:23
サブフォームのソースオブジェクトは プロジージャで書き換えられないのデスカー(ToT)?
480 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 10:24
↑サブフォームじゃなくてサブレポートでシター(ToT)
481 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 12:22
>>477 お馬鹿な設計とは、
目立たせる必要があるものは、4個までで十分
仕様上4っつしかできないのに、こだわる。
まぁ、他の方法ないこともないガナ。
482 :
名無しおやぢ :2001/07/18(水) 19:46
>>479 -480
できます。(経験あり)
ただし、開く(Report_Open)回数の多い帳票処理の場合、レスポンスに
影響する可能性があります。
1回の印刷/プレビュー処理あたりのOpenイベントが1〜数回(1ケタ)
程度なら、レスポンスの悪化はまったく問題にならない(実用に耐える)
と思います。
483 :
名無しさん@そうだ選挙にいこう :2001/07/18(水) 23:15
484 :
名無しさん@そうだ選挙にいこう :2001/07/19(木) 13:58
質問です 2つのフィールドを組み合わせて、ユニークなキーを持つテーブルを作成することは可能でしょうか? 例えば、ID,Dateを組み合わせてユニークなキーを作り、 ID, Date, 01, 01/01/01 01, 01/02/01 01, 01/03//1 … 02, 01/01/01 … のようなデータがあるとします。ここに、01,01/03/01 のデータを作成しようとするとワーニングがでるといったようにです。
485 :
484 :2001/07/19(木) 14:09
helpで自己解決 これがほんとの自作自演
486 :
名無しおやぢ :2001/07/19(木) 18:30
>>484 -485
ぷら伊万里キーが単独でないケースなど、珍しくもなんともないのでは?
申し訳ないが、この程度で喜んでいるようなら、かなり寒いです。
(辛口)
487 :
472 :2001/07/19(木) 20:42
>481 嫌な奴だな。 目立つのは4通りで十分なんて誰が決めたんだ? だいたい目立たせるためのものじゃないんだよ。 とにかく8通りの色が必要なんだ。そういうことなんだよ。 8通りの色と言うと、気がつく人は気がつくかもしれんね。
488 :
名無しさん@そうだ選挙にいこう :2001/07/19(木) 21:07
2002の質問もいいですか? Word2002の差込機能でAccess2002のクエリのDataを挿入しようと すると読み込めません。 どうやらDatafile形式を変えてやらなければならないらしいのですが どこから設定の画面にいけるのでしょう? マジレスお願いします・・・
>481 嫌な奴だな。 >目立つのは4通りで十分なんて誰が決めたんだ? >だいたい目立たせるためのものじゃないんだよ。 >とにかく8通りの色が必要なんだ。そういうことなんだよ。 >8通りの色と言うと、気がつく人は気がつくかもしれんね。 素直じゃないなぁ こうやって目的あいまいに書くから、レスする気にもならな いということを理解しなさい。
490 :
472 :2001/07/20(金) 11:39
>489 了解。答えれないんだね。
491 :
名無しさん@そうだ選挙にいこう :2001/07/20(金) 11:47
>了解。答えれないんだね。 今度は、煽りか(苦笑)
492 :
484 :2001/07/20(金) 14:54
>>486 データベースの設計が私の仕事ではないんで、別に何をいわれようと…
493 :
名無しおやぢ :2001/07/20(金) 17:41
>>492 それなら、専門家に依頼(OOP用語では、"委譲")するのもひとつの手ですよ。
(確かに、
>>486 はちょっと言い過ぎかもしれませんが)
自分ひとりで苦しんでいても、生産性はなかなか上がるものではないし・・・。
494 :
484 :2001/07/21(土) 14:32
ソリューションの一つとして、私のスキルがやり玉に挙がったにすぎないので、まだプレゼンの段階なんですよ って説明してどうする>>俺
495 :
名無しさん@そうだ選挙にいこう :2001/07/21(土) 14:51
ああ、そうだったんですか。
497 :
472 :2001/07/23(月) 09:16
>496 おかげで問題解決できたのでありがとうございました。
498 :
名無しさん@そうだ選挙にいこう :2001/07/25(水) 21:26
フォームの複数のテキストボックスを条件として、レコードを AND検索するようにしたいのですがどうすればいいんでしょうか? やりたいことは 1.無効な条件だったら、ダイアログを表示して警告 2.もしテキストボックスが空欄だったら、そこだけ無視する 3.全部空欄だったら、1と同じくダイアログで警告 特に2番目ができなくて困ってます。 当たり前なんだけど、空欄もAND演算しちゃうんだよね。 たぶんVBA使うと思うんだけど・・・
499 :
名無しさん@そうだ選挙にいこう :2001/07/25(水) 22:14
>>498 たとえばこんな感じでどうでしょう
(ボタンのクリックにより、SQL文作ってレコードソースに入れる)
Private Sub ぼたん_Click()
Dim W_Sql As String
If IsNull(てきすとA) And IsNull(てきすとB) And IsNull(てきすとC) Then
MsgBox "全部空白はいかん!!"
Exit Sub
ElseIf IsNull(てきすとA) Then
MsgBox "てきすとAの空白はいかん!!"
Exit Sub
End If
W_Sql = "SELECT * FROM てーぶる "
W_Sql = W_Sql & "WHERE "
W_Sql = W_Sql & "ふぃーるどA = '" & てきすとA & "'"
If Not IsNull(てきすとB) Then W_Sql = W_Sql & " AND ふぃーるどB = '" & てきすとB & "'"
If Not IsNull(てきすとC) Then W_Sql = W_Sql & " AND ふぃーるどC = '" & てきすとC & "'"
W_Sql = W_Sql & " ORDER BY ふぃーるどA,ふぃーるどB,ふぃーるどC"
Me.RecordSource = W_Sql
End Sub
500 :
名無しさん@そうだ選挙にいこう :2001/07/25(水) 22:20
7/18(水) ジョンロブ・パリのフィリップ(ダークブラウン) 今日は、休み前の出勤でやるべき仕事のボリュームがかなりあり、気を引き締めて片付けるために、ジョンロブ・パリのフィリップをセレクトしました。 フィリップを履いた効果か、何とかそれほど時間がかからずに全てこなすことができたので、明日から心置きなくバカンスに行けます。 このダークオークと呼ばれるダークブラウンは、黒よりもアンティークな感じにまとまり、少々華やいだ雰囲気になります。 基本的にエレガントな靴なのですが、黒よりもあまり畏まらないで履けると思います。 この靴の個体の革は、色艶が結構あって、品質の高さが誰にでもわかる感じです。 クリームをつけずに軽く磨くだけで光るほどです。 牛1頭から1足のみが造られるとのことですが、それほどは目立たない光沢の黒の個体の革とは味わいが異なるのもおもしろいです。 レザーソールの靴で、色違いを2足持っているのは、このフィリップとマッタだけです。 ジョンロブ・パリの既製靴のトップレンジだけあって、革質といい、シルエットといい、魅せられているからです。 でも、一番の理由は、シームレスな踵にまいっているからです。 収納してある靴の中で、シームレスな踵はとても悩ましくて、他の靴よりも目立つのです。 とにかく、エレガントな極みの靴を黒以上に普通に履ける、とても魅力的な靴です。
>>499 相手のレベルで、レスしないと。。。^^;
ウケ狙いのマジレスも理解できないと思う(笑)
>>497 最初の方に煽られて普通にレス書けないのは分かるけど
どうやって解決したかぐらい書くもんだぞ。
503 :
綾香 :2001/07/26(木) 03:37
504 :
名無しさん@そうだ選挙にいこう :2001/07/27(金) 15:06
個人スキルのプレゼンを人に頼るな
505 :
名無しさん@そうだ選挙にいこう :2001/07/27(金) 21:17
にたような名前の商材が大量にあります。 コンボボックス等でスクロールしながら選択するには無理がある量なので、 「オートコンプリート」の様な処理ができないかなぁと思っているのですが、 良い方法があったら、教えてください。
506 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 00:38
>505 >にたような名前の商材が大量にあります。 似てるって?
507 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 02:18
コンボボックスの値を参照して検索するようにしてるんだけど、 そこで選択した値と、実際に検索する値を別にするにはどうすればいいの? コンボボックスのプロパティの "コントロールソース","値集合ソース","連結列"あたりが ひっじょーにクサイような気はしてるんだけど・・・むぅ。
508 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 09:24
>>507 コンボボックスの「Column」プロパティを使え。
値集合ソース中の別フィールドの値を参照できるぞ。
509 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 21:34
510 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 22:42
顧客管理必要なんですが、各人にデータ数がたくさん関連してます。 氏名1つ1つに30から40の項目作ってデータベースを作るものなんでしょうか 分割して関連がすぐわかるものなのでしょうか ・・・ 自分の考え方レベルが幼稚な気がします。 考える以前の問題のような気がしてなりません。 何かアクセスに限らずでーたベースソフトのデータ管理の考え方、 データベースの作成の概念とかといった良い本をご存じありませんか?
511 :
名無しさん@そうだ選挙にいこう :2001/07/28(土) 23:24
>>510 各人がどんな商品を購入したとか、どんなお中元を贈ったとか、全員にあるとは
限らない、または一人で複数あるかもしれない項目は別テーブルに入れて、
顧客ごとのユニークキーで必要なときにひっぱってくるのが定石かと。
なんでもかんでもテーブルは分けたほうがいいとは一概にはいえないけど、
なるべく空白の欄を少なくしたほうがDB全体のサイズを抑えられるみたいだよ。
>>511 ううむむありがとうです。
正直よくわからない。でも、けっこうな割合でチェックがつく
項目とたまにしか付かない項目は分けた方がいいというような
感じですか。
もっと勉強しまっす。
513 :
名無しさん@そうだ選挙にいこう :2001/07/29(日) 03:47
>>512 うーんちょっと違うんだけど。
たとえば名簿のようなものを作るとして、資格のデータを入れたいとき、一人で
いくつも資格持ってる人もいれば、まったく持ってない人もいそうだよね。
そういう場合、大元のテーブルに資格1、資格2、資格3、・・・ って項目作るよりは、
山田なにがし 資格1
山田なにがし 資格2
山田なにがし 資格3
高橋だれそれ 資格1
佐藤なんとか 資格1
佐藤なんとか 資格2
って資格テーブルを別に作って、この場合は名前で大元のテーブルとjoin
させるのが効率的なのだ。こういうのを「テーブルの正規化」というらしいよ。
効率的なテーブル設計のコツは、やっぱり慣れだと思うんだけど、最初は
なかなかテーブル分割の見極めってむずかしいと思う。
ネットでも充分Accessの勉強ってできると思うので、がんばってください。
>>513 人に教えるレベルではないな(笑
>>512 とりあえず、ベクターから住所・顧客・ACCESSなどで検索して
DLしてみ、
それと、目的や、作ったテーブル具体的に付けなければマトモなレスはつかんぞ
>>513 テーブルの正規化・・
こういう考え方が有るって情報が得られただけでも感謝感激です。
本気で38項目だーっと横に並べて予備で2項目空けておくとか
考えてました。
>>514 ですね
質問アバウトすぎでした。
でも、いろいろサンプル落として見てみてます。
むずいけど、、。指針、サンクスでした
みなさん、毎回お世話になってます。 レポートの表紙になる物をレポートヘッダーに作っています。 ここは単なる注釈等が書かれるので、DBでレコードを持つような内容は なく、かつ罫線などはユーザーに自由に変えられるようにしておくため 、Wordで作ったファイルをOLEでリンクさせてます。 必要な時は(ユーザーで)Wordを立ち上げて変更・保存後、ACCESSで印刷すれば OK・・・のはずが、WORDを立ち上げたまま起動した場合しか更新が反映 されないようです。 もちろんタイプはリンク、更新設定は自動にしてるんですが・・・、 毎回レポート読み込み時にリンクを更新するようコード書いてやらない いけないんでしょうか。 昔DBをApproachでつくりWordの文書を貼り付けるなどとへんちくりんな (そうせざるを得なかった)事をしてたときよりましかと思えば、 所詮MSの連携なんてこんな物なんでしょうか?
>>516 通常wordの差し込み印刷を使います。
こんながいしゅつのものに文句ゆうまえに勉強しなさい。
>>517 差込印刷等と誤解されないよう、
>ここは単なる注釈等が書かれるので、DBでレコードを持つような内容はなく、
と書いてましたが、分かりにかったみたいです。
一ページ目 =レコードと関連性なし(単なる表紙)。
二ページ目以降=レコードの一覧を出力
表紙が全く変わらなければ、レポートヘッダーにAccessでそのまま作りますが,
罫線や網掛けの有無が時々変わり、Accessを知らない人間でもそれを変更できる
のがメインの目的。
変更させるためのパラメータをテーブルにあまり規則性も無いので。
やっぱりOLEサーバーが立ち上がってないと駄目な気がしてきた・・・。
>>518 の下から二行目、訳わからん。
変更させるためのパラメータをテーブルに持たせようにも、
規則性もあまり無いので。
・・・が正解
反省
OLEでWORD使うといろいろ問題の出ることが、 がいしゅであると書いたつもりなのだが(苦笑) >罫線や網掛けの有無が時々変わり、 >Accessを知らない人間でもそれを変更できる んなもん、word何ぞ使わず、VBAぐるぐる回すもんじゃぁ
521 :
名無しさん@そうだ選挙にいこう :2001/07/29(日) 23:12
XPにしたら又、組治さなくてはならなくないですか?
522 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 12:44
フォームのレイアウトがとてもやり難い... どっかにツール落ちてない?
524 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 13:44
初歩的な質問ですみません。。。。 フォームの入力について質問です。コース欄(コンボボックス)で Aコースを選ぶと金額欄に自動的に3000円と入り、 Bコースを選ぶと金額欄に自動的に6000円と入るようにするには どうすればいいでしょうか? ヘルプのどこを見ればいいのかだけでもいいので。。。どなたかご教授ください。
525 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 14:36
526 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 15:20
>>524 非連結フォーム(コントロールにデータ元が設定されていない)
なら、
Select Case Me!コース欄
Case "Aコース"
Me!金額欄 = "3000円"
Case "Bコース"
Me!金額欄 = "6000円"
Case Else
'その他の値の場合の処理をここに書く
End Select
かなぁ。VBAの入門書を読んで勉強してみたらいいのでは?
527 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 15:22
あ、上のは「コース欄」のAfterUpdateイベントに書いてね。
>>525 修復は指示されたときだけ。
トドメを刺す結果にもなりかねないので
無闇にやらないほうがよい。
大事なのは「バックアップ」
529 :
名無しさん@そうだ選挙にいこう :2001/07/30(月) 15:42
>>528 うぎゃーやはりそうですか。
毎日データファイルmdbのバックアップをとっているのですが、
修復→最適化→バックアップ
をここ数ヶ月行っていました。Access2000だと、「修復/最適化」
ってくっついたコマンドになっていたので、こりゃセットでやれば
いいのかと思い込んでいました。ありがとうございます。
>>526 さん、ありがとうございました。うまくいきました。
VBAを知らないことにはどうにもならないですよね。。。勉強します。
>>523 ありがとう。でも、、
むじぃ〜
こんなのもしかして基本なの?;;
>>531 RDBMSを利用したシステムでのテーブル設計の局面では、
基礎というか常識というか原則というか。
無論、それが守られていないシステムも多いのだけどね。
「なによこのテーブル設計(--; あんたヴァカぁ?」
みたいなの。
個人レベルでちまちまとAccessいじってる場合でも、
第1正規形(横に同じ項目を並べない)だけでも守っておくと、
クエリーがシンプルになったり等のご利益があると思われ。
>>532 テーブル設計は、設計者によっても違うからね・・
個人的にはユニークキーは必ず1つというポリシーを持ってます(笑)
複数でユニークというのは、SQLが複雑になるから強引にでも作ります(笑)
534 :
ななそ :2001/07/31(火) 13:53
質問があります。 Dim DB As Database Dim QDEF As QueryDef Set DB = CurrentDb Set QDEF = DB.QueryDefs("Q_顧客台帳") QDEF.Parameters!口座番号 = Me!口座番号 Set 選択顧客 = QDEF.OpenRecordset
535 :
ななそ :2001/07/31(火) 13:55
534続き Access97では上記の書き方で選択してオープンしていました。 Access2000のADOではどのようにすればいいのでしょうか?
536 :
ブリッテン :2001/07/31(火) 14:45
どもです。 MicroSoft 2000です。 BDE(Borland Database Engine)で MSACCESSありますよね? そのなかにいくつかテーブルがあるんですが、 Database Explorer で『SQLの入力』をします。 それで、select (???) from 〜 とデータを抽出してるんですが、 例えば、この(???)の所を、SUM(数量) とします。このとき、 データを抽出してる元はMSACCESSなので、フィールド名が『数量』では 無くて、『Expr1000』となります。 SQLやORACLEのように、数量 = SUM(数量)とかSUM(数量)CONPUTE数量 といった感じで入力するとエラーが出て抽出できません。 フィールド名を出来るだけ『数量』に近づけたいです。分かる方お願いします! あともう一つ。同じくMSACCESSで ワイルドカードは使用できないのでしょうか? SQLSERVER6.5なら、like演算子がありますが、あれの代わりみたいなのが あれば教えてください。
>>536 SELECT SUM(数量) AS 数量
にしてみ。
あとLikeも使えるよ。
538 :
ブリッテン :2001/08/01(水) 08:33
>>537 SELECT SUM(数量) AS 数量 from〜
うぅ〜成功しません。(泣)いろいろ半角スペースとかひっつけたりとか
試してみたんですが、
〔一般SQLエラーです
Circular reference caused by alias '数量' in query
definition's SELECT list〕
と出ます。
環境はBorland DelphiのDatabase Explorer(SQL Explorer)のMSACCESS
なんですが、一応SQLの方で試したら As 数量 とおりましたっ!
あと、Likeなんですが、記述の仕方は from 〜 where コード like "A%"
でいいのでしょうか?
>>534 ' ADOのオブジェクト変数を宣言する
Dim cnn As New ADODB.Connection
Dim rec As New ADODB.Recordset
' 接続を確立する
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\My Documents\db1.mdb;"
' SQLを指定してレコードセットを作成する
rec.Open "SELECT * FROM ○ WHERE ぱらめーた", cnn, adOpenKeyset, adLockReadOnly
Access2000でもDAOを山椒設定して今まで通りに使っても委員じゃないかな。
540 :
ななそ :2001/08/01(水) 09:41
>539 有り難うございます。 SQL文を直接使うしか無いみたいですね。 後は、普通にテーブルをOPENして、フィルターを使うかですよね。 有り難うございました。
542 :
名無しさん@そうだ選挙にいこう :2001/08/01(水) 12:04
FAQとは思いますが、クリスタルレポートとはなんですか?
>>542 某ドキュソ会社グループの悪事を糾弾する告発文書のこと。
544 :
しょーもなし :2001/08/01(水) 13:07
>>542 某県知事が書いた報告書。
「なんとなく・・・」
545 :
名無しさん@そうだ選挙にいこう :2001/08/01(水) 21:40
ポップアッププロパティ="はい"にしているフォームから レポートを呼び出すと、フォームの裏に開いちゃう。 これを最前面に開くようにしたいっす。
>>545 >これを最前面に開くようにしたいっす。
すれば?
547 :
名無しさん@そうだ選挙にいこう :2001/08/01(水) 22:23
>>545 ポップアップって、そういうものなのでは?
何か理由があってポップアップ使ってるのかもしれないけど、
作業ウィンドウ固定プロパティじゃダメなの?
ポップアップされたフォームの前にレポートを開くのは無理だと思う フォームを閉じてからレポート(の印刷プレビューでしょ?)を 開くマクロを作りな
549 :
どぅ〜んっ!! :2001/08/04(土) 01:11
アクセスって縦書き時の組数字できるんですか?
550 :
名無しさん@そうだ選挙にいこう :2001/08/04(土) 12:03
dBASE IV形式でデータをはき出したいんですけど マクロのエクスポートでうまくいきません
Windows Me で Excel2000を使っております。 ・セルを入力する際、例えば 半角の1を入力したら、「はい」と 半角の2を入力したら、「いいえ」などと 表示を自動的に置き換えることはできませんでし ょうか。 過去ログや解説書など心当たりのものは一通り見回 し、友人にもあたってみたのですが、どうしてもわ かりませんでした。 稚拙な質問で恐縮ですが、みなさまのお知恵をお借 りできれば幸いです。 最後の頼りが2チャンネルです。 どうぞよろしくお願いいたします。
552 :
551です。 :2001/08/05(日) 00:28
コンタクトを外していたので、 スレをまちがえてしまいました。 申し訳ございませんでした。 読み捨ててくださいませ。
553 :
:2001/08/08(水) 03:07
任意のファイルをすべてのドライブから検索したいんですけど、どうやったらいい のかわかりません。ひとつのドライブならできるのですが。
Driveオブジェクトとかでドライブを列挙すればいいだろ。 応用が利かないね。
ひとつのドライブ内で全フォルダ階層を再帰的に検索するロジックのほうが よっぽど難しそうな気もするが・・・
556 :
名無しさん@そうだ選挙にいこう :2001/08/08(水) 21:23
>>553 FindFirstFileというAPI関数を使えばいい
サンプルコードはMSDNOnlineかVB系のサイトに転がっているかもね
>>556 つーか、それでドライブが跨げないんだがって質問じゃないの(−−?
サンプルは今売ってるVBマガジンにもあるよ。
558 :
七誌 :2001/08/11(土) 15:14
ACCESS初心者です。 ACCESS Ver.7 で出来たアプリを使用してます。 (現在、2箇所。データ数は1万件程度、検索、更新は微々たるもの) それを1箇所にまとめ、ネット経由で検索するようにしたい。 (更新はネット経由でなくてもよい) PostgreSQLへの完全移行はバーコードの印刷、読み取りなどもあり 大変そうです。 通常はACCESS のアプリでデータ管理をし、1日の終りに ODBC により PostgreSQL の手動更新をし、 でWeb から検索できるようにしようとしたら、 ODBC でのテーブル更新は速度が遅く使えそうにありません。 MS SQL や ACCESS2000( Web から見れる機能があるらしい) では どうでしょうか? よろしくお願いします。
559 :
18才の芸能人 :2001/08/12(日) 00:41
560 :
名無しさん@そうだ選挙にいこう :2001/08/16(木) 10:30
97でVBAを使って自動的に最適化はできますか?
561 :
名無しおやぢ :2001/08/16(木) 14:37
>>560 DBEngine.CompactDatabase
>>558 どうかと聞かれても答えようがないのだが、
まず、貴殿の環境でミニマムなテスト環境を作って試してみては?
データアクセスページだと事実上イントラでしか使えない。
Internetへ公開するならASPで作り直しになるかもね。
563 :
名無しさん@そうだ選挙にいこう :2001/08/16(木) 17:10
ActiveXコントロールのコモンダイアログボックスを フォームに貼り付けようとしたら 『このActiveXコントロールを使用するライセンスが ありません』 とあったのですが、ユーザー登録しなくちゃいけないのでしょうか? ユーザー登録すれば使えるようになるのでしょうか? パッケージは 『office 2000Premium』なんですけど。
>>563 コモンダイアログを使うにはdeveloper版を購入する
必要があります。
基本的にAccessではactiveXは使わないことが基本です。
APIでコモンダイアログを呼び出しましょう。
565 :
名無しさん@そうだ選挙にいこう :2001/08/16(木) 22:52
MSDEで、2つのテーブルを作ってデータを入れてあって このテーブルをUNIONして新しいテーブルを作ったのですが、 このときに主キーフィールドが無くなってしまいました。 デザインからオートナンバのフィールドを追加したいのですが処理がタイムアウトに なります。 どうやったらこのフィールドを追加できるでしょうか?
566 :
558 :2001/08/17(金) 12:08
>>562 購入して使い物にならないと悲惨なので
MSSQL などを購入する判断材料にしたかったのですが・・・。
もう少しMSのサイトを調べてみます。
>>566 SQLServer2000の評価版ならVBマガジンの付録にもあるよ。
Access2000を一つ買えばMSDEがついてくるから、それでも評価は可能。
そのくらい経費でなんとかなるんじゃないの?
568 :
558 :2001/08/17(金) 15:10
>>567 VBマガジンとAccess2000ですね。
いろいろと情報ありがとうございます。
569 :
名無しさん@そうだ選挙にいこう :2001/08/17(金) 16:45
>>564 回答ありがとうございます。
APIでコモンダイアログを呼び出すというのが
よくわからないのですがどんなコードを書けば
いいのでしょうか?
570 :
名無しさん@そうだ選挙にいこう :2001/08/17(金) 17:11
すみません質問です。 テーブルで "受注日""受注商品"というデータがあるとします。 例として 8月1日---商品1 8月3日---商品2 8月10日---商品3 とあるとします。 これを 8月1日----商品1 8月2日----なし 8月3日----商品2 8月4日----なし 8月5日----なし 省略 8月10日----商品3 という様に表示したいのですが 良い方法はありますか? 「なし」の表現方法は何でも良く 空白でも構いませんが、日にちが 欲しいのですが・・・ 無理ですか?
>>570 通常日付テーブルを別にもってそれとリンク
573 :
名無しさん@そうだ選挙にいこう :2001/08/18(土) 21:41
574 :
ゆうすけ :2001/08/19(日) 10:49
素朴な疑問なのですが・・・データベースをエクスプローラで削除したあとも 「既存のデータベース」にファイル名だけ残ってしまっています。(もちろん 開けない) どうしたら名前を消すことが出来ますか?
>>574 レジストリいじればできるけど、やめた方が無難だね
仕様と思ってあきらめなさい(藁
576 :
名無しさん@そうだ選挙にいこう :2001/08/19(日) 13:56
>>574 レジストリ
HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Access\Settings下の
MRU1〜MRU?(?はリストに登録されてる数)
を削除すれば消えるけど、もっとスマートな方法があるのかも。
577 :
ゆうすけ :2001/08/19(日) 14:38
ありがとうございました。とっても参考になりました。>575,576
578 :
569 :2001/08/19(日) 17:29
579 :
名無しさん@そうだ選挙にいこう :2001/08/22(水) 22:49
580 :
くすりや :2001/08/23(木) 01:24
知ってる方教えてください 薬局で使う在庫管理システムをACCESS2000で作ってたのですが、新規店舗に新たに導入するたびAccessを購入する必要がありました。 XPはランタイムごとファイルを作成してAccessが入ってない端末でもファイルを使うことができるようになったと聞きました。 使用感や規制など詳しい方教えてください。
>>580 Office2000のDeveloperEditionを買えば、
ランタイム版のAccess2000を配布できたんだが....
XPも同じような製品構成かと思われ。
違ってたら訂正して。
>>579 うちではそんな現象に遭ったこと無いです。
貴殿のコードを見直してみては?
どんなことをやってるのか書いた方が、よい回答が得られるかも。
>>579 壊れる前兆だな。。
新規mdbにすべてインポート、最適化
584 :
至急教えてください :2001/08/23(木) 11:13
アクセスの入力画面で新しいレコード画面へ移動出来なくなってしまい ました。 どうすれば新規の入力画面へ移動出来る様に戻るのでしょうか? 過去に入力レコードなら自由に行き来出来るのですが。
>>584 フォームのプロパティ「追加の許可」
を誤って「いいえ」にしたというオチかと思われ。
>>586 漏れもそこを推薦する。
一部の腐れ常連は嫌いだがな。
くれぐれも言葉遣いは丁寧にな(わ)
588 :
至急教えてください :2001/08/23(木) 14:02
>>585 さんありがとうございます。
>フォームのプロパティ「追加の許可」
>を誤って「いいえ」にしたというオチかと思われ。
いま行ってみましたが全て「はい」のままでした。
589 :
至急教えてください :2001/08/23(木) 14:23
590 :
くすりや :2001/08/23(木) 16:26
>>581 ありがとうございます
ランタイム付きではどの程度まで作業可能なのでしょうか?
例えばクエリの抽出条件を変えたりすることは可能でしょうか?
>>584 フォームでの作業中のことだと思うんだけど。。
元になってるクエリ、ちと見てみそ
妙なリレーション組んでない?
591 :
名無しさん@そうだ選挙にいこう :2001/08/23(木) 22:54
>>582 -583
コードなんか書いていないのに出るんですよ…
普通の、といったら語弊があるかもしれないけど、
ただのOracleのリンクテーブルを開いているだけなんです。
会社では同じ現象にあっている人が数人いるので、
そんなに珍しいことではないと思うんですが…
>>591 >Oracleのリンクテーブル
最初から書け!
ODBCリンクなんぞ不具合の宝庫じゃ。。気にいらんかったらドライバを
へんこうせい!
593 :
ひよこ名無しさん :2001/08/24(金) 05:52
いきなり質問です。 コピペした時にコピペ元ではなく、セルの書式を優先させるには、どうしたらいいんでしょうか? 例 セルの書式ゴシック9ポイント赤文字、背景水色。 そこへ、テキストとかワードとかからコピペすると、書式がコピペ元のを採用されてしまい それを又、元に戻すのがめんどいんですが、何とかなりますか?
594 :
ひよこ名無しさん :2001/08/24(金) 05:53
あっすいません、エクセルと間違えましたです。失礼。
>>590 デザインモードが使えないだけ。
クエリの抽出条件の変更なら大丈夫。
597 :
名無しさん@そうだ選挙にいこう :2001/08/24(金) 15:55
<質問> フォームのデザインビューでフォームの大きさを 指定したのに(灰色の部分)、フォームビューにすると その大きさを無視して、デザインビューのウィンドウと 同じ大きさになってしまうのはなぜですか? どうしたらデザインビューの灰色のフォームの大きさに できるのでしょうか。
598 :
くすりや :2001/08/25(土) 00:44
現在、アクセス2000 で商品マスター検索を作ろうと勉強中です。 検索コマンド?に seek と findfirst があるのですが、どちらを使った方がいいでしょうか?
600 :
ノーブランドさん :2001/08/26(日) 00:14
先日、茶(ウェストンブラウン)のプレーントゥを青山で購入しました。 だいぶ前になりますが、MNさん、WESTONファンさん、 いろいろとアドバイス ありがとうございました。 この木型はとても僕に合っているようで、ウェストンにしては最初から あまりキツさを感じません。 (僕がウェストンのキツさに慣れてしまっているのかもしれませんが・・・) まさに自分にぴったりの靴、という感じで、とても満足しています。 この茶も、始めは派手すぎるかなと心配しましたが、 最近はホントにウェストンらしいとてもいい色だとおもっています。 今後の変化が楽しみです。
601 :
ノーブランドさん :2001/08/26(日) 00:47
602 :
ななし :01/08/26 20:40 ID:D8ciO/JM
アクセスの「候補キー」「キー」ってなんですか?
603 :
名無しさん@そうだ選挙にいこう :01/08/28 11:09 ID:/loPusng
質問があります。 運動会のような大会があるとして、種目ごとにグループ分けを行い、 データに順位をつけて(タイムの速い順)、その順位を元に得点を 計算し集計したいのですが、アクセスにはエクセルの"RANK関数"の ような順位づけを簡単に行うことのできる関数がありません。 このような集計作業はエクセルのほうが適しているでしょうか。 それともアクセスでできる何かいい方法があるでしょうか。 初歩的な質問だと思いますが、よろしくお願いいたします。
>>603 >このような集計作業はエクセルのほうが適しているでしょうか。
文面よりの推察だが、
貴殿のスキルなら、Excelの方が適していると思われ。
605 :
くすりや :01/08/29 21:54 ID:5Hum/Uuc
すんません また教えてくだされ MDEファイルっつうのを作ろうと思うんですが、何故か上手くいきませぬ 他のファイルでは普通にできるんですがの これって作るのになんか条件あるんですかね?
>>605 どううまくいかないの?
#と2chじゃなくても訊かれると思ふ
607 :
くすりや :01/08/30 16:23 ID:XbhfMJSc
結果だけ “MDEファイルを作成することができませんでした。”ってメッセージがでて終わりです。 どっかで既出のネタ?
609 :
名無しさん@そうだ選挙にいこう :01/08/31 14:01 ID:/NIIGOVI
ありがとうございます 参考になりました
610 :
名無しさん@そうだ選挙にいこう :01/08/31 15:40 ID:yMnUNaqs
まったくの無知で申し訳ない。 schema.iniの書き方、書式などが載っているHPがあったら 教えてください。
611 :
vb :01/08/31 15:59 ID:MQvma76Q
612 :
名無しさん@そうだ選挙にいこう :01/09/02 21:03 ID:eZbtjNLQ
初心者で申し訳ないですが、 クエリーで並べ替えを行い、並べた結果に順番を割り振りたいと考えています。 そこで考えたのがRow関数ですが、 クエリーの列でRow()関数を単独でつかうことはできないのでしょうか?
613 :
名無しさん@そうだ選挙にいこう :01/09/02 22:12 ID:/zzn5YrI
614 :
くすりや :01/09/03 00:30 ID:OPj62eHQ
おお! ありがとうございます (わしこればっかやな・・)
>>610 をれも無知だが、
Accessのヘルプやdao35.hlpに書いてあるよ。
616 :
名無しさん@そうだ選挙にいこう :01/09/03 18:02 ID:qhv9RJGE
617 :
ACCESS初心者 :01/09/04 22:47 ID:TE3ypa5o
すいません、質問です。 帳票フォームにおいてなんですが、コントロールにカーソルが移動した時に そのコントロールのレコード全体が前景色あるいは背景色等が変わり 周りのレコードから容易に区別でき、見分ける事が出来るようにしたいのです。 例えば、あるコントロールのフォーカス取得時イベント等で forms![請求明細]![金額].Forecolor=255 などという具合に横一列に並ぶそれぞれのコントロールのプロパティを 変えてやってもカーソル位置のレコード横一列だけが変わるのではなく 上下左右皆変わってしまいます。 インターネット上で検索をかけてはいるのですがなかなか良いキーワード が無い様で見つからないのです。 帳票フォーム、選択、反転表示等のキーワードで調べたのですが...。 皆様よろしくお願い致します。
618 :
名無しさん@そうだ選挙にいこう :01/09/04 23:42 ID:4VBIdMeM
>>617 フォーカスのあるフィールドの色を変えるのであれば簡単にできる。
いわゆる「条件付書式」の条件に、「フォーカスのあるフィールド」を使う。
ただし、レコード全体となるとやっかいだな。
できないことはないが、ちょっと工夫が必要。
やはり「条件付書式」を使うことになるが、条件に使うための
カレントレコードのマーキング用のYes/No型の、フラグフィールドが必要になる。
ちょっと、初心者さんには難しいかもね。
619 :
ACCESS初心者 :01/09/05 10:44 ID:OMSgp0vo
>>618 ありがとうございます、出来ました。
フラグフィールドをテーブルに追加。
追加したフラグフィールドをテキストボックスとしてフォームに貼り付け。
そのフラグフィールドの条件書式設定、True(-1)の時に
前景色、背景色を周囲から強調される色にする。
通常は前景色、背景色、共に白にする
他のフィールドのコントロールをフラグフィールドより後に貼り付けて
背景スタイルは透明にする。(フラグフィールドが下に敷かれる。)
詳細の背景は白
カーソルが移動するコントロールボックスの
GetFocus( ) Me.フラグフィールド=True
LostFocus( ) Me.フラグフィールド=False
という具合にしました。
うまく働いているようです。
助かりました、本当にありがとうございました。
620 :
618 :01/09/05 22:49 ID:WUzXQhE2
>>619 ご名答!
あれだけのヒントで、ここまで完璧に組めるとは、あんた初心者じゃないよ。
>>620 お褒め頂き?ありがとうございます。
フラグフィールドの追加でピン!と来て一気に氷解しました。
本当に助かりました。
これからは中級者としてカキコします。(笑)
レポート出力したものをクリップするため表は右側、 裏は左側によせて出力したいのですが、 レポートを2種類作り、交互に選択する方法が良いですか?
623 :
なまはげ。 :01/09/08 10:23
はじめまして。どうか先輩方のお知恵お貸しください。 初心者ですが住所録を作りました。そのフォームに関する質問です。 郵便番号のフィールドから住所を自動的に入力されるようにしたのですが、 入力後住所のフィールドに自動的に移動させたときに選択された状態になってしまうのを、 入力された住所の右側でカーソルを待機させたいのですがどうすれば良いのでしょうか。 **区**というような住所のあとに番地を入れるのにいちいち選択解除するのが面倒です。
624 :
名無しさん@そうだ選挙にいこう :01/09/08 12:56
>>623 住所登録フィールドは1つでなければいけないのでしょうか?
私ならば郵便番号から自動的に住所が入るフィールドと
手入力で入力するフィールドに分けます、住所1(自動入力)、住所2(手入力)と。
後は自動入力のテキストボックスのタブストップを「いいえ」にして
郵便番号のテキストボックスから手入力のテキストボックスに飛びます。
また一つのフィールドでないといけない場合には
郵便番号で自動入力される非連結のテキストボックスを作り
住所に番地だけ入力後、その住所テキストボックスに注目がカーソルが離れた後
に非連結テキストボックスと住所の内容を連結して再代入するように
コードを書きます。
>>623 フォーカス取得時に
Me!テキスト1.SelStart = 1000
とかすれば
627 :
なまはげ。 :01/09/08 23:46
みなさん、ありがとうございます。 >623 のコードはどういう意味でしょうか?
628 :
なまはげ。 :01/09/08 23:49
>627 自己レスですみません。本当にありがとうございました。 SelLength,SelStart,SelText,SelLengthB,SelStartB プロパティ(実行時専用) 関連項目 対象 構文 object. SelLength [= number] object. SelStart [= number] object. SelLengthB [= number] object. SelStartB [= number] object. SelText [= string] SelLength,SelStart, SelLengthB,SelStartB プロパティの構文の指定項目は次のとおりです。 指定項目 内容 object 「対象」一覧内のいずれかのオブジェクトを指すオブジェクト式です。 number 選択文字数、選択開始位置を設定します。 SelText プロパティの構文の指定項目は次のとおりです。 指定項目 内容 object 「対象」一覧内のいずれかのオブジェクトを指すオブジェクト式です。 string 選択文字列が設定されます。 データ型 SelLength,SelStart, SelLengthB,SelStartB : 整数型 SelText : 文字列型 解説 テキスト(Textプロパティ)の選択文字数(SelLength)/選択文字(バイト単位)数(SelLengthB)、選択開始位置(SelStart)/選択開始(バイト単位)位置(SelStartB)、選択テキスト(SelText)を設定/取得します。
629 :
名無しさん@そうだ選挙にいこう :01/09/09 01:38
データ型=数値型 書式設定=パーセント で設定したフィールドに「10%」と 表示させたいのですが… 10と入力すると1000%、0.1と入力すると0%になってしまいます
630 :
名無しさん@そうだ選挙にいこう :01/09/09 20:29
数値を漢数字にへんかんしたいんですが?たとえばフォームから12,000ていれて なかで演算させて八千弐百円とか出力させたいんですが。いろんな本みてものってなくって どなたか教えて下さい。
631 :
名無しさん@そうだ選挙にいこう :01/09/09 21:35
>>629 フィールドサイズが「整数型」/「長整数型」になっていない?
小数点を扱えない型を指定していれば、当然そうなる。
また、フィールドサイズが「整数型」/「長整数型」でも書式を
#% と打てば、同じ結果が得られる。
632 :
名無しさん@そうだ選挙にいこう :01/09/09 21:37
633 :
名無しさん@そうだ選挙にいこう :01/09/09 23:53
数値を表示する際に漢数字に変換する関数はどこかでみたことがある。 どこで見たかは忘れた。
636 :
名無しさん@そうだ選挙にいこう :01/09/13 15:47
フォームに置いた非連結のリストボックスに値を自由に追加するには どうすればよいのでしょうか? リスト1.Column(0) = 1 とやってもエラーになってしまいまして…
637 :
名無しさん@そうだ選挙にいこう :01/09/13 23:43
SQLサーバーで可変長やNULL許可は使わない方がいいと聞きました。 でもフォームのテキストコントロールに挿入されるスペースがウザイです。 RTRIMかけようと思うのですがどの段階でやるのが最良でしょうか? 1.ビューのSQL文 2.レコードセットのデータ→テキストコントロール挿入時 3.その他 4.RTRIMは普通使わない
638 :
名無しさん@そうだ選挙にいこう :01/09/17 13:51
質問します。 1234-5678-9と1234- 5678-9を同一の値として、読みとらせるにはどうしたら 良いのでしょうか?リレーションしてみたんですが、同一と考えてくれないのです。 よろしくお願いします。
>>637 漏れなら、NULL不許可で可変長は使う。
それが一番楽だと思う。
可変長を使わないほうがイイってのは20年前の話ぢゃないかい?
640 :
名無しさん@そうだ選挙にいこう :01/09/18 00:27
>>638 replace関数を使えば?
replace("1234- 5678-9"," ","") の結果は、1234-5678-9、となる。
ただし、replace関数はクエリの演算フィールドには使えないから注意。
プロシージャを仲介する必要がある。
あとは自分で考えてくれ。
641 :
名無しさん@そうだ選挙にいこう :01/09/18 03:05
DeveloperのAccessランタイムってどれ? InstallShieldでパックしようと思ってるんだけどさ… 入ってるのは確認したが、使い方が分からず… ど〜すりゃいいのでしょう? 板違い?
642 :
5モロ、無修正画像サイト発見! :01/09/18 03:25
DeveloperのSetupウイザードでSetupふぁいる作ってから パックするんじゃないのかい? Setupウイザード以外で配布してライセンス違反にならないの?
644 :
名無しさん@そうだ選挙にいこう :01/09/18 18:20
>>643 あ〜それです!!
有難う御座います。
InstallShieldで、アプリとランタイムを同梱したいって
書いた方が、良かったですね…
そのランタイムをどうすれば良いのか分からなくて…
有難う御座います。
わからないいんで、どうかおしえてください。 単票形式に、表形式を乗っけて、登録して 次のレコードに移動するんですが、 表形式の部分が、入れた分だけのレコードが残ってて、 #DEL って出るんですが、 それをひとつに戻したいんです。 A1 B1 C1 をいれて、登録して新規レコードへ行くと #DEL #DEL #DEL って出るんで、 [ ] ひとつだけを出したいんですが。 どうすればよいのでしょう? 説明が下手すぎてすみません。
Me.Recalc で、いけました。 お騒がせしてすみませんでした。
647 :
教えてください。 :01/09/23 16:50
フォームの画面からコマンドボタンを押して、 2レコードを同一テーブルに追加したいのですが、 イベント プロシージャの書き方を教えてください。 IDはオートナンバー型 名前はテキスト型 回数は数値型 テーブル(回数テーブル) ID、名前、回数 フォーム(データ入力) 名前入力1、回数入力1 名前入力2、回数入力2 コマンドボタン(登録) クリック時-イベントプロシージャ お願いします。
648 :
大サービス :01/09/23 21:38
>>647 今度からは、何がわからないのか?
自分ではどうしようとしたのか、何につまずいたのかぐらい書いてねん。
コーディングお願いします→わかりました,というほど世の中甘くない。
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("回数テーブル")
rs.AddNew
rs![名前]=Me![名前入力1]
rs![回数]=Me![回数入力1]
rs.Update
rs.AddNew
rs![名前]=Me![名前入力2]
rs![回数]=Me![回数入力2]
rs.Update
rs.Close
649 :
教えてください。 :01/09/24 09:08
大サービスさん 有難う御座います。 >今度からは、何がわからないのか? >自分ではどうしようとしたのか、何につまずいたのかぐらい書いてねん。 ヘルプ見てオープンとクローズだけ出来て、追加されていませんでした。 rs.AddNew rs.Update を理解していませんでした。 648の方法で動作しました。有難う御座います。
コンボボックスに表示させたいんですが、 どういうふうにすればいいんでしょうか? T_main NO 詳細 T_名前 NO 名前 T_mainで、ウィザードから表形式で作ったんですが、 その中に複数個あるおなじNOのT_名前を コンボボックスで表示したいのです。 NO 詳細 名前▼ こんな感じで。(^^; よく分からない説明かもしれませんが、よろしくお願いします。
651 :
初心者ですいません :01/09/25 17:06
初心者で恐れ入ります。 アクセス2000で 簡単なプログラミングを していたんですが、突然とんでしまい。 その後、フォームの移動をしようとすると、モジュールが有りません。 というメッセージが表示され、動かなくなってしまいました。 F9で、ブレークをかけても止まりません。 どなたか、教えてください。どうしたら直るのでしょうか?
すみません、どなたか教えてください。 表形式でコンボボックスをとってるのに、 2データ目、3データ目になっても コンボボックスの中身が、1データ目のままなんですが。 どうすればいいんでしょう?
えっと、650と同じで NOからデータを照合させて、 名前を引っ張ってきてるんですけど・・・
>>655 レコード移動する度にコンボの内容を変えたいんだね?解釈あってる?
で、現状はどんなコーディングなの?
コントロールソースにNO入れて、 値集合ソースに T_名前 のNOの抽出条件で [forms]![今開いてるフォーム名]![名前] って感じです。 コーディングって こんなんでいいんですか? すみません。よくわからないもんで
>>657 コントロールソースに「名前」
値集合ソースに
T_名前 のNOの抽出条件で
[forms]![今開いてるフォーム名]![NO]
ぢゃないかしら?
No「ノー」と紛らわしいから、ちゃんと命名した方がいいかもね。
すみません。 説明が稚拙で。 T_mainを使ってウィザードでフォームを作ったんで コントロールソースに"名前"が、でてこないんで、 "NO"でとって [forms]![今開いてるフォーム名]![名前] を、抽出条件にして出します。 で、2番目のレコードを見ても 1番目のレコードの中身がコンボボックスで出るんですよ。 で、どうすればいいのかなぁと。 すみません。 よろしくお願いします。 m(_ _)m
フォームやレポートのデザインを開く時、 開くまでに異常に時間がかかる(5分くらい)ことがあります。 これはなんなんでしょう?
質問です Access2000ですが、端末のOSをNTから2000に変更したところ 他の人が同じテーブルを開いていると、保存できないという問題が 発生しました、アドバイスをお願いします。
662 :
名無しさん@そうだ選挙にいこう :01/09/28 18:24
その「他の人」にテーブルを閉じてもらう。
acwzmain.mdeって何ですか? 切断された参照とエラーが出ます。 使った覚えないぞー!!
>>663 ウィザードかな?
アドインとして読み込もうとしてるときにエラー出してるかも。
Officeの修復セットアップでも試してみたらどうかな?
>>664 レスありがとうございますm(__)m
あぁ、説明不足でした。自分のパソコンでだったら正常に動くんです。
ランタイムでパッケージしたものを他のPCで起動するとこういうエラーが・・・
というかAccess2002でした。板違いでした。
つい昨日Accessを使い始めた者です。本を3冊買ってきて必死で勉強しています。 そこでひとつだけわからないことがあるのですが、 テーブルやクエリを参照しながら、その中で選択したレコードのフォームを さっと開くことはできないのでしょうか。 今まで使ってきたLotusApproachではそのあたりの感覚が一目瞭然だったのですが Accessではいろいろ試してもできず困り果てています。 どなたかご存知の方、ご教唆お願いいたします。
667 :
ACCESS超初心者 :01/10/03 17:47
すみません よろしくお願いします!! m(u_u)m やりたいことは333と同じなのですが、環境が・・・ MSDEを使い、Access2000で作っているadpファイルなのですが。 親フォームにあるフィールド1の内容によって サブフォームにあるコンボボックスに表示される内容を搾りこみたいのですが、 どうしたら良いのかわかりません。 mdbファイルなら「値集合ソース」のところに SELECT文を直接書いて WHERE句に テーブル項目1が 親フォームのフィールド1と同じ物だけ持ってきなさいって事で [テーブル項目1]=[Forms]![親フォーム]![フィールド1] と記述で良いと思うのですが、これが adpファイルだと エラーになってしまいます。 フォームが判別できないように思います。 ストアドを使うのかと思ったのですが フィールド1の内容をパラメータで渡す場所が解りません。 レポートの方には「入力パラメーター」というのがあって、ストアドに渡せるようですが、フォームには無いですよね? いろいろ調べたのですが どうしても解らないのです。 どなたかご存知の方 教えてください、よろしくお願いします。
668 :
名無しさん@そうだ選挙にいこう :01/10/03 20:52
>>597 フォームの書式、サイズ自動修正は「はい」になってますか?
んで、保存して閉じて、開きなおしたら指定したサイズになってないでしょうか。
>>599 検索をどのようにして、検索結果をどう使いたい?それによって変わってくると思います。
僕は商品検索に非連結のテキストボックス[検索条件]、ボタン[検索実行]を置いてクリック時のイベントプロシージャで
If Forms![商品検索]![検索条件] <> "" then 'If文取ったら検索条件に何も要れずに実行すると全商品かな?
Forms![商品検索結果].Form.RecordSource = "SELECT T商品.* FROM T商品 WHERE (T商品.商品名) Like '*" & Forms![商品検索]![検索条件] & "*';"
End If
こんな感じで作ることが多いです。
>>650 コンボボックスの コントロールソースを「NO」、値集合ソースを「T_名前」、
列数を「2」、列幅を「0cm;3cm」とかでどうでしょう。
初めてこのスレ来ましたが良スレなので、僕にわかるとこだけですが。
いつか聞きにくるかもしれませんが、その際はよろしく。
669 :
名無しさん@そうだ選挙にいこう :01/10/04 02:20
670 :
名無しサン@ボの牛丼 :01/10/04 03:03
>>667 ストアドプロシージャの引数名を、フォームのコントロール名と同じにすればOK。
あとはストアドの引数を使ってレコードを絞り込めばいい。
フォームをまたがって参照したい場合は、この方法が直接使えないので、
サブフォーム上にメインフォームのデータを表示させとく隠しテキスト
ボックスを付けておいた方がいいかもしれない。
>>668 さん
レスありがとうございます。
しかし、ACCESSを知ってる人に聞いたところ、
「コンボボックスは、その中から何かを選ぶという処理なんで
検索表示には向かないから無理じゃないか?」
といわれて、あきらめて回避してしまいました。
すみません。
一応、こんな感じにしたかったんです
NO 詳細 名前▼
01 AAA BBB▼
02 CCC DDD▼
で、カーソルが最初01の部分になって
BBBは表示されるんですが、DDDの部分が空白になって
02にあわせるとDDDの部分は表示されるんですが
BBBの部分が消える、という状況でした。
どうにかできそうだったら、誰かお願いします。m(_ _)m
672 :
ACCESS超初心者 :01/10/04 11:28
667です!!!
レスありがとうございます。>669-670
>>669 いえ、それは 最初にやりました、「なんかゴミがついてるぞ」って思って・・・
>>670 ありがとうございました!!
できました!!! (~▽~喜)わーい
フォームのフィールドとストアドのパラメータ名を同じにすれば渡してくれるんですね!?
も〜〜〜 3ヶ月来の(はまってたのはこれだけじゃないですが…)問題がやっと解決しましたっ!!!
本当にありがとうございました!! m(u_u)m
>>650 ,
>>671 どのようにされたいのかわからなくなってしまいました。
>650 その中に複数個あるおなじNOの
>T_名前をコンボボックスで表示したいのです。
>655 NOからデータを照合させて、名前を引っ張ってきてるんですけど・・・
>671 「検索表示には向かないから無理じゃないか?」
とのことなのでT_名前は
NO 名前
1 鈴木
1 田中
2 斉藤
3 佐藤
3 伊藤
となっていてT_mainのNOが1だった場合、鈴木か田中が選択できる様に
したいとのことでしょうか?
かつ、T_mainには名前を保存するフィールドが無いのでしょうか?
さしつかえなければT_mainとT_名前のテーブルになんと言うフィールド
があって、主キーがどれに設定されているかとデータ型を教えてくださいませ。
ちなみに、僕が上記に似たようにしたいときは
T_Main
MainID 数値型かオートナンバー 主キー
詳細 テキスト型
種別 数値型
名前ID 数値型
T_名前
名前ID 数値型かオートナンバー 主キー
名前 テキスト型
種別 数値型
で、T_mainをレコードソースにしたフォームF_Mainは
MainID 詳細 種別 名前ID▼
コンボボックス「名前ID▼」は
>>668 と同じでコントロールソースを名前IDに。
名前ID▼のイベント-フォーカス取得時のイベントプロシージャに
Private Sub 種別_AfterUpdate()
Me![名前ID].RowSource = "SELECT [T_名前].* FROM T_名前 WHERE ((([T_名前].[種別])=Me![種別])); "
End Sub
これを置きます。Me![名前〜Me![種別])); "のところは改行なしで。
これで、種別に数字を入力すると、名前IDのコンボボックスが絞り込まれます。
なお種別を入力後、保存をするとコンボボックス「名前ID▼」の値集合ソースを
SELECT [T_名前].* FROM〜に書き換えてしまい、開きなおしたときに
名前ID▼に名前が表示されないレコードがでます。やってしまった場合は
値集合ソースを「T_名前」に戻してくださいね。
こんな感じにすると思います。長文になり失礼いたしました。
Private Sub 種別_AfterUpdate() Me![名前ID].RowSource = "SELECT [T_名前].* FROM T_名前 WHERE ((([T_名前].[種別])=Me![種別])); " End Sub は Private Sub 名前ID_Enter() Me![名前ID].RowSource = "SELECT [T_名前].* FROM T_名前 WHERE ((([T_名前].[種別])=[Forms]![F_Main]![種別])); " End Sub の間違いです。最初上記のように種別の更新時に置いていたのですが、 既に種別が入力されているレコードの名前ID▼を変更しようとしたとき 不都合が出たので直した際、上記の記述を修正し忘れていました。 申し訳ないです。
675 :
名無しさん@そうだ選挙にいこう :01/10/04 21:43
>>667 あなたの言うとおり、SQL文を組み立ててやればよいのだ。
ただしそのときにSQL文中で直接フォームのコントロール
を参照するのでなく、いったん
"SELECT...WHERE [テーブル項目1] = " _
& [Forms]![親フォーム]![フィールド1].Value _
& " ORDER BY ..."
といった文字列を組み立ててやる必要がある。
コンボボックスの絞り込みのためにわざわざストアド
作るのも面倒でしょ。
あと、Accessを使うならフィールド名とコントロール
名は明確に分けておいたほうがよいと思いまっす。
676 :
アナログから光までオッケー :01/10/05 01:59
このサイトはみなさんのインターネット環境の
スピードを計ってくれます。また、遅いと思う
人は設定を少し変えることによって無料で
スピードを早くすることができます。
お金を出す前に一度試してみては
いかがでしょうか。上がりの計測も可能です。
http://cym10262.omosiro.com/
677 :
名無しさん@そうだ選挙にいこう :01/10/05 10:47
VBでADOを使用してAccessに接続し、SQLを送信して結果を得るために ・connectionObj.Open ・ConnectionObj.Execute がありますが具体的にどういった使い分けをするんでしょうか? またエンジンの種類や接続オブジェクトによって速さに関係してきますか? 初心者のつまらん質問なんですがご教授お願い致します。
↑すみません。 ・RecordsetObj.Open SQLstr,dbObj,*,* ・Set RecordsetObj.Execute(SQLstr) に訂正です。
>668さん レスありがとうございます! で、テーブルは T_main 記事NO 数値型 主キー HTTP ハイパーリンク 媒体名 テキスト 日付 日付型 T_会社名 記事NO 数値型 会社名 テキスト です。 値集合ソースが [FORMS]![F_検索]![会社名] で、フォームの会社名に引っ張ってきて 記事NO 日付 媒体名 HTTP 会社名▼ が一つの記事で、会社名だけが複数あるという感じです。 一つの記事に対して会社名がいくつかあって 会社名が違うだけで同じ記事に対していくつも出るのが嫌だったので コンボボックスで見れないかなぁ、と思ったんですが、 記事NO 日付 媒体名 HTTP 会社名▼ 記事NO 日付 媒体名 HTTP ▼ 記事NO 日付 媒体名 HTTP ▼ こんな感じになってフォーカスのあったところしか 会社名が出なかったんですよ。 今も出ないですけど。( i_i) すみません長々と・・・
680 :
名無しさん@そうだ選挙にいこう :01/10/05 14:18
Win2kSP2で、Access97使ってます。 ここの、"Threads"=dword:00000003 の値を増やすとスレッドが増えてDUALCPUにした時などに 計算速度の向上が見込めますか? Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5] "PageTimeout"=dword:00001388 "LockRetry"=dword:00000014 "MaxBufferSize"=dword:00000000 "Threads"=dword:00000003 "ExclusiveAsyncDelay"=dword:000007d0 "SharedAsyncDelay"=dword:00000032 "FlushTransactionTimeout"=dword:000001f4 "MaxLocksPerFile"=dword:0007a120 "LockDelay"=dword:00000064 "RecycleLVs"=dword:00000000 "UserCommitSync"="yes" "ImplicitCommitSync"="no"
やっとなにをされたいのか理解できました。
>>673 >>674 のちょっとした変更で出来ました。
「会社名▼」のコントロールソースに「記事NO」、
値集合ソースを「T_会社名」、列数「2」、列幅「0cm;3cm」にして、
フォーカス取得時のイベントプロシージャに
Private Sub 会社名_Enter()
Me![会社名].RowSource = "SELECT T_会社名.* FROM T_会社名 WHERE (((T_会社名.記事NO)=" & Me![記事NO] & "));"
End Sub
これを書いてください。
何度も書くようですが、「会社名▼」をクリックすると値集合ソースを
「SELECT T_会社名.* F〜」に書き換えてしまうので、フォームを保存するとき
「T_会社」に戻すことを忘れずに。(他を直すときなど)
あ、フォームを開く時に「Me![会社名].RowSource = "T_会社名"」で
解決しますね。
Private Sub Form_Open(Cancel As Integer)
Me![会社名].RowSource = "T_会社名"
End Sub
こんな感じでいかがでしょう?
書き込んだ後、チェックしていたらクリックすると消えていってしまう ことに気付きました。 そこで、新しく「会社名2」と言う名前でテキストボックスを作ってください。 コンボボックスじゃなくてテキストボックスです。 で、コントロールソースを =DLookUp("会社名","T_会社名","記事No = T_Main!記事No") とします。これをコンボボックス「会社名」の前面に重ねて置いてください。
おお!! すごいです。 そんな方法気づきもしませんでした。 ありがとうございます。 これで、.安心して夜を迎えれます。 助かりました。 m(_ _)m
684 :
ACCESS超初心者 :01/10/05 18:09
>>675 様
667です。
レスありがとうございます!!
>コンボボックスの絞り込みのためにわざわざストアド
>作るのも面倒でしょ。
できれば そうしたいです。
えっと・・・(汗
[テーブル項目1]=[Forms]![親フォーム]![フィールド1]
じゃなく
[テーブル項目1]=[Forms]![親フォーム]![フィールド1].Value
にすれば いいのでしょうか?
それを 「値集合ソース」に入れれば良いのでしょうか??
それだと「!の付近にエラーがあります」というエラーが出てしまいますのできっと違いますよね?
申し訳ないです もう少し詳しく教えていただけますか?
よろしくお願いします。m(u_u)m
685 :
名無しさん@そうだ選挙にいこう :01/10/05 23:21
>>678 ・RecordsetObj.Open → 1レコードごと処理したい場合
・Set RecordsetObj.Execute → 一括処理した場合
SQLServerはクライアント側のフォームのコントロールなんて見えないん じゃないのかね。たぶん。 自フォームにTextbox1というテキストボックスがあるとしよう。中身は数値だ。 このとき、 "SELECT * FROM テーブル WHERE フィールド = Me.Textbox1.Value" と "SELECT * FROM テーブル WHERE フィールド = " & Me.Textbox1.Value とはちがうんだ。
675様 >SQLServerはクライアント側のフォームのコントロールなんて見えないん >じゃないのかね。たぶん。 はい、そんな感じがします。 この二つは違うんですね?! ( ゚o゚)ハッ なんか・・・ あれ?? やってみます!! えっと・・・会社行けないのでMSDEの設定から自分でやってみるので時間かかると 思いますが やってみます!!!p(^^)q また来ます!! ありがとうございました!!
688 :
名無しさん@そうだ選挙にいこう :01/10/07 18:11
現在ネットの通信販売をしていてAccessを使って作業を簡略化しようと考えています。 商品と注文の管理をしたいので 商品テーブルに「商品ID」「商品名」「単価」などを 注文テーブルに「氏名」「住所」「商品ID@」「数量@」「商品IDA」「数量A」… といった具合に作って、注文メールが来たらソフトを使って注文テーブルに 情報を入れていこうと思っているのですがこの様に商品@ABとなってしまうと リレーションとかがおかしくなってしまう感じなのですが この様な作り方は問題がありますでしょうか?
問題ありますでしょう。 素直に考えると、 注文テーブル(注文番号、氏名、住所) ├注文明細(注文番号、明細番号、商品ID、数量…) ├注文明細(注文番号、明細番号、商品ID、数量…) ├注文明細(注文番号、明細番号、商品ID、数量…) ├ : って感じではないかしら。
↑アクセスログをとるサイトでっす。 そっちのアクセスかよっ
テーブルを割り当てようとして、 Dim db As database がエラーとなりました(Access 2002で) どうしたらいいでしょう。Access 97では○でした
DAO.databaseが正解とかそんなとこでないかい 2000からADOが基本になったのよー
DAO それとも ADO?
DAO.recordset で定義したオブジェクトrsから、特定のキー値を持つ レコードセットをピックアップしようと、 rs.filter = ......... と記述すると、「この操作は、このタイプのオブジェクトには 実行できません」 代替の操作はあるのか?
698 :
名無しさん@そうだ選挙にいこう :01/10/10 12:51
ADOがデフォルトになったのだから、DAOを使う場合はDAOって書いて あげないといけないのさ
質問なんです。選択クエリーの抽出条件で、フィールドのどれかひとつでも合う文字があれば、そのレコードを全部抽出してくれる式はあるのでしょうか?誰か教えてください。 宜しくお願いします。
全角の、"(" と ")" つまり「かっこ」を含んだ変数は、 VBA において使えないのか?
701 :
名無しサン@ボの牛丼 :01/10/11 03:25
>>699 ワイルドカードを使えばいい。
A* Aで始まる文字列 A AB ABCDE A123など
*A Aで終わる文字列 A ZA 567Aなど
*A* Aがどこかに入っている文字列 A ABC 12A MAXなど
702 :
名無しさん@そうだ選挙にいこう :01/10/11 06:36
データベースの集計です。 商品コード 数量 AA 12 AA 5 B 5 C 7 C 9 というデータベースをソート・集計して AA 17 B 5 C 16 というデータベースを新規に作成したいのですが、 どのようにしたら良いでしょうか? よろしくお願い致します。
>>700 そもそも全角文字はトラブルの元だからは推奨しない。
(全く使えないと言う意味ではない)
全角記号は半角記号と同一視される物があるが、
その場合は変数名としては使用できない。
704 :
名無しサン@ボの牛丼 :01/10/11 11:10
>>702 クエリーを作る時に、ツールバーのΣボタンを押してみ。
「集計」行が出るので、「商品コード」は「グループ化」、「数量」は「合計」にする。
706 :
名無しさん@そうだ選挙にいこう :01/10/12 12:43
質問です。 accessで7万件程度の名簿を作ろうと思っています。 しかしこの名簿重複が激しく、何十回も同一人物が登場します。 この重複をデータ入力をしながら、省いていく機能はaccessにありますか? また数人で入力作業をするのですが、LANつないでデータベースを共有することは できますか? もうすごいドキュソな質問ですいません… 当方超初心者で困ってます。
>>703 ありがとう!
"_" で代用しました。
708 :
名無しさん@そうだ選挙にいこう :01/10/12 18:10
>706 データを入力し終えてから重複分を一括して削除することもできるし、 入力しながら重複分についてはその旨メッセージを出すこともできる。 作り方次第です。 LANでつないで共有することはできなくもないけど初心者はやめとい たほうがいいと思います。名簿を何冊かに分けてそれぞれがスタンド アロンで入力し、入力完了後に一つにまとめるというのはどうですか。
>>706 ADPでMSDEにすることをお薦めする。
LANで使うならMDBはやめよう(壊れるから)。
まあ「重複なし」インデックスでも張っておけば入力時にハジける。
でも7万件も手で鬱のは鬱だな。
Excelやカンマ区切りファイルになってるなら、
一気にインポートしちゃって、クエリーで重複を検出するのもイイかも。
710 :
名無しさん@そうだ選挙にいこう :01/10/13 02:03
こんなところで聞くのもなんですが、accessより軽い データベースソフトってないですか? DOS用とか抜きにして。 これはいいよっていうのがあったら教えてください お願いします
>>710 Access2000より軽いのはAccess97
Access97より軽いのはAccess95
もっと軽いのはAccess2.0
AccessはRDBMS&開発&利用の統合環境なので重いのだよね。
Delphiで画面作ってMDBファイルをアクセスすればかなり軽いんだけど、
そこまで死体かい?
712 :
名無しさん@そうだ選挙にいこう :01/10/13 12:39
>>708 >>709 ありがとうございます!
以前に同じ名簿を作ったときは今よりもっと初心者で、試行錯誤して
Excel>accessにインポートしたのですが、重複削除にとんでもない時間が
かかってしまいました。それで今回は!と思ったのです。
7万件はすごい鬱だけど、時間の制約があるのがさらに鬱です。
「ADPでMSDEにする」とは?教えてくれると嬉しいです。
重ね重ねドキュソですみません…
713 :
名無しさん@そうだ選挙にいこう :01/10/14 04:05
>>712 データ量、作業内容ともにMSDEの方がよいとは思いますが、時間の制約があ
るならば、今からMSDEの取り扱いを覚えるというのは避けたほうがいいよう
に思います。名簿を分けてエクセルで入力し、アクセスでインポート、そし
て重複削除した方が結局はトータルの必要時間は少なくてすむのではないで
しょうか。
ところで、前回の重複削除はどういう方法をとられましたか? そんなに時
間がかかるものなのでしょうか?
Vbaで、共通ルーチンをつくって、各イベントから呼ぶ方法って あるのかね?
>>713 >データ量、作業内容ともにMSDEの方がよいとは思いますが、
データ量7万程度mdbで余裕のヨッチャンです。
顧客入力程度の作業であるなら、mdbであとでまとめればOK
同時更新が必要な状況とも思いません
しかも、MSDEの理解できる主かも、発言内容見れば分かるだろに・・・
後の文章は同意するけどね。
>>712 時間がなければ、外注に頼みなさい。
当てがなければネットで探せばいくらでも見つかります(W
716 :
名無しさん@勉強中 :01/10/15 14:51
『 C:\WINDOWS\FONTS 』 にインストールしてあるフォントの一覧を コンボボックスに所得して表示・選択とかできますか? マイクロソフトのHPを検索しまくってもわかりません どなたか教えてくださ〜い!よろしくお願いします m(__)m
717 :
名無しさん@そうだ選挙にいこう :01/10/15 14:55
>>713 >>715 いろいろありがとうございます。
mdb調べてみますね。
外注出したいのですが、選挙の後援会名簿なので門外不出なのです。
前回は名簿を分けてエクセルで入力し、アクセスでインポート、そして最後に重複削除
の方法を取りました。
重複は削除せず、名前で並び替えて二回以上登場する人にNO2,NO3…とナンバーを打って
最後にNo1の人のみでソートをかけました。
が、随時最新名簿を印刷しなくてはならないので同時更新できる方が望ましいのです。
時間だけでなく、人員、予算ともに制約だらけですので選挙期間に入る前に
ベストの方法を見つけて効率よく進めたいと思ってるんですが…
これから本屋さんで調べてみますね。
フォームやレポートのデザインを開く時、 開くまでに異常に時間がかかる(5分くらい)ことがあります。 これはなんなんでしょう?
720 :
名無しさん@そうだ選挙にいこう :01/10/16 11:45
>>718 レスありがとうございます!
早速教えていただいたHPのサンプルモジュール集の
「51:フォントフォルダを取得する」のLZH ファイルをダウンロード
したのですが、Accessでは開けません。
サンプルモジュール集のページに、「※動作はWindows95 or 98+VB6.0(SP3) or Excel97 で確認しています。」と
書かれていたのでExcelでは開けたのですが、
これをAccessのモジュールにコピーして使うという感じでいいのでしょうか?
それとAPIのSHGetSpecialFolderLocationを検索で調べたのですが、
こんなページがひっかかっちゃいました。
http://www.microsoft.com/japan/support/kb/articles/J055/4/38.htm どうしようかな。
Vbaで、共通ルーチンをつくって、各イベントから呼ぶ方法って あるのかね?
>Vbaで、共通ルーチンをつくって、各イベントから呼ぶ方法って >あるのかね? あるよ ---終了----
accsssを使って販売管理ソフトを作りたいのですが大変でしょうか??
725 :
名無しサン@ボの牛丼 :01/10/17 01:28
>>724 これにチャレンジする人は結構多いが、VBAの知識がないと途中で挫折する。
(マクロの機能だけでは必ず限界が来る)
それでも末締オンリーなら比較的楽に作れるが、得意先毎に締日が違うとなると途端に難しくなる。
あと、SQLの知識があると、できる範囲がかなり広がるので、本格的にAccessでソフトを作りたいと考えているなら勉強した方がいい。
(SQLがわかれば、簡単なデータの修正や削除程度で、いちいちDAOやADOをつかう必要がほとんどなくなるし、処理も高速)
まあとにかく、販売管理ソフトはテーブル設計がものをいう。
テーブル設計が甘くて、後でレポート出力させようとしてうまくできず、
姑息なテクニックを駆使して苦労したことが多かった……反省。
テーブル設計のコツを二、三。
・テーブルは、マスタテーブル・トランザクションテーブルに分けて設計する。
トランザクションテーブル=日常処理に使うテーブル。
販売管理ソフトなら売上伝票のヘッダ部分・明細行部分を二つのテーブルに分けて作るのが一般的。
マスタテーブル=トランザクションテーブルに付随して必要となるテーブル。
販売管理ソフトなら、得意先リストや商品リスト・単価の入ったテーブルなど。
・テーブル設計する時、正規化ばかりにこだわると後で苦労する。
例えば売上明細テーブルにに商品コードがあれば、あと商品単価は商品マスタから毎回参照すればOKと考えてはいけない。
これは間違った正規化の例。後で商品の値上げ・値下げがあった時に、古いデータまで単価が変わってしまってはダメ。
だから、単価も売上明細テーブルに持たせてしまい、データが入力される毎に商品マスタから単価を転記する(ここにVBAやマクロを使う)ようにする。
同じように、締日処理が必要なら、売上(ヘッダ)テーブルに締日を持たせてしまった方が処理が楽かもしれない(そうしないと、後でかなりハマる)。
>SQLの知識 SQL ServerじゃなくてAccessで使えるSQL文の文法という意味。 例えばテーブルのデータの全削除は DELETE * FROM テーブル名;とか。 (これをDAOやADO、はたまたマクロで行わせようとなると何行になるやら)
728 :
名無しさん@そうだ選挙にいこう :01/10/17 18:36
>>727 レスありがとうございます!
>VB6の.frmファイルや.basファイルはエディターで開けば読めるよ。
>そのコード部分をAccessのモジュールにコピペして使えばよいかと。
メモ帳で開けました!
でも想像してたのとちがいました^^;
フォントの一覧を取得して選択できるようにしたかったのです…
ワードみたいにコンボボックスでフォントを選択して印刷〜♪みたいな感じにしたいのですが
参考になるHPとかサンプルってないでしょうか?
729 :
名無しさん@そうだ選挙にいこう :01/10/17 19:24
vbaでアクセスファイルからデータをインポートしたまでは よかったたのですが、そのままでは主キーが設定されません。 vbaで自動化したいと思うのですが、コードの書き方でいきずまって しまいました。いろいろしらべたのですが。。。 どなたかアドバイスいただけないでしょうか?? ちなみにテーブルは"T_uriage" 主キーに設定したいフィールドは sampleです。よろしくお願いします。
730 :
名無しさん@そうだ選挙にいこう :01/10/17 19:26
729っす ADOでの方法を教えてください。。。。
>>726 >(これをDAOやADO、はたまたマクロで行わせようとなると何行になるやら)
よーわからんな。。runsqlのことか?ロールバック使えないぞ(藁
フツーはDAOやADOとSQLを組合わせて使うモンだ。
732 :
名無しさん@そうだ選挙にいこう :01/10/17 20:27
>>726 とゆうかなぁ・・・いくら書いてもそれだけではマスターは
難しいのだ。個性もあるし、何が正しいかもなかなか判断は
難しい。
漏れが、最初覚えたのは、サンプルを徹底的に弄くり倒して
覚えていったな(W
最初は、ほんとーに苦しんで、挫折してはやり直しの繰り返
し(W
ここであきらめなかったから、今、ACCESSやVBやらでなんか
で飯が食っていけるのだがな(w
問題解決するパターンもそれでマスターできたと思う。
漏れにとっては、ACCESS様様だなぁ・・・・
>>726 クエリー組んでDocmdで実行する方が楽では?
>>726 楽ではあるが、後々のこと考えると、漏れは避けるな
・メンテしずらい
・ロールバックがきかない
・クエリが山ほど必要になってシステムが大きくなるとワケワカメ
ちなみに漏れは今では、クエリーは一切使わない。
昔は山ほど使っていたので、否定はしないガナ(藁
736 :
名無しサン@ボの牛丼 :01/10/18 00:17
>(これをDAOやADO、はたまたマクロで行わせようとなると何行になるやら) 言葉が足りなかった。DAOやADOのレコードセットを一行一行編集することを言おうとしてただけ。 トランザクションが要らないならDoCmd.RunSQLの簡易的方法が使えるけど、要るならもちろんDAO/ADO+SQLになる。
737 :
名無しさん@そうだ選挙にいこう :01/10/18 00:48
>言葉が足りなかった。DAOやADOのレコードセットを一行一行 >編集することを言おうとしてただけ。 こんなものは作り方による。 前件ループさせて処理するようなPGでも作ってるのか?
リストボックスで複数項目を選択したいのですが 下記のように、複数の部署を兼任している社員についての扱いで 手間取ってます。 フォームを実行し、リストボックスの内容を選択しますと 「バリアント型ではない変数にNull値を代入しようとしました。」 というダイアログが出てきます。 どなたか御教授頂けないでしょうか? テーブル ■T社員情報 社員番号(数値型) 氏名 (テキスト型) 所属コード(数値型) ■T所属部署 所属コード(数値型) 所属部署名(テキスト型) フォーム ■F社員情報 リストボックスのプロパティ、値集合ソースに SELECT[T所属部署].[所属コード],[T所属部署].[所属部署名] FROM T所属部署; 複数選択 (拡張) と設定してます。
739 :
名無しサン@ボの牛丼 :01/10/18 01:42
>>737 SQLのINSERT/UPDATE/DELETEで済むものに、必ずしもいちいち全件ループを使う必要はないということ。
(逆に、それで済まないものはループを使うしかない)
あるAccessのテキストを見たら、SQL文より先に全件ループによる処理で教えてたので、教える順番が逆だろと思った。
こういうテキストでAccessを覚えた人は、何でもかんでも全件ループで作ってしまって処理速度低下につながる。
>>730 先に主キーつきのテーブルを作成してからインポートしたほうが
キーの重複エラーもインポート時に検出できるし。
Dim cn AS ADODB.Connection
set cn = New ADODB.Connection
cn.Open "こねくしょんすとりんぐ"
cn.Execute "ALTER TABLE T_uriage ADD CONSTRAINT PK_TURIAGE PRIMARY KEY(sample);"
cn.Close
Set cn = Nothing
でできるかな...
741 :
ぶいびー英太郎 :01/10/18 12:53
すみません、VBAの文法のことでよくわからないことがあるのでどなたか教えてください。 レポートにテキストボックス[あ][い][う][え][お]の5つを配置します。 レポートを開いたときに、これら5つのテキストボックスの表示を条件によって決めたいとき、 VBAで、 a(1)="あ" a(2)="い" a(3)="う" a(4)="え" a(5)="お" のようにa(数字)にテキストボックスの名前を代入します。 For i=1 to 5 If 条件式 = True Then Me!a(i).Visible = True Else Me!a(i).Visible = False End If Next i このようにテキストボックスの可視・不可視を条件分岐させたいのですが、a(i)をレポート上のテキストボックスとして認識してくれません。 これらを認識させるようにするには、どういった文法になるんでしょうか。 未熟ですがお願いします。
742 :
名無しさん@そうだ選挙にいこう :01/10/18 13:08
>>741 フォームやレポートにコントロール配列は使えない。
743 :
名無しサン@ボの牛丼 :01/10/18 13:18
配列が使えないので、a1、a2、a3、a4、a5という名前で作ればいい。 あとはMe!a(i)ではなくMe("a" & i)、もしくは丁寧にMe("a" & CStr(i))で各テキストボックスにアクセスできる。 つまりMe("a" & CStr(i)).Visible = Trueうんぬん。
>>738 テーブルを次のような構成にし
■T社員
社員番号(数値型)
氏名 (テキスト型)
■T所属部署
所属コード(数値型)
所属部署名(テキスト型)
■T社員所属
社員番号(数値型)
所属コード(数値型)
フォームをメインフォーム/サブフォームで作成するのは駄目?
746 :
名無しさん@そうだ選挙にいこう :01/10/18 14:52
すいません クエリーのフィールド数って増やすこと出来ないんですか? エクセルの間隔で右クリックしても「列の挿入」というコマンドは出てこないし・・・
>743 どうもありがとうございました。めちゃくちゃ助かりました。 >746 できます。 ツールバーの挿入から「行」を選択しましょう。
748 :
名無しサン@ボの牛丼 :01/10/18 21:18
>>741 私の答えは、今読み返してみたら間違ってた。
この場合は、Me(a(i)).Visible = Trueうんぬんにすればいい。
749 :
名無しさん@そうだ選挙にいこう :01/10/18 22:16
>>748 >>743 でいいのでは?
>Me(a(i)).Visible
ではエラーになるんじゃないかな。
a(i)のままでいくなら、
Me("a(" & i & ")").Visible
だけど、コントロール名にカッコを使うのは良くないと思う。
ACCESS側でカッコを使えないようにして欲しい。
>>748 だめでした・・・
試しとして、レポート上に
テキストボックスa(1)〜a(5)とb(1)〜b(5)を設置し、a(1)〜a(5)に数値型、b(1)〜b(5)に文字列を格納しました。
配置したテキストボックスはaもbもはじめの状態は不可視です。
で、a(i)が1の時はb(i)が可視、a(i)が2の時はb(i)が不可視としたいのですが、以下のように書くとうまくいきません。
エラーは出ないんですが・・・
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim a(5), b(5)
For i = 1 To 5
If Me(a(i)) = 1 Then
Me(a(i)).Visible = False
Me(b(i)).Visible = False
Else
Me(a(i)).Visible = False
Me(b(i)).Visible = True
End If
Next i
End Sub
失礼、逆でした。 >で、a(i)が1の時はb(i)が可視、a(i)が2の時はb(i)が不可視としたいのですが、以下のように書くとうまくいきません。 a(i)=1 のとき b(i)は不可視、a(i)=2 のとき b(i)は可視です。
>749 "が入るとエラーが出てしまうようです。
753 :
名無しサン@ボの牛丼 :01/10/19 09:19
てっきり
a(1)="あ"
a(2)="い"
a(3)="う"
a(4)="え"
a(5)="お"
は配列変数だと思ってた。
>>750 みたいなのなら、
>>749 の方法でいい。
ただし、括弧をテキストボックス名に使うのはあまりおすすめできないので、
>>743 の方法がベスト。
ところで、なんでテキストボックスの名前にカッコを使うのはまずいんですか? N88-BASICの頃の癖でやってしまうんですが・・・。
756 :
名無しさん@そうだ選挙にいこう :01/10/19 15:00
>>755 a1は
MsgBox (a1)
と書けるが、
a(1)は
MsgBox (a(1))
とは書けない。
MsgBox (a_1_)
MsgBox Me("a(1)")
MsgBox Form("a(1)")
でいけるが、無理してカッコを使うことないだろう。
vbaには、call コマンドはないの???
>>757 あるよ、Call。と言うかヘルプ引いてみた?
>>755 ところで、なんでテキストボックスの名前にカッコを使うのはまずいんですか?
>N88-BASICの頃の癖でやってしまうんですが・・・。
漏れもそうだ(わらた)
N88とVBAは、BASICが名前についてて構文も煮ているが
「違う言語」だということさ
報告書管理データベースを作って使用していたのですが 項目が増えたのでタブコントロールを使おうと思います。 今まで使っていたフォームをそっくりそのまま タブの一枚目に挿入したいのですが、どうしたらできますか?
761 :
名無しさん@そうだ選挙にいこう :01/10/23 00:40
>>760 ・タブコントロールに張り付けたいコントロールを選択 → 切り取り
・タブコントロールの一枚目のページを選択 → 張り付け
762 :
名無しさん@そうだ選挙にいこう :01/10/23 10:14
実体が配列じゃない( DIM a(10)とかで宣言してない )領域を a(1)なんて記述で扱おうとしてるとこがダメ。 BASICとかVBAとか、言語の違い以前の問題。
763 :
名無しさん@そうだ選挙にいこう :01/10/23 21:35
初心者ドキュソですが、どうぞよろしく御願いします。 アンケート結果を「レポート」で作成しようとしています。内容的には簡単な もので、それぞれのアンケート結果について、それぞれのパーセンテージを出 そうと思ってます。 [会員番号][生年月日][性別][アンケート記入日] [アンケート回答A](1〜9) [アンケート回答B](1〜9) [アンケート回答C](1〜10) それぞれ「回答Aクエリ」「回答Bクエリ」「回答Cクエリ」を作成、この 3つを合体した「総合クエリ」を作成して、それを元データに「レポート」を 作ってみました。 この状態で、たとえば、アンケート回答Aのうち、唯一「3」と答えた人を 「4」に変更した場合、「レポート」作成時に、[アンケート回答A].3がありませ ん、ということでエラーが出てしまいます。 値が無い場合に、エラーで止まることなく、数値=0を発生させるにはどうしたら よいのでしょうか? ちんぷんかんぷんな質問かもしれませんが、助けてください・・・。
本当にちんぷんかんぷんだ・・・
765 :
名無しさん@そうだ選挙にいこう :01/10/23 23:05
>>763 聞きたいことを文章で伝えるって難しいね。
全クエリのSQL文をスレに貼ってみてはどうだろう?
クエリのデザインビューで、
表示 → SQLビュー
すると、
SELECT ・・・・・・
・・・・・・・・・
の様なSQL文が表示される。
あなたのやりたいことが、見えてくるかもしれない。
このまま放置では、ボクも消化不良なもので・・・
>>761 さん
ありがとうございました。
もうひとつ質問です。
報告書管理で、2000年度、2001年度業務で
ファイルをわけてるのですが、ひとつにまとめたいと思います。
2000-1、2000-2という風に
DMax("登録番号","T1業務データ")+1で
連番で番号が打てるようにしています。
2001年度業務に変わったときに
また1から連番を打てるようにするにはどうしたらいいでしょうか?
>>761 さん
切り取り→貼り付けをしても
タブコントロールの2枚に同じものが貼り付いてしまうんですけど・・・。
>>767 それは恐らく、タブコントロールに張り付いてないと思う。
>・タブコントロールの一枚目のページを選択 → 張り付け
の、ページの選択が出来てないのかもしれない。
だとすると、張り付けたいページのタブの部分をクリックして
ページを選択すればいい。
769 :
困ったちゃん :01/10/24 00:19
場違いかと思いますが、ワードに詳しい方はいませんかね〜?
珍ぷんかんぷんな質問で、場の空気を乱してすみませんでした・・・。 5種類(A、B、C、D、E)の回答があるテーブルがあるとします。 回答結果をカウント集計するために、「クロス集計クエリ ウィザード」で作成 したクエリを実行すると、「列見出し」の部分に、回答のなかったアルファベット が表示されません。 回答のなかったアルファベットも「列見出し」の部分に表示させるには、どう すればよいのでしょう? よろしく御願いします。拙い文章で伝わらなかった場合は、逝ってきます。
>770 作成したクロス集計クエリをデザインモードで開いて、 上の方の枠の空いてるところで右クリック、 「プロパティ」を選択すると中に「クエリ列見出し」 という項目があるので、表示させたい見出しを全て入力 (複数の場合はカンマで区切る)
初めて書き込みさせていただきます。 クロス集計の年度別印刷をしたいのですが、 フォームから指定したクエリーのフィルードをレポートで表示するにはどうすればいいのでしょうか? レポート上で[form]![****]![++++]とすると、そのままフォームの入力値が表示されてしまい、クエリーのフィールドを指定できません。 クエリーのフィールドをレポート上で指定することができればいいんですが..... そういうことは無理なのでしょうか? 誰か教えてください。よろしくお願いします。
773 :
名無しさん :01/10/25 20:41
初歩的な質問だと思うのですが、テーブルやフォームなど作成したオブジェクトを エクスポートして個々のファイルとして扱うことはできるのでしょうか? 使用バージョン:Access2000
>773 テーブルは問題なくできます。 フォームやレポートもやろうと思えばできるけど、 何がしたいの?
775 :
名無しさん :01/10/25 21:02
>>774 今複数人で1つのデータベースシステムを作っているのですが、
部品ごとの分担にして作成していきたいので個々でフォームなどを作り、
それを後で結合したいのです。
もしよろしければその方法を教えてもらえませんでしょうか?
>772 フォームはパラメータを入力してレポートを開くだけにして、 レポート自体は最初からクエリーをデータソースにして作成 すればよいのでは? データソースがクロス集計クエリであっても、ウィザードで 問題なくレポートを作成できます。
>>775 本格的なサーバ-クライアントシステムじゃなく、
あくまで最後は一つのMDBファイルにするっていう
前提でよいのなら。。。
1.まず元になるファイルを一つと、LAN接続されたPCに
パーツを作成する人用のファイルを人数分だけ用意
2.テーブルの設計から始めて、完成したテーブルは元ファイルに置く
3.作業用ファイルから、元ファイルのテーブルにリンクを張る
(やり方はメニューの「ファイル」→「外部データの取り込み」
→「テーブルのリンク」)
4.作業用ファイルで、リンクを張ったテーブルを使ってフォームや
レポートをどんどん作成
5.パーツが完成したら元ファイルにインポート
こんなんでどうでしょう? 実際やってみるといろいろ問題が
起きると思うけど。。。
>>772 クエリを毎年分作っていて、それをレポートで表示したい場合。
ま、今回の772の要求まんま(多分)とクエリが複雑で下のやり方に
うまく当てはめれない場合用かな。
例1
フォームに[年度]という名前のテキストボックスを作って
ま、ボタンでも置いてそれのクリック時に
Private Sub レポート表示_Click()
DoCmd.OpenReport "レポート名", acViewDesign
Reports![レポート名].RecordSource = Me![年度] & "年度"
DoCmd.OpenReport "レポート名", acViewPreview
End Sub
と書いて。「Me![年度] & "年度"」のところがクエリ名になるようにね。
上記は「1999年度」「2000年度」「2001年度」って感じでクエリ作ってた場合。
「復讐したいやつリスト1999年度版」とかの場合は
「"復讐したいやつリスト" & Me![年度] & "年度版"」だよ。
例2
レポートの元になるクエリの条件にフォームのテキストボックスを使う場合。
今、クエリの日付の抽出に「>=#99/04/01# And <=#00/03/31#」(1999年度)とか
「>=CDate("1999/4/1") And <=CDate("2000/3/31")」とか条件いれてるよね。そこを
「>=CDate([Forms]![年度指定]![年度] & "/4/1") And <=CDate([Forms]![年度指定]![年度]+1 & "/3/31")」
こうする。でそれをもとにしたレポートを作ってみてね。
779 :
名無しさん :01/10/25 21:31
>>777 どうもありがとうございます。
明日試してみます。
>>779 がんばってね。
一応念のため注意だけど、アクセスは個々のオブジェクトや
フィールドを名称で判断するから、くれぐれも元ファイルの
テーブル名やフィールド名、それにプロパティを作業用ファイル
から勝手に変更しないようにね。元ファイルにインポートした
時にリレーションが切れてしまうから。
781 :
名無しさん@そうだ選挙にいこう :01/10/27 03:46
age
782 :
名無しさん@そうだ選挙にいこう :01/10/27 04:01
accessの帳票フォームで、エクセルのように矢印で 上下させるにはどうしたらいいのでしょうか?
783 :
非常に手抜きだから応用してね :01/10/27 04:19
>782 フォームのキーボードイベント取得ON Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) On Error Resume Next '例によって先頭行と最終行ではエラーになるので Select Case KeyCode Case vbKeyUp DoCmd.GoToRecord , , acPrevious Case vbKeyDown DoCmd.GoToRecord , , acNext End Select End Sub
784 :
名無しさん@そうだ選挙にいこう :01/10/27 05:00
>>783 ありがとう・・・
でも、コンボボックスでうまくいかないのです。
(1)データベースソフトの説明として、適切でないものはどれか。 a.行を構成する各列は「項目」とも呼ばれ、データの値を格納すべき項目の構成に 関しては、各行とも同一でなければならない。 b.表へデータが挿入され新しい行が発生したとき、その行の各項目に適用される 表示属性やデータの型は、あらかじめ定義されているものが適用される。 c.選択、並び替えなどの処理がされると、表の内容自体が変更されるので、次にその表を 読み込んだときには、その状態から処理を継続することができる。 d.表中の各行を他の行から、識別することのできる値が設定されている項目を、 主キーと呼ぶ。
(2)データベースの正規化の説明として、適切でないものはどれか。 a.データの冗長や不整合のない単純な構造を作り、データベースのリフレーションを 編成するのがデータの正規化である。 b.繰り返している部分を分離し、1行の独立したデータ項目グループにすることを 第1正規化という。 c.第2正規化とは、複合キー全体に従属するデータ項目と、一部分だけに従属する データ項目に分割することである。 d.データベースは正規化を完全に行っておかないと、関係演算を行うことができない。
(1)c 2)d かな、完全に間違いは。。。一応DBで飯食ってるのだが、、 他は正しいかどうかも意味もさっぱりわからんぞ(藁 1のdは複数カラムで主キーの場合どうなるんだ(藁
788 :
785-786 :01/10/27 12:34
>>787 ありがとうございます。
この問題わかりにくい文章ですよね
790 :
785-786 :01/10/27 12:47
>>787 ネタじゃなくて初級シスアドの問題集にあったよ。
>ネタじゃなくて初級シスアドの問題集にあったよ。 こんなもの受かっても何の役にもたたねーな(w
>a.行を構成する各列は「項目」とも呼ばれ、 行とか項目とか呼んでる奴がどこにいるんだ?(藁
793 :
名無しさん@そうだ選挙にいこう :01/10/27 18:12
>>784 これを足したらいける
If Not Me.ActiveControl.ControlType = acComboBox Then
ドロップダウン状態がわかるプロパティが無いので
こまかくやろうと思ったら。もっと長くなる。
>>784 >>793 重ね重ねありがとうm(__)m
なるほど,,コンボの場合逃げるしかないですか
これができなくって何とかしたかったのですが(涙
釈迦に説法、基督に聖書かもしれんが念のため。 表=テーブル 行=レコード 列=フィールド
ちなみにVewはなんて訳すんだ(W
797 :
名無しさん@好子さん :01/10/28 19:23
複数の条件を指定(選択)して、それに該当するレコードを表示する、 つまりgooなどの検索エンジンのようなことをACCESSでできますでしょうか? これを「検索条件入力フォーム」を作って検索できるようにしたいのです。 1、検索条件を入力 2、該当する件を表示(名前だけ) 3、該当する件を選択すると詳細(フォーム)を表示 1・2・3それぞれでページ(画面)を切り替えて表示させたいです。 まだACCESSは始めたばかりなのでこういうことができる/できないだけでも 知ってる方、教えてくれませんか?
798 :
名無しさん@そうだ選挙にいこう :01/10/28 20:13
>797 できる。1と2は同じ画面でやった方がいいと思うけど ただ条件数、対象フィールド数、レコード数で どんどん検索遅くなるよ。
799 :
名無しさん@そうだ選挙にいこう :01/10/28 20:48
800 :
名無しさん@好子さん :01/10/28 22:15
>>798 ,799
ありがとうございます。799さんがURLを教えてくれたので
それを参考に是非頑張りたいと思います。
801 :
名無しさん@そうだ選挙にいこう :01/10/29 00:05
プロパティ設定のときなどの入力フォントを変えたいんですが どうすればいいでしょう? 標準だと、MS P ゴシックですが、ピリオドやカッコがごたついている文字を 入れるときうんざりします。 既出だったらすいません。
802 :
名無しさん@そうだ選挙にいこう :01/10/29 03:58
Office2000Personalが入ってるからAccess2000だけ買いに行ったら もう無かった。
803 :
名無しさん@そうだ選挙にいこう :01/10/29 13:05
>>793 >>794 KeyCode = 0 : DoCmd.GoToRecord , , acPrevious
KeyCode = 0 : DoCmd.GoToRecord , , acNext
自分はこうしてます。
年度ごとに登録番号を打つために DCount("登録番号","T1業務データ","[年度] = " & Me!Nendo & "")+1 と入力しても Meは含まれませんって出てしまいます。 どうすればいいのでしょう・・・? 教えてください。
805 :
名無しさん@そうだ選挙にいこう :01/10/29 20:12
>804 とりあえず書式が違う。 DCount("[登録番号]","T1業務データ","[年度] = '" & Me!Nendo & "'")+1 じゃない? でもこれで得られる答って、 [T1業務データ]テーブルで[年度]フィールドの値がフォームの[Nendo] コントロールの値(文字列)と一致するレコードの、[登録番号]フィー ルドのデータの個数 なんだけど、目的と合ってる?
間違えた、・・・データの個数プラス1だ。 鬱々
>805,806 さん ありがとうございました。 DCount("[登録番号]","T1業務データ","[年度] =" & [Forms]![F1業務データ]![年 度] & "")+1 にしました。 うまくいきました(w
808 :
名無しさん@そうだ選挙にいこう :01/10/30 16:47
>>807 それでうまくいくんなら最後の 「& ""」 って要らな・・・
・・・まあいいや。
809 :
( ´_ゝ`)ぬーん :01/10/31 00:31
・訳あっていきなり今日から使わなければならなくなりました。。。 そこで顧客名簿テーブルと顧客車両台帳テーブルを作ったのですが IDと顧客名と車両番号をどれか更新したら他も更新するようにしようと思い リレーションシップでテーブル同士をつないで 参照整合性と フィールドの連鎖更新と レコードの連鎖削除を チェックして作成ボタンをクリックしたら 【参照されているフィールド用の固有インデックスが見つかりません】 と出てきました。 一体どういうことでしょう?
810 :
名無しさん@そうだ選挙にいこう :01/10/31 00:42
>809 せめてIDは更新するのよそうよ。
811 :
( ´_ゝ`)ぬーん :01/10/31 01:07
ただ名前だけをリレーションさせようとしてもダメなんですよ。 こまったなぁ。ワケワカラン。→【参照されているフィールド用の固有インデックスが見つかりません】
812 :
名無しサン@ボの牛丼 :01/10/31 02:08
例えばこんな感じで作ってみては。 「顧客名簿」テーブル 顧客ID オートナンバー型、主キー 顧客名 テキスト型 (他に郵便番号、住所、電話番号等が必要なら付け足す) 「顧客車両台帳」テーブル 車両番号 テキスト型、主キー 顧客ID 長整数型 (他に車種等が必要なら付け足す) 「主キー」にしたいフィールドを選択して、ツールバーの鍵のボタンを 押すと、フィールド名の左に鍵のマークが付いて「主キー」になる。 テーブルができたら、「顧客名簿」テーブルの「顧客ID」と、 「顧客車両台帳」テーブルの「顧客ID」をリレーションシップで結合すること。 あと、二つのテーブルを元にクエリーを作る時は、「顧客ID」 フィールドは、「顧客名簿」ではなく「顧客車両台帳」側を選んで 作るべし(「顧客名簿」側を選ぶと編集できなくなる)。
813 :
( ´_ゝ`)ぬーん・・・牛丼はヤヴァイって :01/10/31 02:13
おぉ!詳しくご指導ありがとうございます! 早速試してみたいと思います。
814 :
名無しサン@ボの牛丼 :01/10/31 02:21
恐らくこのエラーは、主キーを付けてないからだと思う。 なぜ主キーが必要なのかをたとえ話で説明すると・・・ スーパーに買い物に出かけた時、「○○ちゃんというお子さんがお連れ様をお待ちです」 とか、「○○というナンバーのお車でお越しのお客様、ライトがつけっぱなしです」 という店内アナウンスが流れることがあるだろう。 しかし、「白いコロナでお越しのお客様・・・」とアナウンスされた としたら、本当は1台だけがライトがつけっぱなしなのに、もしかし たら、おんなじ白いコロナで来たお客さん2,3人が駐車場に出て確 かめに行くかもしれない。つまり「白いコロナ」だけでは、駐車場に ある車を一台に絞り込めないのだ。 だから普通はナンバーでアナウンスする。ナンバーは車一台一台、 違った番号だから、駐車場にある車を一台に絞り込める。 主キーも同じように、テーブルの一つ一つのレコードの識別番号の ような役割がある。具体的には、先の車両台帳だったら一台一台違う 車両番号を主キーに割り当てればいいしい、社員台帳だったら、 社員番号は一人一人違うからこれを主キーにすればいい。 それでは識別番号が元々ないデータならどうするかというと、自分で 付けてしまえばいい。例えば顧客名簿なら、最初の人から順番に 1,2,3・・・と番号を振ればいい(先の「顧客名簿」テーブルで 言うなら「顧客ID」テーブル)。
815 :
( ´_ゝ`)ぬーん・・・牛丼はヤヴァイって :01/10/31 02:54
主キーの解説ありがとうございます。 色々試しているんですが苦戦しています…。 リレーションをつけると一対無限のマークになると思うんですが 1対1対応しか結べません。何か基本的なミスがあるようです。
816 :
名無しサン@ボの牛丼 :01/10/31 03:34
「一」側が主キー、「他」側(∞マーク)がデータの重複可なフィールドになります。 テーブルをデザインビューで開いて、「他」側にしたいフィールドの 「インデックス」プロパティが「はい(重複あり)」になっているか どうか確認してみてください。「はい(重複なし)」だと重複データ の入力が不可能なので、一対一結合しかできなかったはず。
817 :
名無しサン@ボの牛丼 :01/10/31 03:42
「他」じゃなくて「多」だった。鬱だ氏のう。 この例では「顧客名簿」では顧客IDの重複があってはいけないので、 これを「一」側と呼ぶ。 「顧客車両台帳」テーブルでは、もしかしたら一人の顧客が複数の 車両を持っているかもしれないので、顧客IDの重複入力ができる。 これを「多」側と呼ぶというわけ。
818 :
( ´_ゝ`)・・・心置きなく特漏りを食べて・・・ツユダクで :01/10/31 03:53
>>817 わかりやすーいぃ こんな遅くにありがとぅ!
もう一度BOOK OFFで買ったACCESS95を読んでみるYO!
(使っているのはOFFICE2000なのだが)
819 :
763=770 :01/10/31 21:15
前回はお世話になりました。 いろいろタメになります。よろしく御願いします。 フォームでデータを入力するとき、ある入力項目について、ひとつ前の入力 結果を表示させるにはどうしたらよいでしょう? 例:入力項目(フィールド)が4つあるとして、 [年式]97 [商品名]ABC [値段]1200 [個数]1 で、次のデータを入力する時に [年式]97 ←この数字(ひとつ前の入力データ)を自動で表示させたいのです。 何か、よい方法があれば教えてやってください。
820 :
名無しサン@ボの牛丼 :01/11/01 00:11
>>819 [Ctrl]+[']で、前の入力データをコピーできます。
これを自動的に行わせるには、マクロorモジュールにプログラムを書く必要があります。
マクロの場合
条件 アクション (プロパティ)
IsNull([年式]) キー送信 (キー操作:^')←キャレット[山型記号]とシングルクォート
モジュールを使うのなら以下のコード。
If IsNull(Me!年式) Then SendKeys "^'"
「年式」テキストボックスの「フォーカス取得時」イベントで、上のコードを実行するようにすればいい。
このプログラムの内容は、
もしも「年式」テキストボックスの内容が空欄なら(IsNull([年式]))、
[Ctrl]+[']のキー操作を自動的に行ないなさい、というもの。
>820 へー、そういうやり方もあるんだ。勉強になった。 私の場合、[年式]フィールドが更新されたら、更新後のイベントプロシージャで 入力されたデータを既定値に設定するやり方してます。 Me![年式].DefaultValue = Me![年式]
822 :
名無しさん@そうだ選挙にいこう :01/11/01 07:40
素早きレス感謝します。早速試してみます。
823 :
名無しさん@そうだ選挙にいこう :01/11/01 09:53
アクセスとネットを使って、サーバにあるデータベースの抽出参照って 個人レベルでできるでしょうか? また端末の更新データをサーバに集めることは可能でしょうか? アドバイスお願いします。
824 :
名無しさん@そうだ選挙にいこう :01/11/01 09:58
アクセスとアスセス間のネットでのやりとりという意味です。
>>823 個人レベルでサーバとクライアントが居るイントラネットを持ってれば可能だが、
「ネット」とやらが何を意味してるのか小1時間ほど説明きぼん。
サーバはwinNTで、クライアントはwin98でよろしいでしょうか?
>>820 >>821 レスありがとうございました。
試してみましたが、私の腕?ではまだうまく動かせませんでした・・・。
If IsNull(Me!年式) Then SendKeys "^'"
ここをコピーして、「年式」テキストボックスの「フォーカス取得時」
のところに貼り付けてみたのですが??
今日もヘルプと格闘しながら、すったもんだしてみます。
828 :
名無しサン@ボの牛丼 :01/11/02 11:01
>>827 「フォーカス取得時」をクリックすると、右側に「...」ボタンが出るので、そこをクリックすると、
「式ビルダ」「マクロビルダ」「コードビルダ」の選択が出る。
そこで「コードビルダ」を選択すると、モジュール編集画面になるので、そこのカーソルのある位置にIfうんぬんをコピペすればいい。
829 :
名無しさん@そうだ選挙にいこう :01/11/02 12:46
>>826 サーバのデータベースというのが SQL Server とか Oracle だったら、
ODBC を使ってデータベースに接続できます。
830 :
名無しさん@そうだ選挙にいこう :01/11/07 15:15
クエリで日付順に並び替えて、上から通し番号つける方法ってないですかねぇ・・・
834 :
名無しさん@そうだ選挙にいこう :01/11/09 20:54
アラビア数字を漢数字に変換する方法って、モジュール作る以外にない? 2002使ってます。
835 :
名無しさん@そうだ選挙にいこう :01/11/10 13:52
837 :
(・∀・)タスケテ :01/11/11 21:33
薬品の使用記録を入力するフォームを作っています。 フォームを開いた後、薬品の瓶番号をコンボボックスで選択した時に サブフォームにこれまでの使用履歴を表示したいと苦労しています。 Private Sub 瓶ID_AfterUpdate() Dim DB As Database Dim SQL As String SQL = "SELECT 薬品残量管理テーブル.使用日, 薬品残量管理テーブル.使用者ID," _ & " 薬品残量管理テーブル.使用目的, 薬品残量管理テーブル.使用量," _ & " 薬品残量管理テーブル.残量, 薬品残量管理テーブル.単位," _ & " 薬品残量管理テーブル.重量" _ & " FROM 薬品残量管理テーブル" _ & " WHERE (((薬品残量管理テーブル.瓶ID)=" & Me.瓶ID & "));" Me!使用履歴.Form.RecordSource = SQL End Sub と、してみたのですが 「指定した式で、閉じているかまたは存在しないオブジェクトを参照しています」 とエラーが出ます.. 私が考えられる限り色々試してみたのですがよく判りません。 きっと単純な事なのかもしれませんが誰か助けて下さいm(_ _)m
838 :
(・∀・)タスケテ :01/11/11 21:39
あ、すいません。 「使用履歴」がサブフォームの名前です。 頭が煮詰まってるのでちゃんと説明できてないかもしれませんが よろしくお願いします.. 日曜日の深夜に1人でお仕事..(鬱
>>838 sqlが見づらい、まず直せや
dim strTxtBinID as long
strTxtBinID= Me.瓶ID
SQL = "SELECT * "
SQL = SQL & " FROM 薬品残量管理テーブル"
SQL = SQL & " WHERE 瓶ID=" & strTxtBinID
>>837 どの行でエラーが出てるのか把握すること
MsgBox SQL とか Debug.Print SQL で自分が書いたSQL文が正しいか確認すること
エラーの意味を自分なりに考察すること
の点で自助努力の痕跡を示すことが大事。それを怠ると
「丸投げかぁ?ゴルァ!」ってことになるよ。
「閉じているかまたは存在しないオブジェクト」ってエラーは
期待通りにサブフォームを参照できてなさげ。
841 :
名無しさん@そうだ選挙にいこう :01/11/12 13:46
規定値に前レコードの値を入れたいんだけど、どうやったらいいですかねぇ。
843 :
(・∀・)837 :01/11/12 20:09
>>839 おお、そんな見やすくなる表記があったんですね
アドバイスありがとうございます。
VBA初心者なもんでそんなテク知るだけで嬉しいです。
早速直してみましたー
>>840 アドバイスありがとうございます。
Me!使用履歴.Form.RecordSource = SQL
の部分でエラーが出ます。
左辺を
db!Forms!親フォーム名!使用履歴.Form.RecordSource
Form_親フォーム名!使用履歴.Form.RecordSource や
RecordSource を RecordObject としてみたり..
SQLを使って一度レコードセットをsetした後
Me!使用履歴.Form.RecordSource = レコードセット
とか色々やってはみたものの
840さんの言われる通りサブフォームを参照できてなさそうです。
問題のサブフォームは親フォーム上にウィザードを使わずにサブフォームを作成し
その後、プロパティのその他の部分の名前を「使用履歴」と変えただけなのですが..
何か操作を勘違いしてるのでしょうか..
>>841 >819-821に載ってまー
844 :
名無しさん@そうだ選挙にいこう :01/11/12 20:55
>>843 気になってたけど、文法は間違ってないよ。
>Me!使用履歴.Form.RecordSource = SQL
でいいよ。
手順も問題ない。
作成中のフォームで試行錯誤するのではなく、
まずはテストフォームを2つ作って、手法が間違ってないこと、
機能が正常に動作することを確認するべきだと思う。
ACCESSのバグかもしれないし、MDBが壊れてるのかもしれない。
壊れた時、問題のフォームをコピーすると正常になったことがある。
ライブラリの参照設定が勝手に変わってたこともある。
845 :
名無しさん@そうだ選挙にいこう :01/11/12 21:32
すごく初歩的な質問かもしれませんが、いきます。 テーブルのデザイン画面で、フィールドのプロパティ「入力規制」というのが ありますが、他のフィールドの値に関連つけるような規制の仕方はできるので しょうか? 例えば、[A][B]というフィールドにおいて、 [A]に1、4以外の数字が入力された時は、 [B]は必ず0になる(0以外のデータ入力をはじく) ここで[B]の入力規制には何と入れればよいのでしょう? どなたか、よろしく御願いします。
846 :
名無しさん@そうだ選挙にいこう :01/11/13 09:17
>>845 M$はサポートしてないんじゃないかな・・・?
フィールドAの入力規制・・・フィールドBの値より大きい値のみ許可する。
フィールドBの入力規制・・・フィールドAの値より大きい値のみ許可する。
こんな定義を入力されると困ってしまうので・・・
test
>>845 更新前イベントで、条件以外
cancel=true
でOK
>>848 ご回答ありがとうございます。
なにぶん不慣れなもので、ご迷惑をおかけします。
「更新前処理」>「...」>「コードビルダ」で、その後はどうすればいいでしょうか?
[A][B]というフィールドには、入力規制のトコに1 Or 2 Or 3 Or 4 Or 5と
いれてあります。つまり、1〜5の自然数だけが入力できるようになっています。
で、[A]が1または4の時、[B]は必ず0になるための条件式はどうなりますか?
何かまたもあやしげな質問なので、sageてみました。よろしく御願いします。
すみません、訂正です。 誤: 1 Or 2 Or 3 Or 4 Or 5 正:0 Or 1 Or 2 Or 3 Or 4 Or 5 誤:1〜5の自然数 正:0〜5の整数
851 :
名無しさん@そうだ選挙にいこう :01/11/14 09:04
>>850 If ( Me!A = 1 Or Me!A = 4 ) And Me!B <> 0 Then Msgbox("Bが0じゃないYO!") : Cancel = True : Exit Sub
>>851 いいんだけど、
あとでみづらいから、そういった場合できれば
SELECT Case
を使うようにしましょうね
>>852 今回、0,2,3,5それぞれの場合とそれ以外(Case Else)を考慮する必要が
なかったんで、単純にIfだけで判定しました。
確かにSelect Caseは見やすくていいんですが、
多用するとコード全体の行数がやたらと増えるんで・・・
854 :
名無しさん@そうだ選挙にいこう :01/11/14 15:44
テーブルの設計で質問があります。どうぞ教えてください。 資産管理データベースを構築しているのですが、 いろいろと面倒くさい事項が多いので、 どうやってテーブルとして作れば良いのか分かりません。 資産情報には下の4種類のユニークな情報があります。 管理番号、固定資産番号、非固定資産番号、リース番号 全ての資産は管理番号を持ち、 さらにそれ以外の3種類の情報のうちのひとつを持つ場合があります。 つまり、 管理番号、固定資産番号 管理番号、非固定資産番号、 管理番号、リース番号 管理番号のみ の4種類に資産は分類することが出来ます。 管理番号、固定資産番号、リース番号、のように持つことはありません。 ここまではいいのですが、厄介なことにそれぞれによって扱いたい他の情報が異なります。 固定資産番号を持つ資産は、部署コードを必要とします。 リース番号を持つ資産は、リース会社と、返却日を必要とします。 非固定資産番号を持つものと、管理番号のみの資産は他の情報を必要としません。 どうやって設計すればいいのでしょうか。 本当に初歩的な問題だとは思いますが、ご教授ください。 よろしくお願いいたします。
↑省略されてしまいましたが、 よろしくお願いします、という一文だけなので、 見る必要はありません。よろしく助けてください。
856 :
名無しさん@そうだ選挙にいこう :01/11/14 16:12
>>854 1.管理番号(主キー)とその他共通するテーブル「T資産管理」と
固定資産番号(主キー)と管理番号と固定資産に関するデータを持つ「T固定資産」
に分けて作る。(「Tリース」「T非固定資産」も同様に)
利点:正規化されているのでデータ量の無駄な増大を招かず、フィールドを増やすときや
クエリを作るときわかりやすい。普通はこのように作ると思う。
2.管理番号(主キー)として必要なフィールドは全て含むテーブルを一つ作る。
利点:まあAccessをわざわざカード型データベースのように使うのであまりお勧めできない
けど、検索の時など、一つのテーブルを対象にすればいいのでデータ量・フィールド数が
そんなに多くないならこのようにあえて作るという選択肢もある。
特に事情がないなら1.でいくのが良いと思います。
>>856 さん、
本当にありがとうございます。
とても参考になりました。
1で行きたいと思うのですが、
管理番号でソートした、全ての資産の一覧を表示!
とかっていうクエリは作成できますか?
1の案は考えていたのですが、このクエリがどうしても分からずに
断念しました。
また、
T資産管理.資産番号 1-∞ T固定資産.資産番号
T資産管理.資産番号 1-∞ T非固定資産.資産番号
T資産管理.資産番号 1-∞ Tリース.資産番号
という一対多のリレーションシップでよいですか?
どうぞご教授ください。
↑ごめんなさい。資産番号ではなく、管理番号ですね。
>>管理番号でソートした、全ての資産の一覧を表示! >>とかっていうクエリは作成できますか? SELECT T資産管理.*, T固定資産.*, T非固定資産.*, Tリース.* FROM ((T資産管理 LEFT JOIN T固定資産 ON T資産管理.管理番号 = T固定資産.管理番号) LEFT JOIN T非固定資産 ON T資産管理.管理番号 = T非固定資産.管理番号) LEFT JOIN Tリース ON T資産管理.管理番号 = Tリース.管理番号 ORDER BY T資産管理.管理番号; んで、僕はリレーションシップはクエリを作るときに指定していて リレーションシップの画面には手を加えないようにしています。 テーブルが増えてくるとめんどくさいですし、クエリによって 1対多か1対1か変わったりする事もあるので。
856さん、マジでありがとう! もう家に帰ってきちゃったから、明日会社でやってみます。 リレーションシップについても、すごく参考になりました。 リレーションシップの画面で、いろいろ考えながらすべてのリレーションシップを設定していました。 本当にありがとう! 現実世界で出会うことが出来たとしたら、一杯おごるよ。約束する。 また質問するかもしれないけれど、よろしくお願いします。
861 :
名無しさん@そうだ選挙にいこう :01/11/15 16:56
フィールド名って、レコードの値として取り出せないんですかねぇ?
Accessのスレ有るの知りませんでした 大変参考になります マクロで 値の代入 アイテム[Yes/No]タイプ にて クリアするには 式に なんと入れたら 良いか 分る方教えて 下さい
説明不足っすね。 例えば、フィールド1とかフィールド2って名前をつけていって、 他のテーブルのフィールドAにフィールド1の値、フィールドBに "フィールド1"って感じでフィールド名を値として追加したいんですよ。
>>854 いえ、今は聞きたいことは無いのですが聞きたい時にこのスレに
いい形で残っていて欲しいなという利己的なものです。
このスレには明らかに僕よりスキルが上な方がおられますので。
でも喜んで頂けると正直うれしい。
>>861-863 もうすこしうまく説明して欲しい。862はチェックついていない状態
(No)にしたいのか灰色にしたいのか(Null)。
NoにしたいならNoなり0なりでOK。Nullは無理。Yes/No型にNullを
入れれないから。
861&863はどうした時になんの目的で他のテーブルにフィールド名と
データを入れたいのか?更新履歴を残したいの?まだ説明不足。
856さん、教えた頂いたクエリで、望んだ結果が得られました。 どうもありがとうございました。で、また質問があります。(教えてクンですみません) 1. そのクエリからオートフォームでフォームを作成し、それ上から編集はかけられないんですね。 単帳形式のフォームから、登録・編集を可能にしたいのですが、どうすればよろしいでしょうか? 2. 頂いたクエリをじっくりと解析してみましたが、複雑ですね。 こういったクエリは、デザインビューから作成するのですか? それとも、SQL文を直に打つのですか? 以上、よろしくお願いいたします。
すいません。
要するに、
ttp://www.interq.or.jp/www-user/kanki/dbfaq03.htm の例の逆、つまり横のものをたてにしたいんです。
ここの例で言うと、
現在
AAA,BBB,CCC,DDD,EEE,FFF,GGG,HHH,III,JJJ,KKK,LLL,MMM
23,65,67,46,94,32,86,17,60,45,86,53
ってあるのを
元テーブルのようにしたいんです。
>>854 >>1 . そのクエリからオートフォームでフォームを作成し、それ上から編集はかけられないんですね。
うん、そうなんです。LEFT JOIN〜を使うと更新できないんです。
856で正規化されたものと1つのテーブルで無理やりやるものの二種類を
提示したのもこの辺もあってなんですね。
僕なら、ですが859のクエリを元にしたフォームで一覧を表示しておいて
(既定のビューを単票フォーム->帳簿フォームに)「表示」というボタンを
作ります。この「表示」ボタンのクリック時のイベントプロシージャにこう書きます。
Private Sub 表示_Click()
Dim FormType As Integer
If Me![固定資産番号] > 0 Then
FormType = 1
Else
If Me![非固定資産番号] > 0 Then
FormType = 2
Else
If Me![リース番号] > 0 Then
FormType = 3
Else
FormType = 4
End If
End If
End If
Select Case FormType
Case 1
DoCmd.OpenForm "F固定資産", , , "管理番号 =" & Me![管理番号]
Case 2
DoCmd.OpenForm "F非固定資産", , , "管理番号 =" & Me![管理番号]
Case 3
DoCmd.OpenForm "Fリース", , , "管理番号 =" & Me![管理番号]
Case 4
DoCmd.OpenForm "Fその他", , , "管理番号 =" & Me![管理番号]
End Select
End Sub
F固定資産等はT資産管理とT固定資産を元にしたフォームです。これなら
編集・新規の追加が出来ますから。
また、僕が以前書いたものですが
>>668 の599さんへのレスを参考にして貰うと
管理番号や固定資産番号での絞りこみ等したものから選ぶこともできます。
>>2 .デザインビューから作るかSQL文直打ちか
ですが、859のSQL文をSQLビューにコピペしてデザインビューで見てもらうと
単純なものだとバレます。859では多少見やすいように改行をいれたりしていますが
デザインビューで作成したクエリをSQLビューでコピーしたものです。
>>861 Googleで「Access 横のものを縦にする」で検索すると、
ttp://ws.31rsm.ne.jp/~mahou/Vba2000/03/000001.htm VBA小屋−横のものを縦にするってのがありました。ど〜かな?
868 :
名無しさん@そうだ選挙にいこう :01/11/15 21:24
PHP3とOracle8iの、ほんのちょっとの経験があるのですが、Access2000ははじめてです。 で・・・ ある「タスクマスタ」レコードががあり、 タスクID(PKEY)、タスク名、先行するタスクIDとなっています。 (蛇足かもしれませんが、 意味としては、以下のように、 あるタスクが終了しないとあるタスクが開始できない状況をあらわそうとしています) タスクID(PKEY)、タスク名、先行するタスクID --------------------------------------------- 1 家を出る 2 自転車に乗る 3 切符を買う 4 電車に乗る 3 10 パソコンを起動する 11 2chを見る 10 で、ある単票フォームに、 ---------------------------------------------- 11 2chを見る 先行するタスク名: パソコンを起動する ---------------------------------------------- と表示させようとしています。 このとき、どのようにすればいいのでしょうか? 自分のやり方としては、 レコードソースに、 「タスクID(PKEY)、タスク名、先行するタスク名」をselectするSQLを記入するのかなと 思ったのですが、普通はどうするものなんでしょうか? また、上記の自分のやり方の場合、SQLはどうかくものなんでしょうか? SELECT tsk1.*, tsk2.先行するタスク名 FROM タスクマスタ AS tsk1, タスクマスタ AS tsk2 WHERE tsk2.タスクID=tsk1.先行するタスクID; などとやったものの、tsk2.先行するタスク名をプロンプトされてしまいます。
869 :
名無しさん@そうだ選挙にいこう :01/11/16 09:17
>>868 [ tsk2.タスク名 AS 先行するタスク名 ] が抜けてるからでは・・・?
870 :
名無しさん@そうだ選挙にいこう :01/11/16 11:28
フィルタをかけずに、「IDがnのレコードに移動」させるにはどうすればいいでしょうか? 「n番目のレコード」なら、gotorecordだとわかるのですが。
>>867 禿げしくありがとう
これでいけそうです
このモジュール作った人にも感謝!
>>870 Find(ADO)かFindFirst(DAO) と
Bookmarkもしくは、
AbsoluitePosisionプロパティでGoToRecordかな。
873 :
名無しさん@そうだ選挙にいこう :01/11/16 14:25
あのぅ レポートで曲線って描けないんですか? 初歩的かもしれませんがよろしくお願いします。
レポートで曲線なんてどうして必要なのかワカランが、描けないやろ。 ペイントソフトで描いて、取り込めば?
875 :
名無しさん@そうだ選挙にいこう :01/11/17 13:02
>>873 Circleメソッドかなあ?使わないんでよくわからんけど。
とりあえずなら874さんの言うように画像をはっつければ?
Circleメソッドで遊んでみたよ。 Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Const conPI = 3.14159265359 '定数π Me.ScaleMode = 1 'レポートの単位をTwipにする。ってデフォルトだけど。 'Me.Circle (中心の横位置, 中心の縦), 半径, 線の色 , 始点, 終点, 楕円 Me.Circle (3000, 2000), 2000 '円 Me.Circle (3000, 6000), 2000, , 0.00000001, 2 '弧 Me.Circle (3000, 8000), 2000, , -0.00000001, -conPI / 2 '扇 Me.Circle (6000, 8000), 2000, RGB(255, 0, 0), -conPI, -0.00000001 '半円、赤い線 'グラフ Me.Circle (3000, 12000), 2000, RGB(0, 0, 0) '色を黒に設定しなおし Me.FillStyle = 0 '塗りつぶしに設定、デフォルトは透明。 Me.FillColor = RGB(255, 0, 0) '塗りつぶしの色 Me.Circle (3000, 12000), 2000, , -0.0000001, -2 Me.FillColor = RGB(0, 255, 0) Me.Circle (3000, 12000), 2000, , -2, -0.0000001 Me.ScaleMode = 6 'レポートの単位をmmに変更してみる Me.FillStyle = 1 '塗りつぶしから透明に設定しなおし Me.Circle (50, 50), 20, RGB(0, 0, 255) '円、青線 Me.Circle (100, 50), 20, , , , 0.5 '楕円 '色指定していないが上の設定のまま青線になっている。 End Sub A4に入るぐらいでいろいろ作ってあります。 始点・終点の指定で時計の12時はπ/2、3時が0(但し0は使って欲しくないらしく とても小さな値を使えとのこと)、6時が3π/2(π+π/2)、9時がπです。 ん?3時は2πでもいいのか。 始点・終点にマイナスをつけると中心から線を引くので扇形などに。 あ、始点から終点に逆時計周りに線が入るよ。 ヘルプも見てみ。レポートに対する相対的な大きさの円の作り方とか書いてある。
>ヘルプも見てみ。レポートに対する相対的な大きさの円の作り方とか書いてある。 省略されたのはこれだけ。スマソ あとインデントが全部左寄せにされて見にくくなってる。併せてスマソ
878 :
名無しさん@そうだ選挙にいこう :01/11/18 00:53
アウトラインプロセッサみたいな表示方法ってアクセスで実現できないですか? つまり、各レコードについて、 [階層]フィールドの値 * N の長さだけ [本文] の 「Left/左位置」がずれるという。。。 結果的にアウトラインプロセッサと同じ表示ならいいんですが。。。
アクセスで順位をつけることは可能ですか。 エクセルではRank関数があるので容易につけられれますが、 アクセスだとやはり、VBAで作るしかないのでしょうか。
880 :
名無しさん@そうだ選挙にいこう :01/11/18 09:52
>>878 表示だけでいいのなら
(案1) 本文の頭に[階層]*Nの長さだけスペースを入れる
(案2) ツリービューコントロールを使う
>>879 SQL文でがんばれ
881 :
名無しさん@そうだ選挙にいこう :01/11/18 12:02
882 :
名無しさん@そうだ選挙にいこう :01/11/18 19:23
>>881 有り難うございました。とても助かりました。
それにしてもこのHPすごいですね。
帳票形式のフォームで、複数行入力した場合に 最後の行が、改行しないと登録できません。 改行しないでも登録できる方法ってありますか? 教えてください。よろしくお願いします。
ACCESS2000で作ったデータベースのデータを出力した際に、 「適用するフォントがありません」とでるんですが、どうしてなんでしょう? ちなみに制作時と同じパソコンを使っています
886 :
名無しさん@そうだ選挙にいこう :01/11/20 13:12
>>881 誤)なんでも出来るみたい >
正)なんででも出来るみたい に修正。
>>879 BBSもまめに回答する方がおられるみたいですね。
FAQも数字->漢数字とか四捨五入とか実用的なものがありますねえ。すごい。
>>884 改行(というか次のレコードに移動してるんだと思うけど)じゃなくても
レコードセレクタをクリックするか、Shift+Enterで次のレコードに
移動しないで登録できると思う。
…けどこーゆうことが聞きたいんじゃないのかなあ?
>>885 出力って何に?データ?プリンタ?モニタ?
プリンタだと思うけどエラーを吐くのはプリンタ?Access?
フォントを全部MS Pゴシックとかにして印刷しようとしても
おんなじエラーかな?
887 :
名無しさん@そうだ選挙にいこう :01/11/20 13:47
>>884 トイレでキバってたら思いついた。10ミリ秒ぐらい(適当)でタイマ回して
タイマ時のイベントプロシージャにレコードの保存
(コントロールウィザードを聞かせてコマンドボタン作ると出来る)
のVBA貼り付けたらできるよ。
888 :
名無しさん@そうだ選挙にいこう :01/11/20 15:08
タイマー回しはエラー入力があった時 ものすごいことになりそうな予感・・・
889 :
名無しさん@そうだ選挙にいこう :01/11/20 15:18
access2000で作成されたmdeファイル がaccess97で利用できずに泣いてます。 作成者が2000しか持っていない場合、 97用のmdeファイルを作成してもらうことは 可能でしょうか?
890 :
名無しさん@そうだ選挙にいこう :01/11/20 15:34
>>889 2000のランタイムを入れれば2000のmdeが動くのでは?
891 :
886-887 :01/11/20 17:08
>>888 確かにそうですね。僕も使ったこと無いです。(さっき試しはしましたが)
改行しないで次に何をしたいのかわかればそこのイベントで保存が出来るかもです。
入力したレコードをすぐ印刷したいのに登録されていないから改行(次のレコードに移動)
して、戻って印刷している、とかなら印刷ボタンを作って印刷前に登録するとか。
>>890 なるほど、ランタイムですか!
調べてみます。ありがとうございました。
>>889 Access2000のmdeは、どうがんばっても97では開けないっしょ(w
Access2000のmdbって97のmdbに変換できるっしょ?(もち、Access2000からね)
作成者に97のmdbに変換してもらって、それからmdeに変換したらいいんじゃないのー
>>893 そうですか。ひらきませんか。
製作者さんに頼んでみます。
よろしく御願いします。 [日付] [担当] [A] [B] [C] [D] [E] というフィールドに対して入力をするフォームがあるとします。 データの性質上、[A]が「0」の時は、[B]〜[E]も自動的に「0」になります。 そこで、[A]〜[E]に規定値「0」を表示させ、[A]が「0」の時は、それぞれ [Enter]を押すだけで入力が進むようにしています。 最近、入力データが増えてきて、[Enter]を押すのが面倒になってきたので、 [A]のフォーカス喪失後に次のデータの入力画面に飛ばしたいのですが、 どうすればよいでしょう?
>>895 [A]のフォーカス喪失後イベントプロシージャに
If Me.A = 0 Then
DoCmd.RunCommand acCmdRecordsGoToNext
Me.日付.SetFocus
End If
>>891 886-887さん、レスありがとうございます。
説明不足ですみません。
下のように、二行目にカーソルがある状態で「登録」ボタンを押された時に困ってます。
一行目は、二行目にレコード移動しているので登録されているのですが、
二行目から三行目にレコード移動するのを忘れて「登録」ボタンを押してしまうので、
二行目が登録(修正)されてない!っていうことがよくあるんです
明細
--------------------------------------
一行目:あいうえおー
--------------------------------------
二行目:かきくけこー |←カーソル
--------------------------------------
三行目:
--------------------------------------
[登録]
やっぱり二行目を登録(修正)するには、Enterキーで三行目にレコード移動して、[登録]しか方法はないんでしょうか
よろしかったら教えてください。よろしくお願いしますm(_ _ )m
898 :
886-887&891 :01/11/21 18:05
んと登録ボタンか「あいうえお-」とか入れてるフィールドのフォーカス喪失後の イベントにレコードの保存の機能を追加すれば...って登録ボタンを 押したときはどんなことさせてるのかな?Tempのテーブルかなんかから レコードを追加クエリでコピーしてるとかかな?
899 :
一姫二太郎名無し三 :01/11/22 12:35
マクロだと「コマンドの実行」で「レコードの保存」 モジュール(VBA)だとDoCmd.RunCommand acCmdSaveRecord
900 :
名無しさん@そうだ選挙にいこう :01/11/22 16:07
いつもすみません。 Accessのクエリーで 「先月の20日」「今月の20日」「来月の20日」を 表示する関数式ってどうすればいい?
901 :
名無しさん@そうだ選挙にいこう :01/11/22 17:08
先月20日 CDate(DatePart("yyyy",Date()) & "/" & DatePart("m",DateAdd("m",-1,Date())) & "/20") 今月20日 CDate(DatePart("yyyy",Date()) & "/" & DatePart("m",Date()) & "/20") 来月20日 CDate(DatePart("yyyy",Date()) & "/" & DatePart("m",DateAdd("m",1,Date())) & "/20") おまけで今月末 CDate(DateAdd("d",-1,DatePart("yyyy",Date()) & "/" & DatePart("m",DateAdd("m",1,Date())) & "/1")) いちお解説 Date()で今日、DatePartは日付の指定した部分を返す関数、 DateAddは指定した単位で日付の増減をする関数、Cdateは文字列を日付に変換 おまけの今月末は来月の1日の前の日。
あ、今月末は DateAdd("d",-1,CDate(DatePart("yyyy",Date()) & "/" & DatePart("m",DateAdd("m",1,Date())) & "/1"))) のほうがいいか。ってかCDateわざわざ入れなくても問題無いことが多いけど、 日付の書式が米国式(月/日/年)になってるPCで問題出たことあるから 一応かましてある。01/11/22って入れたら2022年1月11日って判断されたり。
いつもお世話になっています。854です。 あれから軌道に乗り、無事に納得のいくデータベースが完成しました。 ASPで接続して、Webサイトから検索が出来るようにしました。 ここで質問なのですが、Access2000側、あるいはIIS側で、 1. 誰が 2. いつ 3. どんなクエリーを投げたか という履歴を記録したいのですが、可能でしょうか? Accessのヘルプを読む限りでは、Outlookの履歴には 登録できるよ、という感じのことが書いてありましたが、 Outlookの履歴機能ってどうなんでしょうか? 何より、現在Outlookがそのサーバにインストールされていないので、 かなり面倒くさいのですが。 他に何かスマートなアイディアはありませんか? 是非ご教授ください。お願い致します。
904 :
名無しさん@そうだ選挙にいこう :01/11/22 22:28
あ〜1日経って見直したら年の変わり目で問題があることにきづいたです。
先月20日
CDate(DatePart("yyyy",DateAdd("m",-1,Date())) & "/" & DatePart("m",DateAdd("m",-1,Date())) & "/20")
来月20日
CDate(DatePart("yyyy",DateAdd("m",1,Date())) & "/" & DatePart("m",DateAdd("m",1,Date())) & "/20")
今月末
DateAdd("d",-1,CDate(DatePart("yyyy",DateAdd("m",1,Date())) & "/" & DatePart("m",DateAdd("m",1,Date())) & "/1")))
こうしないと、年の変わり目で1年ずれるね。ごめん。
>>903 無視してるんじゃなくてわかんないんです。IIS・ASPの経験無いので。
識者のかたお願いします。
>>905 重ね重ねご親切にありがとうございます。
ご恩は一生忘れません。
いつもお世話になっています。854です。 ログについて、自己解決しましたので、ご報告いたします。 Access2000や、IIS側では、満足できるログは取得できないので、 ASPでログを吐くように自作しました。 ASPの話になってしまい恐縮ですが、 dom_user = Mid(Request.ServerVariables("LOGON_USER") user = Mid(dom_user, InstrRev(dom_user, "\")+1) でユーザ名を取得し、 Access2000でログ用のテーブルを作り、 ユーザ名、影響のあった資産番号、SQL文全文、更新された日時 を、更新、削除、追加、のあるたびに書き込むことにしました。 非常に満足行くものになりました。 結果としてAccessとはあまり関係ない質問をしてしまい、申し訳ありませんでした。 今後ともよろしくお願いいたします。
908 :
名無しさん@そうだ選挙にいこう :01/11/27 16:38
初歩的な質問ですいません。 資産管理のデータベースを作っているのですが 数値データが正と0の時はフォント色を黒、 負の値の時は赤にするという事は出来ないのでしょうか? エクセルでは書式の設定で簡単に出来るのですが アクセスでは見当たりません。 どうか宜しくお願い致します。
909 :
名無しさん@そうだ選挙にいこう :01/11/27 17:40
ワードは報告書とか書くときとかいろいろでしょ? エクセルは実験データとかを数値関係まとめたりするものだよね。 パワーポイントンは発表とかプレゼン用ってのが一般的だと思う。 で、 厨房質問でスマソだがアクセスってどういう時使うの? やっぱりオフィスの一つだから仕事絡みが多いの?
>>909 自分の目的では、使ったことはないな(w
しかし、漏れはこれでソフト作って飯食ってるが何か(ww
>>908 フォーム・レポートの場合、条件付書式でできます。
>>909 主な用途は顧客管理とか販売管理とか同じようなデータがたくさんあって
同じような処理を大量に行うとかかな。
弥生の販売管理とかみたいので自社用の独自の項目や処理や印刷が
多い場合に使うわけです。
>>903 >>907 856でもあったので気になっていたのですが自己解決できたようでおめでとう。
>>901 レスありがとうございます。出来ました。
思い切って質問して良かったです。
>>911 なるほどねえ。勉強になります。エクセルに対して個々の管理機能と一括
処理が付いたような物っすね。税理士とかの人だと使ってる人多そうですね。
んと、ちょっと違う様に受け取られているようです。 まず税理士さんはあまり必要とされていないのではないでしょうか? シェアがあるので経理用のソフトが市販であります。バージョンUPや パッチで新税制等に対応してくれる市販のソフトを使って、 Accessでちまちま作るより仕事してソフト代稼いだほうが良いでしょう。 他の仕事でも市販で十分なら作るのに時間かけるより買ってきたほうが 普通は安いですよね。例えば手打ちそばを切る包丁は売っているので 手打ちそば屋さんなら買ってきたほうが安いし使いやすいです。 家で手打ちそば打って切るなら普通の包丁か適当な薄い鉄板で切っても 良いでしょう。急ぐことはないですし、毎日使うわけでもない。ちょっと 曲がっていても愛嬌ですみます。新しい麺料理(波打ったそばとか)を考えて それを商売にするなら波打った麺切り包丁をたのんで作ってもらうか、 (市販の麺切り包丁が何本も買える値段になるでしょう)スキルがあるなら 自分で作るかする必要があるでしょう。 Wordを文書作成ソフト、Excelを表計算ソフトというようにあらわすと Accessはデータベースソフトです。もうすこし細かい分類だと リレーショナルデータベースソフトと呼ばれます。 リレーショナルの反対語?というかそれ以前のデータベースだと カード型データベースとなります。 続きます
カード型データベースは名前フィールドや住所フィールドを自由に 追加して入力用のフォームを作ったり、印刷したりできます。 同じような事はExcelでも出来ます。でも同じ人から何度も注文が ある仕事でそれを管理したいなら?カード型データベースなら 注文1-日付・注文1-商品名1・注文1-商品名2・注文2-日付…と作るしか ないです。エクセルならシートを分けるとかしますか?シートの 上の方に名前とか住所を入力して10行目ぐらいから下は注文を受けた データ入力していくとかですかね。でもこれでは今月の売上の集計とか 出すのは大変ですね。 Access等のリレーショナルデータベースなら顧客の情報を保存する表 (テーブルといいます)、受注の情報(受注日、合計額、支払方法等)の テーブル、受注明細(商品名、単価、数量など)のテーブルを作り、 それをリレーション(関連付け)することができます。リレーションには ユニークな番号(ここでいうユニークとはエキセントリックとか個性的と いう意味とはちょっと違ってそれぞれの行ごとに1つづつ増える番号など 他の行と重複しない番号のことです)を主キー(鍵のKeyです)として使います。 それぞれのテーブルを作ってみるとこんな感じでしょうか。 T顧客 顧客ID 主キー オートナンバー型 インクリメント(前に使ったのより 1、多い数を新しいデータに自動で振る) 顧客名 テキスト型 郵便番号 テキスト型 住所 テキスト型 電話番号 テキスト型 顧客備考 メモ型 続きます
T受注 受注ID 主キー オートナンバー型 インクリメント 顧客ID 数値型 (このIDが一致する顧客から受注したとわかる) 合計額 通貨型 受注日 日付型 受注明細 メモ型 T明細 明細ID 主キー オートナンバー型 インクリメント 受注ID 数値型 (どの受注の明細か) 商品番号 テキスト型 価格 通貨型 数量 数値型 T商品 商品番号 主キー テキスト型 (A-0001とかで管理するならテキスト型になる。 テキスト型でもAccessでは主キーにできる。他のソフトでも出来るかは知らない) 商品名 テキスト型 価格 通貨型 商品備考 メモ型 テーブルをこのように作ると、顧客毎の売った商品一覧/売上とか、 月ごとの売上合計とか月ごとの売れ筋順リストとか作れるわけですね。 (クエリーという機能) まあ、Accessってのはこんなソフトです。長文失礼しました。
918 :
名無しさん@そうだ選挙にいこう :01/11/28 21:31
>>917 T受注 の 合計額って T明細 から計算できるんだけど...
値引きを含んだ額か ?
本業の合間に本業で使う在庫管理システムや売上統計用Accessでソフト作ってんだけど、 Accessでソフト作れるくらいでホントに飯が喰えんの? 職業として成り立つほど特別な技術なんか?これ使えんのって? これでだいたいどれくらい稼いでんの?
921 :
一姫二太郎名無し三 :01/11/29 00:12
>>917 >テキスト型でもAccessでは主キーにできる。他のソフトでも出来るかは知らない
SQL ServerもOracleもできるよ。
>>919 派遣で時給2000〜3000円程度。
ソフト屋で50〜70万/人月くらいか。
発注側ね。
労働者の取り分は推して知るべし。
>>918 ほんとはT受注には小計・税額・合計等入れると思う。送料とかも。
いつまでも消費税5%じゃないだろうし、実際前は3%だったし。
明細に単価があるのも商品の値段変えても過去の売上の数字狂わないように。
この辺もっと突っ込むと正規化と非正規化の話になるね。
あと、説明用の想像のものなので実務に使うにはその仕事にあわせて
いろいろ変えるところは当然あると思うよ。
>>921 ありがと。他のはあんま知らないんだ。
924 :
名無しさん@そうだ選挙にいこう :01/11/29 18:19
職業として成り立つ本職の大工もいれば 趣味だけの日曜大工もいるってこと。
ネタだと思うが、 本職はやはり「仕上がり」が違う。 というか、そうでなければカネを貰う資格無し。 VBやAccessは日曜大工程度でカネを貰うやつが多いが必要悪かもな。 本職はそんな安い仕事は請けない。
フォーム上のテキストボックスに入力した文字で、 コマンドボックスをクリックすると レコードを検索し、フォーム上に 表示するようには出来たのですが、 該当するレコードがない場合、 その旨をメッセージボックスで出したいのです。 どうVBAを書けばいいのでしょうか?
927 :
名無しさん@そうだ選挙にいこう :01/12/01 21:38
>>926 774はこのスレの774ではなく名無しの意味か?774を見に行ってしまったぞ。
コマンドボックスってなんだ?コマンドボタンの意味か?
既にあるレコードなら必ずデータのあるフィールド(主キーのフィールドとか)を
みてNullなら検索結果無し
If isnull(Me![**ID]) then
Msgbox("検索結果が無いよ")
end if
ところで君は文字でクリックするのか?
>927
929 :
名無しさん@そうだ選挙にいこう :01/12/02 20:47
レコードを追加するクエリを実行するたびに出るガイドメッセージをoffにするには どうしたら良いですか?
930 :
名無しさん@そうだ選挙にいこう :01/12/02 21:13
ツール-オプション-編集/検索-確認-アクションクエリのチェックを。 クエリ単体を実行した時は出したいけど、フォームのボタンをクリックした時は 出したくないなら、VBA中で追加クエリーを走らせて、SetWarningsを。 DoCmd.SetWarnings False DoCmd.OpenQuery "クエリ名" DoCmd.SetWarnings True
即レスありがとうございます。 主キーの重複等で追加出来なかった場合のガイドメッセージ出すには 自前でチェックしてmsgbox出すしかないですか?
>927 ご回答、ありがとうございます。 明日、会社で早速試してみます。 そうです、コマンドボタンのことです(^^;) 「文字でクリックする」とは、どういうことでしょうか? テキストボックスに検索文字を入れて、 右の「検索」コマンドボタンをクリックすると 検索する、という風にしています。 ですから、文字でクリックすることには ならないのですが・・・ 文字でクリックする場合、 何か注意することがあるのでしょうか?
あ、文章がおかしいといっているのですね>文字でクリックする 「入力した文字で検索するよう、コマンドボタンをクリックする」 という意味だったんです。厨房な文章でスイマセン 逝ってきます・・・
934 :
名無しさん@そうだ選挙にいこう :01/12/02 22:40
listボックスのitemの選択を外したいのですが、どうすれば良いですか?
936 :
927&930 :01/12/03 01:12
>926 774を見に行った事でちょっとヘコんで要らんところまで突っ込んでしまいました。 正直スマンかった。 >929 先に重複クエリなり、追加元と追加先の主キーを繋いだクエリでかぶっているものが あるかチェックして、重複があったら追加元のレコードに新しい番号を振る というのはどうざんしょ? もしくはそんなことの起こらないように設計の見なおしをするとか。 主キーはオートナンバーにして、追加クエリで追加するときに振るようにするとか。 >934 すまんが何をしたいのかわからない。リストボックスの右に出る上下の矢印を 表示しないようにしたいのかな?だったらテキストボックス使ったらいいんじゃ ないかな?リストボックスが使いたい理由はなあに?
>936 1回選択すると選択したitemが黒くハイライトされてそれが保持される。 その状態じゃなくて初期状態のどこも選択してない状態にしたい。 初期状態では何も選択してない状態だからフォームを閉じて開いてって やれば外せると思うけど、なんかもっとスマートな方法ありそうな気がするし。 vbだとlist.indexイジレば直せそうなんだけど、accessのlistボックスは そのプロパティがない。。
>>937 vb以前に、ど素人だな。。
listboxのプロパティhelp見て出直して来い(w
939 :
名無しさん@そうだ選挙にいこう :01/12/04 03:19
>>937 複数選択設定してないのなら、ValueプロパティにNull入れる。
複数選択設定してるなら、Selectedプロパティを制御すればいい。
>>939 >>934 のような知ったかぶり厨房に簡単に教えんでも(w
少しは、苦労させたほうがよいぞ(w
941 :
名無しさん@そうだ選挙にいこう :01/12/04 13:46
oracleのnvl関数みたいな関数はありますか?
nz()で出来ました。少し分からない事があるので重ねて質問します。 SQL文中で、Nz([Tworklog].[inrest],0)とやったら出来たんですが。 Nz(inrest,0)とやると出来ませんでした。どうしてですか? SQL文中に同じフィールド名があるテーブルは使ってません。 普通ならフィールド名だけ書いてもテーブル.フィールド名という形に 補完してくれますよね?"inrest"となってました。 もう一つ。引数にバリアント型を指定ってことはどんな型を指定しても 良いってことですか?
>927 ありがとうございます、見事できました! が、新たにまたちょっと不都合が出てきました・・・ 一つ前のレコード、一つ後ろのレコード、一番前、一番後ろの レコードに移動するコマンドボタンも作ったのですが、 その操作をした後に、この検索を実行すると、 該当レコードがない場合のメッセージボックスが 出ず、一番前のレコードに戻ってしまうんです。 これを、該当レコードがないというメッセージボックスを 出した上で、一番前のレコードに戻らないように するには何か方法があるのでしょうか?
>942 >Nz(inrest,0)とやると出来ませんでした。どうしてですか? 再現できないのでわかりません。なんででしょうね? 簡単なクエリで試してみましたか? >もう一つ。引数にバリアント型を指定〜 VBAのヘルプでバリアント型で調べればわかることだけど 「文字列、日付、時間、ブール値、または数値を格納することができます。」 なので、普通は何でもいけるんじゃないかな。 >943 >その操作をした後に、この検索を実行すると、 この検索ってどんな検索? 検索条件を書くテキストボックスとコマンドボタンはどのフォームにありますか? 別のフォームですか?検索結果を表示するフォームですか? そのフォームのフォームヘッダー/フッターですか? 検索結果を表示するのがサブフォームでその親にあたるフォームですか? んで、検索はどんな方法でやっていますか?VBAならコードを。
945 :
名無しさん@そうだ選挙にいこう :01/12/05 15:20
メモ型の入ったテーブル同士をくっつけたユニオンクエリー、または その代替となるものは作成できないんでしょうか。 そのまま作ろうとすると、 「ユニオンクエリのSELECT句ではメモ型またはOLEオブジェクトフィールド型の フィールド'XXX'が利用できません」 てなことを言われてしまうんですが・・・ なお、データ内容の都合上、メモ型をテキスト型に変えることはできません。 一体どうしたら・・・ (´д`;)
946 :
名無しさん@そうだ選挙にいこう :01/12/05 16:56
メモ型フィールドを left とか strconv とか、適当に文字列を加工する関数に 通したクエリ同士だとくっつくみたい。何故だかわからないけど。
948 :
名無しさん@そうだ選挙にいこう :01/12/05 17:12
>>946 サンクス 今ちょっと別の強引な方法で対処しちゃったんだけど、
そちらの方法も試してみます
949 :
名無しさん@そうだ選挙にいこう :01/12/05 17:19
Access97スレが見当たらないので こちらに書かせていただきます^^; 文字列(テキスト型)の不一致クエリを実行したとき 完全に同じ文字列であるにも拘らず(文字コードでチェックしました) 不一致データとして結果表示されてしまうのですよ。 色々調べたのですが、どうもその文字列が 140バイト以上だと軒並み不一致結果に出てくるようなのです。 これはbugでしょうか? 致命的にまずいんでありえない気もするんですが…
950 :
名無しさん@そうだ選挙にいこう :01/12/05 18:16
>948 参考までに掲載きぼんぬ>強引な方法
951 :
名無しさん@そうだ選挙にいこう :01/12/05 19:32
>>949 本当だ
致命的ですね
125桁以上の比較が変ですね
Access2000では問題ない
>>950 ごめんなさい その強引な方法っていうのは
ちっとも汎用的じゃなくて、うちのDBでしか使えない方法なので
掲載しても無意味と思う。しかも説明しようとしたらテーブル構造も
相当書かなきゃなので勘弁して・・ m(__)m
953 :
名無しさん@そうだ選挙にいこう :01/12/06 02:23
機材管理のDBを作りたいのですが 管理コードは、連続しているが、項目ごとにフォームの内容を切り替える 事は出来ないでしょうか? つまり 0001 PC-A 0002 CRT 0003 Printer といった機材があるとして PCはOSやCPUの種類、メモリ、HDの容量 CRTはサイズ プリンターは、種類と白黒・カラーの有無、用紙サイズ といった具合に、入力&表示する内容を切り替えたいのです。
>951 さん レスありがとうございます。 やはりBugですよね、パッチが出てないかみてこよう。 MSの事だから、もう97のサポートはしてないと思うけど しかしこんな致命的なのに表立って聞いた事が なかったですねぇ
>927 ・検索条件を入力するテキストボックスとコマンドボタンは、 検索結果が出るフォームのヘッダーにあります。 (レコードがフォームの本体に表示されます。) レコードを表示するフォームと、検索条件を入力、表示するフォームは 同一です。分かれてないです。 これで判りますでしょうか? それから、下に検索のコマンドボタンのVBAを載せておきます。 Private Sub レコードの検索_Click() ' コントロールの値と一致するレコードを検索する On Error GoTo Err_レコードの検索_Click Dim rs As Object Me.RecordsetClone.FindFirst "PCテーブル.[コンピュータ名] = '" & Me![PC検索] & "'" Me.Bookmark = Me.RecordsetClone.Bookmark If IsNull(Me![PC検索]) Then Msgbox ("該当するレコードはありませんでした") End If Me!PC検索 = Null Exit_レコードの検索_Click: Exit Sub Err_レコードの検索_Click: Msgbox Err.Description Resume Exit_レコードの検索_Click End Sub
956 :
名無しさん@そうだ選挙にいこう :01/12/06 15:27
>>955 Dim rs As Recordset
set rs = Me.RecordsetClone
rs.FindFirst "PCテーブル.[コンピュータ名] = '" & Nz(Me![PC検索],"") & "'"
if rs.EOF then
Msgbox ("該当するレコードはありませんでした")
else
Me.Bookmark = Me.RecordsetClone.Bookmark
endif
Me!PC検索 = Null
だと思われ
957 :
名無しさん@そうだ選挙にいこう :01/12/06 15:40
訂正 Me.Bookmark = rs.Bookmarkだった。
>956 うーん、折角教えて頂いたのに悪いのですが、 一度そのVBAでしてみたのですが、 メッセージボックスが出なくなりました・・・
959 :
名無しさん@そうだ選挙にいこう :01/12/06 16:56
FindFirstだから rs.EOFではなく rs.NoMatch では? if rs.Eof then … × if rs.NoMatch then … ○ これで動かん?
960 :
名無しさん@そうだ選挙にいこう :01/12/06 17:00
VBAのコード中に変数を埋め込んだSQL文を書くのが非常に面倒なんですけど、 どうやってかいてますか? ""、&、 _を使って手で書いてると発狂しそうになる。。 なんかツールとかあるんですか?
961 :
名無しさん@そうだ選挙にいこう :01/12/06 17:32
予約ID, 会員コード, 予約時間, 席 というテーブルがあって、今日は誰が来るかの一覧を、会員コード、 時間、席、その会員コードの人は前回、前々回いつ来たか、というのを 出したいんですが、クエリだけでは無理ですか?
>961 できそうだが…
963 :
名無しさん@そうだ選挙にいこう :01/12/06 19:45
>953 まずテーブル設計から T機材管理 管理コード 主キー テキスト型 機材種別 数値型 詳細A テキスト型 詳細B テキスト型 詳細C と必要なだけテキスト型の詳細を作る。 T機材種別 機材種別 主キー 数値型 詳細A列名 テキスト型 詳細B列名 テキスト型 詳細C列名 詳細と同じだけ作る。 T機材管理とT機材種別を元にしたクエリQ機材管理 SELECT T機材管理.*, T機材種別.機材種別名, T機材種別.詳細A列名, T機材種別.詳細B列名, T機材種別.詳細C列名 FROM T機材管理 INNER JOIN T機材種別 ON T機材管理.機材種別 = T機材種別.機材種別; をレコードソースにしたフォームF機材管理を作る。 機材種別に数値を入力すると機材種別名や詳細A列名等が表示されるので それに沿って詳細A等を入力してもらう形式。機材種別名・詳細A列名等は 編集ロックをかける。 入力はこんなもんかな?機材種別をコンボボックスにするとか タブストップをいじるとか使いやすいように変えてね。
で、表示だけど、複数項目による絞込ってことだあね。作るのが楽(っていうか作らなくて良い) のはフォームフィルタ。なんだけど、使い方が面倒臭いってゆーか あまりPC使わない人が使う場合、教えるのが面倒臭いとゆ〜か。 クエリの抽出条件のとことおんなじだからねえ(「あ」を含むなら Like "*あ*") まじめに作るとこんな感じかな? フォームヘッダに抽出条件管理コード・抽出条件機材種別・抽出条件詳細A列名等を コントロールソースなしで作って絞込検索ってボタンを作って Private Sub 絞込検索_Click() Dim SQLCode As String SQLCode = "" If Me![抽出条件管理コード] <> "" Then SQLCode = " Q機材管理.管理コード Like '*" & Me![抽出条件管理コード] & "*'" End If If Me![抽出条件機材種別] <> "" Then If SQLCode <> "" Then SQLCode = SQLCode & " AND Q機材管理.機材種別=" & Me![抽出条件機材種別] Else SQLCode = " Q機材管理.機材種別=" & Me![抽出条件機材種別] End If End If If Me![抽出条件機材種別名] <> "" Then If SQLCode <> "" Then SQLCode = SQLCode & " AND Q機材管理.機材種別名 Like '*" & Me![抽出条件機材種別名] & "*'" Else SQLCode = " Q機材管理.機材種別名 Like '*" & Me![抽出条件機材種別名] & "*'" End If End If If Me![抽出条件詳細A列名] <> "" Then If SQLCode <> "" Then SQLCode = SQLCode & " AND Q機材管理.詳細A列名 Like '*" & Me![抽出条件詳細A列名] & "*'" Else SQLCode = " Q機材管理.詳細A列名 Like '*" & Me![抽出条件詳細A列名] & "*'" End If End If '以下同様に続く If SQLCode <> "" Then SQLCode = "SELECT * FROM Q機材管理 WHERE" & SQLCode Else SQLCode = "SELECT * FROM Q機材管理" End If Me.Form.RecordSource = SQLCode End Sub ってなイベントプロシージャを書く。でどうでしょ?ツカレタ でもおかげで「改良しないとなあ」と思ってたものの、ど〜しようか って悩んでいたののヒントになったよ。
>960
SQL文を手で書くのは確かにめんどくさいですね。しかもその後スキャナで取り込んで
OCRで認識させて間違えて認識した所を修正してってやっていると僕も気が狂いそうです。
ごめんよ。ちょっとふざけてみた。
クエリを作って、抽出条件に'"& 変数 &"'とか"& 変数 &"とか入力してSQLビューに
して改行を半角スペースに打ち変えてコピペがキーボードで打ち込むのが好きじゃない
人のSQL文の作りかたかなあ。
後は「自動入力くん パスワード入力など特定条件に合致する画面に対して登録した文字列の入力を行う」
ttp://www.vector.co.jp/soft/win95/util/se217786.html とかに'"& &"'とかを登録しておくとか。
966 :
名無しさん@そうだ選挙にいこう :01/12/06 20:22
>964 丁寧に解説ありがとうございます。 週末に実践してみようと思います。
967 :
名無しさん@そうだ選挙にいこう :01/12/06 20:27
>>962 出来るんですか?前回前々回の履歴が取れない気がしたんですけど。。
一時テーブル作って一時テーブルから一覧をつくりました。
その日に来る会員コードを取得するSQL書いて
それを1件ごと取り出して、取り出した会員コードを元に別のSQLで
履歴を取得して、その履歴を一時テーブルに保存してくのをVBAで
シコシコ書いたんですけど無駄な作業だったりしますか?
初めてレコードセットの取得とかやったんでえらく時間が掛かりました。。 勉強にはなったから良いけど。。
すみません。 ByLayerの太さって0.20mmくらいですか? 正確な太さってわかりますか?
>>967 前回前々回と限定すれば可能じゃないかな?
>シコシコ書いたんですけど無駄な作業だったりしますか?
そういう経験は決して無駄ではないと思う。
問題解決へのアプローチは一つではない。
自力で何とかなってるならそれはOK。
>959 確かに、NoMatchに変えたら メッセージボックスが出るようになりました。 ありがとうございました。 しかし、やっぱり他の操作をすると レコードが一番前に戻って、 メッセージボックスが出ないです。
で、更にまた厨房的質問ですいませんが、 Private Sub PC検索_AfterUpdate() ' コントロールの値と一致するレコードを検索する On Error GoTo Err_PC検索_AfterUpdate Dim rs As Objectta Me.RecordsetClone.FindFirst "PCテーブル.[コンピュータ名] = '" & Me![PC検索] & "'" Me.Bookmark = Me.RecordsetClone.Bookmark If IsNull(Me![PC検索]) Then Msgbox ("該当するレコードはありませんでした") End If Me!PC検索 = Null Exit_PC検索_AfterUpdate: Exit Sub Err_PC検索_AfterUpdate: Msgbox Err.Description Resume Exit_PC検索_AfterUpdate End Sub これで、メッセージボックスが出ないのは どうしてなんでしょう? 考えてみたんですが、判らないです・・・ 質問ばかりですいません
上のは、テキストボックスに入力した文字で、 Enterキーを押した時に検索するVBAです。
974 :
名無しさん@そうだ選挙にいこう :01/12/07 12:13
テキストボックス([PC検索])がNullのときにMsgboxが出るようになってるから。
>レコードが一番前に戻って rs.closeしてないとか、MoveFirstして先頭から検索してもらうとかかな? もしくはMe.RecordsetCloneだと検索後の絞り込まれたのから検索してるんじゃ? >メッセージボックスが出ないのは If IsNull(Me![PC検索]) Thenをif rs.NoMatch then(959さんの) 検索条件を見てもしょうがないんじゃ? DAOはにがてなんだよなあ。何回か使ってるし、動けば他では出来なかったり 重いのを軽く出来たりするだけど毎回悩む。 僕なら検索程度なら全然違う方法でこうする。 Private Sub PC検索_AfterUpdate() If Me![PC検索] <> "" Then Me.Form.RecordSource = "SELECT PCテーブル.* FROM PCテーブル WHERE PCテーブル.コンピューター名='" & Me![PC検索] & "';" 'SQL文はフォームに合わせて変えてね。 '部分一致なら WHERE PCテーブル.コンピューター名 Like '*" & Me![PC検索] & "*';" 但し重いと思われ If IsNull(Me![コンピューター名]) Then MsgBox ("該当するレコードはありませんでした") End If Else Me.Form.RecordSource = "SELECT PCテーブル.* FROM PCテーブル;" 'PC検索をからにすると全件表示 End If End Sub エラーの処理やMe![PC検索]をからにするとか(その場合Else以下を変更)は 案件にあわせてそれなりに。
>927=975 うーん、上のVBAだと、レコードが1件に絞り込まれてしまうのですね。 そうすると、全件をもう一度表示するのが判らないので、 ちょっと・・・ で、>If IsNull(Me![PC検索]) Thenをif rs.NoMatch then(959さんの) >検索条件を見てもしょうがないんじゃ? を参考に、If RecordsetClone.NoMatch Thenにしたらなんとか出来ました。 が、また不都合が・・・ こうすると、検索終了したらMe!PC検索 = Nullで テキストボックスをクリアにする操作をするので、 AfterUpdateが効いてしまって、 2回メッセージボックスが出てきてしまうのです。 これを回避する方法って、ありますか? 次から次へと質問してすいませんです・・・・
>>976 くだらん。
フォームフィルタをHELPで調べろ
>958 の 976 を〜い、ちゃんと読んどるんか〜 >そうすると、全件をもう一度表示するのが判らないので、 975>Else 975>Me.Form.RecordSource = "SELECT PCテーブル.* FROM PCテーブル;" 975>'PC検索をからにすると全件表示 ここじゃ。 DAOにこだわるなら >2回メッセージボックスが出てきてしまうのです。 If isnull(Me![PC検索]) then Exit sub end if とでもしとけ。とりあえず956/957さん959さんのレスを見直す。たとえば 957>Me.Bookmark = rs.Bookmarkだった。 とか君宛のレスじゃろ?972には反映されとらんけど、試して問題でもあったん? もし問題があったんならそれをかかにゃいけんじゃろおが? ヘルプを「DAO」で検索。関係なさそうなところもよく読めえや。 同じく「Recordset」もよく見れ。リンク先や関連項目・使用例・対象も。 特に使用例のSet rstとかSet dbs書いてある辺りをいろいろ見て 自分のデータベースで動かしてみいや。グーグルも使え。 DAOはいろいろできて強力なだけにむずかしいんで?使うなら真面目に 取り組まんとらちあかん。コピペですぐ動くもんじゃないけえね。 自分で勉強する気がないなら977さんのいうようにしときんちゃいや。
>>978 漏れのいいたかったことはチト違うな・・
厨房が、意味もわからず余計なことをしていたため
あのような発言をしたまでのこと。
ACCESSを使う上で、帳票フォームを利用する最大のメリットは
ひとつがフィルタ・並び替えを簡単に行うことだと思っている。
わざわざそれに逆らう必要など微塵もない。
VBAでも簡単に制御できるしな
>977-979さん
なるほど。
>ACCESSを使う上で 〜中略〜 逆らう必要など微塵もない。
ってゆ〜のは確かに頷けます。僕も検索ならRecordSourceプロパティを
使う派ですから。フォームフィルタは実際に使う人がそれなりに
分かってくれる人なら使いたいところですが、964(これも僕でした)
>なんだけど、使い方が面倒臭いってゆーか
>あまりPC使わない人が使う場合、教えるのが面倒臭いとゆ〜か。
なので使わないですねえ。
>VBAでも簡単に制御できるしな
って言われてますのでいわずもがなですね。
以下毎回名前がかわる774君関連のレス。
>>926-928 >>932-933 >>936 >>943-944 >>955-959 >>971-979
982 :
名無しさん@そうだ選挙にいこう :01/12/09 01:19
dateという名前のテキストボックスがフォーム上にあるんですが 別のテキストボックスに現在の日付を取得しようとして Me!F.acceptday = dateとすると、acceptdayにテキストボックスdateの値が 入ってしまいます。 明示的に関数だということを宣言する方法はありませんか? date()と書けないし。。
>>982 標準モジュールに適当な関数作って呼んだら?
Public Function DateA() as Date
DateA = Date
End Function
テキストボックスの名前変えるのがいいんだろうけどね
984 :
名無しさん@そうだ選挙にいこう :01/12/09 10:28
>>982 Dateの代わりに、Nowを使えば??
format(now,"yyyy/mm/dd")
985 :
名無しさん@そうだ選挙にいこう :01/12/09 18:02
テキストボックスの名前を変えろ 関数名とかぶらせる奴があるかい フィールド名とも重複させるなよ
986 :
名無しさん@そうだ選挙にいこう :01/12/09 20:39
>>982 Me!F.acceptday = VBA.Date
>>982 テキストボックスだったら、
txtDateみたいな命名基準がよさげ。
988 :
名無しさん@そうだ選挙にいこう :01/12/10 21:24
結局名前を変えました。 後々別の人が見たときに分かりにくいですし。。
こっちは使い切りきり魔性
どーすか
そゆことで
♪
ねえ?
999!
1000?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。