ACCESS総合相談所 その10

このエントリーをはてなブックマークに追加
1暫定ヘッダです
質問される方へ
・OS、ACCESSのバージョンを明記してください
・質問内容は具体的に書いてください
 テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
 範囲で詳しく書くと、早く回答が得られるかもしれません
 (聞き返さなくても詳細が把握できる質問が望ましいです)
・事前にヘルプ等で調べられる範囲は調べてください
・下記テンプレートの使用を推奨します。
---------- ここから ----------
【.  目 的  】 何がしたいのか必ず記入。)
【.  条 件  】 (使用OS、ACCESSのバージョン など)
■試したけどうまくいかなかった処理
【. 概  要  】 (どんな処理を試したかを説明)
【駄目な理由】 (動作状況など)
■これだけはやりました
>>1を読んだ】 はい・いいえ (読まない人が多いので必ず目を通してください)
【Googleで調べた】 はい・いいえ (大概の疑問は検索することで解決します)
【検索キーワードは?】 (全て列挙してください)
---------- ここまで ----------

前スレッド - ACCESS総合相談所 その9
http://pc2.2ch.net/test/read.cgi/bsoft/1061828549

過去スレッド/関連リンクは>>2以降
2歴代スレッドですね:04/01/29 21:23
・歴代スレッド
- html化済み -
ACCESS2000総合相談所
http://pc.2ch.net/bsoft/kako/965/965614164.html
ACCESS総合相談所 その2
http://pc.2ch.net/bsoft/kako/1007/10079/1007987001.html
ACCESS総合相談所 その3
http://pc.2ch.net/bsoft/kako/1019/10190/1019087338.html
ACCESS総合相談所 その4
http://pc.2ch.net/bsoft/kako/1027/10274/1027491281.html
ACCESS総合相談所 その5
http://pc.2ch.net/bsoft/kako/1033/10331/1033182163.html
ACCESS総合相談所 その6
http://pc2.2ch.net/bsoft/kako/1037/10378/1037856185.html
ACCESS総合相談所 その7
http://pc2.2ch.net/bsoft/kako/1043/10439/1043996834.html
ACCESS総合相談所 その8
http://pc2.2ch.net/bsoft/kako/1051/10516/1051630268.html
3リンク修正しました:04/01/29 21:24
ビジネスsoft板
【玄人】素人ACCESS相談所【禁制】
http://pc2.2ch.net/bsoft/kako/1047/10470/1047052026.html
もう『Access2002』使ってる人いるっしょ?集合!!
http://pc2.2ch.net/test/read.cgi/bsoft/1006147865/
SQL ServerとAccessの安定性は?
http://pc2.2ch.net/test/read.cgi/bsoft/997258157/
ACCESS2000の分かりやすい本
http://pc2.2ch.net/test/read.cgi/bsoft/994154155/
EXCEL,ACCESSで曖昧な表現を。
http://pc2.2ch.net/test/read.cgi/bsoft/1002267900/
Access2000+SQL Server難しい・・・(´д`;)
http://pc2.2ch.net/test/read.cgi/bsoft/1002096284/
microsoft access で成績証明書作成
http://pc2.2ch.net/test/read.cgi/bsoft/1054963223/

データベース板
  D  A  O  v s  A  D  O  
http://pc2.2ch.net/test/read.cgi/db/1057233936/
ADO DAO など接続方法について
http://pc2.2ch.net/test/read.cgi/db/1059027812/
Microsoft Access
http://pc2.2ch.net/test/read.cgi/db/1056952414/

プログラム板
Access使い集合! Ver2.0
http://pc2.2ch.net/tech/kako/1032/10324/1032402846.html
WordとAccessで年賀状
http://pc2.2ch.net/test/read.cgi/tech/1041070946/

クソスレもたくさん含まれています。ご注意ください。
>>1
乙っす。質問天ぷらの組み込み、GJっす。
5名無しさん@そうだ選挙にいこう:04/01/30 15:05
すみません、Accessってデータベースソフトですよね?
エクセルなんかから発展させたような、よく事務程度で使う
データベースソフトの事だと思っていたのですが
最近はどうもSQLとかプログラミングがらみのものとかが出てますよね?
事務の求人に出ていたり、事務程度で使うようなのを教えてください。
6名無しさん@そうだ選挙にいこう:04/01/30 15:33
>>5
何が言いたいのかよくわからないんだけどさ、
そんなことに悩まずにAccess使えばいいやん。
7名無しさん@そうだ選挙にいこう:04/01/30 15:34
レポートのデザインにおける、「並べ換え」に関して、

 一度保存した並べ換え項目の記述を削除したいのですがうまくいきません。
 いい方法があるんでしょうか?
8名無しさん@そうだ選挙にいこう:04/01/30 17:15
8
9名無しさん@そうだ選挙にいこう:04/01/30 23:16
>>7
並べ替え/グループ化ダイアログ画面を開いて行セレクタで適当に選んでから
Deleteするだけだと思うが・・・。
10新人:04/01/31 10:04
2ちゃんもACCESSも新人です、いきなりですが、質問よろしくお願いします。

OSはXPでACCESS2000を使っています。
Excelからデータをインポートして追加追加で現在5列30万行あるデータです。
主キーは設定しておりません。
そのインポートした列のひとつが「日付」なのですが、表記上は例えば今日だった
らテキスト型で040130のようになっています。
この列をすべて一気に「日付/時刻型」に変更したいのですが、方法がありましたら
教えてください。どうぞよろしくお願いします。
【目的】操作をするために列のデータ型を「テキスト型」から「日付/時刻型」に
変更したい。
【試したけど上手くいかなかった処理】
デザインビューで強制的に変えようとしたらデータが失われます。
置換えでやろうとしたけど上手くいきませんでした。
11名無しさん@そうだ選挙にいこう:04/01/31 10:17
>>10
更新クエリを使えば?
日付のフィールドで
=CDate(Format(日付フィールド名,"@@/@@/@@"))
12新人:04/01/31 10:43
さっそくのアドバイス本当にありがとうございます。
でもスミマセン。やっぱり素人なもんで(^^;)

選択クエリからデザインビューで更新クエリで
日付のレコードの更新のところに書き入れましたが、
クエリを実行しようとすると「抽出条件でデータ型が一致しません。」
と出ちゃいます。
やり方が悪いんでしょうか。それとも全くピントが外れてるんでしょうか。
1311 名無しさん@そうだ選挙にいこう:04/01/31 11:08
>>12
抽出条件欄に入れるんじゃなくその上...
※テーブルを一応コピーしてからやってよ。データ台無しにするな!
1411 名無しさん@そうだ選挙にいこう:04/01/31 11:11
追伸
更新クエリはデザイン→ビューで見ても更新結果は見られないからね
ツールバーの「!」ボタンで実行だからクリック後にテーブルで確認してよ
15新人:04/01/31 11:27
ありがとうございます。
テーブルはコピーしてやっていますので大丈夫です。
式は「レコードの更新」のところに入れています。
抽出条件欄は空白のままです。
これで作成された更新クエリを実行しようとすると最初に「書き換えますか」
の表示が出て「はい」のクリックで「抽出条件でデータ型が一致しません。」
と表示されてテーブルで確認しても更新されていません。
データ型そのものの更新は出来ないんでしょうか?
1611 名無しさん@そうだ選挙にいこう:04/01/31 11:45
そうだった...(鬱
テーブルで新しいフィールドを「日付/時刻型」で作り
そのフィールドでやって下さいな
17名無しさん@そうだ選挙にいこう:04/01/31 12:30
OS98でACCESS2000を使っていて、最近PCを買い換え
OSがXPになったんですが、ここで問題が発生しました。

宛名ラベルウィザードを使って
=Trim([値札1])
=Trim("\ " & [販売価格]*1.05)
のようなレポートを作って商品の値札作成用に使用していたのですが、
XPにしてから、このレポートがうまく表示されなくなりました。
すべて「#Neme?」と出てきてしまいます。
ちなみに98上ではしっかり表示されていました。
これはどのような原因によるものと考えられるでしょうか?
値札1とか販売価格のコントロール名と名前(プロパティ>その他)が同じに
なってたら名前の方を「txt値札1」「txt販売価格」等違うものに変えてみ
てはどうでしょうか?
1917:04/01/31 16:46
>>18
レス遅れて大変申し訳ありません。
確認してみたのですが、コントロール名(これはコントロールソースの
ことで良いでしょうか?)は「=Trim([値札1])」になっていて
名前のほうは「テキスト1」などとなっています。
やはり式というか関数の部分で引っかかっているのかなと思いまして。。。

>>17
Microsoft Jet のアップデートはしてますか?
>>19
VBAエディタを開いてツールから参照設定を確認して
「参照不可」とある項目があればチェックを外して
2217:04/01/31 18:05
できましたーーーー!

>>18さん、>>20さん、>>21さん
自分ひとりでは全然分かりませんでした。
ものすごく初歩的なことだったのかもしれませんが、
わざわざ教えて頂き本当ににありがとうございます!
23新人:04/01/31 21:53
>>16さん、ありがとうございました。
すんなり解決いたしました。
24名無しさん@そうだ選挙にいこう:04/01/31 23:09
ACCESSの、期間限定でいいから体験版ダウンロードってないですかね?
評価版あるけど金かかるよ
ttps://s.microsoft.com/japan/products/shop/default.aspx
26名無しさん@そうだ選挙にいこう:04/02/02 10:06
>>9
それが無理なので
27名無しさん@そうだ選挙にいこう:04/02/02 15:23
売上データを[列:顧客名][行:売上日付][値:売上額]としてクロス集計クエリーを作成。

これを帳票で印刷しようとすると、横向き(列)フィールドのコントロール名をどのようにすれば良いものか・・・。
顧客データが固定であれば無理矢理できないこともないけど、顧客が増えることを考えるとどうやって次のページに反映させるのか?と悩んでいます。


今までは、行と列を反対にしてごまかしてたけれど(横向きが日付で縦が顧客データになる)、それ以外に何か方法があるものか聞きたくカキコします。


アクセス帳票でこれを実現した方のご教授お待ちしております。
>>27
クロス集計クエリーは使わない。売上データテーブルから、
[グループ],[売上日付],[売上額顧客1],[売上額顧客2],……[売上額顧客X]←用紙に入る列数
のクエリーを作る。レポートには「用紙」という制限が必ず発生する為
あまり自由が効かない。(というか可変レポートなんつうものを作るのはめんどい)
レポートを作り易いソースをまずでっちあげ、レポート上では変わった事はしない。

列タイトルは、ルックアップなり関数作るなりして、引っ張ってきて、
レポートの詳細の外側に張り付けたラベルなりテキストボックスなりに表示させる。

で、そのクエリーを烏賊にして作るか、それは自分で工夫汁!
ユニオンクエリーあたりを弄って美代!
ワークテーブルなんかつかってみるのも一つの方法。
複数の列見出しを持つクロス集計の作り方を教えてください

[行:顧客名][列:商品名][値:売上額]で、
さらに商品は[売上分類]に分類できて[列:商品名]の上に[列:売上分類]を加えたいのです
よろしくお願いします。
3027:04/02/03 19:08
>>28

サンクス。
列のコントロールソースをVBAでごりごり変更する方法がいいかも。
いろいろ試してみてダメそうだったら、違う方法で逃げてみます。
みなさんACCESSに詳しいようですが独学で学んだのですか?
僕も職場でACCESSを使用し始め色々やりたい事があるのですが
分からないことが多く正直戸惑っています。

ACCESSを勉強する為の(特にクエリやマクロ)どこかお勧めのHPがあったら
教えてください。


32名無しさん@そうだ選挙にいこう:04/02/04 00:56
リレーションシップについて質問なのですが、4つのテーブルに「氏名」というフィールドがあります。
この関連付けの場合、たとえばAのテーブルとBのテーブルをリレーションし、またさらにAとCのテーブルをリレーションするのでしょうか?
超初心者ですみません・・他でも調べたのですがリレーションについてはそれほど情報がなかったのです。
アクセスは2003で、顧客管理をしたいと思っております。
リレーションシップなんて無視しろ。
つないでおけば少しは便利なこともある、程度のものだ。
わけも分からないままつないだって、その便利さは使いこなせないだろう。
使いこなせない便利さの代償はけっこうでかいぞ。
何かやるたびに警告がガンガン出る。
それが嫌だったら、ひとまずは何も手をつけずに放っておけ。
関連づけはクエリ上で必要分だけやればいい。
34名無しさん@そうだ選挙にいこう:04/02/04 08:45
>>33
昔はそういう意見にビビッタけど、ACCESSから入る初心者だったらそれもありか
もと思いはじめてきたよ。
>>31 まずはAccessのHELPとサンプルを見ろ! 話はそれからだ。

で、
http://pc2.2ch.net/db/

しかし重要なのは何かを読む事ではなく自分で手を動かし試して見る事だ
具体的に判らないところが出てきたらここで聞けばいい。













ttp://www.moug.net/
ttp://www.microsoft.com/japan/msdn/officedev/
>>33
オレも独学なんで偉そうに言えないけど
リレーションシップってそんなに重要じゃないと思う。
>関連づけはクエリ上で必要分だけやればいい。
同意!
‘リレーショナル’・データ・ベース
38名無しさん@そうだ選挙にいこう :04/02/04 14:18
>>32
まず「正規化」について勉強した方が良いのでは?
「氏名」フィールドがテーブル毎にあって、しかもそれで連結
するのは如何なものかと。
同姓同名はどうするか、結婚して苗字が変わったらどうするか、
問題がありそうな気がするのですが。
39名無しさん@そうだ選挙にいこう:04/02/04 17:47
>>33
たしかに、その通りになりました・・・
クエリでデータの調整をしていたら、変更不可能だと。
自分でリレーションを削除し、なんとか元通りに。
昨日から数時間やりっぱなしなので、おっしゃる意味がなんとなくわかってきました。
>>34
一応データベースについてsqlは触ったことがあるのですが、いまいち真剣にやらなかったせいですね。
アクセスで困るハメに陥ってます。
>>36
関連付けと、データの保存とを分別して考えなければいけないのですね。
これもクセのような感じで慣れていけば身に付くのでしょう。。。
と願っています。

>>38
確かにそうですね。
名前で連結しても仕方ない。そのことに気付きました。
同じものを結ばないといけないという、へんな考えにヤラれておりました。
リレーションの件ですが、自分なりに触りまくってわかるようになりました。
みなさん、こんな初心者にありがとうございます。


40名無しさん@そうだ選挙にいこう:04/02/04 21:53
    商品A  商品B
A店  10    20
B店  15    10

といったクロス集計に、別のテーブルから商品Cという列を加えることは可能ですか?
41名無しさん@そうだ選挙にいこう:04/02/04 23:08
COUNT(DISTINCT 商品番号) みたいなの、
アクセスでできる?
42名無しさん@そうだ選挙にいこう:04/02/04 23:19
>>36
>リレーションシップってそんなに重要じゃないと思う。
重要だよ。何の為にリレーションを結ぶか理解してれば、そんな乱暴な
意見は出て来ない筈。リレーションシップを結ぶって事は、データを
リソースタイプとイベントタイプに分けてリソース側の追加をやりやすく
し且つ、変更が有った場合のイベント側の変更漏れなどのデータの不整合発生
を防止する。又、1−多のリレーションを結んだ場合の削除や変更のコントロール方式
を明確化する事によるデータ整合性を保つなど、リレーションシップの概念の
データベースにおける重要性は明らか。初心者にいい加減な情報を与える事はやめましょう。
43名無しさん@そうだ選挙にいこう:04/02/04 23:42
Accessスレで一番活発なのってここ?
4431:04/02/04 23:52
>>35
そうですね。頭で考えているよりも実際に使ってみて分からないことが出てきたら
皆さんに教えていただこうと思います。

ヒントになるHPまで教えていただきありがとうございました。
45名無しさん@そうだ選挙にいこう:04/02/05 00:37
>>36 は Eccel でも使ってれば?(苦笑
>>42
正論だが
大切な概念であるリレーションシップを「大切な概念としてばかり」教えるから、
前進できないで挫折する初心者が増えるんだと、俺は思う。
たとえば顧客マスターがあって買上履歴があって、ある顧客データを削除したら
その顧客の買上履歴も削除しなくっちゃ、で、削除クエリか何かを使ったりする。
まずはそれでいいと思う。
そのうちに、そういう手順を踏むのが面倒になってくる。
あっちのマスターを変更したらこっちの履歴が何ちゃら、そうそうこっちの履歴にも
影響するから・・・なんてことを考えるのが面倒になってくる。
1対多の関係を明確にしておけば、何かそういうことを自動的にやってくれる「機能」
みたいなものがあってもいいだろ、とか、ものぐさなことを考え始める。
初心者がそういう形で前進していくのも、形としてはアリでいいんじゃないか。
とにかく何か作って動かしてみなきゃ前には進めない。

てな調子でひたすら前進を続け、出来上がったモノをぶっつけ本番運用開始。
業務途中でとんでもないトラブルが起こったりもするわけだが・・・
ま、そのあたりは本人の性格にもよるし運にもよる。
4733:04/02/05 00:51
↑ごめん、名前欄とEmail蘭間違えた
48名無しさん@そうだ選挙にいこう:04/02/05 07:34
>>46
激同

明示的にデータ更新や削除をする事はとても大事なことだと思う。
リレーションシップは(理論的に)厳密に考えると必要なことかもしれんが、現場としては必ずしも必要とは思えない。

「正規化」と「リレーションシップ」は後で覚えても良いと思うぞ。
まずは目的が達成するソフトを「完成させること」が大事。

習うより慣れろですな。



あぁ、かといって正規化やリレが不必要と言ってる訳じゃないから。
個人の学習の過程ではそれでも通用するが、業務として作成するなら許されないな。
障害が発生することが容易に予測できる物を納品するなよ。
5036:04/02/05 09:07
>>42
>初心者にいい加減な情報を与える事はやめましょう。
ごめん、言い方が悪かった...

>>46,48氏がいうように、まずは慣れていく方向で...という意味で
言ったつもりなんだけど。

たしかに>>49氏の言われるように"業務として作成するなら許されない"
というのも確かです。

Accessをはじめたときは同じ答えを出すのに何十ものクエリ作ったり
してました。テーブルのソースにSQLを直書いたり、VBAを覚えたり、
していくらかマシにはなったと思っていても、まだまだってことです。<自分

試行錯誤できる時間があるのなら、試行錯誤を沢山したほうがいいの
かな?とは思うわけです。


まぁ、頭でっかちで規則ガチガチの不便なモノ作っちゃうよりは、
融通の利くモノの方が受け入れられるのは、ソフトウェアの大原則だよな。
>>43

DB板の

Microsoft Access
http://pc2.2ch.net/test/read.cgi/db/1056952414/

も割と動いてるよ・・と書こうとしたら、そのスレに>>40と同じカキコ発見
まぁ別に2chでヤイヤイ言うこともないか
初心者的な質問なんですが、テーブルの設定で

0以上10以下のときはA
11以上20以下のときはB

のようなものを作るときはどうすればよいのですか?
ExcelならIF使って簡単にできるんですが、Accessも一緒でしょうか?
よろしくお願いします

0<=10  A
11<=20 B

見たいな感じになるんですか?
>>53
アクセスはRDBなので、テーブルに式そのものを格納することはありえません。
テーブルに持たせるのはあくまで値だけです。その値を評価するのは、クエリです。
アクセスで、「選択クエリ」を作ってみてください。
ちなみに、EXCELでいうところの[IF]関数は、アクセスでは[IIF]関数です。
使い方はヘルプを見てください。

5553:04/02/05 13:24
>>54
ありがとうございます、クリエですればよかったのですね
さらにそれ関連して質問なんですが、今回ExcelでやらずAccessを使った理由というのが、
その条件が多すぎるからです

00〜10 A
11〜20 B
21〜30 C

みたいな条件をテーブルかクエリで作成って可能でしたっけ?
個数で関連付けすればいいんですよね?
56名無しさん@そうだ選挙にいこう:04/02/05 13:56
そっか、クエリでVLOOKUPを使えばいいんですね・・・
逝ってきます
うーん、やっぱりよくわかんないです

 個数   結果
10以下    A
20以下    B

というようなテーブルは無理なんですよね?完全一致以外のやりかたってないもんでしょうか?
>>57
横スレスマソです。iif関数ですと、これでどうでしょうか?

SELECT T.個数, IIf([個数]<=10,"A","B") AS 結果
FROM T;
>>55だと、
SELECT T.個数, IIf([個数]<=0,"A",IIf(20<=[点数]>10,"B","C")) AS 結果
FROM T;

クエリーのSQLビューにコピペしてみてください
では
>>54
Access(Jet)ってComputedFieldつくれないの?
ComputedField ってなんだ ?
61名無しさん@そうだ選挙にいこう:04/02/05 23:04
質問させていただきます。

ActiveXのカレンダコントロール 10.0を使って
テキストボックスに日付を入れるVBAのモジュール
があるのですが、カレンダのクリックイベント
をひろえないマシンがあります。OSはWINDOWS
2000です。

このマシンは前にはAccess2000が入っていたようで、
それをアンインストールした上でAccess2002を
インストールしたという経緯があるようです。

うまく動いているマシンのMSCAL.ocxを入れ替えてみたり
しましたがうまくいきませんでした。

ちなみに、そのテキストボックスに日付をあらかじめ
いれておいて、カレンダコントロールを開くときに
その日付を選択した状態で開くというコードを入れて
いますが、こちらはうまく動作します。クリックや
ダブルクリックのイベントだけとれません。

何かご存知の方がいらっしゃいましたらアドバイス
お願いいたします。

バーコードコントロールで似たような現象に陥ったことあるよ。
ac97で作ったパッケージを配布したPCに
ac2000をインストールした馬鹿がいて、バーコードが
印刷できなくなった。
いろいろ考えたけどac2000はそのままにして、
ac97をac2000とは別のディレクトリに
フルインストール(標準ではなく、フル)して、解決した。
ac97はすぐにアンインストールしても大丈夫
>61
しかし、M$ Date and Time Picker Control を何故使わんのだ・・・
6461:04/02/06 00:11
>62
ありがとうございます。AC2002がフルインストールか確認してみます。

>63
選択した日付を加工して使うシチュエーションがあるので。。。
Date...だとテキストボックスと一体になっているみたいなんで。
65名無しさん@そうだ選挙にいこう:04/02/06 12:31
こんにちは。
Access2000で OSは98を使っています。
レポートのことなんですが、そのレポートはテーブルの中身を表示するようにしています。
そのテーブルの項目の1つなんですが、桁数が100に設定しています。
そこで、その項目(文字数100)をレポートに表示する時
ラベル?1行で表示するのではなく、1行で表示するようにしたいんですが、
どのような方法があるんでしょうか?
どうかよろしくお願いします。
>>65
> ラベル?1行で表示するのではなく、1行で表示するようにしたいんですが、

一体何を伝えたいのか ?
67名無しさん@そうだ選挙にいこう:04/02/06 16:51
あの、テーブルの中の項目からレポートのテキストボックス(2個)に
表示するときの条件で、1個のテキストボックスに半角10文字まで表示させたい場合の
設定はどのようにしたらいいんでしょうか?
また、2個目のテキストボックスには1個目のテキストボックス(半角10桁制限)で
表示しなかった残りの文字を表示したいです。
どなたかお願いいたします。
その表示したいテーブルの項目の桁数が20桁と前提です。
>>67
Left関数、Right関数を調べたら?
(まあ、多分気づくだろうが...) Right じゃなくて Mid 関数だと思う。
あっ、ごめん 20桁固定なら Right でもいいや。
71名無しさん@そうだ選挙にいこう:04/02/06 19:08
>>60
計算項目とでもいうのかな?
フィールドに計算式が入れられる。
フィールド 単価 数量 金額
      整数 整数 単価X数量
見たいにテーブルが作れる。
>>71
ヘェー、そんなことできる奴があるんだ。
Excel みたいだな...。

でも何に使うの ?

普通にテーブルには単価と数量入れといて、クエリ書けばいいだけだと思うけど。

Jet でもそれぐらいなら朝飯前だし。
ここはACCESSスレですよ。
まっとうなRDBMSの話はやめてね。
>>73
Access がまっとうな RDBMS がどうかは知らんが、お前が話についていけないことはよくわかった。
回線切って染んでてくれ。
75名無しさん@そうだ選挙にいこう:04/02/07 02:54
前振り長いですが質問です。

現在、Access2000で簡単な名刺管理のシステムを作っているのですが
文字情報のほかにやっぱり画像が入ったほうがよいと思い、
イメージコントロールを追加してみました。
とりあえずピクチャプロパティに画像ファイルの絶対パスを指定して
レコードの移動時(Form_Current)にファイルを読み込んで表示、とやったのですが、
実際に動かしてみると、ページの切り替え時に「インポート中・・・(ファイル名)」という
プログレスバーのようなものがイチイチ表示されてしまい非常に鬱陶しいです。
これを出さなくさせるいい方法はないものでしょうか?

ファイルサイズは高々20KB程度で、マシンスペックもそう悪くないはずですが
この現象は致し方ないものなのでしょうか?

どうか回答よろしくお願いします。
76名無しさん@そうだ選挙にいこう:04/02/07 09:30
すいません、今顧客の売上関係のDBがAccess2000を使用してあるのですが、これにサービスポイントを追加しようと思っています。
具体的には、1,000までが10ポイント、2,000までが20ポイント、というような感じでなるのですが、このポイントのテーブルの追加はどのようにやればよいのでしょうか?

実際のクエリは、

日付   名前   商品    金額   ポイント
2/6     A   バナナ    500    10
2/6     A   ちくわ    1200    20    
2/6     B   かつお    800    10 

などと、商品ごとにポイントを計算します。人や日付では合計しないです。ちなにみ、各項目はいくつかのテーブルから引いてきています。


売上額   ポイント
<=1000    10
<=2000    20
<=3000    30

のようなテーブルの作成の仕方をよろしくお願いします。テーブル以外の方法でも構いません。
77名無しさん@そうだ選挙にいこう:04/02/07 09:31
>>75
イメージコントロール使う限り、それは仕方ない。
それが嫌なら、テーブルにOLEオブジェクト型フィールドを定義して、フォームでは連結OLEオブジェクトフレームを使えばよい。
ただ、Mdbのファイルサイズが馬鹿でかくなるので、自分も 75さんの方法を使うけどね。
>>76
好きだねぇ、こういう質問。いかにもAccessらしくて。
76 さんの考えている仕様によっていろいろ方法があると思うけど。

1. ポイントテーブルを使わないで演算式でまとめてしまう。

  クエリ内でSwitch関数を使ってまとめてしまう。こんな感じ。

  Switch([金額]<=1000,10,[金額]>1000 And [金額]<=2000,20,[金額]>2000,30)

 簡単だけど欠点としては、ポイント値やポイント範囲が変わった場合、いちいちクエリの記載変更が必要になること。
 逆に、ポイント値やポイント範囲が恒久的に変わらない場合、この方法で十分かもしれない。
7978:04/02/07 10:25
-続き-

2.Partition関数を使う。

もし、ポイント値やポイント範囲の変更をUIを考えているなら、ポイントテーブルが必要なわけだけど、
その場合ポイントテーブルとの結合キーにPartition関数の返り値を使う。

まず、現状のクエリに次のような式を加える Partition([値段],0,3000,1000)。
すると、[金額]フィールドの値によって次のような値が返ってくることがわかる。

   \1000未満0: 999
   \1000 〜 \20001000: 1999
   \2000 〜 \30002000: 2999
   \3000 〜3001:

つまり、Partition関数は[値段]フィールドの値によってその含まれている範囲の文字列を返してくるわけ。
よって、この文字列をポイントテーブルのキーにする。

売上額   ポイント
0: 999   10
1000: 1999  20
2000: 299930

あとはクエリを新しく定義し、現状のクエリのPartition関数の演算列と、ポイントテーブルの[売り上げ額]を結合し、
ポイントテーブルの[ポイント]列を出力させる。
8078:04/02/07 10:32
げ、なんか出力例の表示がおかしい、スマソ。
タブがなくなってしまいました。(0: 999、1000: 1999、2000: 2999、ということです)

この方法を使えば、ポイントテーブルの値をメンテナンスすることで、クエリの構造を変えることなく売上額の範囲、与える
ポイントを変更できる。ちなみにPartition関数の第4引数がIntervalを示しているので、この値を細かく設定すれば、ポイントテーブル側の調整がよ
り細かくできる。例えば、Intervalを500にしておけば、ポイントテーブル側では次のようになる。

売上額   ポイント
0: 499   10
500: 999  10
1001: 149920

まぁ、詳しくはPartition関数をヘルプで引いてくれ。
長文すまんかった。
売上額に対応するポイントに変化がおきたときのことを考えないんであれば
に1,000で割って切り上げて10かければ?
>>81
価格が 1,000 の時にポイントが 10 になってしまいますが。
>>81
元質問者の提示した条件だと、それでいいと思うが。
8483:04/02/07 19:33
>>82
>>75
画像がGIFかJPGなんじゃない?
BMPなら大丈夫だと思うけど。
>>83
あらホントだ、スマン。
8776:04/02/08 01:19
>>78
ありがとうございます、非常に参考になります。さっそく試してみます!
しかし、0〜1000みたいな場合、0:1000と書くのですか
それすら知らないヘタレだったんで _| ̄|○
>>79
> \1000 〜 \2000 1000: 1999
> \2000 〜 \3000 2000: 2999

ホントか ? \2000 の場合にどっちが返ってくるんだ ?
まあ普通に考えて、2000: 2999 が返ってくると思うが、そうするとちょっとまずいね。

Partition([値段], 1, 3000, 1000) に変更して、ポイントテーブルを

 売上額  ポイント
  1: 1000  10
1001: 2000 20
2001: 3000 30

とすればいいと思う。(ちゃんとテストしてね。)

>>87
> しかし、0〜1000みたいな場合、0:1000と書くのですか

それは、Partition 関数の仕様。
心配しなくても、俺を含めて知らん人も多いよ。
89新人:04/02/08 22:50
ACCESSについて教えてください。
今、暫定的にACCESS2000を使って顧客管理をやりはじめました。
ACCESSはこの仕事ではじめて使い始めました。

最初は顧客のデータテーブルしか無かったのですが、やっと購買履歴データも
とれるようになり、別テーブルで追加して繋いで分析・抽出するようにしました。

でも蓄積した顧客データが現在12フィールド程で約90万件(レコード)で
購買履歴データが3ヶ月で日付、顧客番号、購買金額などのフィールドで120万件
ぐらいになっています。

顧客データは、今後は増えても月に2万件ぐらいですが、購買履歴データの方は、
どんどん増えていきます。
SQLサーバーとか立てずに(やり方もわかりませんし)、ACCESSだけで
このまま、どの辺まで(何万件ぐらいまで)問題なく操作できる(動作する)
んでしょう?
早めに別の方法に移行した方が良いのでしょうか?
よろしくお願いします。
>>89
何台で使ってんのかな。
1台ならとうぶん大丈夫な気もするけど。
顧客データ増加が月2万件、履歴データ増加が3か月で120万件
ってのは、1台でこなせる量なのか?
何台かでバラバラにデータ集めて、それを一日の終わりに1台にまとめてる、とか?

そういうことじゃなく、1個のデータファイルをLAN越しに複数台で寄ってたかって
突っつき回しているんだとしたら、アヴォンヌの時が刻一刻と迫っていると思う

つか、複数台同時使用でそこまでいけるんだとしたら、これは他のAccessユーザーに
とって大いなる安心材料になっちまうんじゃないかと・・・
>>89
正直、早めにSQLServerに移したほうがいいぞ。
Accessの制限はレコード数ではなく、ファイルサイズだ。
確か2GBが限界だったような。
このペースでいくと、いずれ限界値に行き着くのは時間の問題。

MSDEも2GBの制限かけられているので、SQLServerの製品版を購入すべし。
92新人:04/02/09 06:54
>90 >91 さん

さっそくのアドバイスありがとうございます。
LANで3台で見られるようにしていますが、基本的に更新等は私の一台です。

暫定的ということで最初はこんなに大量になるまでやると思って
いなかったのでExcelでやろうかとも言ってましたが、ほんとに
やらなくて良かったです。

テーブルの最適化というのをやりながら今、ファイルサイズが
450megabyteぐらいです。パンチ入力会社からもACCESSのテーブルで
データをもらって追加クエリでくっつけてます。
検索や抽出はまだまだ速く動作しますが、バックアップのコピー
には10分ぐらいかかるでしょうか。
でも2GBならしばらくは大丈夫のようですね。
そのうちにASPの業者に委託しますので、SQLサーバーを入れなくても
(それだとまたあわてていろいろ勉強しなきゃいけませんし)
なんとかそれまではもちそうです。
ちょっとホッとしました。
9375:04/02/09 23:05
>>77,85
回答有難うございます。
素直に「インポート中、画像、リンク、Access」 などをキーにGoogleで調べたら
レジストリ操作で非表示に出来ることを知りました。
知ってる人は知ってるものだと、、、凄いですね。

ttp://www8.pekori.to/~zoma/cgi-ssi/meeting/artview.cgi?id=ac&num=4580&ope=v&page=1&asc=1
あんた偉いなぁ。

自分で答え見つけたことじゃなくて (それもそうなんだが)、その答えをちゃんと書くところが。
95名無しさん@そうだ選挙にいこう:04/02/10 00:20
>>92
LAN共有のmdbで450MB!!? 正気の沙汰じゃねぇ・・・。
オープンだけでどれくらいかかることやら。
それでまともに動くということはよほどLAN環境とPC性能がいいんだな。
96名無しさん@そうだ選挙にいこう:04/02/10 00:43
ADOのレコードセットは連結フォームのデータソースに出来ないよね?
非連結フォームでレコードセット読み込むしかないの?
普通に出来るだろ。
フォーム開くときに
set me.recordset = レコードセットオブジェクト
で連結されんじゃね?やったことないけど。
9896:04/02/10 00:55
>>97
ありがトン
わざわざパススルークエリで連結しなきゃダメだと思ってたよ
明日やってみます
99新人:04/02/10 07:52
>95

>LAN共有のmdbで450MB!!? 正気の沙汰じゃねぇ・・・。
えっ・・そうなんですか?案外素人の強みで平気で無茶しているのかも
知れませんね。
でも一番低いスペックのパソコンはCeleron600のメモリ128メガで、
それなりにすぐに開きますし、検索ぐらいはスムーズです。
社内LANの環境はどうなんでしょう、いいのか悪いのか。システム部が
組んでいるので、私は良くわかりません。
【 目 的  】 クエリーをCSV形式ファイルにエクスポート
【 条 件  】 ACCESS2000
【 概 要  】 小数点第3位で落としたいのですが、第2位で切り捨てされる
(データ型は倍精度浮動小数点型)
ファイル形式は区切り記号つきで 開始位置、幅等には間違いはなし

x
ACCESSのリンクテーブルってSELECTしただけで全てのレコードをフェッチしちゃうの?
使ったことないんで教えてもらえますか?
>>100
Format関数を使い小数点第3位まで文字列に変換する
クエリーをかまして、それをエクスポートするとか?

>>101
しないよ >SELECTだけで全レコードフェッチ
リンクテーブルでなくてもしない。
>>99
>>95 は単なるアフォだから、放置しとけ。

ただ、そのぐらいになると >>90-91の言うように結構限界に来ているからあまりお勧めはできない。
MS が 2GB まで動くと言ってもどこまでテストされているかはちょっと怪しいからなぁ。
104新人:04/02/11 00:03
>>103
言いたいことが>>95とどうちがうのですか?
>103はド素人だから放置しる
106新人:04/02/11 00:40
>>104

すみません。最初の質問者の私と同じ名前でレスに書込みされると
ちょっと紛らわしいです。ありふれた名前で質問したのがまずかった
のかも知れませんが・・・。
というより他の質問者を見る限りでは、名前は何も入れない方が
良かったのかな。
107名無しさん@そうだ選挙にいこう:04/02/11 00:45
俺はケツの穴で缶切りができる
>>99
うちも似たような環境で使ってるよ!
と言っても、6年間貯めた売上明細データが約200万件で600MB位だから、
3ヶ月で120万件とは凄まじいですな!
これまでの所、特に問題無く検索の反応も全然悪くないっす。
数十万件程度の集計でも、それなりにサクサク動いてる。
うちの場合、売上の他に仕入・入金・支払・在庫なんかもあるので、
データは全て1テーブルを1ファイルにして管理しています。
まぁ、1GB〜1.5GBになったらファイルを分割すれば、それで良いんじゃないかな?
ユニオンクエリ使えば、データの結合も出来るし・・・

個人的には、適切なインデックス付けと最適なクエリを作成する能力の有無が
明暗を分けるのではないかと推測しています。
拙い経験ですが、JET-SQLでは、
複雑な単一クエリよりも、単純なクエリをネストさせた方が高速であるとか、
場合によっては、ネスト中の中間データを一時テーブルに吐き出すとか、
色々工夫が必要であると感じます。
109名無しさん@そうだ選挙にいこう:04/02/11 03:52
悪かったな
うちの売上データは3年間でたったの10万件だ
マスターもひっくるめてデータサイズは20MBだ
自前ロックつけて4台で輪姦しているが、退屈なぐらい何事もおこらん
この調子だと24世紀までもってしまう

ところで
>>「新人」氏の扱ってるデータって、もしかしてS関係?
す○ー○2○、とか?

あ、いや、無関係なら放置してくれ
110名無しさん@そうだ選挙にいこう:04/02/11 09:41
>>108

ちょっと恥ずかしいけど、件数違ってました。
顧客件数は90万件だけど、Transaction件数は2ヶ月とちょっとで
40万件でした。すみません。(それから新人だけど新人はやめました)
ところで
>データは全て1テーブルを1ファイルにして管理しています。
>まぁ、1GB〜1.5GBになったらファイルを分割すれば、それで良いんじゃないかな?
ファイル分けたら横断的な検索・分析等は出来ないですよね?
ほんとは売上データを半年毎ぐらいに分けられれば嬉しいのですが、
過去一年以内にいくら以上買ってくれた方とか抽出する場合は面倒になりますね。
111名無しさん@そうだ選挙にいこう:04/02/11 09:45
>>108 >>109
ようするにですね、ファイルサイズそのものが問題ではないのだよ。
mdbファイルが大きくてもスタンドアロンで使うのならJETでもさして問題ではない。
2GBという制限は気になるけどね。

一番問題なのは >>90 >>95 が指摘しているようにLan上Mdbをシェアしている場合。
JETはクライアントサイトで動作するDBエンジンだから、データ量が大きくなるとLanへの負荷が厳しくなる。

簡単な例でいうと、、、、、
10万件のデータテーブルから100件のデータを抽出する場合、JETはLan上のMdbから10万件のデータを全部クライアントPCにコピーをし、コピーされた10万件のデータをクライアント側で100件に抽出をかける。
その作業を複数の人数で同時に行ったらどうなると思う?Lan上にものすごい量のデータが流れるわな。

一方SQLServerはサーバーサイトで動作するので、サーバーマシンで10万件のデータを100件に抽出し、抽出した100件のデータだけをクライアントに転送する。
どっちがLanに対して負担がかからないかわかるよね?

上記のような環境でJetで使っていたら、速度はもとよりDB破損なんて日常的に起きてしまう。
>>90 >>95 が指摘しているのこういうことだ。
112名無しさん@そうだ選挙にいこう:04/02/11 11:18

【.  目 的  】 クエリの実行
【.  条 件  】 Windows98、ACCESS2000

【. 概  要  】共有はしていないに、クエリを実行すると”マシンAのユーザーAdminがデータベースを開けない状態またはロックできない状態にしています”というエラーメッセジが出る。ちなみにマシンAというのは、そのクエリを実行しているマシン

■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 ACCESS2000 クエリ Adminがデータベースを開けない状態 


開発時にはWindows2000+Access2000で行っていました。
ただの選択クエリなのですが、中身のテーブルの数が12個あります。
Windows98マシン上のACCESS2000にで実行したら上記のエラーが発現しました。
テーブルを一つ一つ削って実行していったら、実行できました。
とはいえ、仕事上全てのテーブルが必要なので、削るわけにもいきません。
他のクエリで,15個ぐらいテーブルを使って実行できているものもあるので、クエリのテーブル制限とも考えづらいです。

ちなみに、
Windows2000+ACCESS2000ではもちろん問題なく表示されます。

何が原因からサッパリわかりません。
情報お持ちの方、よろしくお願い致します。
>>95
> オープンだけでどれくらいかかることやら。
>>111
> 10万件のデータを全部クライアントPCにコピーをし

ヴァカですか ?
さすがの Jet もそこまでアフォじゃない。
まあ、インデックスも張っていないフィールドに対して検索するとかするとそうなってしまうことはあるが、きちんと作ればそれなりに動作はする。

ただ、そこまで Jet を酷使している奴が少ないし、そもそも MS も Jet で高負荷となることは推奨していない。
(参考 → http://support.microsoft.com/default.aspx?scid=kb;ja;300216&Product=accJPN#10)

>>104
>>95>>103 の言いたい事はぜんぜん違う。
>>95 は、多分 >>111 と同じ勘違いしていて、性能が悪いと思っている。
(事実、SQL の書き方によってそうなることもあるが。)
一方、>>103 は、性能じゃなくて信頼性のことを言っている。(多分 >>90 も。)
>113 詳しそうなので横からすみません。
111ではないが、自分も同じような勘違いしていたので、ちょっと興味があるので詳細求む。
インデックス検索をすれば、インデックス列だけをクライントに取り込んで検索かけてくれるくるってことですか?
あと、SQL SERVERとのODBCリンクテーブルだと間にJETが入ってくるけど、この場合はどういう動作になるの?
>>114
もちろん詳細は、MS しか知らんから推測の部分が入るが、インデックスをつけておくと全部のレコードを調べたりはしない。

あんたが辞書引く時に、全ページ見たりしないでしょ ?
英単語なら、abc 順に並んでいるから、例えば Jet って単語引く時は適当に開いて、indifferent ならもうちょっと後ろだな、今度は like か、もうちょい前とかやると思う。
また、目次ある奴ならまず目次を見てそのページに直接飛ぶ。(と言っても人間なら、ページを見て行きつ戻りつだけど、計算機ならホントに直接飛べる。)
詳細は、Hash, B-Tree なんかを調べるといい。

> あと、SQL SERVERとのODBCリンクテーブルだと間にJETが入ってくるけど、この場合はどういう動作になるの?

この場合は、Jet は単に中継してるだけだと思うよ。
(でないと、SQL-Server の意味ないし...。)
MSDEやSQLServerではなくJETを採用するメリットは何ですか?
>>116
MS (http://www.asia.microsoft.com/japan/msdn/library/ja/jpdnmsde/htm/msdeforvs.asp) によると...

規模の拡大やユーザー数の増大を考慮する必要がないデスクトップ システムでは、既存の Jet ソリューションとの下位互換性に最も優れた Jet データベースが低コストかつ低オーバーヘッドのソリューションを提供します。

と言うことらしい。

端的に言うと、扱いが簡単で軽いのがメリットだと思う。
118名無しさん@そうだ選挙にいこう:04/02/11 22:04
Jetは重い
119素人:04/02/11 22:13
どうしても分かりません。教えてください。
OFFICE2000に入っているACCESSを使用しております。
質問:
SQLビューへSQL文を記述して「住所」というフィールドに登録されている住所のlenとlenbを求めたいと思います。
lenを使用すれば、全角半角問わず1文字=1計算ですよね?
lenbを使用すれば、全角=2計算、半角=1計算で結果を返してくれると思ったのですが駄目でした。
SQLビューではStrConvも使えないみたいですし・・・どなたか良い方法をご存知ないでしょうか?
>>119
ヘルプで『文字列操作関数の動作の違い』を検索汁!
121名無しさん@そうだ選挙にいこう:04/02/11 23:46
>>119
おい、俺はケツの穴でジャンケンができるが
俺と勝負するか
>>116
アフォなクライアントやユーザーをまるめこみやすいから(MS謹製だから)
ふっかけやすい。
高尚なことをやっているかのように見えやすい。
ただのオフィススイートの一員なのに一品物にみえやすい
「開発」したかのように見せやすい。
ようは利ざやの大きい仕事がしやすいから。
123108:04/02/12 01:09
>>110
>2ヶ月とちょっとで40万件
それだと、購買履歴データだけだったら1年分は保持出来そうだね!
>ファイル分けたら横断的な検索・分析等は出来ないですよね?
だから、それをやるためにユニオンクエリを使うんですよ!
でも、今の所そこまで実際やってないので、処理速度的に実用レベルかどうかは不明です。
また、分割数が変動した際にクエリのメンテも必要になるから、この辺をどう対処するか・・・
まぁ、確かに多少は面倒です。

>>111
ご指摘は、百も承知しています。
要するにどの様な運用を想定しているかなんですよ。
その想定内で充分ACCESSが使えるんなら、コスト的に有利でしょ?
てな訳で、チープなうちの場合は、
・LAN内のトラフィック負荷は、それ程シビアではないが、応答速度は気にする。
・ローカル側でのみDB更新し、他からは参照のみで利用頻度も低めである。(なので、DB破壊も起きない?)
・むやみなDBサイズ拡張を抑えるために、レコードレベル(正確にはページレベル)でのロックを解除。
こんな感じで運用中です。
124名無しさん@そうだ選挙にいこう:04/02/12 07:49
>>108

>だから、それをやるためにユニオンクエリを使うんですよ!
失礼しました。と言うことはユニオンクエリって言うのは、ファイル
とファイルを結べるクエリってことですね。
(すみませんまだ本当に慣れてないので・・)
それだとファイル1つの大きさの限度をそんなに心配しないでも、あとは
パソコンの処理能力時間の心配が先になりますか。
うちの場合は前記しましたようにそれまでには、業者のアプリを導入
しますので問題ないですね。
暫定的なので、もしすぐにでもSQLサーバーを一時的にでも導入しなければ
ならないとなると中途半端に無駄な努力と投資が必要なので質問させて
いただいた次第です。ユニオンクエリを調べてみます。
ありがとうございました。
125名無しさん@そうだ選挙にいこう:04/02/13 00:56
一つだけ言わせて貰おう。
あるmdbAから他のmdbBにリンクテーブルを張って、そのテーブルにはAに存在する
クエリで使用する全カラムに対して複合インデックスが張ってあったとしても、
そのクエリを実行すると、Bの全データがローカルに転送されるよ。
パケットをモニタリングして見れ。
JETのバカさ加減をなめちゃいかんよ♪
126名無しさん@そうだ選挙にいこう:04/02/13 01:12
さすがに全カラムにインデックスが設定してあればOKらしいな。
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0001/db_solu/

実際には難しいだろうけど。
127名無しさん@そうだ選挙にいこう:04/02/13 01:14
いや、やはりインデックスはデータ転送量に対して効果が無いという調査結果もある。
http://www.users.gr.jp/ml/archive/viewer.aspx?name=access&no=3604
>>119
ここはまあ、野暮ったく関数でもつくって

Function NagasaB(MojiRetsu As Variant) As Long
If IsNull(MojiRetsu) Then
NagasaB = 0
Exit Function
End If
NagasaB = LenB(StrConv(MojiRetsu, vbFromUnicode))
End Function

まずはこれをモジュールに貼り付けて保存しとけや
んでもって、クエリ中で、NagasaB([住所])とやればOK

いちおうLong型にしといたけど、さほど長い文字列でないことが
分かり切ってるなら、Integer でも Byte でも
129名無しさん@そうだ選挙にいこう:04/02/13 01:20
where句だけでなく、select句まで含めて、クエリで使用する
すべてのカラムが単一のインデックスに設定されている場合に
限り一部だけ転送されるということなのかな。
少なくとも、where句で使用しているカラムをインデックスに
含めていたとしても、select句にインデックスが設定されて
いないカラムが1つでもあるとテーブルまるごと転送されるらしい。
where条件適合するデータのみをピンポイントに転送という芸当
はしないんだな。
130名無しさん@そうだ選挙にいこう:04/02/13 02:58
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
ここいらで話題を替えてみなさんのケツ毛の思い出を聞かせてください
131名無しさん@そうだ選挙にいこう:04/02/13 18:36
今のパソコンの環境にプリンタが付いていません。
その中で、レポートを作成したいと思っています。
プリンタがないと無理でしょうか?
学校で作成したACCESSを家でやりたいので。
どなたかお願いします。仮想的のプリンタがあればいいんですが
winなら最初からプリンタドライバがいくつかついてるから
何でもいいからプリンタの追加してみれ。
実際にプリンタを接続しなくても作成できる。

133名無しさん@そうだ選挙にいこう:04/02/14 03:31
ケツの穴にワセリン塗ったら気持ちよかったが
ケツ毛が抜けた
>>127
Address フィールドにインデックス張って、
> WHERE (((InStr([Address],"山田"))>0));
なんてして「インデックスの効果が無い」って...、ヴァカですか ?
>>131

ttp://www.nsd.co.jp/share/fineprint/siyourei.html
ソフト開発の現場では、紙をたくさん使います。そんなときはFinePrintを
お使いください。
開発アプリの印刷機能をテストするには従来は実際にプリンターへ出力する
しかなく、紙を大量に使用するものでした。FinePrintなら画面上で出力結果を
確認できるので紙を使わず、しかもスピーディに印刷のデバッグができます。

--

シェアウェアだけど使用期限は無限だし、マジお勧め。
>>135
宣伝 ?

最近のソフトでプレビューができない奴なんてあんまないし、オフィスで使ってる LBP なら縮小印刷/割付なんて当たり前だし...。

俺的には、イラネ。
どちらかといえば、PDF出力の実装希望のほうが多いな、最近は。
138名無しさん@そうだ選挙にいこう:04/02/15 01:02
アクセスで自力で業務アプリつくってきていたんだけど
実力は下の下です。

で、伺いたいのですがMicroSoft journal形式のコントロールって
できませんかね
139名無しさん@そうだ選挙にいこう:04/02/15 01:03
フォームに貼り付けてコメントとか書きたいので。。。


アクセスバージョンは2000、2003です。
140名無しさん@そうだ選挙にいこう:04/02/15 05:14
2000から2003にアップグレードしたけど、ノースウィンズというテンプレートのような従来あったのが
消えちゃったんですけど、どこ行っちゃったの????


ノースウィンズ(・∀・)ソレイイ!
若手アイドルみたいだな
143名無しさん@そうだ選挙にいこう:04/02/15 08:47
前から思っていたことなんだけど、
Accessのウィンドウってって MDI よりも
独立した複数のウィンドウになってるほうが
使いやすいと思いません?

てか、その切り替えができるほうが便利だと思う。
os windows2000 access2000を使っています。
データの入ったテーブルからクエリで任意のデータを表示して
エクセル(計算式の入ったシート)にコピペして計算をさせ
計算結果をアクセスの集計用テーブルにコピぺするという作業を毎日50回繰り返しています。
VBAなどを使えば自動化できるようなのですが、どのような方法が簡単でスマートでしょうか?
>>144
ACCESSだけでは計算できないの?
146名無しさん@そうだ選挙にいこう:04/02/15 17:53
>>144

うまい方法がスマートだと思います
148名無しさん@そうだ選挙にいこう:04/02/16 03:52
基本的なことをお尋ねしますが
ACCESSって何ですか??
approach〈動〉接近する
access〈名〉接近
150名無しさん@そうだ選挙にいこう:04/02/16 15:04
>>148
144に聞いて下さい。
Access2000なんですが、クエリを開いてからピボットテーブルを作成しようとしても、ビューの切り替えのところにピボットのビューが出てきません。
これってなんなんでしょうか?
152名無しさん@そうだ選挙にいこう:04/02/16 18:22
>>151
148に聞いて下さい。

>>151
単純にクエリが壊れているんでは?
それかAccess本体が。

クエリ上でピボットを作成するのって特に条件無いと思う。
Exelと一緒だよ。
>>151
Access2000の仕様。
初歩的なことで申し訳ありませんが、3つ以上のテーブルをユニオンクエリで連結させるにはどのようにしたら良いのでしょうか?
2つまでなら
SELECT * FROM テーブルA
UNION ALL
SELECT * FROM テーブルB
で簡単にできたのですが・・・・

あとテーブルが10個近くあるのですよ・・・・・
よろしくお願いいたします。
>>155
そのまま続ければ、良さそうだとは思わないか?
UNION ALL
SELECT * FROM テーブルC
UNION ALL
SELECT * FROM テーブルC
    ・
    ・

ところでテーブルAからテーブルxまでフィールドは同じなんだろうな。
>>156
ああ、そこでまたUNION ALLのと書くのですが・・・
それすらも知らないヘタレなんで、、、
FROM句やSELECT構文調べようとしてもヘルプ壊れているし(泣き)

SELECT * FROM テーブルA
UNION ALL
SELECT * FROM テーブルB
UNION ALL
SELECT * FROM テーブルC
UNION ALL
SELECT * FROM テーブルD

このように書いていけばよいのですね、助かりました

※もちろんフィールドの内容、数もすべて一緒です。
店舗ごとの売上なんですよ。
158151:04/02/17 22:30
>>154
すいません、それってAccessではピボットテーブルは使えないってことですか?
ツールバーにピボットのボタン登録したんですが、使用不可になっているし・・・
>>158
Access2000でピボット系ならクエリでのクロス集計かフォームのピボットフォーム。
必要充分な集計クエリ作って、Excelに出したほうがいいよ。たぶん。
>>157
正解
漏れとかだって初めはそうだったんだからがんがれ
それだと、テーブルA、B、Cが縦に連結されまつ
もちろん、テーブルA、B、Cの各フィールドが同じ場合の話だけど
>>157
よけいなお世話かもしれないが、
同一レコードが存在しうる場合は、以下のようにした方が良い。

SELECT *,1 FROM テーブルA
UNION ALL
SELECT *,2 FROM テーブルB
UNION ALL
SELECT *,3 FROM テーブルC
UNION ALL
SELECT *,4 FROM テーブルD
>>161
*,1や*,2ってどういう意味なんでしょうか?横やり失礼・・・
>>162
意味はないよ。
ただ、テーブルA〜Dを区別するためのもの。

テーブルA
 1,#2004/2/16#,\3000
 2,#2004/2/17#,\2500
テーブルB
 1,#2004/2/16#,\3000
 2,#2004/2/17#,\2800
をUNIONすると、

 1,#2004/2/16#,\3000
 2,#2004/2/17#,\2500
 2,#2004/2/17#,\2800
になるのを防ぐ。
>>163
それはUNION指定だからでは?
UNION ALLにすれば全てのレコードが連結されるんだと思ったが。
ヘルプのUNION操作参照。
>>164
多分、全部出てもレコードの元がどこからきたか知りたい理由があるんだと思われ
(部門毎に分かれた売上テーブルをユニオンで連結して全社資料作りたいとか)
166名無しさん@そうだ選挙にいこう:04/02/19 11:07
クエリで抽出したデータをCSVに出力したいんですが、どうしたらよいでしょうか?
access2000です
167名無しさん@そうだ選挙にいこう:04/02/19 11:09
IIF関数に関して質問なんですが、クエリで

  日付      担当者
2003/2/24     佐藤
2003/7/10     山下
2003/8/26     吉田

という状態で、日付の左に[年度]というフィールドを追加しようと思っています。
そして、その[年度]にはデータを直接入力するのではなく、

IIF [年度]>=2003/4/1、”2003年度”、”2004年度”

設定したんですが、全然うまくいきません。
今までAccessで関数を使ったことが無いので分かる方いたら教えてください。
低レベルな質問で恥ずかしいのですがよろしくお願いします。
169名無しさん@そうだ選挙にいこう:04/02/19 23:28
Access2002を使っています。
フォームのレコードソースを設定してテーブルに直接連結しています。
良くあるパターンだと思うのですがレコードに変更時に
編集した時刻を記録するために更新年月日という列にNowを入れたいのですが
どうすればいいのかわかりません。
現時点ではすべての連結されたコントロールのChangeイベントに
更新年月日=Now という風に書くことしか思いつきません。
何か良い方法ありませんか?
よろしくお願いします。
>>168
年度: iif(format([日付],"m")>=4,format([日付],"yyyy"),format([日付],"yyyy")-1)&"年度"

>>169
更新年月日の、既定値=Now()
でいいんじゃないの。フォーム側でもテーブル側でも。
171169:04/02/19 23:48
>>170
おお、と思ったのですが、
それって更新年月日というよりも登録年月日といった感じで
新規レコードが追加された時の時間を保持するだけじゃないですか?
私がしたいのは既存のレコードが編集された時に
その編集が確定された時の時刻を持たせたいのです(泣
>>171ああ、ゴメン
だったら更新後イベントで(after update)
173169:04/02/19 23:57
>>172
ありがとうございます。
やっぱりAfter Updateでしたか。
以前実験した時は変更していないのに
AfterUpdateイベントが呼び出されていたので
使えない、と思ってしまいました。
今検証したら期待通りの動作を確認しました。
以前実験した環境ではいろいろコードが既に書かれてある状態だったので
単純に連結していただけではなく、何かしら勝手に
レコードを書き換えるようなことが書かれていたので
毎回AfterUpdateが発生したのでしょうね、と予想しています。
納得できました。
ありがとうございました〜。
174168:04/02/20 00:13
>>170
ありがとうございます、結構色々書かなければならなかったのですね・・・
ちなみに、[年度]は([日付]の書きミスでした。
遅レスだけど、
IIF [年度]>=2003/4/1、”2003年度”、”2004年度”
がうまくいかなかったのは、
「2003/4/1」=「2003÷4÷1」= 500.75 が原因と思われ。
176名無しさん@そうだ選挙にいこう:04/02/20 12:01
OSはWin2000 ACCESSも2000を使ってのことです。
レポートの作成で、1ページにはタイトルとページ数は表示されるんですが、
なぜか2ページ以降は表示されません。
原因としてはどのようなものがあるのかを教えていただけたらうれしいです。
>>176
レポートヘッダー・ページヘッダーの違いを勉強しる。
178名無しさん@そうだ選挙にいこう:04/02/20 12:11
銀行テーブルと支店テーブルがあったとしまして
クエリで表示結果を
銀行コード 支店コード
1006    011
1006    001
1006    002
の順で表示したいんですが、どうも上手くいきません。
お願いします。ペコリ
OS:Windows98 Access:2000
179名無しさん@そうだ選挙にいこう:04/02/20 13:03
180名無しさん@そうだ選挙にいこう:04/02/20 13:03
>>178
支店コードの2桁目と3桁目をそれぞれ抽出して、降順・昇順にする。
select 〜 from 〜 order by mid([支店コード],2,1) desc , mid([支店コード],3,1)
店舗名、商品名などを複数のテキストボックスに入力して
コマンドボタンを押した時にテーブルから検索して表示したいのですが
どのようにすればいいのでしょうか?

OS:Windows2000 Access:2000 です

よろしくお願いします
>>182
やり方、何十通りもありそう。
つか、その「検索」って、たったひとつの「完全に一致する」
結果を引っ張ってくるわけじゃないでしょ。
どっちかっつう「絞り込み」でしょ。
たとえば商品名の頭の一文字だけでも入力すれば、それを含むものは
すべて引っ張ってくる、みたいな。

たとえば・・・
商品テーブル直結の帳票型フォームをつくる
ヘッダかフッタに検索文字入力用のテキストボックスを2つ。
でもって、コマンドボタンの裏側に↓をコピペ
DoCmd.ApplyFilter "", "([商品テーブル]![店舗名] Like Forms![検索フォーム]![店舗名入力テキストボックス] & ""*"" And [商品テーブル]![商品名] Like Forms![検索フォーム]![商品名入力テキストボックス] & ""*"")"

もう一つたとえば
間にクエリかまして、抽出条件をフォーム上のテキストボックスにする、
なんてやり方もありそう。
コマンドボタンのプロシージャは、
Requery

どっちも実際に試したわけじゃないんで、ダメだったらごめん。
184名無しさん@そうだ選挙にいこう:04/02/21 02:16
ユンソナとBoaは同一人物なんでしょうか??
同一穴狢
186名無しさん@そうだ選挙にいこう:04/02/21 12:23
>>178
そんな順番じゃ関数かまさないとソートできない。
そして関数かますとクエリに最適化機構が働かない。
それに、支店順に並ばせる箇所は多いだろう。
よって、銀行コード・支店コード・支店名とかいうように
なっているだろうと思われる支店マスターに、支店表示順
というバイト型のカラムを追加することをお勧めする。
>>178
銀行コード=1006 支店コード=021はどこにはいるの?
188168:04/02/21 16:18
>>170
ありがとうございます。
先々のことも考え、>>168の式を参考に、

年度: iif(format([日付],"yymm")>=0304,format([日付],"2003"),iif(format([日付],"yymm")>=0404,format([日付],"2004"),format([日付],"2002"))&"年度"

にしました。ありがとうございました。
189168:04/02/21 16:20
あ、間違い。

年度: iif(format([日付],"yymm")>=0304,"2003",iif(format([日付],"yymm")>=0404,"2004","2002"))&"年度"

だったかな?
190182:04/02/21 19:58
>>183
無事に出来ました!
ありがとうございます。
>>189
> 年度: iif(format([日付],"yymm")>=0304
                 ^^^    ^^^^
こうやって、y2k 問題って作られるわけだな...。
まあ、>>189 はそれ以前なわけだが...。
取りあえず好い人ぶってフォロー
ざっと見たところ、IIf文の書き方についてはどうにか理解してくれたみたいだし、時が来れば、
式の間違い(というか不備)に気づくでしょ
「年度」なんてくっつけるのは、たぶん単なる閲覧やプリントアウトした場合の見やすさのためだけで、
それが間違っていたからといって業務に重大な支障をきたすとも思えない。






なんて本気で思ってるわけないんで
>>191
釣られちゃダメ

>>189はたぶん質問者本人じゃない。
「先々のことも考え。。。」なんて、もうネタ臭さ100%
確かに、先々のことを考え、ってまったく意味不明だね。
そのIIFでも別に1900年代のデータが無ければ特にもんだいはないと思うけど
なんか重大な勘違いしている?俺
そもそも最初になりやりたいかよく分かっていなかったり
と思ったけど、なんか変だな
年度: 年度: iif(format([日付],"yymm")>=0404,"2004",iif(format([日付],"yymm")>=0304,"2003","2002"))&"年度"

こうやって大きい順にしないとおかしくないかい?
1年終わったら、iif(format([日付],"yymm")>=0504,"2005"
と順次追加していくのが吉
196191:04/02/22 17:29
>>194-195
て言うか、なんで >>170 を無視するのかがわからん。

> 1年終わったら、iif(format([日付],"yymm")>=0504,"2005" と順次追加していくのが吉

そんなに自分の仕事がなくなるのが怖いのか ?
>170だと、2002/〜や2004/〜のレコードに対応できないからだろ?
はあ・・・?
>>197
>170 で実用上は何ら問題ないよ!
でも、厳密にデータ型を考慮すると、、、

年度: Str(Year([日付])-IIf(Month([日付])>=4,0,1)) & "年度"
すでに出来上がってしまったmdbファイルで、たとえば自作関数の一部を別な関数に
差し替えたいとかいう場合、しらみつぶしに探すしかないんでしょうか。

すべてのクエリ、フォーム、モジュールから、ある特定の文字列を検索してくれるツール、
なんてものがあるといいんですけど。

いや、ないならいいです。
地道にオブジェクト一つ一つ当たります。
コード部分はカレントモジュールからの検索でいけるとして、クエリやフォーム上の
テキストボックスは・・・つらいなあ。
201名無しさん@そうだ選挙にいこう:04/02/23 13:31
教えて下さい。 Access2002です。
クエリーの抽出条件で件数の制限がありますか。
あれば何件まで指定出来ますか。 よろしくお願いします。
202名無しさん@そうだ選挙にいこう:04/02/23 22:13
>200
モジュール内であれば、ごく普通に文字列検索できるから大丈夫だと思うが。

フォーム、クエリーだとAccessAnalyzerと言うツールでCSVやテキストに
吐き出して検索すると言う手がある。ただし、Accessのverによっては
使えないかもしれない。
203202:04/02/23 22:21
AccessAnalyzerで検索すると全く違うものがヒットするなー

「Access2000 Access Analyzer」でぐぐると出てくると思う。
ちなみにAccess2000と97しか対応してないと思う。
>>201
そんな5分もあればできることぐらい、自分でやってみなよ。
>>201
クエリプロパティでトップ値を指定する!
>>200
自作した関数ならあるけど使う?
今はちょっと手元に無いんだけど・・・
207200:04/02/24 00:58
>>202
Access Analyzer2000
(・∀・)タスカッタ!
ありがd
208名無しさん@そうだ選挙にいこう:04/02/24 15:21
クエリを元にしたグラフを、連続印刷しようとしています。
やり方は、まず、フォームにグラフとコンボボックスを貼り付けます。それで、
フォームのレコードソースをコンボボックスのコントロールソースにして、
コンボボックスの値で、クエリを使って絞り込みます。

これで印刷すると、連続印刷できるのですが、クエリの実行に時間がかかる
せいか、コンボボックスの値とグラフの結果に同期が取れていません(取れる
場合もある)。

レコード移動時のイベントで、再クエリするなどしてみたのですが、どうし
ても同期が取れません。

クエリが終わるまで待つとか、VBAでレコードごとに印刷するとか出来ない
でしょうか?
OS:Windows2000 Access:2000 です。
209名無しさん@そうだ選挙にいこう:04/02/24 15:25
>>208
補足です
手動でレコードを移動した場合は、一瞬、砂時計が表示された後、正しい
グラフが表示されます。
211200:04/02/24 23:23
関数って。。。本当に関数
>>206=210氏、かな
あ、いや、今ひとつ意味が分からなかったんで、たぶんレス先間違えた
んだろうと適当に読み流したんですけど。
ちょっとビックリ。
作業はすでに済んでるけど、面白そうなんで試してみます。

この書き方ってDAOの参照設定が必要なのかな。
(Ac2000から使い始めた素人なんで、そのまま使えるADOの書き方にすっかり
慣れちゃってます)
212200:04/02/25 00:11
やっぱりDAOでなきゃダメだった(;´Д`)
querydefs と入れてドット打っても全然反応してくれない。
参照設定やり直して、あらためて書き直し。
ただ Debug.Print ってのは、以前から僕にとっては謎のコトバ
何をしてくれる呪文なのかさっぱり分からない。
適当なフォームつくってコマンドボタンつけて、イベントプロシージャに
SearchQDstr ("ID")とか書いてみたけど、やっぱり何が起こったのかよく分からない。
とにかくクエリの名前さえ取れれば、あとはどうにでもなると思い
MsgBox db.QueryDefs(i).Name
と書き直して実行。
予想したとおりの結果がかえってきました。
213206:04/02/25 01:07
>>211-212
210 は漏れじゃないよ!
漏れのはもうちょこっと使えるやつ。
でも、要らんようだったから、今日も準備できてない・・・

Debug.Print の結果は、Visual Basic Editor のイミディエイトウィンドウに表示される!
また、イミディエイトウィンドウ内でステートメント、メソッド、プロシージャの呼び出しを入力して、
Enter キーを押すと実行が可能です。
DAO使ったことがないなら、
DAOの宣言が必要なんじゃないかな。
参照にDAO入れることは前提だけど。

Public dbsObj As DAO.Database
Public tblObj As TableDef
Public rstObj As DAO.Recordset
みたいに

私は97からだからどっぷりDAO…
ADO覚えなくちゃいけないの分かってるんだけど
自分しか使わないツールを自分のために作ってるだけだし、
今までの蓄積(モジュールの使い回し)の関係で脱DAOできないヘタレだ
215214:04/02/25 09:12
↑該当モジュールだけの宣言なら
Public dbsObj As DAO.Databaseじゃなくて
どのモジュール内で
dim dbsObj As DAO.Database
ですな…訂正します
216214:04/02/25 09:14
>213 206さん
見つかったら教えて欲しいです。
勉強になりますから…お願いします。
217200:04/02/25 14:57
>>DAO
Dim db As Database
だけでOKでした

>>イミディエイトウィンドウ
ってのは、そういうものだったのカ。。。
何か作業中に間違ってどっかのKey押したときに出てきて
あせったことが何回かあるんですけど、見なかったことにして
さっさと閉じてました。
(書いたプロシージャがちゃんと動いてくれるかどうかの確認は
MsgBox 使うことが多かった)
218名無しさん@そうだ選挙にいこう:04/02/25 16:00
access2000なのですが、パラメータクエリのパラメータを
VBAで指定する方法を教えて下さい。
指定するパラメータは全部フォームのコントロールにあります。
いままではパラメータに"[Forms]![フォーム名]![コントロール名]"を指定していたのですが、
同じクエリを使いまわす必要が出てきました。
よろしくお願いします。
219名無しさん@そうだ選挙にいこう:04/02/25 18:14
次期Accessっていつでるの?

2000以降買ってないから、2003の次のバージョンは買わない
とついていけないかも(w
>>219
気が早いな・・
221219:04/02/26 00:51
漏れのメインは未だAccess97だしな。
スタンドアロンでつかうにゃこれで間に合うし。

ただ、でかいデータを扱う場合や、大量データの
高速演算処理する場合に限界を感じてるんでなぁ・・・・
>>218
素人が提示する、たぶん非難囂々の邪道な解決法
何があろうと常に開いているフォーム、ってのがひとつでもあれば使えます。
そのフォームの名前を、たとえば MainMenu と。
そこに適当な不可視のテキストボックス、名前をたとえば、Dummy と。
でもって
使いまわすクエリの抽出条件 Forms![MainMenu]![Dummy]
でもって
各フォームで抽出アクションを起こすさいには、まず何よりも先に
Forms![MainMenu]![Dummy] = Me![抽出条件コントロール]

ただこれは、使いまわしクエリが選択クエリの場合しか使えません。

アクションクエリの場合は

Function MyPara()
MyPara = Forms![MainMenu]![Dummy]
End Function

これを標準モジュールに保存したうえ
使いまわすクエリの抽出条件を MyPara() としてください
>>218
HELP MIRO! PARAMETERS
>>218 ADOXで・・(w
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim cat As ADODB.catarog
Set cnn = CurrentProject.Connection


Set cmd = New ADODB.Command
Set cat = New ADOX.Catalog

cat.ActiveConnection = cnn
Set cmd = cat.Procedures("クエリ名").Command

With cmd
.Parameters.Refresh
.Parameters(0) = パラメータ名1
.Parameters(1) = パラメータ名2
.Parameters(2) = パラメータ名3
.Parameters(3) = パラメータ名4
.Execute
End With

Set cat = Nothing
Set cmd = Nothing

cnn.Close
Set cnn = Nothing
レスありがとうございます。
>>224さんの方法で誤植を直したら行けました。
>>222さんの方法は今回は使いませんでしたがアイデアは参考になりました。
また何かありましたらよろしくお願いします。
226224:04/02/26 11:44
>>225
あっ、カタログの宣言のところ間違ってた。他にもあったかな?
ってか、ほんとにこれ使ったんだ・・
227224:04/02/26 13:27
>>226
×Dim cat As ADODB.catarog
○Dim cat As ADOX.catalog
だけです。
あと、ついでと言っては何ですが
実行するのは追加クエリなのですが、確認メッセージが出ません。
SetWarningsは試してみましたが関係ないようですね。
今回は何の不都合も無いのですが出す方法があれば
後学のために教えて下さい。
228225:04/02/26 13:58
>>227
の名前欄間違えてました。私は>>218=>>225です
失礼しました
229224:04/02/26 15:53
>>227
RunSQL とか、Docmd.OpenQuery とか今は使わないのでよくわかんないけど
MsgBoxじゃだめなの?
230218:04/02/26 16:26
>>229
ありがとうございます。
「○○件追加します。よろしいですか?」というのをMsgBoxで
自分で作ればいいんですね。トライしてみます。
231224:04/02/26 17:25
>>218
うーん、VBAは最近使い始めたのかな?
とりあえずクエリ作ってやってるみたいなんでADOXでの処理書いたけど
ほんとはVBAから直接SQL文書いて流した方がいいかも。
チェックボックスを作って、オフの時にはすべてのデータを表示
オンの時には1と入力されてるものを表示するにはどうすればいいのでしょうか?
クエリの抽出条件を教えていただきたいです
>>232
あらかじめフィルターを設定しておいて、OnとOffに
合わせてフィルターのOn/Offを切り替えたら?

>>233
猿でもわかるような説明でお願いしまつ
>>208
今書いてるコードをさらせ。
>>75,93
Win98&Access2000の環境では、
ファイル拡張子が、bmpだと問題なく、BMPだとインポート中・・・
M$よ、小文字と大文字で何で挙動が変わるんだぁ〜!
237名無しさん@そうだ選挙にいこう:04/02/27 15:01
>>208
コードというほどのものでは無いですが、簡単に書くと、こうなります。

T_Data(テーブル)
 ID:オートナンバー
 name:テキスト型
 value1:数値型
 value2:数値型

Q_Graph(クエリ)
 T_Data.Nameのwhere条件に以下の記述をして、value1,value2を抽出
  Like "*" & [Forms]![F_Form]![コンボ0]

F_Form(フォーム)
 レコードソース=SELECT T_Data.name FROM T_Data GROUP BY T_Data.name;
 コンボ0.コントロールソース=name
 グラフ.値集合ソース=Q_Graph
 グラフは、value1,value2を横軸、縦軸に設定

これで印刷すると、グラフの内容とコンボボックスの内容が、ずれて表示
されます。
238名無しさん@そうだ選挙にいこう:04/02/27 15:09
>>237
試し用のデータ。これでやっても、同期が取れてませんでした。

ID,name,value1,value2
1,a,0,13
2,b,2,43
3,c,3,23
4,d,4,44
5,e,3,65
6,a,2,22
7,a,0,22
8,b,1,11
9,a,2,42
10,b,3,24
11,c,4,12
12,d,2,27
239235:04/02/27 17:04
>>237,238
いや、VBAのコードを見たかったんですけど・・
例えば「印刷ボタン」を押した時に印刷するんじゃないのか?
その部分もVBAで書いてるわけじゃないのかな?
240名無しさん@そうだ選挙にいこう:04/02/27 17:18
access2002 を用いて、 c/sデータベースシステムを構築中。
クライアント機としてDell Dimension 2100 を用いている。
(OS Windows ME) 
このクライアントのユーザプログラムであるmdbファイルを、
メンテナンスし続けていると、すぐに「要デフラグ」となる。

どうすればいいのだろうか?
ローカルエリアとしてCドライブしか切っていないことが
大きな原因であろうか。
241218:04/02/27 17:26
>>231
レスありがとうございます。
ADOから直接SQLで出来ました。
初挑戦だったので不明点をまとめてからレスしようと思い遅くなってしまいました。
また何かあったら教えて下さい。
Access2003を使っているのですが
フォルダ名やファイル名を途中で変えたり
Cドライブの外に出しても実行できるようにするためには
どうしたらいいんでしょうか?
243213:04/02/27 23:15
>>216
ちょっくら遅くなりましたが、イキマース!(長いけど・・・

'=============================================
'【MDB & DAO 版】標準モジュール: DebugModules
'=============================================
'【使用例】… Formatを検索する場合、
' イミディエイトウィンドウで次の様に入力し、Enterキーを押して実行する。
' SearchItem "Format"

' デバッグフラグ(0:本番モード,1:デバッグモード)
#Const DEBUG_FLAG = 1

#If DEBUG_FLAG Then

Option Compare Database
Option Explicit

' 各オブジェクトの検索フラグ(0:検索しない,1:検索する)
#Const SEARCH_TABLES = 1
#Const SEARCH_QUERIES = 1
#Const SEARCH_FORMS = 1
#Const SEARCH_REPORTS = 1
#Const SEARCH_MODULES = 1

'-----------------------------------------------------------------------------------
' 全てのテーブル・クエリ・フォーム・レポート・モジュールを指定文字列により検索する。
'-----------------------------------------------------------------------------------
Public Sub SearchItem(strItem As String)
 Dim aObj As AccessObject, ctl As Control
 Dim bClose As Boolean
 bClose = False
244213(つづき:04/02/27 23:17
 #If SEARCH_FORMS Then
  For Each aObj In CurrentProject.AllForms
   If aObj.IsLoaded = True Then
    For Each ctl In Forms(aObj.Name).Controls
     If ctl.ControlType = acSubform Then
      If bClose = False Then
       MsgBox "サブフォームやサブレポートを含むフォームやレポートは、一旦閉じる必要があります!"
      End If
      bClose = True
      DoCmd.Close acForm, aObj.Name, acSavePrompt
      Exit For
     End If
    Next ctl
   End If
  Next aObj
 #End If
 #If SEARCH_REPORTS Then
  For Each aObj In CurrentProject.AllReports
   If aObj.IsLoaded = True Then
    For Each ctl In Reports(aObj.Name).Controls
     If ctl.ControlType = acSubform Then
      If bClose = False Then
       MsgBox "サブフォームやサブレポートを含むフォームやレポートは、一旦閉じる必要があります!"
      End If
      bClose = True
      DoCmd.Close acReport, aObj.Name, acSavePrompt
      Exit For
     End If
    Next ctl
   End If
  Next aObj
 #End If
245213(つづき:04/02/27 23:19
 #If SEARCH_TABLES Then
  Call SearchTables(strItem)
 #End If
 #If SEARCH_QUERIES Then
  Call SearchQueries(strItem)
 #End If
 #If SEARCH_FORMS Then
  Call SearchForms(strItem)
 #End If
 #If SEARCH_REPORTS Then
  Call SearchReports(strItem)
 #End If
 #If SEARCH_MODULES Then
  Call SearchModules(strItem)
 #End If
 Debug.Print "【検索終了】" & vbCr & vbCr & "SearchItem """ & strItem & """"
End Sub
246213(つづき:04/02/27 23:20
'-----------------------------------------------------------
' 全テーブル中の特定プロパティ値を指定文字列により検索する。
'-----------------------------------------------------------
Private Sub SearchTables(strItem As String)
 Dim tdf As TableDef, fld As Field
 Debug.Print "【テーブルの検索】..."
 For Each tdf In CurrentDb.TableDefs
  For Each fld In tdf.Fields
   If fld.Type <> dbGUID Then
    If Nz(InStr(fld.Name, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].Name: " & fld.Name
    End If
    If Nz(InStr(fld.DefaultValue, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].DefaultValue: " & fld.DefaultValue
    End If
    If Nz(InStr(fld.ValidationRule, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].ValidationRule: " & fld.ValidationRule
    End If
   End If
  Next fld
 Next tdf
End Sub
247213(つづき:04/02/27 23:22
'--------------------------------------------
' 全クエリのSQL文を指定文字列により検索する。
'--------------------------------------------
Private Sub SearchQueries(strItem As String)
 Dim qdf As QueryDef, fld As Field
 Debug.Print "【クエリの検索】..."
 For Each qdf In CurrentDb.QueryDefs
  If Nz(InStr(qdf.SQL, strItem)) Then
   Debug.Print "[" & qdf.Name & "].SQL: " & RTrim(Replace(qdf.SQL, vbCrLf, " "))
  End If
 Next qdf
End Sub

'-----------------------------------------------------------
' 全フォーム中の特定プロパティ値を指定文字列により検索する。
'-----------------------------------------------------------
Private Sub SearchForms(strItem As String)
 Dim aObj As AccessObject, ctl As Control
 Dim bClose As Boolean, bOptionGroup As Boolean
 Debug.Print "【フォームの検索】..."
 For Each aObj In CurrentProject.AllForms
  If aObj.IsLoaded = True Then
   bClose = False
  Else
   bClose = True
   DoCmd.OpenForm aObj.Name, acDesign, , , , acHidden
  End If
  If Nz(InStr(Forms(aObj.Name).RecordSource, strItem)) Then
   Debug.Print "[" & aObj.Name & "].RecordSource: " & Forms(aObj.Name).RecordSource
  End If
248213(つづき:04/02/27 23:23
  If Nz(InStr(Forms(aObj.Name).Filter, strItem)) Then
   Debug.Print "[" & aObj.Name & "].Filter: " & Forms(aObj.Name).Filter
  End If
  If Nz(InStr(Forms(aObj.Name).OrderBy, strItem)) Then
   Debug.Print "[" & aObj.Name & "].OrderBy: " & Forms(aObj.Name).OrderBy
  End If
  For Each ctl In Forms(aObj.Name).Controls
   If Nz(InStr(ctl.Name, strItem)) Then
    Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].Name: " & ctl.Name
   End If
   Select Case ctl.ControlType
    Case acBoundObjectFrame
     If Nz(InStr(ctl.ControlSource, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ControlSource: " & ctl.ControlSource
     End If
    Case acComboBox, acListBox, acObjectFrame, acOptionGroup, acTextBox
     If ctl.ControlType <> acObjectFrame Then
      If Nz(InStr(ctl.ControlSource, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ControlSource: " & ctl.ControlSource
      End If
      If Nz(InStr(ctl.DefaultValue, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].DefaultValue: " & ctl.DefaultValue
      End If
      If Nz(InStr(ctl.ValidationRule, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ValidationRule: " & ctl.ValidationRule
      End If
     End If
     If ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
      If ctl.RowSourceType = "Table/Query" Or ctl.RowSourceType = "Value List" Or ctl.RowSourceType = "Field List" Then
       If Nz(InStr(ctl.RowSource, strItem)) Then
        Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].RowSource: " & ctl.RowSource
       End If
249213(つづき:04/02/27 23:24
      Else
       If Nz(InStr(ctl.RowSourceType, strItem)) Then
        Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].RowSourceType: " & ctl.RowSourceType
       End If
      End If
     End If
    Case acCheckBox, acOptionButton, acToggleButton
     bOptionGroup = False
     If ctl.Parent.Name <> aObj.Name Then
      If ctl.Parent.ControlType = acOptionGroup Then
       bOptionGroup = True
      End If
     End If
     If bOptionGroup = True Then
      If Nz(InStr(ctl.OptionValue, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].OptionValue: " & ctl.OptionValue
      End If
     Else
      If Nz(InStr(ctl.ControlSource, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ControlSource: " & ctl.ControlSource
      End If
      If Nz(InStr(ctl.DefaultValue, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].DefaultValue: " & ctl.DefaultValue
      End If
      If Nz(InStr(ctl.ValidationRule, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ValidationRule: " & ctl.ValidationRule
      End If
     End If
    Case acSubform
     If Nz(InStr(ctl.SourceObject, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].SourceObject: " & ctl.SourceObject
     End If
250213(つづき:04/02/27 23:25
     If Nz(InStr(ctl.LinkChildFields, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].LinkChildFields: " & ctl.LinkChildFields
     End If
     If Nz(InStr(ctl.LinkMasterFields, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].LinkMasterFields: " & ctl.LinkMasterFields
     End If
   End Select
  Next ctl
  If bClose = True Then
   DoCmd.Close acForm, aObj.Name, acSaveNo
  End If
 Next aObj
End Sub

'-----------------------------------------------------------
' 全レポート中の特定プロパティ値を指定文字列により検索する。
'-----------------------------------------------------------
Private Sub SearchReports(strItem As String)
 Dim aObj As AccessObject, ctl As Control
 Dim bClose As Boolean, bOptionGroup As Boolean
 Debug.Print "【レポートの検索】..."
 For Each aObj In CurrentProject.AllReports
  If aObj.IsLoaded = True Then
   bClose = False
  Else
   bClose = True
   DoCmd.OpenReport aObj.Name, acViewDesign
   Reports(aObj.Name).Visible = False
  End If
  If Nz(InStr(Reports(aObj.Name).RecordSource, strItem)) Then
   Debug.Print "[" & aObj.Name & "].RecordSource: " & Reports(aObj.Name).RecordSource
  End If
213と224は神だな・・
(俺がヘタレなだけか・・)
252213 (つづき:04/02/28 00:13
  If Nz(InStr(Reports(aObj.Name).Filter, strItem)) Then
   Debug.Print "[" & aObj.Name & "].Filter: " & Reports(aObj.Name).Filter
  End If
  If Nz(InStr(Reports(aObj.Name).OrderBy, strItem)) Then
   Debug.Print "[" & aObj.Name & "].OrderBy: " & Reports(aObj.Name).OrderBy
  End If
  For Each ctl In Reports(aObj.Name).Controls
   If Nz(InStr(ctl.Name, strItem)) Then
    Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].Name: " & ctl.Name
   End If
   Select Case ctl.ControlType
    Case acBoundObjectFrame, acComboBox, acListBox, acObjectFrame, acOptionGroup, acTextBox
     If ctl.ControlType <> acObjectFrame Then
      If Nz(InStr(ctl.ControlSource, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ControlSource: " & ctl.ControlSource
      End If
     End If
     If ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
      If ctl.RowSourceType = "Table/Query" Or ctl.RowSourceType = "Value List" Or ctl.RowSourceType = "Field List" Then
       If Nz(InStr(ctl.RowSource, strItem)) Then
        Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].RowSource: " & ctl.RowSource
       End If
      Else
       If Nz(InStr(ctl.RowSourceType, strItem)) Then
        Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].RowSourceType: " & ctl.RowSourceType
       End If
      End If
     End If
    Case acCheckBox, acOptionButton, acToggleButton
     bOptionGroup = False
253213 (つづき:04/02/28 00:14
     If ctl.Parent.Name <> aObj.Name Then
      If ctl.Parent.ControlType = acOptionGroup Then
       bOptionGroup = True
      End If
     End If
     If bOptionGroup = True Then
      If Nz(InStr(ctl.OptionValue, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].OptionValue: " & ctl.OptionValue
      End If
     Else
      If Nz(InStr(ctl.ControlSource, strItem)) Then
       Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].ControlSource: " & ctl.ControlSource
      End If
     End If
    Case acSubform
     If Nz(InStr(ctl.SourceObject, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].SourceObject: " & ctl.SourceObject
     End If
     If Nz(InStr(ctl.LinkChildFields, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].LinkChildFields: " & ctl.LinkChildFields
     End If
     If Nz(InStr(ctl.LinkMasterFields, strItem)) Then
      Debug.Print "[" & aObj.Name & "]![" & ctl.Name & "].LinkMasterFields: " & ctl.LinkMasterFields
     End If
   End Select
  Next ctl
  If bClose = True Then
   DoCmd.Close acReport, aObj.Name, acSaveNo
  End If
 Next aObj
End Sub
254213 (つづき:04/02/28 00:15
'---------------------------------------------
' 全モジュールを指定文字列により全文検索する。
'---------------------------------------------
Private Sub SearchModules(strItem As String)
 Dim aObj As AccessObject
 Dim bClose As Boolean
 Debug.Print "【モジュールの検索】..."
 If strItem = "" Then
  Exit Sub
 End If
 Debug.Print "(クラスモジュール)… フォーム"
 For Each aObj In CurrentProject.AllForms
  If aObj.IsLoaded = True Then
   bClose = False
  Else
   bClose = True
   DoCmd.OpenForm aObj.Name, acDesign, , , , acHidden
  End If
  Call SearchModule(Forms(aObj.Name).Module, strItem)
  If bClose = True Then
   DoCmd.Close acForm, aObj.Name, acSaveNo
  End If
 Next aObj
 Debug.Print "(クラスモジュール)… レポート"
 For Each aObj In CurrentProject.AllReports
  If aObj.IsLoaded = True Then
   bClose = False
  Else
   bClose = True
   DoCmd.OpenReport aObj.Name, acViewDesign
   Reports(aObj.Name).Visible = False
  End If
255213 (つづき:04/02/28 00:16
  Call SearchModule(Reports(aObj.Name).Module, strItem)
  If bClose = True Then
   DoCmd.Close acReport, aObj.Name, acSaveNo
  End If
 Next aObj
 Debug.Print "(標準モジュール)"
 For Each aObj In CurrentProject.AllModules
  If aObj.IsLoaded = True Then
   bClose = False
  Else
   bClose = True
   DoCmd.OpenModule aObj.Name
  End If
  Call SearchModule(Modules(aObj.Name), strItem)
  If bClose = True Then
   DoCmd.Close acModule, aObj.Name
  End If
 Next aObj
End Sub
256213 (つづき:04/02/28 00:17
'-----------------------------------------------
' 指定モジュールを指定文字列により全文検索する。
'-----------------------------------------------
Private Sub SearchModule(mdl As Module, strItem As String)
 Dim lngCountDecl As Long, lngCount As Long
 Dim lngLine As Long, strLine As String
 Dim lngCol As Long, strProc As String
 lngCountDecl = mdl.CountOfDeclarationLines 'モジュールの宣言セクションの行数
 lngCount = mdl.CountOfLines 'モジュールの行数
 For lngLine = 1 To lngCount
  strLine = mdl.Lines(lngLine, 1)
  lngCol = Nz(InStr(strLine, strItem))
  If lngCol Then
   If lngLine > lngCountDecl Then
    strProc = mdl.ProcOfLine(lngLine, 0) '0=vbext_pk_Proc
    Debug.Print "[" & mdl.Name & "]." & strProc & "() " & lngLine & "行, " & lngCol & "列目: " & strLine
   Else
    Debug.Print "[" & mdl.Name & "].宣言セクション " & lngLine & "行, " & lngCol & "列目: " & strLine
   End If
  End If
 Next lngLine
End Sub

#End If
257213:04/02/28 00:23
以上です!

連続投稿に引っかかっちゃったよ。。。
258名無しさん@そうだ選挙にいこう:04/02/28 00:59
>>208,237
グラフのリンク子フィールドとリンク親フィールドに
name を指定すれば良いと思うよ!
そんで、Q_Graphの内容は、SELECT value1, value2, name FROM T_Data;
あと、コンボボックスは、テキストボックスでも充分かと・・・
259名無しさん@そうだ選挙にいこう:04/02/29 10:29
サブフォームをダブルクリックしたら、メインフォームにテーブルの内容が
表示されるには どのようにすればいいですか。
OS=XP Access=2002です。
>>213
乙鰈!!
ひまな日曜だから解読にかかろうとしたら、うちの職場の売上集計用
mdbファイルがグチャグチャになっているのを発見してしまった。
売上前年同日比なんてあたりがもう全滅。
2004年問題、つか2月29日問題・・・
261213:04/03/01 00:17
ちょっと訂正で〜す!
>>246 を以下と差し替えて下さい。
【理由】
既定値と入力規則がないフィールドを除外しようとしていた判定がイマイチだったのと、
別にそんな事しなくてもエラーは発生しないと気付いた。
その代わりと言ってはなんだが、システムテーブルを除外する様にしますた。

'-----------------------------------------------------------
' 全テーブル中の特定プロパティ値を指定文字列により検索する。
'-----------------------------------------------------------
Private Sub SearchTables(strItem As String)
 Dim tdf As TableDef, fld As Field
 Debug.Print "【テーブルの検索】..."
 For Each tdf In CurrentDb.TableDefs
  If (tdf.Attributes And dbSystemObject) = 0 Then 'システムテーブルを除く
   For Each fld In tdf.Fields
    If Nz(InStr(fld.Name, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].Name: " & fld.Name
    End If
    If Nz(InStr(fld.DefaultValue, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].DefaultValue: " & fld.DefaultValue
    End If
    If Nz(InStr(fld.ValidationRule, strItem)) Then
     Debug.Print "[" & tdf.Name & "]![" & fld.Name & "].ValidationRule: " & fld.ValidationRule
    End If
   Next fld
  End If
 Next tdf
End Sub
262213:04/03/01 01:10
【補足説明】
クエリとモジュールは全文検索ですが、
テーブル・フォーム・レポートについては、
主要と思われるプロパティ値しか検索していません。
なので、抜けてるのがあるかも?
モジールの検索では、ほんとは Find メソッド使いたかったけど、
挙動が不安定なので使うのやめました。
なんかモジールの最終行付近で正しい結果が返って来ない時があるので・・・

【ADO対応に関するヒント】
DAOに依存する処理は、テーブルとクエリの検索部分だけだと思うので、
その辺をADOXのCatalog, Tables, Views, Procedures 等を駆使して
書き換えて頂ければよろしいかと存じます。
>>262
乙かれ〜!
ところでADOXでできんのかな?
210をみてADOXに書き換えてみようと思ったんだけど、
DAOのQueryDefにある.SQLとかってADOXではViewsにもProceduresにも
ないみたいだからどうやってSQL文取得すんのかなぁ?と..
前もSHIFT起動防ぐのDAOから書き換えようと思ったけど挫折した・・
誰かわかる人教えて欲しい。
264名無しさん@そうだ選挙にいこう:04/03/01 10:50
>>258
今あるフォームに設定しようとしたら「非連結フォームにリンクは作成でき
ません」と言われたので、新しくウィザードで作り直しました。
すると、グラフには、何も表示されなくなりました。タイトルだけ、"T_Data" と
表示されています。

フォームのレコードソース
 SELECT T_Data.name FROM T_Data GROUP BY T_Data.name;

グラフの値集合ソース
 SELECT T_Data.value1, Sum(T_Data.value2) AS value2の合計,
 T_Data.name FROM T_Data GROUP BY T_Data.value1, T_Data.name;
グラフのリンク親・子、ともに name

>>239
VBAのコードは、全くありません。
印刷は、access のファイルメニューから行っています。
265213=258:04/03/01 22:08
>>263
CatalogオブジェクトのTablesコレクションでテーブル名とビュー名、
Proceduresコレクションでストアドプロシジャ名、
及びテーブルのカラム名の取得までは出来たけど、その先が・・・
何故かCommandオブジェクトの操作でコケル!
この辺りでなんとかなると思ってたんだけど・・・
>偉い人、あとよろしく〜

>>264
nameつーのを使ってるのが曲者だったみたいです。
リンク親フィールドには、form!name と設定すればOKです!
266名無しさん@そうだ選挙にいこう:04/03/01 22:08
入力フォームを作りたいのですが
日付を入力するときに小さなカレンダーを表示させて
そこから日付をクリックして入力できるようにするって難しいですか?
アクセスの機能だけでできますかね?
「曜日」の関わるばかりダメになる、なんて現象に出くわした方ははいますか?

例1)
表紙のフォームには XX月XX日(X曜)、てな内容が表示されるようになってまして、
起動直後はまったく問題ありません。
で、その表紙にあるボタン、たとえば名簿とか商品リストとか、を押し、表紙の上で別フォームを開く。
用が済んでその別フォームを閉じると、表紙の「曜日」部分がなぜかErrorになってます。

例2)
帳票型フォームにて
XX月XX日(X曜)--入力内容
XX月XX日(X曜)--入力内容
XX月XX日(X曜)--入力内容
・・・
んな形になっているんですが、
このフォームも、開いたばかりの時点では何の問題もありません。
でも入力するともうダメ。
フッタにある入力内容の集計部分まで道連れでErrorになります。
慌てて閉じて、ふたたび開くと、入力もちゃんとされてるし、集計もちゃんと出来てる。

職場にある数台のうち1台だけに見られる怪現象です。
ACCESSのバージョンはすべて2000
WINもすべて2000
怪現象が出るマシンは最近職場に入れたもので、SP4
他はすべてそれ以前、ブロードバンドもなかなか難しい田舎町のことで、
職場のそれはインターネットにもつながっていないし、WinUpdateはまったくしていません。
>>266
ActiveXのDateAndTimePickerかMonthViewコントロールを使ったら
269264:04/03/02 11:04
>>265
ありがとうございます。グラフの表示は出来ました。
しかし、印刷してみると(印刷プレビューしてみると)、やはり、グラフ表示と
カレントレコードが一致してないんですよね。
Access2000のバグ(or仕様)ですかねぇ。
270264:04/03/02 12:40
>>265
ありがとうございます。グラフの表示は出来ました。
しかし、印刷してみると(印刷プレビューしてみると)、やはり、グラフ表示と
カレントレコードが一致してないんですよね。
Access2000のバグ(or仕様)ですかねぇ。
271名無しさん@そうだ選挙にいこう:04/03/02 14:46
http://support.microsoft.com/default.aspx?scid=/directory/worldwide/ja/kblight/T005/2/20.asp
の操作に近い操作を行いたいのですが、微妙に違うので困っています。

やりたいことは、
コンボボックスを2列にして出したいのです。
つまり、最終的に文字列を、"";(全て);"1列目";"1列目";"2列目";"2列目";...;"Other";"その他";
というようなものにする関数を作りたいのです。

現在はのコードは、以下の通りです。、

Public Function CreateStrLst(ByVal Field As String, ByVal Table As String) As String
Dim rs As New ADODB.Recordset

CreateStrLst = "(全て);"
rs.CursorLocation = adUseClient
rs.Open "SELECT " & Field & " FROM " & Table, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\mdb.mdb;", _
adOpenForwardOnly, adLockReadOnly
CreateStrLst = CreateStrLst + rs.GetString(adClipString, , , ";")
rs.Close
Set rs = Nothing
End Function

GetStringのところを少しいじればいいと思うのですが、
どのようなフィールド名かわからない場合にもうまく動くものが作れません。
宜しくお願いします。
272名無しさん@そうだ選挙にいこう:04/03/02 17:02
データアクセスページをmacから使いたいんだけど、可能?

>>271
無理やり、値集合タイプに値集合リストを使わないで
テーブル/クエリでやってみると・・

SELECT 顧客コード,顧客名,1 AS 順番
FROM 顧客テーブル

UNION


SELECT '全て' AS 顧客コード, '全て' AS 顧客名, 0 AS 順番
FROM 顧客テーブル

UNION

SELECT 'その他' AS 顧客コード, 'その他' AS 顧客名, 2 AS 順番
FROM 顧客テーブル

ORDER BY 順番;


顧客テーブルがあって、フィールドは顧客コードと顧客名(「順」はいらない)
「全て」を一番上に表示したいから、「順」をAS句で0を指定する。
通常のデータは「順」をAS句で1を指定する。
「その他」は一番下に表示したいから、「順」をAS句で2を指定する。

「全て」と「その他」の表示が2列目には必要なければ 2列目を、
'全て' ではなくて '' にする。

って余計わかりずらいか・・

すみません、ばかで・・
274266:04/03/02 20:58
>>268
ActiveXのリストに入ってないのですがVBを入れないと駄目なのでしょうか?
ACCESS2000なのですが・・・
ActiveXのDateAndTimePickerかMonthViewだけを
何処からか追加などはできないのでしょうか?
>>274
266ではないが、ACCESSならカレンダーコントロールのほうがいいと思う。
↑間違った
○ 268
× 266
レポートの表示で悩んでいます。

エクセルのファイルをOLEオブジェクト形式でテーブルに
貯めてそれをレポートで表示したいのですが、
ファイル内容を全部表示できずに困っています。
プロパティをズーム、クリップ、ストレッチと変えても
だめです。

なにか良い方法があれば教えてください。
278266です:04/03/02 23:03
>>275
ありがとうございます
検索して
ttp://www.accessclub.jp/beginer/holiday/holiday_05.htm
のページにたどり着いたのですが

(テキストボックス(名前はテキスト)とコマンドボタンを作成します。)

の部分の説明でコマンドボタン作成とありますがACCESS2000使用してまして
コマンドボタンの種類、動作を選ばなくてはいけないのですが
何を選ぶのか全くわからないじょうたいです・・・

279275:04/03/02 23:11
>>278
そこのサイト見てわからないのでは教えられるかどうか・・
もう寝ようと思ったんで明日でいいですか?
それまでにそこのサイトもう一度よく見てそれでもわからないところを聞いて!
280266です:04/03/02 23:16
>>279
どうもです
よく見てみます。
281265:04/03/03 00:06
>>269
この前その辺も念の為に試してみたんだが、漏れの環境(AC2000)では
フォームの印刷プレビューでグラフ表示はちゃんと更新されてたよ!
それ程詳しく見た訳じゃないけど、グラフの形はそれぞれ変わってた。
だから、バグじゃなくて他に何か原因あると思う・・・

>>278
コントロールウィザードがオンになってるからそうなるんです。
煩わしければオフにしておきましょう!
でも、いきなりキャンセルしてもボタンは作成されますよ。
で、カレンダーコントロールは見つかったの?
どなたかよろしくお願いします。Windows2k ACCESS2002です。
これから積算を管理していきたいのですがテーブル構造で悩んでいます。
簡潔に言いますと、ツリー式の構造にして親フィールドには子フィールドの合計が
出るようにしていきたいのですが、この場合どんな構造にするのがおすすめですか?
(合計値はVBA使って自力で出せるぐらいのレベルです)
今自分が思いつくのは同じテーブルに対してリレーションをかけて無限連鎖させていくか、
それとも親テーブル:子テーブル:孫・・・とテーブルを作っておく方法です。
実際には7〜8階層までしかいかないと思われるので複数テーブルでもいいような
感じがしますが、同じデータをコピーして再利用といった場合は1つのテーブルに
まとめてしまった方が管理がしやすいのかなとも思ったり。
ただ、1つのテーブルにすると参照整合性が設定できないようなので、VBA使わないと
だめなのかしらと躊躇したり。

具体例として1テーブルで済ませる場合の上納金管理を挙げます。w
帳票テーブル:[ID(オートナンバー)] [管理名]
明細テーブル:[帳票ID] [ID(オートナンバー)] [親ID] [氏名] [金額]

リレーション:
 帳票[ID] ←→ 明細[帳票ID]  (1対多)
 明細[ID] ←→ 明細[親ID]  (できれば1対多にしたいができない)

ここで明細に上納金を納めている人間の氏名と金額を入力していき、もし子ができたら
その金額をクリアして、子側にまた氏名と金額を。さらに孫、曾孫・・・と。
あくまで例なので孫まで管理するこたねぇだろとか言わないで下さい。。。

尚「自己結合」でググると同一テーブルの同一フィールドを結合してカウントさせる
方法しか出てこず、「自己リレーション」だとファイルメーカーが出てきしまいます。
そもそもACCESSでツリー構造をさせようというのが無理な話なのでしょうか?
長々すいません。
>>271
Public Function CreateStrList(strTable As String, lngFIdx1 As Long, lngFIdx2 As Long) As String
 Dim strSQL As String
 Dim rst As New ADODB.Recordset
 CreateStrList = ";(全て);"
 strSQL = "SELECT * FROM " & strTable & ";"
 rst.ActiveConnection = CurrentProject.Connection
 rst.Open strSQL, , adOpenForwardOnly, adLockReadOnly
 While Not rst.EOF
  CreateStrList = CreateStrList & rst.Fields(lngFIdx1) & ";" & rst.Fields(lngFIdx2) & ";"
  rst.MoveNext
 Wend
 rst.Close
End Function

lngFIdx1, lngFIdx2 は、0から始まるフィールドの列位置を指定する
284269:04/03/03 11:32
>>281
SP3 は、適用されていますか?
こちらでは、どうしても同期がずれるので、仕事場のaccessを調べてみると SP3
が入ってなかったので、入れてみました。
すると、今のところは、正しく表示されています。
本番環境は、どうなるかわかりませんが、どうもバグっぽいですね。
285271:04/03/03 12:03
>>273
これって、フィールド名が不明な場合でもいけるのでしょうか?
やってみようとしたのですが、却って分からなくなってしまいました。
UNION句って使ったことがないので、もう少し勉強してみます。

>>283
Fieldsコレクションというのは、こういう風に使えたのですね。
お陰様で、何とか望む関数を作ることができました。
最終的には、このようになりました。
有り難うございました。

Public Function CreateStrLst(ByVal Field As String, ByVal Table As String) As String
 On Error GoTo ERR_HANDLER
 Dim rs As New ADODB.Recordset
 CreateStrLst = ";(全て);"
 rs.CursorLocation = adUseClient
 rs.Open "SELECT [" & Field & "] FROM [" & Table & "] GROUP BY [" & Field & "];", _
  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\外部mdbファイル.mdb;", _
  adOpenForwardOnly, adLockReadOnly
 Do Until rs.EOF
  CreateStrLst = CreateStrLst & rs.Fields(0) & ";" & rs.Fields(0) & ";"
  rs.MoveNext
 Loop
 rs.Close
END_FUNCTION:
 Set rs = Nothing
 Exit Function
ERR_HANDLER:
 MsgBox "エラー" & Err.Number & vbCrLf & Err.Description
 GoTo END_FUNCTION
End Function
286273:04/03/03 15:47
>>285
すみません、よく見ないでレスして・・
汎用的に使えるように関数にしたんですよね
この場合は無理です。
コンボボックスごとにテーブル名やフィールド名を指定しないとだめですね。
値リストに文字列を書き込むようにやるとコンボに表示させる文字列が
多すぎるとエラーになった場合があったので、わたしはクエリSQL文を
直接割り当てることが多いです。
287281:04/03/03 20:42
>>282
具体例のままで良いんじゃない?(明細テーブルを自己結合するやり方
明細[ID] ←→ 明細[親ID] のリレーションは1対1って表示されるだろうけど、
実際は何ら問題ないと思う。参照整合性の設定もちゃんと出来ると思うし・・・
つーか、漏れも似たような事やってるよ!

>>284
素のAC2000でSPは全く適用してないけど、
WinXPのアップデートは最新状態でテストしますた。

>>285
rs.Fields(Field) とも書けます。
ちなみに、無用のトラブルを避けるために、
自分で付与する項目名・変数名等は、極力ほかの
オブジェクト名・コレクション名・プロパティ名等と
かぶらないように気をつけた方が良いですよ。
ちょうど、258,264,265 がその典型とも言えるので・・・
288282:04/03/04 03:26
>>281
ありがとうございます!ただ参照整合性ですが、例えば孫レコードを持つ子レコードを
削除しようとすると「現在ロックされているので、更新できませんでした。」という
エラーが出てしまうんですよね。……ロック?
289282:04/03/04 03:36
ああああ!オプションのレコードレベルでのロックうんぬんを解除したら大丈夫でした!
これはこれでなんか怖そうな気もしますが、なんとか先に進めそうです!
ありがとうございました。
2000でヘルプが壊れている人はこれで
http://support.microsoft.com/default.aspx?scid=kb;ja;249065
291名無しさん@そうだ選挙にいこう:04/03/06 08:58
>>284
ttp://www2.moug.net/app/bbs/message.php?cat=acm_v&id=20031215-000031
結構同様の問題でてるようですね。
292名無しさん@そうだ選挙にいこう:04/03/08 21:37
アクセス2000でピボットテーブルを作っています。
一度ウイザードを使ってピボットテーブルを作ったのですが、
その後、テーブルからフィールドを新たに加える必要が出きました。
そこでなのですが、ピボットテーブルに新たにフィールドを追加するやり方がわかりません。

条件はウインドウズ2000,アクセス2000、エクセル2000です
お願いします。
>>292
データベースファイル開いて、デザインビューでもいいから
追加してやればいいんじゃないの?

って、間違ってる?
294名無しさん@そうだ選挙にいこう:04/03/09 15:35
どなたか教えて下さい。
お客から電話が来た時、電話番号を入力して客先データを
表示させたいのですが、電話番号の -(ハイフン) が邪魔になります。
ハイフンを無視する方法を、教えて下さい。
アクセス2002です。
295名無しさん@そうだ選挙にいこう:04/03/09 15:49
>>294
ハイフン無視したデータを作れ。
296名無しさん@そうだ選挙にいこう:04/03/09 16:06
分かった。あんがとん。
297名無しさん@そうだ選挙にいこう:04/03/09 16:08
WindowsXPでAccess2000を使っています。
 お聞きしたいのはフォームのコンボボックスのことなんですが、コンボボックスの中に
値集合ソースで文字列を入れておくと、その一覧から選べるようになりますよね。ただ
それはあらかじめ一覧にその文字列を加えておかなければならないですよね?
 たとえばブラウザのIEで、アドレスをフォームに入力すると入力しただけ一覧に履歴が
残りますよね?
 そんなふうにコンボボックスにフォームから入力して、その文字列がそのまま履歴で
一覧に残る方法ってないでしょうか?
 これって当然のように使えたほうがいいと思うのですが、ヘルプを見ても何を見ても
載ってないんですよね。
 ご存知の方ぜひ教えてください。よろしくお願いします!
>>297
何度も選択したいかつ、新しく登録した場合、増やしていきたいと言うことですね
それでしたら、それ用のテーブルを新たに作成しましょう
その後、フォームのコンボボックスにそのテーブルのレコードを参照するようにしてください
ていうか、どこにも載ってないって・・・
ググって検索されました?
至極基本だと思いますが・・・・・
Access2000を使っていますが、これのウェブページことデータアクセスページを
作ってみようと思ったのですが、

ぜんぜん思ったようなページが出来ませんでした。
サブフォームがまるで作られず、またまるでカード型データベースのようなもの
になってしまいました。

サブフォーム付きのフォームをデータアクセスページでは作れないのでしょうか?
300名無しさん@そうだ選挙にいこう:04/03/09 22:28
Accessでコードを直接書き込んでいるときに
気がついたんですが、
スクロールがマウスで出来ないのですが
これって何か原因があるんですか?
Accessのバグなんでしょうか?

別にスクロールそのものが壊れているわけではないです。
よろしくお願いします
>>300
どこでもホイールをインストールしましょう。
302名無しさん@そうだ選挙にいこう:04/03/10 00:16
>301

ありがとう。解決できました
303名無しさん@そうだ選挙にいこう:04/03/10 00:18
Access 2000のVBAで質問です。

すんません、きっと簡単な事なんだと思いますけど...
VBでコンボのある行を選択状態にする時は
combo1.listindex=3
とかすれば良かったんですが、Accessではどうもうまくいきません。
色々WEBで見てるんですけど、なかなかHITせず....
Accessの場合はどうやるんでしょうか?
304297:04/03/10 00:53
>>298
 ご回答ありがとうございました。
 なるほど、まだ試していませんが、その方法でいけそうです!
 検索、甘かったのでしょうか、けっこう探したんですけど・・・。
 ググっていうのは、なんかそういう検索サイトなんですか?
 まずAccessのマニュアル本もけっこうみたし、裏技集って感じの本もみたし、
ヘルプやネットでもけっこう探したんですけど・・・。
 もっと勉強します・・・。
 ありがとうございました!
305名無しさん@そうだ選挙にいこう:04/03/10 08:48
Sub Shori1
アクションクエリとかいろいろ
End Sub

Sub Shori2
これもいろいろ
End Sub

Sub Shori3
やっぱりいろいろ
End Sub
・・・
で、たとえば、これが8個あるとします。
いや、じっさい8個なんですが。

以下のような処理がしたいんです

Dim i As Integer
For i=1 to 8
If 条件 i を満たした場合は Then
処理 i を実行 ←ここの書き方が分かりません
End If
Next i
【OS】 WINDOWS NT4.0

【バージョン】ACCESS 2000

【目的】フォームのコマンドボタン上にマウスポインタを持っていったときに、ラベルのキャプションにボタンの解説テキストを表示させたい。
    またコマンドボタンからマウスポインタが離れたとき、表示したラベルキャプションのテキストを消したい。

【概要】最初コマンドボタンのプロパティの「マウスボタン移動時」イベントプロシージャーに、イベント発生時→ラベルのキャプションにテキスト表示
    しました。その結果確かにマウスポインタがコマンドの上にきたときテキストは表示されたのですが、ポインタがボタンの上じゃないところに
    移動しても表示したままで、変わりません。
    マウスポインタがコマンドボタンの上にきたときだけ、ラベルのキャプションを表示する方法など あるものなのでしょうか?
    ご存知のかたいらっしゃいましたらお願いします。
308307:04/03/10 22:44
↑一行が長すぎてみにくくてスミマセン・・・
309292:04/03/10 23:20
>>293
おそくなりまして失礼です

それが見当たらないのです。

2002以降と違って、ピボットはフォームに張りつけられているエクセルファイルを使う事になるのですが
どこで、追加して良いやらわからないです。
310名無しさん@そうだ選挙にいこう:04/03/10 23:38
>>307
ヒントテキスト
311307:04/03/11 00:06
>>310
ご回答ありがとうございます。
ヒントテキストで可能なのですが、もっと表示のインパクトを強くしたい
(できればボタンみたいなグラフィックでホップアップヘルプを表示したい)
のです。ですのでコマンドボタンの上にマウスカーソルが乗っかったという
イベントからプロシージャを起動したいのです。
 いろいろ無理難題ばかりですみません
 
312名無しさん@そうだ選挙にいこう:04/03/11 01:11
>>307
フォームの詳細セクションのマウスボタン移動時のイベントで、
ラベルのキャプションを消すようにするとか?
313307:04/03/11 01:22
>>312
ありがとうございます。
やってみたのですが、フォームの移動時イベントで消しても、うまくいきません
下記のように書いたのですが・・・・

Private Sub コマンド0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.text.Caption = "表示してやる!"
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.text.Caption = ""
End Sub
314名無しさん@そうだ選挙にいこう:04/03/11 02:08
俺の彼女はマタが臭いのですが、どうすればいいでしょか??
>>313
詳細_MouseMove も使うべし
>>306
Sub Shori1〜Shori8までを1つにまとめられないの?
まとめて引数で分岐したら良いと思うけど...

それが駄目なら、もう固定でi=3ならCall Shori3とかするしかないんじゃないかな。
317306:04/03/11 04:56
>>316
回答感謝です
そうですよね、SubとかFuncitonってのは使い方をおぼえただけで
今ひとつ理解してないんですけど、変数で呼び出すのはやっぱりダメですよね。
>>Sub Shori1〜Shori8までを1つにまとめられないの?
それぞれ内容がまったく違うので、難しそうです。
けっきょくは固定でやるのとさほど変わりない形で収めることにしたんですけど、
それでも出来るだけ簡略化したいと思い、かなり強引な手を使ってすべての処理を
アクションクエリ化してしまいました。
Shori1からShori3まではアクションクエリ3つ、Shori4は7つ、Shori5は2つ、
Shori6からShori8までは5つ、で、連番をふりました。
Qry11,Qry12,Qry13
・・・
Qry41,Qry42,Qry43,Qry44,Qry45,Qry46,Qry47
・・・みたいな感じにして
Dim j as integer, k as integer
Select Case i
Case is <=3
k=3
Case is =4
k=7
Case is =5
k=2
Case is >=6
k=5
End select
For j=1 to k
CurrentDb.Execute "Qry" & i & k
Next j
つかれた〜
寝ます。

.  目 的  】 納品書作成)
【.  条 件  】 WindowsXPpro Access2002
■試したけどうまくいかなかった処理
【. 概  要  】 基本を勉強中
【駄目な理由】  がんばりがたりない
■これだけはやりました
 参考書2冊購入 


Access初めて使ってみました。上司からいきなり納品書作ってくれっていわれて
参考書買ってきていろいろやってはいるのですが、難しいです。

で、分からないことだらけですが、メインパネルに顧客ID・名前(手入力)・
商品名(複数)・金額・個数・消費税・合計・値引きで最終的には印刷という感じです。

そこで、名前は手入力としても商品はリストボックスから選択して
自動的に金額も表示され、個数に応じて合計の計算をしたいのですが、基本となる
データーベースの骨組みがいまいち分からない。
テーブルは何を作ってどれをリレーションすればいいの?

とにかく手入力を最小限に抑えたつくりにしたいのですが、どなたか
お知恵をお借りしたい。なんか基本的な部分を理解していないようで
申し訳ないのですが。
319名無しさん@そうだ選挙にいこう:04/03/11 15:30
>>314
それは、下「ワキガ」つーて、どうにもならん。
はつきりそう言へば別れてくれるかも。
一生付き合うのはかなわんぞ。まあ彼女は傷つくけど。
320名無しさん@そうだ選挙にいこう:04/03/11 16:13
【顧客管理 】
【ACCESS2000】
■試したけどうまくいかなかった処理
【1.販売履歴で500円ごとに1ポイントつけて、累算ポイント、使用ポイント、現在のポイントを計算】
【2.レポートを開くときにボタンを押したら最新の伝票1枚のみが開く】 (動作状況など)
ダメな理由
【1.累算ポイントが顧客ごとにならずすべての合計になる。あと、現在のポイントが表示できない(式を入れたらなんかカーソルが読み込みを永遠にしたっぽく
砂時計と交互に】
【2.1枚だけってのがどうしていいのやらです】
■これだけはやりました
>>1を読んだ】 はい
参考書は初心者用が2冊。いまいち知りたいことが載ってない感じです。
どうぞご助力くださいませ
>>318

> 【駄目な理由】  がんばりがたりない
判ってんじゃん
> ■これだけはやりました
>  参考書2冊購入
「購入」だけでは駄目

で、ここまで自力でやってくれ。話はそれからだ。
テーブル
顧客TBL(顧客ID・顧客名)
商品TBL(商品ID・商品名・単価)
取引TBL(取引ID・納品書ID・顧客ID・商品ID・個数・値引額・名前)
リレーション
取引TBL.顧客ID→顧客TBL.顧客ID
取引TBL.商品ID→商品TBL.商品ID

「名前」ってのが顧客名なら不要、自社の担当者なら担当者テーブルを
作って他と同じ要領でリレーション。
これでとりあえず売上明細のクエリを作る。
消費税と合計額はクエリ上で計算しる。

ここまで出来たら(或いは出来なかったら)また来い。
あとは納品書IDで括って入出力できるようにすれば終わりだ。
>>320
【1.販売履歴で500円ごとに1ポイントつけて、累算ポイント、使用ポイント、現在のポイントを計算】

テーブル「t_販売履歴」
  (フィールド)顧客コード、売上日、売上額
テーブル「t_ポイント使用履歴」
  (フィールド)顧客コード、使用日、使用ポイント

クエリ「q_累計獲得ポイント」
  SELECT 顧客コード, Int(Sum(売上額)/500) AS 累計獲得ポイント
  FROM t_販売履歴
  GROUP BY 顧客コード;
クエリ「q_累計使用ポイント」
  SELECT 顧客コード, Sum(使用ポイント) AS 累計使用ポイント
  FROM t_ポイント使用履歴
  GROUP BY 顧客コード;

クエリ「q_ポイント管理」
  SELECT 顧客コード, 累計獲得ポイント, 累計使用ポイント
       , (累計獲得ポイント-Nz(累計使用ポイント,0)) AS 現在のポイント
  FROM q_累計獲得ポイント LEFT JOIN q_累計使用ポイント
      ON q_累計獲得ポイント.顧客コード = q_累計使用ポイント.顧客コード;
323名無しさん@そうだ選挙にいこう:04/03/11 18:58
Accessでオートナンバー型をやめて
Dmaxを使った自動採番にしようと思っているのですが、
分からないので質問させてもらいました。

挿入前処理で
H16-0001といった風に番号をつけたいのですが、
ハイフンを入れることもできるのでしょうか?
できるとするなら、コードを教えてください。



それと以前、自動採番に挑戦したとき、
テーブルのデータが何もなしの状態で
Dmax+1を使用したら、番号がつきませんでした。

テーブルデータがない場合の対策も教えて頂きたいです。
よろしくお願いします。
>>321

早速、ありがとうございます

> で、ここまで自力でやってくれ。話はそれからだ。
> テーブル
> 顧客TBL(顧客ID・顧客名)
> 商品TBL(商品ID・商品名・単価)
> 取引TBL(取引ID・納品書ID・顧客ID・商品ID・個数・値引額・名前)
> リレーション
> 取引TBL.顧客ID→顧客TBL.顧客ID
> 取引TBL.商品ID→商品TBL.商品ID

↑今ここまで作りました
主キーの設定を、顧客ID・商品ID・取引IDにしました
名前は顧客名なので作りませんでした

> これでとりあえず売上明細のクエリを作る。

↑次はこれに取り掛かります
クエリはなんとなくわかるのですが、とりあえず作ってみます
また、書き込みます


> 消費税と合計額はクエリ上で計算しる。
> ここまで出来たら(或いは出来なかったら)また来い。
> あとは納品書IDで括って入出力できるようにすれば終わりだ。
>>321

売上明細クエリ作りました。(間違ってるとおもうが・・)

選択クエリで顧客ID・顧客名・商品名・単価・個数・値引額と並んでいます
>>324

> > 消費税と合計額はクエリ上で計算しる。

↑これがわからない
クエリにフィールドを追加すればいいのか?
ちょっと本読んできます


> > ここまで出来たら(或いは出来なかったら)また来い。
> > あとは納品書IDで括って入出力できるようにすれば終わりだ。
327shun:04/03/11 20:37
【.  目 的  】 アクセスのフォーム上の人物データを基に、アウトルック2000の連絡先フォルダ内のサブフォルダにメールアドレスを追加したいのですが、何か方法はありますか?
連絡先フォルダに入れるのは出来るのですが、サブフォルダにいれる方法がわかりません。もちろん手動でなら出来るのですが、アクセス上からボタン一つで自動化したいのです。
【.  条 件  】 OSはXP アクセスバージョン2000
■試したけどうまくいかなかった処理
まったく解らないので試せませんでした。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 アクセス、アウトルック、アドメンバーズ、VBA

申し訳ございませんが宜しくお願いします。
>>314
私も前の彼女がそうでした
テマンをする翌日も指においにーが残りました
>>319
下ワキガなるものが存在するとは...
勉強にナリマス
確かにワキガのオイニーにチカカッタです
勉強になりました

でもスレ違いですよね?

商品カタログDBを作る予定であります。

imgディレクトリを用意しそこにはいくつもの画像が入っています。
そして、DB側でそれをリンクで呼び出し表示、レコード移動と共に
画像も変わって、カタログDBの完成と行きたいです。

ただし、ここからが質問なのですが、ここまではいいのですが、
今後追加する、もしくは差し替えをするに当たって、以下のことを
死体のです

1.imgディレクトリに画像を追加するだけで、DB本体のコンボボッ
クスなどにそのリストが現れるようにしたい。画像差し替えの時に
非常に便利

2.新たにレコードを登録する際に、画像を選択するわけですが、
このとき、上記のように特定ディレクトリのリスト意外の写真もつか
いたいので、ファイルを選択のあのダイアログを出し、パスを取得
して、そのパスをDBに格納したい

以上2点です。この両方を実装しようと考えています。
どうかお知恵を貸してください。
>>329
1.FileSystemObjectを使ってフォルダー内を検索する
2.GetOpenFilename[API]
3台のPCにそれぞれあるフロントエンドMDBからバックエンドMDBを共有して使用してきましたが、PCの増加に伴いSQLサーバーにアップサイジングする予定です。
その際、ADPにて再開発するには少々時間がかかりそうなので現行のフロントエンドMDBを暫くそのまま使用したいと考えています。
試験的にSQLサーバーにデータをインポートし、MDBとテーブルリンクして動かして見た感じでは、なんら問題も無く動くようなのです。
そこで質問なのですがMDBである以上は(JETを介してデータのやり取りを行っている?ので、)やはり今までと同様なトラフィックになっているのでしょうか?
また、ほかにどんな問題点があるのか教えてください。
332名無しさん@そうだ選挙にいこう:04/03/12 02:25
>>331
俺にはケツの穴が3つあって
どの穴からウンコをするか
どの穴からヘが出るか
選択できるんだ
333名無しさん@そうだ選挙にいこう:04/03/12 09:06
>>314 >>328
スレ違いで申し訳ない。 私 294 319なの
>お客から電話が来た時、電話番号を入力して客先データを
>表示させたいのですが、電話番号の -(ハイフン) が邪魔になります。
>ハイフンを無視する方法を、教えて下さい。アクセス2002です。
295さんが >ハイフン無視したデータを作れ。
でやっていますが、電話項目2つは必要ないと思うので。
間もなく70歳になる。昔 オペレーター室の管理者をしていた時、オペの女性
10人位いたが、中に「ワキガ」が1人居て、大騒ぎになった。上「ワキガ」は手術で
直るが、下はどうにもならん。 やさしいコードを教えて(マクロ程度しか出来ない)
いじめるな。
334名無しさん@そうだ選挙にいこう:04/03/12 10:47
Access2000を使っています。
元データのExcelを取り込んでAccessで処理しようとしています。
Excelのデータには顧客コード・顧客名の両方がありますが
取り込む前にAccess側のマスタと顧客名の不一致のチェックを行いたいと思います。
元データをADOに接続できますが、この後Access側の顧客マスタと
どうやってぶつければよいでしょう?顧客名は完全一致で結構です。
よろしくお願いします。
【.  目 的  】 名簿を作っています。通し番号の書体を、女はイタリックにしたい。もちろん性別のデータはあります。
【.  条 件  】 Win2000,access2000
■試したけどうまくいかなかった処理
【. 概  要  】女のとき、何らかのマークを入れることはできます。
【駄目な理由】書体のいじり方がわかりません。
■これだけはやりました
>>1を読んだ】 はい(「書体」で検索しました)
【Googleで調べた】 はい・いいえ (大概の疑問は検索することで解決します)
【検索キーワードは?】access 書体 変更
よろしくお願いします。
336320:04/03/12 12:11
>>322
ありがとうございます。おかげさまでバッチリ計算のほうができました

ところが今度は計算結果を出力しようとしたフォームが、最初の1件のレコードしか表示してくれません
顧客コードでくくって他の情報とともに出したいのですが、なんで表示されないのでしょう
データシートビューだとちゃんと全員分のポイントのレコードがあるのに・・・

宜しくお願いします。ああ、今日の営業時間内に完成するのだろうか・・・
>>335
詳細単位のプロパティ操作は出来るものと出来ないものがあるし
出来る筈のものでも思うようにいかないこともあるからな

安全な方法としては
書体の違う2つのテキストボックスを背景透明で重ねておいて
♂: テキストボックス1に記述、2はNull
♀: 1はNull、2に記述
くらいかな
>>336
フォームのプロパティ→書式→既定のビューを「帳票フォーム」にしませう
>>337
できました! ありがとうございました。
2chにも感謝!
340320:04/03/12 13:52
>>338
いや、ちゃうのですよ。帳票フォームだといっせいに表示されちゃうじゃないですか
そうじゃなくて、レコード10件あったら単票フォーム10枚になると思うんですが、最初の一枚しか見れないのです。
帳票にしたら全部表示はされました。どゆことだろ・・・
>>340
マウスのホイールを回すと解決するというオチでは…
342320:04/03/12 14:05
さすがにそれはないです(苦笑

なんていうか、1ページしか見れない状態、でいいのかな。
下のほうに[>こういうのでて・・・オートナンバーで入力フォームじゃないとだめとか・・・?
混乱中です
>>342
単票フォームの意味を理解してるんだろうか
「レコード10件あったら単票フォーム10枚になると思うんですが」
なんて書いてるのを見ると疑問に思う。

普通はフォーム1枚だけ出て、レコード移動で切り替わるよね。
それが単票の単票たる動作なんだから。
344320:04/03/12 14:53
>>343
失礼しました。今見たらどうもさっきの341がただしかったのかも・・・なんですが
それだと帳票フォームで表示されてることになりませんか?
規定ビューは単票に設定してるはずなんですが。またなんか間違ってるのかな・・・
だんだん質問してて不安になってきた(苦笑
345320:04/03/12 15:13
どうも問題は全然別にあったようです。
サブフォームが連動してない。これだけでした。
また弄ってみます、お騒がせしました。
アドバイスくださった皆様ありがとうございましたです。
フォームの条件付き書式をVBAで
やる方法ってないでしょうか?
あるテキストボックスの中身によって別のテキストボックスの可視プロパティを
切り替えたいのですが。
Access2000です。
347318:04/03/12 17:56
昨日から作っているけど、できない・・・・

>売上明細クエリ作りました。(間違ってるとおもうが・・)

>選択クエリで顧客ID・顧客名・商品名・単価・個数・値引額と並んでいます

フォームを作る段階になって、うまくいきません
サブフォームから商品をリスボックスから選んで、自動的に
単価が表示されるようにしたいけど、どなたかお助けください

又、フォームの下のほうに消費税と合計と値引きと総合計の順に
計算して、レポート出力する予定です




>>330
大変ありがとう。あなたには非常に感謝しています。
レポートで請求書を作ってますが、明細行を一行ごとにしましまにできますか?
>>349
できる。
351苺栽培:04/03/13 17:28
コンボボックスとあるテーブルをつなげています。(値集合ソースにて)

テーブル構成
ID : オートナンバー型
名称 : テキスト型

値集合ソースでこれらを引っ張ってきて、収納先のDBにはIDを格納
しコンボボックスの表示は名称を表示しています。ここまではできて
いるのですが、

このとき、コンボボックスに表示されている名称を取得したいのですが

Me.コンボ苺.XXXXX でXXXXには何をいれたら取得できるのでしょうか?
お願いします。
352名無しさん@そうだ選挙にいこう:04/03/13 18:12
>>349
出来る。
が FAXで送ると、黒くなって見えないぞ。
350ではない。
353名無しさん@そうだ選挙にいこう:04/03/14 01:22
>>351 column(1)
354名無しさん@そうだ選挙にいこう:04/03/14 02:08
帳票フォームを使用しております。
矢印の上下でレコードを移動したいのですが、
コンボボックスの場合にうまくできません。

方法をご存じの方はおられませんでしょうか?
355名無しさん@そうだ選挙にいこう:04/03/14 23:05
グループごとでの平均値を出したいのですが
内容はこんな感じです

    りんご  割合
青森   2    2/青森のりんご全部
青森  10  10/青森のりんご全部
秋田  5    5/秋田のりんご全部
秋田  3    3/秋田のりんご全部

どなたか、お願いいたします。
本をいろいろ読んで見たのですが、駄目でした。
356名無しさん@そうだ選挙にいこう:04/03/14 23:19
アクセスのパスワードを解除したいのですがどうしたらいいのでしょう?
357名無しさん@そうだ選挙にいこう:04/03/14 23:29
>>356
漏れが100マソで解除してやるぞ(w
358名無しさん@そうだ選挙にいこう:04/03/15 08:58
>>354
方法はあるようだけど、、、、、
どうやってるのかはしらん。
レスになってないな(w
359名無しさん@そうだ選挙にいこう:04/03/15 13:08
当方OSはWin2kとXP併用、OfficeのVerは2kで、住所録を作っています。

フォーム上のテキストボックスを条件としてクエリAで住所に絞込みをかけ、
それをサブフォームで表示しています。
それに 「絞込みの条件に適合したレコードすべてにチェックを入れる」
という作業を行わせたいのです。

複数条件でのクエリが重くなるのでフィルタを使ってみたところ、
軽くて物凄く快適になった反面、クエリAを元データとする
更新クエリAにはフィルタが反映されません。(当たり前ながら凹

フォーム上からの命令でサブフォームの値を変更させようと
いろいろ命令を試してみても、「レコードセットが更新できない」と怒られたり
サブフォームの1つめのレコードにしかチェックが入らなかったり、これはこれで轟沈。

更新クエリAを適応するためには全てのフィルタ条件をクエリAに入れなおす事になりますが、
多重フィルタで条件が多過ぎてクエリが組めないとか、重くなりすぎとか、
そもそもそれなら最初からフィルタを使う意味が無いとか、どーにも冴えません。

フィルタで抽出したレコード群の指定・それらへの変更を、簡単に行う方法は無いのでしょうか?
360名無しさん@そうだ選挙にいこう:04/03/15 17:45
OLEオブジェクトの挿入で写真を挿入したのですが、
Gif画像を挿入しても画像が表示されず、1010.gifの様に
ファイル名しか表示されないのですが、
うまく画像も表示できるようにするには、
どこの設定を直せばよいでしょうか?

いろいろなアプリをインストールするうちに、関連付けが
おかしくなったように思うのですが。

よろしくお願いします。
>>355
りんごテーブル
  フィールド1 地域
  フィールド2 りんご

りんご地域別クエリ
  select 地域, sum(りんご) AS りんご合計
  from りんごテーブル
  group by 地域;

りんご割合クエリ
  select りんごテーブル.地域, りんごテーブル.りんご
     , (りんごテーブル.りんご/りんご地域別クエリ.りんご合計) as 割合
  from りんごテーブル inner join りんご地域別クエリ
    on りんごテーブル.地域 = りんご地域別クエリ.地域;
>>359
for文を使ってループ処理
363359:04/03/15 22:37
>>362
漢らしい助言に感謝。

変数にEOFを持っていくと「定義が使えない」と怒られたり、
レコードセットからレコード数を取得したら
「このレコードセットは更新できません」と怒られたりしてるけど、
とりあえず方向性だけ固まったから、fornextでガンガってみます。
>>363
if文と絡めるんだよ。
365355:04/03/15 23:25
>>361
助かりました。ほんとにありがとうございます。
366名無しさん@そうだ選挙にいこう:04/03/15 23:54
そんなことより聞いてくれよ
坊さんの絵を描こうとして
「僧衣」でぐぐったんだ
そしたら一番上が
367名無しさん@そうだ選挙にいこう:04/03/16 13:51
>>366
オイ、お前>314 >332か
368名無しさん@そうだ選挙にいこう:04/03/16 18:50
現在検索中ですが、未だ分かりません。
環境ACCESS2000 WIN2000です。
↓のような感じで同一フィールドの累積演算をしたいのです。

ID  数値フィールド  数値フィールドの累積
 1   100        100
 2   200        300
 3   150        450

お分かりの方お助けを。
>>368
SELECT t1.ID, t1.数値フィールド, Sum(t2.数値フィールド) AS 数値フィールドの累積
FROM テーブル as t1, テーブル as t2
WHERE t2.ID <= t1.ID;
371370:04/03/16 19:10
グループ化忘れてた

SELECT t1.ID, t1.数値フィールド, Sum(t2.数値フィールド) AS 数値フィールドの累積
FROM テーブル as t1, テーブル as t2
WHERE t2.ID <= t1.ID
GROUP BY t1.ID, t1.数値フィールド;
372名無しさん@そうだ選挙にいこう:04/03/16 20:11
>>369>>370
物凄く素早い回答ありがとうございます。
>>370
なろほど。こんな方法があるのですね。
SQLは簡単そうで難しいです。
ところで、この演算をフォーム上で入力と並行しながら行うのは無理でしょうか?
373名無しさん@そうだ選挙にいこう:04/03/16 21:54
すいません、ど素人質問ですが教えて下さい。
Accessのランタイム版とかいうのをインストールしたのですが、
これは製品版と何が違うのでしょうか?
>>372
for文でループ処理 結果をどっかのテキストボックスにでも投げる
>>373
実は、俺は今、営業支援用のデータベースアプリケーションを開発中
なのだが、なにぶん会社で各営業用にAccessを買うのはあまりにも
高額だ。

そこで注目されるのが 実行機能だけを持つAccess本体 それがつま
るところのAccess Runtimeなんだよ。実行機能だけを提供するから、
Accessのファイルを実行することはできても、レイアウトの編集だのま
た、テーブル構造を変えるだのといった一切の改造もできない。

ランタイムとは名ばかりの一種のビューアだと思った方がしっくりくるだ
ろう。
376335:04/03/16 23:45
335です。さらなるスキルアップもかねて質問させて下さい。

If [性] = 2 Then
[番箱].Form.DatasheetFontItalic = True
Else
[番箱].Form.DatasheetFontItalic = False
End If

と書いてみたのですが、うまくいきません。
全然間違えておるのでしょうか。
377335:04/03/17 00:05
連続失礼します。
369さんの投稿でMSにそのようなページがあることを知り、
http://support.microsoft.com/default.aspx?scid=kb;ja;833675
を見つけました。
でこの方法は会得しました。感謝!
よかったらイベントプロシージャにおける書き方↑も教えて下さい。
378335:04/03/17 00:08
379373:04/03/17 00:41
>>375
ありがとうございました。
よくわかりました。
380380:04/03/17 13:47
【.  目 的  】 OLEオブジェクトで画像を既存ファイルから挿入したい
【.  条 件  】 OS=XPpro Ver=2003
■試したけどうまくいかなかった処理
【. 概  要  】
フォームウィザードを使用し、既存のテーブル(T1)を基にフォームを作成。
テーブル(T1)でデータ型をOLEオブジェクトにしていたため、
フォームによりその箇所に画像を挿入しようと試みた。
【駄目な理由】
挿入後、画像が表示されるかと思ったが、画像を縮小したアイコン(パッケージ)に
なってしまった。
ファイル形式はビットマップ(bmp)。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
ACCESS2003  OLEオブジェクト  挿入
ACCESS2003  OLEオブジェクト  画像
ACCESS2003  OLEオブジェクト  アイコン
ACCESS2003  OLEオブジェクト  ビットマップ
ACCESS2003  OLEオブジェクト  イメージ
これくらいです。
381質問:04/03/17 13:58
OSはWIN2000でACCESS2000を使用しています。
ACCESSのデータをCSV形式でエクスポートし、他の業務で使用しております。
このエクスポートを手動ではなく、一定時間毎に自動で行なわせたいと考えております。

タスク機能やフリーソフトを利用して一定期間毎に指定したコマンドを実行する、と言う部分は可能なのですが、
ACCESSからのエクスポートに関しては、ACCESS起動時にパラメータを指定したり、
マクロのような物で自動実行は可能でしょうか?
エクスポート先のファイルは毎回上書きで構いません。
>>381
TransferText
でヘルプ参照汁
383381:04/03/17 14:27
>>382
ありがとうございます。
ヘルプを見て試してみます。
分からない事があったらまた質問します。
384名無しさん@そうだ選挙にいこう:04/03/18 01:56
Accessに興味があるのですが、どんな事が出来るのかとか、
どんな機能があるのかとか初心者用に解説したサイトとか
教えていだだけませんか?

現在某DBソフトを使用中ですが、Accessのクエリ機能が
どういう風に使いどの様な事が出来るのかを知りたいのです。
質問です。
ACCESS 2000です。
レポートにWordArtを使用しているのですが、
「挿入」「オブジェクト」の中に [WordArt 3.2]が存在しないPC
と存在するPCがあります。
存在しないPCのOfficeUpdateも全て行ったつもりですが
[WordArt 3.2]がありません。
どうすれば、使用可能になるのか教えて下さい。
よろしくお願いします。
386名無しさん@そうだ選挙にいこう:04/03/18 11:22
>>360
それ、ぜんスレACCESS総合相談所 その9あたりで
えんえんと、やっちょったぞ。


9はログがhtml化されてないんじゃねぇの?
388はたけっち:04/03/18 18:33
ACCESS2000で1つのレポートを複数のプリンタ(端末に設定されている分)から選択し
出力したいのですが? 良い方法を教えてください。
>>385
すれ違いだが教えてあげる。

Office Updateしようがしまいが、そもそもWordArt 3.2はそんなもので
手に入ることは絶対にない。
>>384
ttp://www5d.biglobe.ne.jp/~ac2000/index.html

ここあたりはどうだ?
ACCESS97で作られたソフトを使っていたのですが、
いきなりデータが開けなくなってしまいJetcompなるものを試してみようと思ったのですが
復元中にユーザ名とパスワードの入力を求められるのですが、
ここにはなにを入力したら良いのでしょう?

ソフトを作った会社はすでに倒産しているし、原因を突き止めようと上司にどんな操作をしたか
聞いても、俺は何もやってない!の一点張りで…別に責めているわけじゃないのに(+_+

それと、なにかデータを復元するための知恵がありましたらお貸しくださいませ
392名無しさん@そうだ選挙にいこう:04/03/19 10:40
Access2000で教えて下さい。
複数選択可のリストボックスの選択をVBAから全解除したいのですが
どうすればよいのでしょうか?
複数選択不可の場合は
Me.リストボックス名=Null
でいけるのですが、ヘルプを見たら複数選択可の場合は
コントロールの値は常にNullだと書いてあり困ってしまいました。
よろしくお願いします。
393名無しさん@そうだ選挙にいこう:04/03/19 12:58
すいませんアクセス初心者なんですが質問させてください。
請求書を作成するためのファイルをつくってまして
一つのテーブルの中に
単価、数量、単価2、数量2,単価3、数量3
というふうにフィールドがあります。
そして、クエリをつくって合計:単価*数量、合計2:単価2*数量2、合計3:単価3*数量3
というふうに計算させて
さらに総合計:合計+合計2+合計3
という計算をさせたいのですが、この計算結果が表示されません。
どういうふうにしたらクエリの中で総合計を計算させることができるのでしょうか?
>>392
For Each.... と ItemsSelected プロパティを使ってループし
SelectedプロパティをFalseにする。

>>393
むしろどういう風に書いたら出来なかったのか。
普通に書いたらできたけど。
>>393
どうだめなのか書いてないから当てずっぽうで
空の明細があってNullの足し算してるんじゃないかと推測して
総合計:NZ(合計)+NZ(合計2)+NZ(合計3)
とかでどう?
あと、そのテーブルって融通きかなそう
396392:04/03/19 16:52
>>394
ありがとうございます。
事務所に帰ったらやってみます。
397393:04/03/19 17:39
ありがとうございます。
NZで解決しました。
くわしくかかなくてすいません。
空のデータがあるときに合計がされなかったんです。
どのあたりが融通きかなそうでしょうか?
もっと良い形があったら教えていただきたいのですが。
398395:04/03/19 19:01
>>397
>どのあたりが融通きかなそうでしょうか?

請求書に4明細以上載せるように仕様変更するときとか
商品ごとの売れ数の集計を取りたいときとか多分困る。

397氏が何屋さんか知らないのでこの通り作ればOKとはいかないけど

売上テーブル ID、請求書NO、商品CD、数量、金額
商品テーブル ID、商品名、単価
請求書テーブル 請求書NO、顧客CD
顧客テーブル 顧客CD、顧客名、その他必要事項があれば(住所、TELなど)

フォーム・レポートはメインに請求書テーブルを元に、
サブに売上テーブルを元にしたクエリをソースにする。請求書NOでリンク。
入力時に商品コードと数量が入った時点で金額に単価*数量を入れてやる(マクロでいい)。

なんていうのを参考にしてくだちい。
ちなみに目的が「請求書を作成するため」だったらExcelの方がうんと楽。
そうじゃなくて「当座は請求書が出ればいいけどその先にもっとしたいことがある」
というのでなければ、わざわざ手間をかけてAccessを使わなくてもいいと思う。
前者なら無理するな、後者ならがんがれ。

399名無しさん@そうだ選挙にいこう:04/03/19 21:30
すみません、今ACCESSについてネットで調べ事してて、

ttp://www2.moug.net/app/bbs/message.php?cat=b_acopr&id=20040318-000017

のページが自分のやりたいことそのままだったのですが、
全然できません。
本当にできるのでしょうか?

Win2000 AC2000です。
400384:04/03/20 01:15
>>390
ご紹介ありがとうございました。
勉強してみます。
>>399
その掲示板で本人に訊けば。

っていうかモーグで嘘教えてたら誰か他の奴が
「ダウト」って言ってくるはずだから出来るんじゃねーの
402名無しさん@そうだ選挙にいこう:04/03/20 04:05
?? ???, ??? ???? 4? ???? ?? ??

?? (???) - ?? ???? 26?, ?? ?? ??? ??? 4??
??? ???? ?? ??? ???????? ??? ?? ???
???? ??? ???? ?? ??? ??? ??? ????.

?? ?? ??? ?? ??? ??? ?? ?? 4?? ?? 10?
??? ??? ??? 9?? ????? ??? ??? ??? ???
???? ?? ??? ?????.
403名無しさん@そうだ選挙にいこう:04/03/20 04:58
【.  目 的  】 2つのクロス集計と1つのテーブルから追加クエリを実行したい
【.  条 件  】 Win98、WinXP、Access2000
■試したけどうまくいかなかった処理
【. 概  要  】
Public Function 表作成()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command

Set cn = CurrentProject.Connection
Set cmd.ActiveConnection = cn

cmd.CommandText = INSERT INTO W_表作成 ( txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8 )" & _
"SELECT QRY_クロス集計1.*, TB_全体.txt1, TB_全体.txt2, TB_全体.txt3, TB_全体.txt4, TB_全体.txt5, TB_全体.txt6, TB_全体.txt7, クロス集計2.txt7, クロス集計2.*" & _
"FROM ((TB_全体 INNER JOIN QRY クロス集計1 ON TB_全体.ID=QRY_クロス集計1.ID) INNER JOIN クロス集計2 ON TB_全体.ID=相談形態月別集計.ID2) INNER JOIN QRY_集計2用 ON クロス集計2.ID2=QRY_集計2用.ID2;"

Set rs = cmd.Execute

End Function

・”call 表作成”でTB_全体というテーブルとクロス集計1・クロス集計2というクロス集計クエリからW_表作成というテーブルに追加したいのですが・・・。
404403:04/03/20 04:59
【駄目な理由】 (動作状況など)
端末によってエラーがでます。
自分のPCやいくつかのPCで動作確認をしたのですが、知人のPCではエラーがでたらしいです。
エラーは実行時エラー 3127とかいうものらしいです。
参照設定は動作確認ができたものと同じ設定になってます。
■これだけはやりました
>>1を読んだ】 はい・いいえ (読まない人が多いので必ず目を通してください)
はい
【Googleで調べた】 はい・いいえ (大概の疑問は検索することで解決します)
はい
【検索キーワードは?】
実行時エラー&3127 
insert into
405403:04/03/20 05:05
コードは実際のフィールド名等だとまずいのですこし改変してます。
動作確認がとれているので、コードの問題でもないとは思うですが。

いま考えられる点でアクセスのバージョンがSR-1であるかないかの違いが
あるので、アップデートを試してもらうつもりです。
そのほかに何か原因が考えられますでしょうか。

ちなみに動作確認のとれたPCはアクセスをよく使う人が使用しているもので
とエラーのでるPCではアクセスを滅多に使ってないらしいです。
一応ともにフルインストールしています。

原因が分かる方がおられましたら、よろしくお願いします。
>>399
ってか、別に何もしてないんだな・・
無理だろそれじゃ。
>>389
スレ違いとは、どこで聞けばいいのですか?
教えてあげるというなら、できる方法を教えて下さい。
まさか、オフィス95を入れろが答え???
>>407
389ではないが、マルチには教えてやらん。
>>408
しらん奴はだまっとれ
410408:04/03/20 17:49
>>409
MYさん、すいませんでした。
411名無しさん@そうだ選挙にいこう:04/03/20 19:33
質問です

Accessの日付入力で楽をするために、
日付を入力部分をコンボボックスにし、
選択するときに、1ヶ月分のカレンダーを表示させ、
キーボードを使わずに入力できたらいいなと思っていますが
そんなことできるのでしょうか?
できるとするならば、やり方を教えてください。

よろしくお願いします
412名無しさん@そうだ選挙にいこう:04/03/21 12:52
とりあえずupしとくわ
413名無しさん@そうだ選挙にいこう:04/03/22 00:52
質問ですが、アクセスで、エクセルのリストファイルを
リンクする時、絶対パスになってしまうので、
アクセスとエクセルのファイルの置き場が同じであっても、
その2つが入っているフォルダー自体を別の場所に移すと、
リンクが切れてしまう。
そこで、リンクする時、相対パスで、アクセスに覚えさす。と言う事は
出来ませんか?
>>411
そんな貴方にDTPickerコントロールを
ttp://www.microsoft.com/japan/developer/library/VBCon98/vbconusingdatetimepickercontrol.htm

>>413
リンクはAccessファイル同士でも絶対パスのはず。
実行させたらカレントパスでファイルを探してリンク更新する
プログラムを書くとか?
415名無しさん@そうだ選挙にいこう:04/03/22 19:34
すごく単純な質問かもしれませんが
テーブルの「数値型」を使用している場合、
ハイフンとかアンダーバーも使用することはできないのでしょうか?
>>415
なぜすぐに試せる事を質問するんだろう....

ハイフンはマイナス記号として先頭にある時のみ可能
アンダーバーは数値に関係ない文字だから無理
カレンダーコントロールは、マウスでしか入力できないのでしょうか?
キーボードで入力したいのですが・・・・
(マルチでごめん)

418名無しさん@そうだ選挙にいこう:04/03/23 00:10
>414

Accessでも当然、DTPickerコントロールって使用できるんですよね?
だから試せばすぐわかる事をなぜ質問するかなぁ

>>417
キーボードからでも入力できるし、コンボボックスと同じで
Ctrl+下矢印でカレンダーを出して、カーソルキーでの日付選択も可能。

>>418
使えるから書いてるわけだが。
ツールボックスから「コントロールの選択」で後は一覧で出てくる
OCX/ActiveXの中から「Microsoft Date And Time Picker」を選択
420417:04/03/23 15:57
>>419
カーソルキー日付を選択できても、Enterキーで入力できない。
いちいちマウス使って入力するのがめんどうなもんで・・・
>>420
| カーソルキー日付を選択できても、Enterキーで入力できない。

「Enterキーで入力」はどうゆう意味?
カーソルで選んで、日付決定はEnterキーだよね?
それではなく?

それともEnterキーをもう1回押さないと次のコントロールに
移動しないこと?
422420 :04/03/23 21:17
>>421
>カーソルキー日付を選択できても、Enterキーで入力できない。
すみません「で」が抜けてました。
カーソルキーで日付を選択できても、Enterキーで入力できない。

>カーソルで選んで、日付決定はEnterキーだよね?
>それではなく?
その通りにやりたいけど、Enterキーで決定ができないんだけど・・・
Enter押してもフィールドに入力されないのは、設定がわるいのか?
教えてください。
二つのテーブルに情報を入れてAccessを使っています。
Aというテーブルには現在生産されている車の問い合わせ受付を
Bというテーブルには生産が終了してしまった車の問い合わせを
それぞれ入れて使っています。
それぞれのテーブルのフィールドには受付日や車種、完了日などが書かれています。

月末になると何件問い合わせが来たかを集計しなければならないのですが
クエリの抽出条件を使って(日付のフィールドにBetween [ ]And [ ])集計しようと
思っているのですが、テーブルが1個だけの場合はうまく良くのですが
2個になると同じデータが3個くらい出てきたりして上手くいきません。

抽出クエリを使い2つのテーブルから条件にあったデータを抽出は出来ないのでしょうか?

またもっと効率のいい方法があれば教えてください

使用環境はWin2K+Access2000です。
よろしくお願いいたします。


>>423
テーブルを一つにする。
>>418
俺は思いっきり使っているけど?

カレンダーコントロールよりも使いやすいから使っているしね。
それに大体のコンピュータにこのコントロール最初から入って
いるしね。最近のは。

他にもVBのActiveXモジュール結構使っている。
どちらにせよインストーラを使わせる予定なのでこれでもいい
のだよ。インストーラである程度の登録処理させちゃうから
>>422
| >カーソルで選んで、日付決定はEnterキーだよね?
| >それではなく?
| その通りにやりたいけど、Enterキーで決定ができないんだけど・・・

あれ、うちはEnterキーで決定ですよ。
プロパティは何も変えずに。

>>423
>>424さんが言うとおり、フラグを1つ増やしてテーブルを
1つにした方がいいのでは?
もし無理ならUnion(Union Allではなく)を使って結合。
427名無しさん@そうだ選挙にいこう:04/03/23 23:44
>425

カレンダーだけのフォームを作り、
日付をダブルクリックすればテキストに値を代入させようと思っていますが
メインフォームにはすんなり入りますが
サブフォームに入れようとするとうまくいきません。

サブフォームに値を代入するための
基本的な式を教えて頂きたいです。
428423:04/03/24 00:07
やはり1つのテーブルに結合したほうがてっとり早いのですね。
>>426さん、>>424さんアドバイスありがとうございました。
>>423
あなたはテーブルの正規化の基本がなっていない
年休取得状況の集計をしています。
テーブルのフィールド構成は
社員コード、年度、本年発生、次年度繰越です。
クエリで計算フィールド”前年繰越”に同一社員の前年度レコードの
次年度繰越の値を持って来たいのですがうまくいきません。
前年繰越:DLOOKUP("次年度繰越","年休tbl","[社員コード]=[社員コード] and [年度]=[年度]-1")
とやってみましたが駄目でした。
条件を色々変えて調べたらWhere式の左辺と右辺が同じレコードを見ている様です。
テーブルにフィールドを作ってADOで値を入れようかとも思いましたが
どのタイミングでVBAを走らせればよいのかわかりません。
目的が達成されれば手段は問いませんので解決策を教えて下さい。
ACCESSのバージョンは2000、OSは98SEです。
431名無しさん@そうだ選挙にいこう:04/03/24 11:00
age忘れ
432430:04/03/24 11:21
自己解決しました。右辺を「" & & "」で囲めばよかったんですね。
スレ汚しのお詫びに解決法のURL貼っておきます。失礼しました。
http://support.microsoft.com/default.aspx?scid=/directory/worldwide/ja/kblight/T008/6/02.asp
433名無しさん@そうだ選挙にいこう:04/03/24 14:00
ずいぶんと考えているのですが、どうも分かりません。助けてください。
↓のような全く同じ構造のテーブルがあります。

テーブルA                      
ID テキストフィールド チェックフィールド   
1  AAA       False          
2  BBB       False          
3  CCC       False           

テーブルB
ID テキストフィールド チェックフィールド
1  ddd       False
2  eee       True
3  fff       False

この2つのテーブルを結合し↓のように

ID テキストフィールド チェックフィールド
1  AAA        False        
2  eee        True       
3  CCC        False  

通常はテーブルAのレコードを返し
テーブルBのチェックフィールドがTrueの場合のみテーブルBのレコードを返したいのです。
宜しくお願いします。
>>433
SELECT テーブルA.*
FROM テーブルA INNER JOIN テーブルB ON テーブルA.ID = テーブルB.ID
WHERE テーブルB.チェックフィールド = False
UNION ALL SELECT *
FROM テーブルB
WHERE テーブルB.チェックフィールド = True
ORDER BY ID;
435433:04/03/24 15:06
>434
ありがとうございます。
SQL文みると、そうかなるほど!と思うのですけど・・・・
最初にUNIONしてからという考えが頭から離れませんでした><
勉強になりました。
>>435
ですね
437名無しさん@そうだ選挙にいこう:04/03/31 13:17
「Access DE 名刺管理 2003」と言うソフトを使っているのですが毎回起動時に

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
セキュリティ警告: 安全でない式がブロックされていません。


安全でない式をブロックするには、Microsoft Jet 4.0 Service Pack 8 以降がインストールされている必要があります。最新のバージョンの Jet 4.0 を入手するには http://windowsupdate.microsoft.com に移動してください。

お使いのコンピュータに意図的に損害を与える式が 'C:\AccessDE2003\adMeishiSys2003.mde' に含まれている場合、ファイルを開くのは安全でない可能性があります。このファイルを開きますか?

一般の機能に影響を与えることなく、安全でない式をブロックするには、Microsoft Jet 4.0 Service Pack 8 以降のバージョンがインストールされている必要があります。
最新の Microsoft Jet 4.0 Service Pack は Windows Update から利用できます。
安全でない式をブロックするには、このトピックの一番下にあるリンクからヘルプの 「Jet Expression Service のサンドボックス モードについて」 を参照してください。
Service Pack が適用されない場合は、以下の問題が起こる可能性があります:
ウィザードとビルダを開始できない。
メニュー用フォーム ビルダ でのメニューの作成に失敗する。
Visual Basic for Applications (VBA) プロシージャを呼び出す "RunCode/プロシージャの実行" マクロ アクションが失敗する。
VBA プロシージャを呼び出すイベント ハンドラが失敗する。
プロパティ シートから呼び出される、または SQL ステートメントで使用される VBA プロシージャが失敗する。
ハイパーリンク フィールドのフィルタが失敗する。
プロパティ シートまたは SQL ステートメントから呼び出されるいくつかの VBA 関数が失敗する。
このエラー メッセージに関するオンライン詳細情報

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

と言うメッセージが出てきます。
これを出なくさせたいのですが、どうすればよいでしょうか?

Accses2003です。
>>437
うちの会社で2000で使ってたものを2003で使おうとしたら同じメッセージが出た。
出なくするだけだったら
ツール>マクロ>セキュリティ
でセキュリティレベルを「低」にすればOKだけど
それでどんな不都合が起きるかは分らない。
うちの場合は社員が作ったmdbだったのでそれで解決だったけど
>>437
「Microsoft Jet 4.0 Service Pack 8」をWindows Updateでも
使って入れれば良いだけちゃうんかと。
440名無しさん@そうだ選挙にいこう:04/03/31 18:07
>>438 439
ありがとうございます。
441名無しさん@そうだ選挙にいこう:04/03/31 18:48
初カキコっス。

クエリの結果を、「固定長テキストデータ」として
マクロでエクスポートしたいんですが、
アクション「テキスト変換」の
引数「定義名」に何を指定すればいいのかわかりません。

1.「定義名」の目的と機能
2.どういった形なのか(ファイル?なら拡張子は?)
3.作成方法

をどなたかご教授を。
ヘルプ、ネットで調べましたが
解決方法を見つけられませんでした。

ちなみに、固定長テキストデータについては
メニューバーの
ファイル−エクスポート、
からでは実行出来ませんよね。
442 :04/04/04 16:57
アクセスで画像データを扱いたいのですが、
画像ファイルをリンクするとデータベースファイルが巨大になってしまいます。
設定の方法が間違っていますか?方法があれば、教えてください。
〔状況〕
 1.ビットマップの状態でデータが保存されているようである。(1データ数十MB)
 2.テーブルでOLEオブジェクト宣言した。
 3.フォーム(またはテーブル)でフォルダー上のJPEGファイルを直接リンクした。
 4.Access2000を使っている。
〔行いたいこと〕
 1.200万画素程度のJPEGデータを扱いたい。
 2.フォームを作成し、そこから画像ファイルを指定したい。
 3.リンクができなければ、圧縮状態で埋め込みしたい。
443名無しさん@そうだ選挙にいこう:04/04/04 19:38
>>441
固定長テキストデータのインポート定義の作成はわっかっているかな?
エクスポートの定義は、インポートの定義をそのまま使って、
ファイルとテーブルを入れ替えればいいだけだけど。
インポート定義がわからなければ、また説明するよ。
>>442
普通埋め込みだからこそデータベースが巨大化するならわかるが、リンク
で巨大化するようなことはない。

どういう作り方しているんだ?
俺はこういう作り方をしている
http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20040404204603083.jpg

特定のimgディレクトリ内のイメージをリンクさせている。埋め込みなしでストレッチ。
jpgであり、パスはそれ専用のレコードを使い実現している。

とりあえずjpg扱いたいといっているのに圧縮って....
445名無しさん@そうだ選挙にいこう:04/04/05 17:18
いま、レポート印刷を実行すると、ID1〜10まで全て印刷されてしまうのですが、
1ページにID1のやつだけを印刷する方法ありませんか?
446名無しさん@そうだ選挙にいこう:04/04/05 23:17
質問です。

世帯番号,氏名,年齢区分,金額の順にフィールドを持つテーブルで、
1,Aさん,一般,1000
1,Bさん,高齢,500
1,Cさん,高齢,300
2,Dさん,高齢,700
3,Eさん,一般,800
4,Fさん,高齢,600
4,Gさん,高齢,200
……
のようなデータになっています。

これを「高齢と一般が混在している世帯」の年齢別金額内訳を抜粋したいのですが、
(上記の例だと、高齢800、一般1000)
どのような方法があるか御教示下さい。
Win2000、Access2000を使用しています。
>>446
SELECT 世帯番号, 年齢区分, Sum(金額) AS 年齢別金額
FROM テーブル名
GROUP BY 世帯番号, 年齢区分
ORDER BY 世帯番号, 年齢区分;
「高齢」と「一般」の両方を含む世帯の番号は、

SELECT 世帯番号 FROM テーブル
WHERE 世帯番号 IN (SELECT 世帯番号 FROM テーブル WHERE 年齢区分='高齢')
AND 世帯番号 IN (SELECT 世帯番号 FROM テーブル WHERE 年齢区分='一般')

で検索できるから、

SELECT sum(金額) FROM テーブル WHERE 世帯番号 IN (↑) AND 年齢区分='高齢'
SELECT sum(金額) FROM テーブル WHERE 世帯番号 IN (↑) AND 年齢区分='一般'
449名無しさん@そうだ選挙にいこう:04/04/06 19:34
日付を簡単に入力するために、
コンボボックスで1ヶ月分のカレンダーを表示して
ダブルクリックでテキストボックスに日付を自動挿入させようと
思っているのですが、何かよい方法はないでしょうか?

ActiveXのDTPickerを使ってみたのですが
日付がなしのデータに移動すると
Nullはダメだというエラーが返ってきて
うまくいきませんでした。
どうか、いい案をお願いします
450名無しさん@そうだ選挙にいこう:04/04/06 23:34
>>447-448
多謝!
やってみます。
451名無しさん@そうだ選挙にいこう:04/04/07 08:04
スポット的に取引を持った会社の品目などを管理するデーターベースを作っています。
たとえば、3ヶ月前の取引データーを管理ID、日付以外全てコピーして
再度起伝する機能を付けたいのですが、お知恵を拝借して宜しいでしょうか。
T_Main(メインテーブル。 ID,会社名,振込口座,担当者,取引条件,)
T_Sub(メインとIDでリレーションさせた商品目用テーブル。品名,金額)
Q_Search(検索用クエリ。フォームから検索単語を読んでLike検索)
F_SearchLIST(検索用クエリで呼んだデーターを表形式で表示するだけ)
F_ADDNEW(新規レコード追加用フォーム)
と、こんな感じになっています。
F_SearchLISTの各レコードにボタンをくっつけて、そこを押したら
その各データー(社名など)をF_AddNEWにとばす・・・というような
事をしたいのです。 テンポラリテーブルへ追加クエリでデーターを
飛ばして、そこからMe.***=Table![***]てな感じが出来れば良いですが、
もし、より良い方法があれば教えて下さい。

また、既存のデーターは紙になっており各事業書毎に連番が振られています。
この番号も自動で振りたいのですが、例えば
メインテーブルに[事業所]フィールドを作って「本社」「京都」とかの
データーを突っ込んで、その数をカウントさせれば事業所毎の連番を
自動で振ることが出来るかなと思うのですが可能でしょうか?
既存のデーター数は恐らく3000位。年間1000位これから増加すると思います。
>>451
前半は解読する気がしないのでパス
後半はDCountで可。
=DCount("*","T_Main","事業所=本社")
牡蠣のようなレコードを出力を求めています。クエリでも構いません

ある一連のレコードがテーブルに格納されているのですが、これら
の例えば数量、消費税、金額、税込み金額の部分だけを合計した1レコード
を作りたいのです。

ただ商品番号(ポス管理用)と単価は合計しないで
ID | 商品ID | 商品番号 | 数量 | 単価 | 金額 | 消費税 | 税込み金額
と1レコードに集計したいのです。

各商品ごとに抽出後それをまとめ、一定期間(指定)の集計を行ったも
のをクエリか何かで出したいのですが、どうしたらよいでしょうか?
>>453
| 牡蠣のようなレコードを出力を求めています。
硬そうな出力ですな。(w

さて、普通にSum関数とGroup By句でできないか?
単価はAccessならFirst関数か何かでいけるはず。

ここで聞いていい内容かハッキリしないんですが、助言をお願いします。

目的は、Websiteのログイン情報とかをAcccessでまとめていきたいと思うんですけど、
デザイン(と言えばいいの?)の段階で悩んでます。

ユーザーIDとPWの他にも自分が登録した情報の詳細まで記録したく考え、
でも、そういった自分の情報って基本的には同じ内容だから、
毎回入力するのでなく、他のテーブルから参照するのが効率的と思いましたが、
【あるサイトでは、登録の際に「誕生日やアパートまでほぼすべての情報」を登録したけど、
別のあるサイトでは、「誕生日と郵便番号のみ」しか登録していない。】
ってことに気づいて、テーブルの作り方に困っています。
メモ型のフィールの作って項目毎に、それぞれ登録した情報を書き込むのはなんかスマートじゃないし、
やっぱり他から参照したい、そうすればその「自分の情報」テーブルを、
Websiteログイン以外のテーブルからも参照できるって理想のみ前進しちゃって…。

下手糞な文章で、分かり難くてすいませんが、なにかアドバイスお願いします。
↑のものです。
とりあえず、いまは下の形で作ってみています。

<Websites>
<autoNumber>5</autoNumber_>
<category>Portal</category>
<Description>Yahoo! JAPAN</Description>
<URL>http://www.yahoo.co.jp/</URL>
<label1>Yahoo!Japan ID</Label_x0020_1>
<data1>hoge69</data1>
<label2>パスワード</label2>
<data2>hogehoge</data2>
<label3>秘密の質問</label3>
<data3>母親の旧姓?</data3>
<label4>秘密の答え</label4>
<data4>綾小路</data4>
<label5></label5>
<data5></data5>
<regEmail>[email protected]</regEmail>
<regName>西園寺 ぴろゆき</regName>
<regAddress>111-1111 日本</regAddress>
<regInfo>誕生日1874/12/31</regInfo>
</Websites>

とかいう形までは考えたんですが。。。
(サイトによって必要な情報名(ユーザIDだったりログインネームだったり、
OnlineBankingなら口座番号・支店番号・Web用PW)だったり色々異なるんで、
固定のフィールド名でなく、そのつど入力するようにしてみました。)
457名無しさん@そうだ選挙にいこう:04/04/11 19:20
Accessのアプリケーション内で、モジュールをまたいで共通に使える
変数ってどこかで定義できます?
あるフォームに入っているいくつかの値をそのまま
別のフォームへ突っ込みたいのです。
>>457
標準モジュールの宣言セクション。
区別するためにPublicつけることを推奨。

ただ、フォームの内容は
Forms!(フォーム名)!(コントロール名)
等で直接参照・設定できるわけだが、わざわざ変数に格納する意味があるのかしらん?
459名無しさん@そうだ選挙にいこう :04/04/12 13:03
名前の色と、本文の文字色、変える方法
教えてくれませんか、レス違いですが。
460名無しさん@そうだ選挙にいこう:04/04/12 13:33
>>458
有り難う御座います。
実はサブフォームの中の値も一緒にぶち込みたかったのですが、
よく考えてみたらやっぱり変数に格納する意味ないですよね・・・

要するに過去の伝票(メインフォームで社名など、サブフォームで品名等)
からのデーターで新しい伝票を起こしたいのですが、うまいこと出来ない
ものでしょうか。
461名無しさん@そうだ選挙にいこう:04/04/13 22:30
>>459
>>460
エスパーじゃないのは、俺だけじゃないみたいだな。
>>459
FormのTextBoxのプロパティ『前景色』の変更なんてレベルの質問じゃないよな?
>>460
ADOやDAOのRecordset使えれば簡単だけど
もそっと解り易く書かないと、答え様が無いぞよ!!
462名無しさん@そうだ選挙にいこう :04/04/14 01:49
459です ↑このスレの名前の色と、この本文の色のことです。
すみません。
463名無しさん@そうだ選挙にいこう:04/04/14 07:04
>>462
ブラウザーが何か判らないが、IE5.5だと、ダメみたいファイルを保存してからで良ければ
HTMLのソースを書き換えれば良い。
スレ違い所か板違い。気をつけようね!!
>>462
『名無しさん@そうだ選挙にいこう』の部分だったらE-mailにsageかmalito.sageと
書くと良い。
465名無しさん@そうだ選挙にいこう:04/04/14 08:55
>>463 464さん
どうもありがとうございました。
466名無しさん@そうだ選挙にいこう:04/04/14 11:49
access 逆 コンパイル でググって
漏れのHPを見にきたヤシ
そんなツールおいてないぞ。。あれば欲しいし(w
467467_01:04/04/14 12:58
OSはWindows2000、ソフトはACCESS97です。
(会社で使用しているため、他のOS、他のソフトには変えることができません)

運用.MDBと履歴.MDBがあります。

下記構文は運用.MDB内に書かれています。
  Dim DBS As Database
  Dim rs As Recordset
  Dim qdf As QueryDef
  Dim strSQL As String
  '
  Set DBS = CurrentDb
  '
  strSQL = "SELECT テーブル1.* FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.番号 = テーブル2.番号;"
  Set qdf = DBS.CreateQueryDef("", strSQL)
  qdf.ODBCTimeout = 400
  Set rs = qdf.OpenRecordset()

として、OpenRecordsetしたあと、
rsの中身を実行の年月日時分秒のテーブル名で履歴.MDBにテーブル作成させてやりたいのですが、
どのように記述すればよろしいでしょうか.
468467_02:04/04/14 12:59
簡単な方法としては、
まずSELECT構文の中身を運用.MDBの中でテーブル作成してやり、
それを履歴.MDBにコピーしてから、
作ったテーブルをOpenRecordsetしてやれば
思ったことができるとは思うのですが、
テーブルを運用.MDBの中に作ると、
無駄にファイルサイズが大きくなってしまいます。

かといって、テーブル作成と、OpenRecordsetを別々にすると、
2倍の時間がかかる(ひとつ処理あたり10分ちょっと)になってしまい、
実用的ではないので…。

Recordsetの中身をテーブルに落とす方法はないものでしょうか。
まったくできようも無いというのであれば、
別方法を考えますので、もしできるという識者がおられれば、
その手法をご教授願いたく思います.
アクセスにずっとためてたデータを見ようとしたら、ものの数十件
しかデータテーブルがでてこない。数百件のデータが帳票で保存さ
れてるはずなのに。
アクセスファイル自体のサイズは以前のまま(3M近い)なのでど
こかにあると思うんですが・・
>>469
間違えて削除しちゃったんじゃないの ?
データベースってレコード削除してもファイルサイズは小さくならないよ。
今の .mdb をバックアップしてから、最適化してみな。
471名無しさん@そうだ選挙にいこう:04/04/15 15:02
【.  目 的  】 だぶりデータの消去
【.  条 件  】 OS:XP Home  アクセス:2003
【. 概  要  】
現在の使い方としては、テーブルにtxtデータを取り込み、
クエリで抽出してるくらいです。

お店の顧客管理にアクセスを使ってるのですが、
同じテーブルに同じ人物が2件や3件入ってることがあります。

なんとかだぶってる件数の数を出すまではクエリで出せますが、
その出したデータを手作業で直すしか出来ません。

数が数万件と多いため、手作業では限度があるのですが、
これを「だぶってるデータは1件残して削除」したいのです。

こういった機能はアクセスにあるのでしょうか?
472467_02:04/04/15 18:33
>>471
集計クエリーを使って2件以上ある情報のみ抽出し、
あとはモジュールからループ処理で削除して回ります。
>>471 HELP嫁
DISTINCT 述語 選択したフィールドの中でデータが重複しているレコードを除外します。

SQLもVBAも使えないなら、
元テーブル→[集計クエリ]→ワークテーブル で、だぶりを除外し、
ワークテーブル→元テーブル(上書き)
474名無しさん@そうだ選挙にいこう:04/04/16 17:49
フォーム上で、新規レコードへ飛ばした後にレコードの移動を禁止して
スクロールボタンであさってのレコードが出てくるのを防ぎたいのですが、
方法ありますでしょうか。
475名無しさん@そうだ選挙にいこう:04/04/17 05:14
WinXP ACCESS2000

3列、200行ほどのデータシート形式(帳票)のフォームを作成しています。全て記入した後にテーブルに追加するようにしたいです。
ただ、内容は、前にそのフォームで行った追加データと似てる部分が
多い(レコード数は毎回一緒になる)ので、フォームをオープンしたらまず
クエリで以前のデータを取得して、そのデータをあらかじめフォームに代入させておきたいのです。

そこで、ADOレコードセットへSQLで以前のデータを取得し、そのレコードを別に作ったローカルのレコードセット(?)
へ全て代入して、そのレコードセットをフォームのレコードセットにセットしようと思いました。
-この時点で間違えてそうなのですが、どうしたらよいのかわからないのです(><)-

しかし、この方法だとセットの部分で

実行時エラー7965
"Recordset/レコードセット"プロパティの設定に、そのオブジェクトはつかえません。

とエラーが出てしまいました。
ヘルプを調べてみると、どうやらフォームのレコードソースにセットするレコードセットは
"レコードセットに含まれるデータの種類 (Jet または SQL)"
をみているようでローカルで作ったレコードセットはセットできないみたいでした。

これをどうにかセットできるようにはならないでしょうか?
又は、そんなことしなくてもこうすればいいのに的ななにかを教えて頂けませんでしょうか。

476475_2:04/04/17 05:15
Set rsModel = New ADODB.Recordset
Set lrs = New ADODB.Recordset
strSQL = "SELECT 台リストコード, 番号, 台コード, 変更日 " & _
"FROM T_台リスト " & _
"WHERE 台リストコード=" & lngBefore & " ;"
rsModel.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly

With lrs
With .Fields
.Append "台リストコード", adBigInt
.Append "番号", adBigInt
.Append "台コード", adBigInt
.Append "変更日", adDate
End With
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With

Call copyFields(rsModel, lrs, 4) ' Aのレコード内容を第3引数のフィールドまで全てBへ代入又は追加

rsModel.close
Set rsModel = Nothing

Set Me.Recordset = lrs < エラー

477名無しさん@そうだ選挙にいこう:04/04/17 09:44
>467
いまいちやりたいことが理解しにくいが
strSQL="INSERT INTO target [(field1[, field2[, 年月日時分秒]])] VALUES (rs!value1[, rs!value2[, now()])"
db.execute strSQL
でデータを追加したいのかな。
478名無しさん@そうだ選挙にいこう:04/04/17 09:47
>>475
元のテーブルから、最新のデータをワークテーブルに送り
ワークテーブルのデータをフォームに表示させて
データの入力がすんだら
ワークテーブルのデータを元のテーブルに送れば
いいんじゃないだろうか。
【.  目 的  】 項目が複数あるテーブル作成したいのです。
【.  条 件  】 OS:XP Pro ,ACCESS2003

【. 概  要  】 項目が1個しかないテーブルは作れるのですが、2個以上あるテーブルが作れません。
【駄目な理由】 デバックは通るのですが、実行するとフィールド定義のエラーとでます。

グーグルで調べたのですがさっぱりで。

すみませんが、ヒントだけでもいただけませんでしょうか。
480479:04/04/17 12:23
すみません。
処理はSQLコマンドで、Create table テーブル名 (あああ CHAR(255))だとOKで
Create table テーブル名 (あああ CHAR(255), いいい CHAR(255))だと上記のエラーが
出るって事です。
>479
VBAで[create table]のSQLを実行するのがうまくいかない、という意味?
問題ない範囲で、該当するコードをここに書けば誰か教えてくれるよ。
482名無しさん@そうだ選挙にいこう:04/04/17 12:32
MS-Accessのマクロでテーブルのデータを入れ替えるのに、いったんSQL文でレコードを削除し、テキストファイルから新しいデータをインポートしているのですが、これだと削除確認ダイアログが出てしまうため、作業を無人化できません。
削除確認ダイアログを出さずにデータを入れ替える方法はないでしょうか?
483479:04/04/17 12:36
>481 有難うございます。
コードを書かせていただきます。
Dim strSQL As New ADODB.Command
strSQL.CommandText = "Create table " & _
worktable & " ( " & _
"aaaa    number ," & _
"bbbb    number ," & _
"cccc   number ," & _
"dddd  number ," & _
"eeee     CHAR(255) ," & _
"ffff CHAR(255) ," & _
"gggg CHAR(255) ," & _
" )"
strSQL.Execute
本当は項目が21あるのですが、長くなるので…。
すみませんが、宜しくお願いします。
484475:04/04/17 14:10
>477
それは追加クエリということですよね?
追加したデータをフォームに連結させて変更する、ということでしょうか?
そうすると、フォームで作業してる途中に異常終了など起こった時に
テーブルにゴミデータが残ってしまいますよね。

以前のデータを取得して、そのままテーブルに追加するのではなく、
そのデータをひな形のようにした帳票フォームで、内容をいろいろ変更して、
最後にテーブルに追加、ということがしたいのですが。
485名無しさん@そうだ選挙にいこう:04/04/17 15:09
列ごとに色を変えられますか?
>483
各項目の型の後に、NULLを許容するかどうかをつけないといけないんじゃない?

"aaaa    number not null ," & _
"bbbb    number not null," & _
"cccc   number not null," & _
"dddd  number not null," & _
"eeee     CHAR(255) null ," & _
"ffff CHAR(255) null," & _
"gggg CHAR(255) null," & _

みたいに。これはSQLサーバの感覚だから外してるかもしれないけど。
>482
それはFAQに近いと思う
もう一度>>1を読んでみてね
>484
作業用テーブルを用意して、それに以前のデータを突っ込んで、
フォームに出して編集させて、更新時に本番テーブルに一括挿入で
いけるんじゃないですか
>485
>>1を読んでね
490475:04/04/17 16:17
>484
うわ。大変失礼なことをしました。>477さんのレスを自分へのものと勘違いしたレスです。
申し訳ございません。

しかもそのため>478さんが自分にレスして頂いていることに気付きませんでした。すいません。

>ワークテーブル・作業用テーブル
実は、自分データベースというもの今回初めてなので、概念をすでに間違えているのかもしれません。
今はテストで、スタンドアロンでやりとりしているのですが、将来的に
フロントエンドとバックエンドを切り離すことを想定しています。
バックエンドにはインターネット又はLAN経由でアクセスする形です。

フロントエンド側のフォームのワークテーブルとは、毎回テーブル作成クエリなどで
バックエンドにテーブルを作り、そこを基に作業して、追加した後テーブルを削除、
という形になるのでしょうか?
調べている時にそのようなものを見つけたのですが、効率が良くなさそうと思い、
メモリで行えるRecordsetオブジェクトをフォームに使用できないか、と思ったのです。

もし、無理なようでしたら教えて頂いた方法を利用させて頂きます。
ご教示ありがとうございました。
491479:04/04/17 16:23
>486さんの言うとおりにしてみたのですが、結果は一緒でした><
NULL条件がいるなんて気にしてなかったのは確かです。SQLサーバの影響を受けすぎかなぁ。

これじゃない?ってのがありましたらまた教えていただけませんでしょうか。
宜しくお願いします。
492485:04/04/17 18:06
>>489
2000です。すみません。
>479

> "gggg CHAR(255) ," & _
この行の最後のコンマを取ったらどう?
494名無しさん@そうだ選挙にいこう:04/04/19 20:31
ACCESSもパソコンも素人ですが、よろしくお願いします。

あるフォルダに入れた、CSVデータ(同じフォーマットでヘッダ無し)を
全部、一気に、ACCESS内のテーブルに追加インポート(?)する
方法はないでしょうか?

データはyyyymmdd.csvという名前で約1100個ぐらいあります。
手でやると、何件かが漏れそうで、しかもチェックも自信がないので
自動でできればいいのですが・・
495名無し:04/04/20 00:13
質問です。
たとえば、AというテーブルとBというテーブルの2つの
テーブルのレコードを、1つのテキストにエクスポートする方法は
ないですか?
excelではたとえば
A1に100と入力すればB1に=A1*1.05としとけば
105と計算してくれるじゃない

accessのテーブルでそれをするにはどうしたらよいでしょう
デザインビューのどこをどういじればよいでしょうか
497名無しさん@そうだ選挙にいこう:04/04/20 08:52
VBAでマウスのスクロールボタンを禁止する事って出来ないでしょうか・・・
498467_02:04/04/20 09:32
>>495
ひとつのテキストにエクスポートできるということは、二つは似たような構成なんだよね?
なら、ユニオンクエリーを作り、エクスポートモジュールを書く。
499467_02:04/04/20 09:35
>>484
ディレクトリ内のファイルを格納して回るモジュール(ぐぐったら、あります)を利用して、
ファイル名を取得し、ディレクトリ名を取得し、
do
loop
で、インポートして回る。
>>496
accessでは計算結果を表示するのはクエリでやる
(稀にレポートのテキストボックスのコントロールソースに計算式を入ることもある)。
テーブルではしない。
501467_02:04/04/20 09:37
>>496
クエリー*1.05するのは駄目なの?
>>495
クエリ作って、エクスポートの対象にしてみ。
503名無しさん@そうだ選挙にいこう:04/04/20 13:38
【.  目 的  】 処理対象のファイルが使用中かどうか知りたい
【.  条 件  】 WinXP + ACCESS2002
■試したけどうまくいかなかった処理
【. 概  要  】
KILL(削除)したいファイルが使用中かどうかを、Nameプロパティにより判定
している。ローカル・ドライブにあるファイルについては問題ないが、UNIXサーバ
上のファイル群をネットワークドライブとして割り当て、同様にNameプロパティ
により判定させると、使用中でもないのにErr オブジェクトが発動してしまう。
Name myFilename As myFilename
'ファイルが使用中ならエラー発生
If Err.Number Then
Err.Clear
Open_check = 1
Else
Open_check = 0
End If
【■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 VBA/ファイル/使用中/チェック/調べる
504503:04/04/20 13:59
テンプレだけを投げてしまいました。Nameプロパティにこだわるつもりはない
ので、要はこけることなくファイルの使用中かどうかを判定し、KILLしたいの
ですが、うまく行かずに困っています。

よろしくお願いします。
505名無しさん@そうだ選挙にいこう:04/04/20 17:23
【.  目 的  】 自動インポート
【.  条 件  】 (Windows2000、Access2002)

やりたいことは、特定のフォルダにある複数(50程度)のxlsファイルを、インポートしたいのです。
xlsファイル内のバージョンや書式等は統一で、ファイル名が違うだけです。(当然データの内容は違いますが)

これをテーブルに連続して自動的に取り込みたいのですが、なにかいい方法はないでしょうか。

■これだけはやりました
自動 インポート 連続 ACCESS ファイル指定にてgoogle検索

dir *.xls /b >test.csv
として、ファイルリストは取得したのですが、その先が・・・思いつきません。
506496:04/04/20 17:33
レスありがとうございます
キーポイントはクエリですね
いろいろいじってみます
>505
VBA前提だけど、Microsoft Scripting Runtimeを参照設定して、
FileSystemObjectを使ってフォルダ内のファイルを列挙できます。
for each 〜 next でfile名を取得しながら、docmdでワークシート変換
(DoCmd.TransferSpreadsheet)してやればできると思う

>>494さんの場合は、テキスト変換(DoCmd.TransferText)だね
508494:04/04/20 22:40
>>499サン >>507サン
ありがとうございます。
VBA使わないと無理そうですね(´・ω・‘)ショボーン
この機会に勉強しようとおもいます。
509名無しさん@そうだ選挙にいこう:04/04/21 15:49
初歩的質問ですが、教えて下さい。
処理すると「何々をします」とメツセージが出るようになっていますが、
前任者が出ないようセットして居なくなりました。
この表示が出ないとまだ心配なのです。どこにありますか。
「ツール」「オプション」の中にありますか。教えて下さい。
2002です。
>>509
ツール⇒オプション⇒編集/検索の確認にチェックをつけます。
511名無しさん@そうだ選挙にいこう:04/04/22 09:10
>>510さん 509です
ありがとうござしました。
遅くなりました。
2年ぶりにAccess2000を使っているのですが
ヘルプを使うたびに毎回Windowsのインストーラーが出てきて
『選択した機能は現在使用できないネットワークリソースにあります』
などなどメッセージが出てきて、キャンセルを4回ほど押さなければ
いけません。(その後ヘルプは普通に使えます)

昨年、WindowsMeから2000に変えたせいかな?思うのですが
回避する方法はないでしょうか。
>>512
「ヘルプ→アプリケーションの自動修復」をやってみたら?
514名無しさん@そうだ選挙にいこう:04/04/22 19:11
WinXP Access2003を使っています。
表形式フォームでレコード削除をするときに
レコードセレクタをクリックしてdeleteキーではなく
レコードに付けた「削除」というコマンドボタンのクリックで削除したいのですが
スマートな方法を教えてください。

フィールド項目に削除フラグを持っておき、
「削除」クリックで削除フラグをオンにすると同時に削除クエリを走らせて
速攻リクエリとか考えましたがあまりにひどいと思ったので…。

何故そんなことをする必要があるかというと
他のテーブルは削除時には有効フラグをオフにして
ユーザーから見えなくする仕様で
インターフェース上はそれにあわせた方がいいと思ったからです。
よろしくお願いします。
>>514
なんかいまいち言いたいことが理解できねぇ
>514
>フィールド項目に削除フラグを持っておき、
>「削除」クリックで削除フラグをオンにすると同時に削除クエリを走らせて
>速攻リクエリとか考えましたがあまりにひどいと思ったので…。

別にひどくないと思うけど。
あとは、レコード毎にボタン持たせて、クリックイベントで削除するとか。
大して変わらんけど。
517514:04/04/23 13:57
説明がわかりにくくてすみません。
やりたいことはまさに>>516さんの言う
>あとは、レコード毎にボタン持たせて、クリックイベントで削除するとか。
これなんですが、マクロにも「レコードの削除」はないしdocmdはdeleteobjectしかないので
クリック一発で削除する方法を教えて頂ければありがたいです。
条件付き削除クエリ用意すりゃいいじゃん
>>517
クリックイベントではカレントレコードのキー内容を掴めるから、
それをもとにdeleteのSQLを発行する

Dim sSQL as string
sSQL = "delete from [table] where キー = " & me.カレントレコードキー
CurrentDb.Execute sSQL
Me.Requery

※SQL発行は、docmd.RunSQLよりCurrentDb.Execute の方が
※よろしい。docmdは非同期オブジェクトなので。
520514=517:04/04/23 20:11
ありがとうございます。
サクッとスマートにいきました。
感謝です。
521名無しさん@そうだ選挙にいこう:04/04/26 12:04
誰かアドバイスお願いします。

ACCESS2002を使っています。
あまり詳しいことは書けないのでわかりにくくてスミマセン。
各建物に関する情報のDBを作成しています。
■建物:A群
■必要情報:B群
■必要情報の担当者:C群
とありまして、Cの人達にBの情報が入っている状態です。
(B:Cのリレーションシップが多:1になっている)
Cの人達は一人につきB群が複数入っています。

その状態でAの建物ごとに、何の必要情報がいり、
担当者は誰であるといった順番での管理フォームを
作成しようと、A群がメインフォーム、B・Cをサブフォーム
としたものを作成しました。(A:Bは1:多のリレーションシップ)

Bを指定した上で、逆に対象者となるCをコンボボックス
で抽出したいと思い、自分なりに作成を行ったのですが
うまく動作しません。

Bを選択後、Cのコンボボックスには抽出された名前が
出てきますが、その中から選ぶと空欄になってしまいます。
とりあえずやけっぱちで
C欄の更新後処理とフォーカス取得時は再クエリ
サブフォーム自体のレコード移動時にC欄の再クエリ
を設定しています。

サブフォーム故に何か原因があるのかと思い、カキコしました。

考えられる原因があればよろしくおねがいします。
522名無しさん@そうだ選挙にいこう:04/04/26 21:11
入力フォームを開くボタンを作成中です。

違うファイルのフォームを開きたいのですが、フォーム名の指定の時に表示されません。
そこで、ハイパーリンクアドレスでファイルを指定すると、指定ファイル内のフォーム選択・
作成画面は開くのですが、直接フォームを開けることが出来ません。

どのようにすればよいのでしょうか。

初めてアクセスを触るので全くわからなくて落ち着きません。(1時間ほど格闘して駄目でした)

どなたか教えてください。
523522:04/04/26 21:12
申し訳ありません。アクセスは2000で、ウィンドウズはMEです。
まず・・・なぜ違うファイルでなければならないのか?
ひとつのファイルで、メニュー用のフォームと入力用のフォームを
持っている形の方が、開発作業としては数段楽なのだが。
わざわざ難しいことをやる必要はないと思います。
>521
画面遷移的にも、コントロールの使い方的にも、
ユーザにとって非常に分かりづらい作りではないか?

Aを選択

Aの担当者の「選択肢」をCから取得し表示
このとき「すべて」を「選択肢」に含める

選択された担当者に所属するBの「選択肢」を表示
「すべて」が選択されたら全担当者分のBの「選択肢」を表示

選択された必要情報の内容を表示

「選択肢」はコンボもしくはリストボックスで

こんな感じでいかがか
526よろしくどうぞ:04/04/26 23:53
前略
access97 です。excel2000です。
どうしてもsylkファイルをワンクリックでテーブルにインポートしたいのですが、
VBAの記述を教えていただけませんか。
officeのバージョンがちぐはぐなのと初心者なのとでうまくいきません。

527522:04/04/27 00:04
524さん、レスありがとうございます。

実は一つのメニュー用フォームから複数の入力用フォーム(複数ファイル)
を開く必要があるのです。

フォームを開けるには難しい作業が必要となるのでしょうか?
よろしければ教えてください。
>527
>>522の、
>違うファイルのフォームを開きたいのですが、フォーム名の指定の時に表示されません。
という意味が分からないのですが、これはVBAをコーディングするとき、docmd.OpenObject acformの
ときに選択肢として別ファイルのフォーム名が一覧で出てこないという意味でしょうか?
フォーム名の指定の時に表示されないという意味を説明してください。
超基本的な質問で失礼します。

クエリ結果を一行ずつループで参照して処理するという、JAVAや
PHPで一般的なやり方はAccess VBAでは不可能なんでしょうか?

たとえば特定のテーブルの中である条件を満たすレコードに連番を
振りたいようなとき、いちいち抽出クエリで新しいテーブルに入れて
オートナンバーを使うことになるんでしょうか。

あるいは専用のフォームを作って、順番に対象レコードへ移動し、連番を
振っていくような形にもできると思いますが。

まあこういうやり方でも問題ないのですが、クエリ結果を直接(配列等として)
いじれないとすると非常に隔靴掻痒な感じです。
>530
データセットを扱うミドルウェアを使えば、ACCESSのテーブルやクエリを
自由に扱うことが出来ます。ADOやDAOというキーワードで検索してみて
下さい。
532名無しさん@そうだ選挙にいこう:04/04/27 10:58
ヽ(;´д`)ノ
533名無しさん@そうだ選挙にいこう:04/04/27 11:14
何度も出てそうな質問なのですが、
えらい昔の>>53さんみたいな質問です。

テーブルに書かれてる任意のワードをみて、
違う言葉に置き換えるようなことをしたいのですが、
Accessでどうやればいいのでしょうか?

[担当]       [結果]

相○太郎      A
相○       A
竹○まるお     B
まるお竹○     B

うまく説明できないですが、上みたいに、
相○が入っていたらAを、竹○があったら、Bを入れるみたいにしたいのです。

 説明下手ですが、よろしくお願いします。
>533
IIF関数とワイルドカード文字(*)及びLIKE演算子を使えばできます。

ポイントとしては
IIF関数の基本的な構文は  IIF( 条件 , TRUE , FALSE ) ですが
条件が複数あるときは IIF( 条件 ,TRUE ,IIF( 条件 ,TRUE ,FALSE )) 
のようにネストできます 頑張ってください
535521です:04/04/27 14:40
>>525サマ 
レスありがとうございます。

A群とC群の関係ですが、図解でいうと
   A群
  /
 B群−C群
こんな感じになっています。
もしA群からC群を指定しようとしても、A群にとってはB群を指定しないことには
C群が見れない状態になっています。
(元々B群・C群のDBを作成しているところに、後でA群が加わったので
 こんな構成になっています。)

ちなみにA群は20件、B群は10項目、C群は400人程度になっていますので
A群からC群を選ぶとなると400人の対象から選ぶことになってしまいます。
やや詳しく書くとこんな感じです↓

 A物件に@さん、Aさん、Bさんが担当についていて
 @さんは資産管理と経理
 Aさんが組合管理と経理
 Bさんが庶務と資産管理、施設管理
 が業務として可能。しかし一人1担当しか担えない。
 A物件では庶務と組合管理と施設管理が必要。
 また、別物件では必要とされる担当種別・担当数が変化する。

ちょっとわかりにくかったらスマソ

物件・人材管理を総括して行っている人にとって
ヒューマンエラーが少なくなる方法で行いたいという要望で
こんなややこしい組み合わせになってしまってます(涙
536ystraid:04/04/27 14:43
---------- ここから ----------
【.  目 的  】 タスクバーの[スタート]から[プログラム]→[MicrosoftAccess]と進と
「新しいデータベースの作成」「既存のファイルを開く」を選ぶwindowが開き、
「既存のファイルを開く」のオプションボタンの下に「既存のファイル」のリストが表示されますが、
その表示を消したい。
【.  条 件  】 使用OS:WIN NT4.0 、ACCESSのバージョン: Office97)
■試したけどうまくいかなかった処理
【. 概  要  】 (まったくわからない)
【駄目な理由】 ( 関連する操作が不明 )
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 (関連するファイル、初期表示、)
---------- ここまで ----------
537467_02:04/04/27 18:40
>>536
レジストリの中を、
「既存のファイル」のリストをキーワードに検索してみましょう。
538ystraid:04/04/28 08:52
有り難うございました。レジストリの中を見るのが初めてで恐いです。
Regedit.exeを起動してレジストリファイルをお教え頂いた「既存のファイル」
で検索してみましたがACCESS関連が6件ほど見つかりましたが、恐いもので
それ以上手出しをできなくていました。やはりレジストリ関係の操作は私のような素人には
道の領域です。
なんか他に方法が無いですかね?LOTUSアプローチにはそのような画面自体を非表示に出来たので
簡単に考えていましたが素人には難しいのでしょうか?
素人のインチキSEです。
この度MDBをMSDEに切り替えようかなと思っています。
そこで識者の方々にお聞きしたいのですが、
MDBでリンクテーブルを使うのとADPとではどちらが望ましいのでしょうか?

個人的にはMDBの方がローカルのMDBとリンクテーブル張ったり
TXTファイルのインポート、エクスポートが簡単なのでいいかな〜と思ってます・・・
最近のSEってどういう定義なのか気になる

俺の甥っ子も今年4月外国語学部新卒の駆け出しで、
俺が「どんなことやってるの?」って聞いたら、「SEです」って
胸張って答えるので、今はどんなことやるとSEと言えるのだろうと思た

俺、汎用機、UNIX、Windows併せて23年目自称SEなのだが・・
>>539
俺ならADPを使う
同じこと(連結フォーム作成とか)やるんでもMDBより作業が少なくて済む
MSDEの管理ツールとしても使うし
確かにテキスト変換の定義を保存できないのはかったるいが
Sokohakatonaku Engineer
543名無しさん@そうだ選挙にいこう:04/04/29 18:21
【.  目 的  】 異なるDBのテーブルを一つのSQLで参照したい
【.  条 件  】 w2k + ACCESS2000

わからんのです。おねがいします。
>>543
テーブルのレイアウトが同じなら、片っぽからリンク張って
ユニオンクエリすればいいのでは?
>>543
Select * From Itteyoshi In 'C:\2ch\Giko.mdb'
Union All
Select * From Omaemona In 'C:\2ch\Mona.mdb';
Text1を名前、Text3をフリガナ(自動入力)みたいな感じで、
Text1の方に全角5文字の文字数制限かけたいんですが、
フリガナ支援が邪魔してるっぽくてエラーでる。。。

全角で5文字入れる→1文字消す→3文字くらい入れる→エラー

フリガナ支援外せば、問題なく動くんですが。


Private Sub Text1_Change()
Dim MaxByte As Integer
Dim S As String
MaxByte = 10
S = Text1.Text
If LenB(StrConv(S, vbFromUnicode)) > MaxByte Then
Text1.Text = StrConv(LeftB(StrConv(S, vbFromUnicode), MaxByte), vbUnicode)
End If
Me!Text2 = LenB(StrConv(Text1.Text, vbFromUnicode))
End Sub


一応mdbはココおいときます。Access2000形式です。
ttp://cham.dyndns.org/list/source/up4107.zip


まぁ最終的にはフリガナの方も、2文字で文字数制限かけたいんですが。
おねがいしますー
547名無しさん@そうだ選挙にいこう:04/04/30 10:30
ACCESS初心者ですがよろしくお願いします。
ACCESS上でEXCELのように簡単に足し算は出来ないのでしょうか?
金額のフィールドを複数選んで合計を出したいだけなんですが・・・

>>547
選択クエリのフィールドを
合計:[field1]+[field2]
のようにすれば合計数字を表示することは可能

ただし、数字の入っているデータフィールドに対してNULL許可している場合は
合計:Nz([field1],0)+Nz([field2],0)
のようにしないとうまく計算されないことがある
ゴクゴクありふれた、図鑑をつくっています。

で、げんざい1000種類のキノコの図鑑が完成しつつありますが、
1個1個めくるのはあほくさい話しです。

そこで、IDを指定してそのレコードの内容に飛ぶようにしたいので
すが、どうしたらいいですか?

550名無しさん@そうだ選挙にいこう:04/05/01 15:13
ACCESSってIserrorみたいに、ErrorのときにTrueを返すような関数ありますか?
>>550
あるよ。クエリーで試してみれ。
Windows2000、ACCESS2000です。
アルバイトの始業時間と終業時間を入力すると、
勤務時間がn時間か求められるクエリを作っています。
DateDiffで求めた勤務時間から休憩時間を引くところで躓いています。
アルバイトの休憩は「午前中に30分、12時から13時まで60分、午後3時に30分」です。
始業と終業の間に正午をまたぐ場合-60分するという式は正常に動作しました。
この要領で下記の式を入力したのですが「式が不正である」とエラーが出ます。

勤務時間: IIf(Hour([始業時間]) < 12,
IIf(Hour([終業時間]) > 12,
IIf(Hour([終業時間]) > 15,
DateDiff("h",[始業時間],[終業時間])-2,
DateDiff("m",[始業時間],[終業時間])-90
),
DateDiff("m",[始業時間],[終業時間])-30),
IIf(Hour([始業時間]) > 12,
IIf(Hour([終業時間]) > 15,
DateDiff("m",[始業時間],[終業時間])-30,
DateDiff("h",[始業時間],[終業時間])
)
IIf(Hour([終業時間]) < 12,
DateDiff("h",[始業時間],[終業時間]),
DateDiff("m",[始業時間],[終業時間])-30)))

ACCESSを触って4日目なので、どこが間違っているか見つけられません。
ご教授お願いします。
553550:04/05/01 20:55
試したんですけどだめだったんですよ

[A]+[B]っていう式が、#Errorになるとして、

Iserror([A]+[B])ってやると、#Errorって返ってくる(w
>>552
午前中の30分休憩は何時から何時?
この要件が曖昧だから式も曖昧になるんだよ。
式が不正云々以前の問題。

それとDatediffなんか使わず、素直に
[終業時間]-[始業時間]-休憩時間
って計算した方が簡単だと思う。
休憩時間の部分だけIIf関数で分岐させてみ。
>>552
分岐が正確じゃないと思うけど、こんな感じ。

勤務時間: [終業時間]-[始業時間]-IIf(Hour([始業時間])<12 And Hour([終業時間])>15,CDate("2:00:00"),
IIf(Hour([始業時間])<12 And Hour([終業時間])>12,CDate("1:30:00"),
IIf(Hour([始業時間])>12 And Hour([終業時間])>15,CDate("0:30:00"),0)))

もっとスッキリ出来る人よろ。
556名無しさん@そうだ選挙にいこう:04/05/02 01:05
フォームのテキスト入力でタブやEnterで
次に進んだときに文字の全選択にならずに
文字の最後にカーソルを持ってくるようにするには
どうすればいいのですか?
557552:04/05/02 14:18
>>554
>午前中の30分休憩は何時から何時?
一般的な土木現場なので、おそらく10時から30分だと思います。
まだ現場側に確認を取っていなかったので、
とりあえず「午前から始業の場合はデフォで-30分」と計算させていました。

>>555
こういう書き方も出来るんだと感動しました。
今は会社が休みのため検証できる環境が無いので、
休み明けに早速試してみます。ありがとうございます。

ところで、VBAに触るのも、RDBに触るのも初めてなので、
何か参考書のようなモノを買いそろえようと思っているのですが、
お薦めの書籍は有りますでしょうか?
今のところは技術評論社の「ACCESS関数ポケットリファレンス」を
買おうかと思っているのですが。
>>552
ACCESS触って4日目でそこまで出来るなら、後3日で出来るよ。
559名無しさん@そうだ選挙にいこう:04/05/02 17:59
画像データベースに関する質問です

【.  目 的  】 フォーム画面でビットマップ以外(jpeg.gif)の画像を表示させたい
【.  条 件  】 OS:Me Ver:2000
■試したけどうまくいかなかった処理
【. 概  要  】 1.テーブルデザインでOLEオブジェクトを指定
          2.デーブルビューで「オブジェクトの挿入」よりファイルを参照させる。
          3.「パッケージ」と表示される。
          4.フォーム画面ではアイコンで表示される→失敗
          
*手順2.で参照するファイルがビットマップ形式だと
手順3.の表示が「ビットマップイメージ」となり、フォーム画面でもきちんと表示される。

【駄目な理由】
アクセスがビットマップ以外の画像をサポートしていないと思われる。
…そんなはずないよなぁ。
表示させたいファイルは高々10〜20Kb。 

なお、>>380と全く同様の質問だと思いますが、>>380は見事にスルーされています。
解決、または解決のヒントをお願いします。
560名無しさん@そうだ選挙にいこう:04/05/02 19:30
質問です。accessの書籍等の使用例に殆ど顧客情報みたい
なんですけど、受注商品の管理(在庫を参照して発注、納期決め)
とかを自動化することは可能ですか?
>>549
レコードセレクタ
562560:04/05/02 19:36
わかりそうなので質問取り消します。すいませんでした。
>>560
それはAccess云々の前の問題だろ。
その受注・出庫・発注という業務をどう工夫して効率をあげるか、
どこをコンピュータで自動化するのか、本当にRDBでやるのが
最適なのか、Accessの他の選択肢は切っていいのか、
全部検討していって、ハイじゃあこの部分はこういう仕様にしようと
考えてるけどAccessでやろうとしたらここでつまずきましたって
段階でこのスレ来た方がいい。
>>560
それはAccess云々の前の問題だろ。
その受注・出庫・発注という業務をどう工夫して効率をあげるか、
どこをコンピュータで自動化するのか、本当にRDBでやるのが
最適なのか、Accessの他の選択肢は切っていいのか、
全部検討していって、ハイじゃあこの部分はこういう仕様にしようと
考えてるけどAccessでやろうとしたらここでつまずきましたって
段階でこのスレ来た方がいい。
可能ですかなんて要件も規模も分からずに有益な回答得られる
わけない。
>>559
これあげるから、がんばって♪
http://tool-ya.ddo.jp/2ch/trash-box/file/20040502195134184.zip
二重スマソ
(´・ω・`)
568555:04/05/03 01:40
>>557
午前から始業の場合にデフォで-30分なら>>555
正しく計算されないから気を付けて。
勤務時間: [終業時間]-[始業時間]-IIf(Hour([始業時間])<10 And Hour([終業時間])>15,CDate("2:00:00"),
IIf(Hour([始業時間])<10 And Hour([終業時間])>12,CDate("1:30:00"),
IIf(Hour([始業時間])<10 And Hour([終業時間])<12,Cdate("0:30:00"),
IIf(Hour([始業時間])>12 And Hour([終業時間])>15,CDate("0:30:00"),0))))
これで逝けるかな?

それと参考書は、経験上まず1冊じゃ済まないから、最初からSQL・VBA・関数とそれぞれ用の
書籍を揃えるつもりで。
1冊で内容を欲張ってもロクな事がない。
569名無しさん@そうだ選挙にいこう:04/05/06 00:05
【目的】クエリを使った計算データをテキストに差し込み印刷する。
【条件】マシンは自作、XP+Access 2002(SP3パックをインストール済)
【概要】約8千件の文献データをもとに、クエリで簡単な四則演算(料金計算)をした
  VBAの自作関数の結果をテキストファイルに差し込んだ文章を作る。
  最終形はテキストベースのhtmlで、ヒナ型のテキストにデータを組み込んで役所に
  オンラインで提出するため、画像や表などの不必要なタグはダメ。
   目的は業務の手抜きなので、一度エクスポートしたのを再度読み込んでテーブル化
  して差し込みをするなどの、手のかかることはしたくない。
【駄目な理由】 (動作状況など)
   VBA関数なしのクエリではワードのテキストファイルに容易に組み込めるが、
  VBAファイルを組み込んだとたん、ワードが差し込み部分のクエリを認識せず、
  VBAの計算結果だけでなく、クエリの表全体が認識されない。VBA関数を除くと、
  また元通りにクエリが見えるので、自作VBA関数が障害になっていることは間違いない。
   (関数は、同一レコード内のデータの四則計算で、特に難しい処理をしていない)
     また、代替手段なども教えていただけるとありがたい。
>>1を読んだ】
  読んだんですけど、Accessを本気でさわりはじめて5日目なので、どこから手をつけて
  良いのかもわかりません。できましたら、膨大なログのどの当たりを見ればよいか、
  おしえていただけるとありがたい。
570名無しさん@そうだ選挙にいこう:04/05/06 00:48
>>552
IFネストが深いので、現状のコードでは、あとのメンテで苦労します。
これだけの内容の濃い式を1個の式にまとめることに無理があるかと
思われます。

IF文の中の式をいくつかの変数にしたり、関数化して、複数の短い式に
するとよいでしょう。また、各変数にいろいろな数値を代入してEXCELで
検算することも、バグ退治の良い方法かと思います。
>>569
四則演算程度との事なので、
Functionを使用しないようにする
572名無しさん@そうだ選挙にいこう:04/05/06 10:49
Xyzzy + 2ch-mode から書き込みテスト。

>>568の式で上手く動作しました。ありがとうございました。

書籍は、とりあえず2冊買ってきました。
 技術評論社 「Access2000 場面別108のこうしたい!」 谷尻かおり
 秀和システム 「Access VBA辞典」 E-Trainfer
です。どちらも作業中に困ったときに開いてますが、なかなかいいと思います。

田舎住まいなので、ちょっと踏み込んだ内容の書籍を買うとなると、
100km先の本屋まで行かなきゃならないので大変です。
573名無しさん@そうだ選挙にいこう:04/05/06 14:32
>>571
そうっすね。それだけのことっすね。

将来、料金改定などがあると、if文使って複雑な分岐をしなきゃいけないけど、
そのころには、もうちょいマシになってますかね?

数字が見えるし、フォームにだったら書きこんでくれるので、それをテキストファイルに
書いてくれればいいんだけど.....うーん、納得いかない。
>>572
Amazonで注文すれば何百キロ先からでも届けてくれます。
内容が吟味出来ないのが辛いけど。

因みに、俺が初心者の頃にお世話になった書籍が
技術評論社 「AccessVBA基本例題300」 システムサイエンス研究所
もう売ってないみたいだけど。
575名無しさん@そうだ選挙にいこう:04/05/06 21:45
ACCESSのアイコンって何で紫色のおたまじゃくしなの?
>>575
かぎですが・・・
左ストレートです
よろしくお願いします。いまだAccess97使ってます。
【目的】データから和暦表示したい
例3500930→意味は、先頭3or4は3=昭和、4=平成
          50は年、09は月、30は日
【条件】Access97、OS=98,Me,XP
■試したけどうまくいかなかった処理
【概要】モジュールで以下のように作ってあります。

改行が多いと怒られました…

【駄目な理由】98でいつのまにかランタイムエラー(プロジェクトまたはライブラリが見つかりません)
       が出て表示できなくなる
       XP、Meはエラーが出たことがないです。
       98でも出るPCと出ないPCがあります。

これを作っていただいた方が海外出張で当分戻りませんのでよろしくお願いします。
579578:04/05/07 12:52
以下、モジュールです。

Function Wa_和暦(w_date As String) As String
Dim t_nengou As String
Dim t_yyyy As Variant
Dim t_mm As String
Dim t_dd As String
Dim t_yy As String
Dim t_date As Variant

t_nengou = Left(w_date, 1) ←エラー時にここが反転している
t_yyyy = Null
t_mm = Mid(w_date, 4, 2)
t_dd = Mid(w_date, 6, 2)
t_yy = Mid(w_date, 2, 2)
t_date = Null
580578:04/05/07 12:53

Select Case t_nengou
Case 1
t_yyyy = 1867 + t_yy
Case 2
t_yyyy = 1911 + t_yy
Case 3
t_yyyy = 1925 + t_yy
Case 4
t_yyyy = 1988 + t_yy

Case Else
t_yyyy = 1988 + t_yy
End Select
t_date = DateSerial(t_yyyy, t_mm, t_dd)
Wa_和暦 = Format(t_date, "ggge\年m\月d\日")

End Function
581名無しさん@そうだ選挙にいこう:04/05/07 19:55
r
582名無しさん@そうだ選挙にいこう:04/05/08 08:29
>>579
予想される問題はいくつかあるかと思われます。

1.コードの型の問題
 "3500930"というコードが元のテーブルで数値型で保存されていて、
 関数で文字列として呼び出されている場合。
 このテのエラーは、予想外のところで時限爆弾エラーとなるので、やっかいです。
  → コードがテーブル内で数値型で保存されているか、文字型で保存されているか?

2.left()関数のライブラリの問題
 問題の箇所ですが、mid()関数はちゃんと使えるようなので、
 left()関数の箇所を
  t_nengou = mid(w_date,0,1)
 としてみてください。

こういう時のテクニックとして、left関数の行の前に
msgbox(t_nengou)
というコードを入れて、変数の値を確認することをおすすめします。

あと、蛇足ですが、>>580のcaseは、
 case "1" 、case"2"....などとする必要もあるかと思われます。
583名無しさん@そうだ選挙にいこう:04/05/09 01:31
>>578
参照設定がだめなのでは(FAQ)


そもそも、なぜこんな関数が必要なのか考えてみる。
いまどきのデータベースでは、文字列を日付にするような関数は、普通必要ではない。
日付は日付型でもつからだ。
メインのサーバ等があってそれが吐き出すデータを、Accessで処理しているんだろうなと考えられる。
584名無しさん@そうだ選挙にいこう:04/05/09 03:40
Access2000 or 2002 or 2003どれでもいいので
VSSを使いたいのですが、AccessとVSSの他に何が必要なんでしょうか?
585名無しさん@そうだ選挙にいこう:04/05/09 09:39
>>578
Dim w_date As String

これを追加で動くんじゃない
586578:04/05/10 09:05
みなさん、お返事が遅くなって申し訳ございません。
今朝、さっそく試してみました。

>>582さん
1.コードは文字型になっています。
2.left()関数をmid()関数に変更したところ、変更した箇所に
  「プロシージャの呼び出し、または引数が不正です。」
  とエラーが出てしまいました。
他に何か方法がありますでしょうか・・・
587578:04/05/10 09:16
>>583さん
FAQにあるのでしょうか?

このデータベースはもともとPC-DOS用に作られたものをWindows用に改変して使っているのです。
もとのデータをPC-DOSのものと共用していますので、日付型に変更することができないのです。

>>585さん
重複しているとエラーが出てしまいました。
よく分からないけど、参照設定を確認してみなよ。
どう確認したらいいのか分からないんであれば、
これを解決するのはあなたには無理だよ。
589578:04/05/10 18:08
>>588さん
ありがとうございます!
参照設定の意味がやっとわかりました・・・
エラーが出るPCの参照設定を確認したところ、たしかに「参照不可」となっているところがありました。
(エラーが出ないPCは問題なし)

違いを調べたところ、インストールされている一太郎のバージョンによるものでした。
一太郎のバージョン違いにどんな影響があるのかわかりませんが、エラーが出ないPCのバージョンに
統一したところ、エラーが出なくなりました。

みなさん、本当にありがとうございましたm(__)m
590名無しさん@そうだ選挙にいこう:04/05/10 18:11
なんで一太郎のバージョンが関係あると思ったのか
すごく気になる。
591578:04/05/11 08:37
>>590さん
「参照不可」になっていたもののパスを確認したところ、JUSTフォルダにつながって
いたからです。
それでエラーが出ているPCを確認したところ、すべて一太郎8でした。エラーの出て
いないPCは一太郎13がインストールしてありました。

正確には一太郎8がインストールしてあるPCも「参照不可」の部分を変更したらエラ
ーが出なくなったのですが、もともと一太郎13にバージョンアップしたかったので、
何も考えずにバージョンアップしたところ、参照設定を確認しなくてもエラーが出な
くなったのです。

ちょっとスレ違いな話になりましたので、これで失礼いたしますm(__)m
>>591
いやすれ違いでもないと思うぞ
【.  目 的  】 レポート内で次に出力される座標を取得したい
【.  条 件  】 Win2000SerSP4・Access2000SR-1
■試したけどうまくいかなかった処理
【. 概  要  】 Me.Topで取得した値を使用した
【駄目な理由】 マシンによって誤差が発生した
        見た目にも大きな違きく場所で同じような値がでた
■これだけはやりました
>>1を読んだ】  はい
【Googleで調べた】はい
【検索キーワードは?】 覚えている範囲ですが『Access・Access2000・レポート・レポート内・座標・座標取得・Me.Top』

以上です。
宜しくお願い致します。
アッチョンブリケ
おそらくそれはやめといた方がいいと俺の経験が言ってる
596593:04/05/14 13:43
レスTHXコ……
違う方法を模索してみますYO。
597名無しさん@そうだ選挙にいこう:04/05/15 22:26
AccessのUserFormについて聞きたいんですけど、
UserFormって使ってますか?

私は存在自体を最近知りました。
このUserFormを有効に使う場面ってどんなところでしょうか?
598access素人:04/05/16 21:22
アクセスを1から勉強中の初心者です。
お助けくださいm(__)m

||郵便番号 || 住所 || 住所フリガナ||
の3つのフィールドで、住所入力支援ウィザードで郵便番号から
住所の自動入力は出来たのですが、その住所を「ふりがな」の
フィールドに自動入力出来ずにいます・・・

単純に住所のフィールドで、ふりがなウィザードで「住所フリガナ」を
設定してやるだけではいけないのでしょうか?

本には簡単に出来そうに書いてあるんですが、
なんか設定間違ってるのかなぁ
>>598
「ふりがな」は、実際にタイプしないと、無理です。
名前カナを自動フリガナ設定にしてたときに、担当者がスペース均等大好きで
セットした名前データにスペース入れまくって下さいました

小 林さんはショウ ハヤシさんに
金 森さんはキン モリさんに

途中で気づけよ!とも思ったが、そもそも早く直してほしいこのバグ…

ということで >>598さん
フリガナは気をつけたほうがいいときもありますよ〜
>>598
住所録を作る過程で郵便番号が必要だというのなら、

ttp://www.post.japanpost.jp/zipcode/download.html

こういうのがいろいろ出回ってるから、自分に合ったものを探してきて
使いやすいようにいじってみてください。

「1から勉強中」ってのが、郵便番号データベースを作ることだとしたら、
出来合いのものに頼らず、気合い入れてがんばってくださいw
602名無しさん@そうだ選挙にいこう:04/05/19 12:59
レコードに書き込んだその時の日時を表示させるには
どう設定したらいいのでしょうか?
Now()でやると次レコードの日時欄にその時の日時が
出てしまうので・・・。ACCESS初心者ですが
よろしくお願いします。OSはXP、ACCESSは97です。
>>598
住所側のテキストボックスのプロパティ「ふりがな」に
ふりがなを表示するテキストボックス名を入れる。
>>602
テーブルのフィールドに日付型を加えます。
日付型の既定値に now() を入れます。(初期値)

新規レコードを作ると、既定値が表示されるのでそのまま入力する。

印刷時に日付は先の日付型のフィールドを使うと作成日が印刷される。
>>602
Microsoft Access
http://pc5.2ch.net/test/read.cgi/db/1056952414/862

の人だよね?
日付をテーブルに持たせたら、後はDLOOKUP関数で
日付引っ張りだすといいよ
606名無しさん@そうだ選挙にいこう:04/05/21 13:33
Winxp  ac2000です。アクセス初めて10日です。過去ログ辿りながら丸3日がかりで
表形式フォーム内のコンボボックスの連動に成功しました。が、しかし!コンボボックスって
リスト以外のものも書き込み出来るんですね。かなりショックです、リスト以外を入力しないように
と思って3日もがんばったのに。解決策があれば疲労困ぱいの私に教えて下しい...お願いします。.
607名無しさん@そうだ選挙にいこう:04/05/21 13:41
連動に成功しているんですよね。
文章の内容から何を質問しているのかが分からないのですが。
>>606 リスト外の入力を不可にするプロパティなかったか?
入力チェック
610606:04/05/21 14:10
質問の仕方が最悪でしたすみません、パニクってました。

コンボAには大分類として肉、野菜、果物...
コンボBには小分類としてコンボAが肉だったら豚、牛、鳥...
コンボBが野菜だったらレタス、ピーマン、ほうれん草...、というようには出来ました。

困っているのは例えばレコード1に
コンボA…肉
コンボB…豚   と入ったとします。

しかしレコード1のコンボAは野菜だったってことでコンボAを野菜に変更しても
コンボB豚は変わりませんよね。(あたりまえですけど)

質問はコンボAの変更時(リストから選んだ時点)でコンボBのリストをドロップダウン
できないものかということです。自動でドロップダウウンすれば変更漏れもなくなる
のではないかなぁ〜と。(エンターキーで進んだ時は自動ドロップダウンの設定にはなってます)
アクセスにチャレンジしたての為、質問も上手く伝えられなくて申し訳ありません。
Accessの前に日本語…

comboAの変更時に、comboBの再表示、またはcomboBにフォーカスセット
でいいんぢゃないか?感。
どのコントロールで、なんのイベント中に、ナニやってるかまでわかんねーから
回答も適当になりがちだがw
>>610
普通、コンボA_Click イベントを使ってコンボBの再設定しますよ。
もちろん、大分類と小分類はマスター化してある前提です。

| しかしレコード1のコンボAは野菜だったってことでコンボAを野菜に変更しても
| コンボB豚は変わりませんよね。(あたりまえですけど)

ちっとも当たり前じゃありませんよ。
そうなってるのは設計ミスか手抜き。

613名無しさん@そうだ選挙にいこう:04/05/24 01:41
在庫一覧みたいなDBを参照して納期順の配送一覧に対して
在庫が足りるかどうか判断させて在庫対応表を作る事はできますか?

  【在庫対応表】         【在庫一覧】
名 前 納期 数 在庫      名前  在庫数
商品A 5/20 2  有      商品A  6
商品B 5/22 1  有      商品B  5
商品A 5/22 3  有
商品A 5/25 2  無
商品B 5/28 3  有

日を追って配送していくごとに在庫が減って在庫が足りなくなった
ら在庫無しと表示する感じです。でもあくまでも配送予定表なので
実際には在庫DBは配送するまでは数字は変わりません。
商品AやBごとに集計とかはわかるのですが、集計の抽出条件を
それぞれの納期を当てはめるというかなんというか、あ゛〜っ!わ
からん!という状態です。お願いします。
>>613
出来ますけど、システム設計がかなり難しいです。
キャンセル処理はどうするか?
更新タイミングはどうするか?
分納処理は必要か?
ダブルビン処理は必要か?
615613:04/05/24 02:20
>>614
ありがとうございます。難しいですか。
配送一覧に対する在庫の有無を表にするだけで、分納やダブルビン、
キャンセルは考慮する必要がありません。
これは製作側が納期や在庫の持ち具合を見て生産スケジュールを
立てたいというものです。出荷による在庫の減や生産による増は考
慮しなくていいです。
単純計算でよければ、

在庫対応表と在庫一覧の日付が同じとする。
この日付を開始日付とする。
納期の一番大きい日付をmax日付とする
在庫数から出荷数を差し引いたものを在庫残数とする

説明の為に、製品別で書きます。

製品名でフィルターする。
開始日付から(開始日付+1)までの出荷数集計と在庫残数をw1ファイルに追加書き出し
(開始日付+1)がmax日付になるまで繰り返す。
w1を日付順にソートする
印刷時に在庫残数から在庫有無に変換する。プラス数値が在庫有

在庫対応表のデーター量にもよりますが
処理がとても重くなります。処理時間大。
効率化の為に、日付計算で不要な日付は計算させない、
期間を限定するとか、製品を限定にするとかを考えることも必要
製品別日付別在庫数一覧表のような表を中間的に作ることになります。

617名無しさん@そうだ選挙にいこう:04/05/24 09:42
ACCESS2000,Windows2000です。
VBAで作成した独自の関数に、フォームで入力した値を取得して、
引数として渡したいのですが、
同時に連結レコード名とそのフィールド名も一発で渡したいのですが、
そのような方法はあるのでしょうか?

[社員名簿テーブル]<-テーブル
[社員名]  [住所]<-フィールド
[もなー]  [東京]<-フォームに入力した値

という場合、フォームから引数に[Me!社員名][Me!住所]を渡すと、
同時に[社員名][住所][社員名簿テーブル]も取得できるような形にしたいのです。
よろしくお願いします。
618名無しさん@そうだ選挙にいこう:04/05/24 09:44
店名   月の予定    火の予定    水の予定  木の予定…
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

A店            棚整理       床掃除
B店   トイレ掃除    床掃除             窓拭き
C店   ワックス     窓拭き       床掃除
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−


このテーブルから



翌日の予定(翌日が火曜日として)

A店  棚整理
B店  床掃除
C店  窓拭き 

とするにはどうすればいいのでしょうか?
内部カレンダー(って言うのか?)から日付を取得して曜日に変換して
その対応する曜日の列を表示したいのです
619名無しさん@そうだ選挙にいこう:04/05/24 10:05
翌日の曜日を取得するなら
WeekdayName(weekday(Date+1))
だが、なにやらテーブルの設計が
よろしくない予感がするのは漏れだけか。
620618:04/05/24 10:38
ああ・その翌日の曜日の取得も知りたかったのですが

問題は
その曜日のときに『対応する列の内容』を表示する
なんです
選択クエリでするにもどうしたものかと…
621名無しさん@そうだ選挙にいこう:04/05/24 11:06
掃除の予定が店舗ごとで一定で、
明日の各店舗ごとの掃除予定を呼び出したい、ということかな?

youbi = WeekdayName(WeekDay(Date+1)

SELECT youbi FROM [掃除予定] WHERE 店名 = 'A店';

掃除予定の各曜日のフィールド名は月曜日、火曜日、など
WeekdayName関数が返す値と一致していること。

たぶんこんなかんじ。
622618:04/05/24 11:19
ソレだとA店だけの翌日予定になるのでは?
40店舗全部の翌日の予定の一覧を作るとしたら
その式を40店分作るということですか?
623名無しさん@そうだ選挙にいこう:04/05/24 11:21
ACCESS2000,Windows98です。
レポートについてなのですが、
宛名ソフトによくあるように、短い文でも長い文でも、ある一定の範囲に収まるように
フォントサイズを自動で変えられるようにすることはできるのでしょうか。
>>623 VBA使える?
625623:04/05/24 14:46
>>624
本を見ながら写す程度です。。
>>623
印刷時のイベントで、フォントサイズのプロパティを変更する記述すれば
大丈夫だったはずだが・・・
627618:04/05/24 22:24
結局出来なかったので
『店名』と『月の予定』のクエリ、『店名』と『火の予定』のクエリ…
と7つのクエリを作って
ソレを呼び出すボタンを7つ『月』『火』『水』…
と配置して、翌日の曜日ボタンを押したら一覧で出るようにしました。
できればもう少しスマートに『翌日の予定』ボタンで出るようにしたかったのです
まだ諦め切れませんので、よい方法があればご教授ください
628泣きたい人:04/05/24 22:48
"売上テーブル"に、日付・金額・数量 の3つの項目があります。

月初めから、本日2004/05/24までの金額と数量を合計を帳票に出したい
場合(2004/05/01 〜 2004/05/24)はどうしたらいいんでしょうか?
その帳票には、本日の合計と、今月の合計を出力します。


今夜中にこれができないと、上司から怒られます。泣きたいです。
629名無しさん@そうだ選挙にいこう:04/05/24 23:23
>628
1.まず、クエリーを作りなさい
  クエリーをどの程度操作できるか知らないけど、
  select sum(金額),sum(数量) from 売上テーブル
  where 日付 between "2004/5/1" and "2004/5/24"
 
  で実行して、期待通りの結果が出てくるかどうか
  検証しなさい

2.次に1.で作ったクエリーを基に、レポートを
  作りなさい。これはウィザードにしたがってれば
  勝手に出来るから流れに身を委ねなさい

3.わけのわからない仕事を引き受けないで、
  出来ないなら出来ないと言いなさい
>>628
クエリ?
631630:04/05/24 23:28
かぶっちゃった
ごめんなさい
632613:04/05/24 23:45
>>616
ありがとうございます。
「(開始日付+1)がmax日付になるまで繰り返す」の部分がわかりません。
これはVBAやマクロで実現するものですか?クエリ内で生成できるもの
ですか?
製品別日付別在庫数一覧表を中間的に作成するということは、製品が
100あれば100の一覧表を作成するわけですよね。
もしかして非現実的だったのかなぁ。
633泣きたい人:04/05/24 23:47
>629さん ありがとう。

ちょっと私の言い方が悪かったけど、
例えば 2004/12/24日 に 2004年の12月のデータ合計が欲しい場合
2004/12/1〜2004/12/24時点のデータ合計を出力したい。
between構文での日付範囲は、その現在時間によって違うってことです。

629さんの where 日付 between "2004/5/1" and "2004/5/24"
では、6月、11月の時もあるから、その都度
クエリの日付範囲を 6/1〜,7月〜に変えなければならないってことになったいます。
634泣きたい人:04/05/24 23:50
  ↑  ↑  ↑   ↑   ↑
>クエリの日付範囲を 6/1〜,7月〜に変えなければならないってことになったいます。

訂正・・・
クエリの日付範囲を 6/1〜現在時刻 , 7/1〜現在時刻 に変えなければならないことになります。
windowsXP + access2000 です。

フォームにラベルコントロールを設置し
マウスがそのラベルの上にあるときだけカーソルをあの
白い指に変えたいんですけどどうやったらいいでしょうか?

Screen.MousePointerだとなんかできなくて...
636名無しさん@そうだ選挙にいこう:04/05/24 23:56
今月の最初の日〜今日
637629じゃないけど:04/05/25 00:04
>>633
つーか、月ごとの集計と本日の集計を同時に表示させたいんでしょ?
そんなに単純なモンじゃないよ。
VBAでDSum関数使って集計した方が早い。
それと、集計期間を変化させたいならテキストボックスなり何なりで
集計期間を指定させて、その値を変数に代入して集計するのが良いと思う。
クロス集計の結果をEXCELにエクスポートしてsum
ってのは?
639629じゃないけど:04/05/25 00:11
表現が少しおかしかったな。
月ごとの集計と本日の集計じゃ無くて、月集計と日集計。

それぞれの集計値を格納する変数を用意して代入してやれば
フォーム上ででもレポート上ででも楽に作業できるでそ。
>>613
ああ、間違ってたので、修正します。

製品名でフィルターする。
開始日付から(開始日付+n)までの出荷数集計と在庫残数をw1ファイルに追加書き出し
(開始日付+n)のnが0からmax日付になるまで繰り返す。
w1を日付順にソートする
印刷時に在庫残数から在庫有無に変換する。プラス数値が在庫有

(繰り返しはマクロかVBAになると思います)

全製品として行うときでも
w1ファイルは1個で良いです。
データに製品名の項目を追加して同じ処理を行えば良い
結果的には在庫対応表と同じ数のデーター数が格納されます。

製品別日付別在庫数一覧表のような表を中間的に作ることになります。
これは全製品のときのイメージです。
エクセルのような表で縦軸に製品名、横軸に日付を
そして升目の中に出荷数と在庫残数が入るような感じです。
これを横方向に順番に計算してゆきます。
実際に計算するのは在庫対応表のデータ数だけですから、
もっと効率が良いように改良してください。

実際に在庫対応表と在庫一覧のデータ数はどれくらいなんでしょう?

641泣きたい人:04/05/25 07:48
>693さんありがとう

条件に合致すVBAで集計値を格納する、変数を用意します。
それをレポート上でどうすれば、反映できるんですか?

現在のシステムでは、日付指定のフォーム上のテキストボックスで
2004/05/25 と入力しその値を、Docmd openreport の引数として一緒に
レポート表示させてます。

結局私のせいでこの宿題はできなかったので、今日は上司に怒られます。
簡単だと思って引き受けた私が馬鹿でした。

>>628
かんたんに実現出来ます。やり方を知っていればの話ですが
SQL文4個くらいと印刷フォーム、ワークファイルを2個くらいかな
>>641
取り急ぎ....

期間集計用クエリ(クエリA)
PARAMETERS [開始日] DateTime;
SELECT Sum(売上テーブル.金額) AS 期間金額の合計, Date() AS リンク用日付
FROM 売上テーブル
WHERE (((売上テーブル.日付) Between [開始日] And Date()))
GROUP BY Date();

本日集計用クエリ(クエリB)
SELECT 売上テーブル.日付, Sum(売上テーブル.金額) AS 本日合計
FROM 売上テーブル
GROUP BY 売上テーブル.日付
HAVING (((売上テーブル.日付)=Date()));

帳票クエリ
SELECT クエリA.期間金額の合計, クエリB.本日合計
FROM クエリA INNER JOIN クエリB ON クエリA.リンク用日付 = クエリB.日付;
644613:04/05/25 10:40
>>640
ありがとうございます。
参考になりました。もう少し頭ひねって煮詰めてみます。
645名無しさん@そうだ選挙にいこう:04/05/25 18:40
ACCESS VBAで、perlの配列操作のpush,popのような関数はありますか?
>>627
ボタンを押すたびにクエリーのSQLを書き換えて、
その後クエリーを表示させれば良い。

もっともその前に、テーブル構造を変更した方が
良いと思うのだが。
>>645
まず>>1のテンプレで質問してくれ。

(このレスでもう来なくなるタイプだとは思うが)
648名無しさん@そうだ選挙にいこう:04/05/25 22:41
すいません
access 97 って windows xp Home or Pro で動作しますか?
検索しても見つからないのでご教授下さい
>>648
動作しますよ確か
>>648
Access97自体は動きます。
ファイル名やディレクトリ名に空白が入るのをを許すWinXPと、
それが理解できないAccess97の間で問題が起こったりもします。

AccessVBAからExcelファイルを開こうとした時に
「Program Files\Office」下のExcel.exeが起動しないとか。
>>650
対処法はあちこちにあります。
Dim a As String
a = """excel.exe"" ""C:\Documents and Settings\デスクトップ\.商品コード.xls""
Call Shell(a, vbMaximizedFocus)
な感じ....
652名無しさん@そうだ選挙にいこう:04/05/27 11:02
Box1_cd〜Box30_cdとそれに対応したBox1_n〜Box30_nというフィールドがありまして、
たとえば1というコードをその商品の価格とすると、Box1_cdに1が入っていれば、Box1_nの値が商品の価格、
Box18_cdに1が入っていれば、Box18_nが商品の価格、というつくりになっています。
そこで、この商品価格を抜き出して、各商品の商品価格一覧を作る必要があったので、ぱっと思いついたのが、
クエリで、商品価格:iif(box1_cd=1,box1_n,iif(box2_cd=1,box2_n,..............iif(box30_cd=1,box30_n,0))))(ry
(実際は式が複雑すぎる、とエラーが出るので、分割してやってます)とだったのですが、
今度は、商品価格だけでなく、ほか12項目(これらも同様に場所が一定でない)の抽出を追加した一覧の作ることになりました。
コピペでやれば済む話ではありますが、もっとスマートで頭のいいやり方はないでしょうか。

よろしくご教授のほどお願いします。
頼むから正規化しろよ
http://pc5.2ch.net/test/read.cgi/db/1060690405/

正規化しろ!
>>652
なぜそんな頭の悪いテーブル構造になっているのか、
逆に設計に興味がある(w
655652:04/05/27 16:18
>>654
うーん。業者(大手PCメーカ関連会社)が作ったDBからデータ抽出して、
って作業なので、なぜこうしてるのかはなんとも。

分かってるのはそのデータベースがWin3.1時代のもの、ってことなので、
こうやったほうが速かった、とかなんでしょうか?

実際は、box@_cdに入るコードは順番があるようなのですが、
個々のレコードに関係ない・必要ない項目を飛ばして、
前から詰めてデータを格納するようになっているようです。
ですので、レコードによってはBox20_cdくらいまでデータの入ってるものもあれば、
Box3_cdまでしか入ってないものもある、という感じです。

現在は>653さんの正規化しろ、をヒントに思いついた方法を試行中です。
656名無しさん@そうだ選挙にいこう:04/05/27 17:10
2003でレポートをデザインビューで開いていじろうとすると、
動作が劇的に遅くなる症状がでるんですが、
(毎回プリンタドライバを読みにいくためらしいです)
何とか解決方法はないものでしょうか。

ダミーのプリンタを作ってそれを標準のプリンタにし、
空のMDBを作り、そのMDBから各クエリやレポートをインポートし、
各レポートのページ設定で、実在のプリンタに設定し直す、
という作業をすると、しばらくは快適に動いてくれるんですが、
またすぐに激重になってしまうような感じです。

何卒解決を・・・・

環境は
OS:XPSP1
CPU:ペンティアム4 3GHz
メモリ:1GB
MDB自体は5MB程度
です。


クエリのデザインビューを印刷する方法ってないでしょうか?

前任者が作ったデータベースを引き継ぐことになり、
似たような糞クエリが大量にあるので、整理しようと思うんですが、
画面上では狭すぎてちょっと見づらいので、
印刷してみようとおもったら、クエリって
デザインビューじゃ印刷できないじゃないですか・・・orz

1画面に収まってればキャプチャすれば済むんですが、
1画面には収まりません。

SQLビューじゃ見比べづらいし・・・。
>>654
Excel をちょっとかじった程度の奴が、作ったんじゃないか。
【.  条 件  】 Win2K/XPHome/XPPro+Access2000

VBAのコードを書く画面(VB Editor?)で入力中の文字が勝手に
確定されてしまい困っています。
例えば Dim strTemp as String などと入力しようとしていて
最後の stri まで売ったところで、いきなり確定されてしまいます。
言い換えると、行を移動すると予約語などが認識されますが、
それと同じ事が起こります。

Access を一旦終了して再度立ち上げると一時的に直りますが、
またしばらくすると再発します。使用している ATOK17 が
悪いのかとも思ったのですが、標準の MS-IME に戻しても
変わりませんでした。

ググッても同じような症状の方は見受けられませんでした。
どなたかこの症状、もしくは似た症状について何か情報を
お持ちではないでしょうか。
【.  目 的  】 コントロールのフォーカスをTABキーで移動してのふりがな
【.  条 件  】 Windows2000,WindowsXP,Access2003
■試したけどうまくいかなかった処理
【. 概  要  】
 フォームデザインにて、テキストボックスを3つ作成。
 それぞれ、tA,tB,tCとする。
 タブオーダをtA->tB->tCの順に設定。
 tBのふりがなプロパティにtCを設定。
 保存して閉じる。
 標準モードで今作ったフォームを開く。
 フォーカスがtAにある状態で、TABキーを押し、フォーカスをtBに。
 適当に漢字で入力。
 tCにふりがなは表示されず・・・
【駄目な理由】
 もちろん、ふりがなが表示されないこと
 Access2002のときは大丈夫だったような・・・。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
 access ふりがな tab クリック フォーカス バグ 不具合
表現を変えているけど、またお前かよ >660
662名無しさん@そうだ選挙にいこう:04/06/01 11:23
【.  目 的  】 フォームに、その製品の画像をドラッグ&ドロップで記録し、後でフォーム
         で直接閲覧できるようにしたい。あるいはフォーム上ではアイコン表示で良い
         ので、アイコンをダブルクリックすれば画像が開くようにしたい。
【.  条 件  】 (WinXP、ACCESS2000)
■試したけどうまくいかなかった処理
【. 概  要  】 JPEGファイルの関連付け変更(Microsoft ViewerからIEへ)
         Office2000の全アプリの再インストール
【駄目な理由】  フォームに、JPEGファイルを落とし込めばテーブルに画像は記録
        されるが、フォームにはアイコン表示しかされない。
         これはよいとしても、アイコンをダブルクリックしても画像が開かない。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 オブジェクト 画像 ドラッグ&(アンド)ドロップ 画像 表示 JPEG
>>657
メニューバーのどっかに「データベース構造の解析」とかあるから
それを適当にいじってみ

>>659
入力中に実行時コンパイルが発生してるんだと思う。
タイマ時イベントの設定されたフォームがフォームビューで
開きっぱなしになってると思われ
664659:04/06/01 13:24
>>663
ソレダ!!(・∀・)

確かにあるフォームが常に開いてて、そいつがタイマ時イベントで
定期的にあるクエリを実行するようになってる。どうも数秒おきに
来るなぁ〜って思ってたんだよ。

ありがとう。本当にありがとう。
漏れももっと修行積んで、役立つレスができるよう頑張る。
665659:04/06/01 13:28
質問の時は敬語モードだったのに、嬉しくてついいつもの
調子で書き込んじゃったよ...orz
666名無しさん@そうだ選挙にいこう:04/06/01 15:05
windowsXP + access2000です。

テーブルを作るのに、SQLでCreate Tableを実行して作成しています。
その時に、フィールドの説明のコメントまでCreateTable文で設定できるのでしょうか?

フィールドが結構多いのでアクセスのテーブルのデザインビューで説明を
入れていくのはつらくて...

>>666
SQLでそんなのは見たことないけど、VBAからなら
description プロパティを使えば出来る。(DAO限定)

・・・と、翔泳社のプロパティ辞典に書いてた。(´・ω・`)
ADOなら、

Dim catalog 'As ADOX.catalog
Set catalog = CreateObject("ADOX.catalog")
catalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.(中略)
catalog.Tables("テーブル名").Columns("列名").Properties("Description").Value = "説明"
>>668
ADOでも出来るんじゃんか。
翔泳社のウソんこ..._| ̄|○
670kkk:04/06/02 18:31
競馬で、あるレースに出走した馬のその後の成績を 1走後2着 2走後9着 3走後・・・
という風に表示させたいのですが、
レース名テーブルというのを作りまして、場所、日付、レース名、1着、2着、3着・・・とう風にフィールドを作って、1着のところに1着馬の名前を、2着のところに2着馬の名前という風に入力しています。
そこで、レース名を検索すれば、

東京 2004/05/30 東京優駿(G1) 
                   1走後 2走後 3走後 4走後 5走後
1着 キングカメハメハ      2着  3着 
2着 ハーツクライ         6着  4着  8着  1着

という風に表示させたいのです。

馬名を勝手に検索して、フィールド名の1着、2着を日付順に並べたいのです。
よろしくお願いします。
671名無しさん@そうだ選挙にいこう:04/06/02 19:41
テーブルをレース名テーブル、馬名テーブル、レース結果テーブルにして
レース名 レースコード(PK),レース名,年月日,競馬場・・・
馬名テーブル 馬コード(PK),馬名,父,母・・・
レース結果テーブル レースコード(PK),馬コード(PK),枠番,馬番,鞍上,着順・・・

1回のレース結果を登録すると、そのレース出走頭数分のレコードがレース結果テーブルに作成される。
あとは、検索結果を表示するモジュールを作成すればなんとかなるんじゃない?

例)
【レース名テーブル】
001,ダービー,2004/5/30,東京・・・
002,安田記念・・・
003,宝塚記念・・・

【馬名テーブル】
901,金亀,キングマンボ,マンファス
902,ハーツクライ,サンデーサイレンス,アイリッシュダンス

【レース結果テーブル】
001,901,6,12,アンカツ,1・・・
001,902,3,5,ヨコノリ,2・・・
002,902,?,?,ヨコノリ,6・・・
003,901,?,?,アンカツ,2・・・

レース結果を馬名なり着順の順に表示した際に、レース結果テーブルを表示馬コードで検索して
レース名テーブルのの年月日の昇順に並べてレース結果テーブルの着順を表示させれば望み通りいくんでね?

適当に考えただけだから細かいところ間違ってるかもだけど(・ω・)
横長にしちまってもええんでない?

テーブル「tbl_競馬場」
 フィールド1 : 競馬場ID  (主キー、競馬場別のID)
 フィールド2 : 名前     (東京、中京)

テーブル「tbl_ウマ」
 フィールド1 : ウマID    (主キー、ウマ別のID)
 フィールド2 : 名前     (キングカメハメハ、ハーツクライ)

テーブル「tbl_レース結果」
 フィールド1 : ID      (主キー、オートナンバーだと楽)
 フィールド2 : 競馬場ID  (「tbl_競馬場」と一致するID)
 フィールド3 : 日付     (2004/05/29、2004/05/30)
 フィールド4 : 1着馬    (1着馬のウマID)
 フィールド5 : 2着馬    (2着馬のウマID)
 フィールド6 : 3着馬    (3着馬のウマID)
      :
 フィールド23 : 20着馬   (20着馬のウマID)

とにかくこんな感じでレース結果を記録し、話はそれからだな
5走後まで限定なら以降はクエリだけでも何とかなるだろ
>>670 とか >>672 はデータベースの基本からやり直した方がいい。
>>672 みたいにすると、あるレースの n 着の馬を求めよと言う時に、20個のフィールドを見るおバカな SQL を書く羽目になる。

>>671
レース結果には -2送後、-1走後 等のデータがありうることに注意。
例えばキングカメハメハは東京優駿(G1) の後にも出走しているかもしれないから。
674名無しさん@そうだ選挙にいこう:04/06/02 20:21
>>673
>例えばキングカメハメハは東京優駿(G1) の後にも出走しているかもしれないから。

東京優駿(G1) の"前"の誤りかな?
それならSQL文でレース名テーブルを表示レース以降の日付で検索してJoinすればいいんでない?

SELECT レース名テーブル.*,レース結果テーブル.* from レース名テーブル Left Join レース結果テーブル
(中略)
Where レース名テーブル.年月日 > 東京優駿の年月日 Order by レース名テーブル.年月日

みたいな感じで。
>>674
> 東京優駿(G1) の"前"の誤りかな?

スマン、指摘の通りだ。
676名無しさん@そうだ選挙にいこう:04/06/02 20:32
>>675
ラジャ!

んで、>>674でボケボケした頭でSQLまがいのものを書いたけど全然ダメだなw
レース名テーブルの年月日が表示レースの年月日以降のもので、レース結果テーブルの馬コードが
検索したい馬のコードと合致するものを抽出すれば良いんじゃないかという事が言いたかったのです。
適度に脳内保管よろししゅう。
おまいら、1日に何頭出走するか知ってるのか?
知ってて「レース結果テーブル」とやらの話をしてるやつは鬼だな。
>>670が屈腱炎になるぞw
678名無しさん@そうだ選挙にいこう:04/06/03 00:11
アクセス2000使用予定ですが、
1契約で15のフィールド。
その1契約に不特定個の商品があって、
その商品にも15のフィールドを作ろうと思っているのですが、
このままつっぱしってデータベース作ってよいでしょうか?
データベースの目的は
ある契約を選択すれば、すべての商品が表示される。
商品を選択すればどの契約かが分かる。
1000円以上の商品名とその契約番号を表示する。等です。

テーブル「tbl_契約」
 フィールド1 : 契約ID
 フィールド2 : 契約番号
・・・
テーブル「tbl_商品」
 フィールド1 : ID
 フィールド2 : 契約ID
 フィールド3 : 商品名
・・・ 
>>678 何か変な気がするぞ

テーブル「tbl_契約」
 フィールド1 : 契約ID
    ↑
 この二つの違いは何なんだ
    ↓
 フィールド2 : 契約番号
・・・

テーブル「tbl_商品」
 フィールド1 : ID
 フィールド2 : 契約ID
 フィールド3 : 商品名 ←何でここに商品名を入れるか
・・・ 

「tbl_契約」(契約ID、日付時刻、担当者IDなどなど) 主キーは契約ID
「tbl_契約明細」(契約ID、商品ID、割引率、点数などなど) 主キーは契約IDと商品ID
「tbl_商品マスタ」(商品ID、商品名、定価などなど) 主キーは商品ID
「tbl_担当者マスタ」(担当者ID、なまえ、Telなどなど) 主キーは担当者ID

んな感じになるんじゃないのか
契約番号は契約書か何かに書かれてる番号で、それは
一意じゃないけど検索には使いたい、とかじゃね?

で、キーとして契約IDを作って、それでリレーション張ると。
LAN環境のC/Sで、ファイルやフォルダをDBサーバー(MSDE or MS SQL)にアップロードするような事はVBAで出来ませんか?
DBに格納するとMSDEのような容量制限の厳しい場合すぐにいっぱいになってしまうので
データとフォルダ自体は、ファイルシステム上で構いません

※ファイルメーカーを使うと画像や動画などもフォルダごとDBにダイレクトに格納出来ると聞いたのですが、アクセスでは出来ないのでしょうか?
682名無しさん@そうだ選挙にいこう:04/06/03 16:46
質問させてください。
Access2000を使っているのですが、年賀状を受けたか受けていないかで分けて
クエリをつくりたいのですが、
「□」のチェックボックスにチェックがあるかないかで分けたいのですが、
どうもその分け方がわかりません。抽出条件をどのようにすればいいでしょうか?
683名無しさん@そうだ選挙にいこう:04/06/03 17:02
質問させていただきます、、、
【  目 的  】 □チェックボックスにチェックのあるものだけを抽出してクエリをつくりたい。
【  条 件  】 win2000 access2000
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 access チェックボックス 抽出条件
おねがいします、、、
すいません。テンプレにはめなかったので、二重投稿になってしまいました、、、
685名無しさん@そうだ選挙にいこう:04/06/03 17:03
【.  目 的  】 レポートをスナップショット形式で保存したい。
【.  条 件  】 (使用OS NT4.0、ACCESSのバージョン=97)
■試したけどうまくいかなかった処理
【. 概  要  】 レポートをプレビューし、ファイル−名前を付けて保存
−外部ファイルまたはデータベースでスナップショット形式で保存しようとすると
「メモリ不足の為、表示を更新できません。不要なアプリケーションを終了して、再度
実行して下さい」と表示される。
【駄目な理由】 (動作状況など) Windowsアップデート実行後?
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】Access スナップショット 保存

帳票をメールで送りたい時に、時々、スナップショット形式ファイルにして送ったりして
いたのですが、Windowsアップデートをしたら、保存できなくなってしまったようです。

どれかのHotfixを削除したら、保存できるようになったりはしませんでしょうか?
>>683
select * from テーブル where チェックボックスのフィールド名;
687名無しさん@そうだ選挙にいこう:04/06/03 22:32
1つの機械を使用者と管理者2つを名前テーブルから
参照したいのですが、うまくクエリで表示できません。
どうすればいいのですか?
【  条 件  】 win98 access2000

テーブル「tbl_機械」
 フィールド1 : 機械ID
 フィールド2 : 機械名
 フィールド3 : 使用者
 フィールド4 : 管理者
・・・
テーブル「tbl_社員」
 フィールド1 : 社員ID
 フィールド2 : 名前
・・・ 

|機械名|使用者|管理者|・・・
1
2
3
>>686
それだけじゃ抽出されないだろ?
SELECT * FROM テーブル名 WHERE チェックボックスフィールド名 = -1;
689名無しさん@そうだ選挙にいこう:04/06/03 23:20
>>687
クエリ内で、テーブル「tbl_社員」に別名つける。

from 以下

from [tbl_機械] as [A]
inner join [tbl_社員] as [B]
 on [A].[使用者] = [B].[社員ID]
inner join [tbl_社員] as [C]
 on [A].[使用者] = [C].[社員ID]・・・ 
>>688
やってみてから書いてくれ。
691687:04/06/03 23:54
>>689
ありがとう!
意味分かるのに10分かかりました。
おとついから仕事で初めてAccess使ってるのですが、
同じ部署にAccess組める人もいないし、どうしてもできないので、
「tbl_社員」と全く同じ「tbl_社員達」を作ってました。
明日こっそり直しておこう・・・
692名無しさん@そうだ選挙にいこう:04/06/04 06:54
>682
>「□」のチェックボックスにチェックがあるかないかで分けたいのですが、
>どうもその分け方がわかりません。抽出条件をどのようにすればいいでしょうか?

「□」のチェックの値は、−1
おのずと抽出条件は判るはず。

693685:04/06/04 08:42
解決しました。
Windows update Hotfix KB835732
を削除すると動くようです。
694名無しさん@そうだ選挙にいこう:04/06/04 12:53
tbl_社員達 ワラタ
すんません質問です。
フォーム上にリストボックスを配置し商品一覧を見れるようにしました。
ここで例えばコーヒーというボタンを押すとリストボックスのコーヒーの行が
赤くなる方法を教えてください。
>>688=>>692 なの ?

それとも、アフォが二人いるってことか ?
>695
リストボックスじゃなくて、サブフォーム使えば、条件付書式が使えるぞ
>>696
Accessだとクエリで保存すると「<>False」ってなるので
どっちでもいいんじゃないの?
>>698
> Accessだとクエリで保存すると「<>False」ってなるので

Access2000 ?
俺は、SQL 直書きしてるからそんなことにはならんし、ウィザード使っても「= True」のままなんだが...。

まあ、「=True」「<>False」もお間抜けだと思うが、「=-1」なんて書くより 100倍マシだ。
テーブルを開いてチェックボックス用の値を見てみるとYes/No型に入る値は yes = -1、no = 0。
まぁ、trueでも-1でも正しい。

テーブルの世界ではyes/no型なのに、値は-1だのtrueだの出てくるから混乱するんだろうな。
単純にtrue/false型っていう型名にすりゃいいのにな。入れる値もtrue/falseに限定して。
おそらくVBAのtrue/falseとの互換性でこういう混乱が出て来たんだろう
>>688=>>692=>>698=>>700 なのか ?

> まぁ、trueでも-1でも正しい。

別にあんたがそう思ってるなら、問題ないよ。
ちょっとアホっぽく見えるだけだし。
>>701
どーうしても同一人物にしたいの?

>ちょっとアホっぽく見えるだけだし。
どうしてそー見えるか説明して頂けませんか?
>>702
> どーうしても同一人物にしたいの?

みんな、下の理由でアホっぽく見えるから。

> どうしてそー見えるか説明して頂けませんか?

Yes/No 型 (Bit 型) と、整数型を混同しているから。
友達いなそうだな
テーブルのデータをクエリで抽出して一覧を作りました、
そのクエリから一つのレコードを閲覧又は修正するフォームを
開きたいのですが、特定レコードをダブルクリック又は選択して
コマンドボタンなどで、そのレコードを表示させる方法教えて下さい。
>>703
アホついでに教えてほしいのだけど...

>select * from テーブル where チェックボックスのフィールド名;

この場合はチェックされたものを抽出される。チェックなしの場合は

SELECT * FROM テーブル WHERE NOT チェックボックスのフィールド名;

でいいの?
>>706
それでいい。
>>705
抽出したクエリの内容をリストボックスに表示する

選択されたレコードの内容を単票フォームに表示する
VBのBoolean型は正確にはBit型じゃないよな
?CInt(False)
 0
?CInt(True)
-1
Bitだったら0か1だろ!-1ってなんじゃ(#゚Д゚)ゴルァ!!

Jet接続型のODBCリンクなんて使ってると混乱の極み。

ORDER BY句でYes/No(Bit)型フィールドをASC指定してると、
Accessの場合は、True(-1)→False(0)と並ぶが
例えばSQL Serverの場合だと、False(0)→True(1)
って混乱すんじゃ(#゚Д゚)ヴォケ!!

そんなわけで、ORDER BYにYes/No型を指定してる( ゚д゚)ポカーンなSQLは
Access上では、全て↓こう変更することで対応させています。
ORDER BY Abs(フィールド名)

これ、マジおすすめ(´∀`)
710名無しさん@そうだ選挙にいこう:04/06/07 14:20
>>709
>ORDER BY Abs(フィールド名)
おお、これいいな。
俺は今までYes/No型は使わず、数値型にして(Boolean型だと-1が格納できずエラーになる)
ORDER BY フィールド名 DESC,・・・
ってやってたよw
Access仕様にしたい場合は
ORDER BY CBool(フィールド名)
にすれば(*゚ー゚)b
712名無しさん@そうだ選挙にいこう:04/06/07 22:41
在庫テーブル(品名、数量、金額、合計という4つのフィールド)の
合計に数量と金額を掛けた値を入れたいのです。

フォームで、合計のコントロールソースに式を入れると表示されますが、
在庫テーブルに反映されません。
クエリでもいろいろ試しましたが、在庫テーブルの合計フィールドに
計算結果を入れることができませんでした。

私は何から勉強したら良いのでしょうか?
>>712
RDBとは何なのかから勉強した方が良いでしょう。

合計のような、他のフィールドから導き出せるものは
テーブルに格納すべきではありません。
>>713  そうかなぁ? 違うと思う。
715てすと:04/06/07 23:46
Private Sub 数量_AfterUpdate()
Me!合計 = Nz(Me!数量, 0) * Nz(Me!金額, 0)
End Sub
>>712
>>フォームで、合計のコントロールソースに式を入れると表示されますが
それだけじゃダメなの?
どうしても値として保存したいの?
だったらどういうタイミングで保存したいのか、書いてくれなきゃ。

たとえば数量は手入力ってことなら
>>715でOKだろうし

CurrentDb.Execute "UPDATE 在庫テーブル SET 在庫テーブル.合計 = [数量]*[金額];"
なんてことを、保存したいタイミングのところに書いてもいいし

ま、何にしても >>713 が正論
717名無しさん@そうだ選挙にいこう:04/06/08 00:41
RDBのお勧めサイトあるかしら?
とりあえず、魔法使いとpin's
719712:04/06/08 01:50
なるほど、713さんの言う事がちょっとだけわかったよ、
アクセスいじり始まって何度かあったんですが、
なんでこんな簡単な機能が付いてないのかな????
悩んだ挙げ句に見つける答えが「必要ないから無い」

レス頂いた方ありがとうございました。
720再クエリについて:04/06/08 14:08
ACCESS2002、Windows2000です。
データシート型によるフォームでコンボボックスの連動抽出を
しているのですが、次のデータへ移行した際、フォーカス取得時の
再クエリのせいか前の入力欄が空欄で表示されてしまいます。
(見たいデータを選択すればレコード移動時の再クエリにより、また表示される)

図で書くと
         コンボ1  コンボ2(コンボ1により連動抽出)
     行1: ○○○   △△△
     行2: □□□   ◇◇◇
     行3: ○○○   ☆☆☆
と表示したいのに行1を選択すると
         コンボ1  コンボ2
     行1: ○○○   △△△
     行2: □□□       ←表示されない
     行3: ○○○       ←表示されない
行2のコンボ2を選択すると
         コンボ1  コンボ2
     行1: ○○○       ←表示されない
     行2: □□□   ◇◇◇
     行3: ○○○       ←表示されない
また行3のコンボ2を選ぶと
         コンボ1  コンボ2
     行1: ○○○       ←表示されない
     行2: □□□       ←表示されない
     行3: ○○○   ☆☆☆

ちなみにテーブルのコンボ2のところにはきちんとデータが入力されています。
どの行を選んでも、コンボ2の行には入力されたデータが表示
されるにはどうすればいいですか?
お願いします。
>>720
「空欄」で表示されるって事がいまいち分からないが、
コンボ2のレコードソースが間違っているだけじゃないの?
722名無しさん@そうだ選挙にいこう:04/06/11 12:24
質問です。ACCESS2000のライセンスを10ケ欲しいのですが、
どこで売ってますか?ネットで色々調べましたが見付かりませんでした。
723720です:04/06/11 14:48
>>721サマ
コンボ2の連動抽出クエリを切ると、どの行に行っても全て表示されます。
どうもコンボ1からコンボ2への抽出クエリを行う際、フォーム上では
コンボ2列(ソース)全てがコンボ1(指定行)の抽出対象とみなされる為
消えてしまうようでした。
つまり図で書くと
         コンボ1  コンボ2
     行1: ○○○       ←行2のコンボ1を参照して再クエリするため表示されない
     行2: □□□   ◇◇◇ ←これが今アクティブ
     行3: ○○○       ←行2のコンボ1を参照して再クエリするため表示されない
ということみたいです。
試験的にデータを増やして
         コンボ1  コンボ2
     行1: ○○○   △△△
     行2: □□□   ◇◇◇
     行3: ○○○   ☆☆☆
     行4: □□□   ◇◇◇
と行2と同じデータを行4に入れ込むと
         コンボ1  コンボ2
     行1: ○○○       ←表示されない
     行2: □□□   ◇◇◇ ←これが今アクティブ
     行3: ○○○       ←表示されない
     行4: □□□   ◇◇◇ ←表示される
となりました。
普通データシート形式での連動抽出は行わないようですね。
(本を読んでも単票形式による連動抽出ばっかり)
もし万が一裏技があればよろしくおねがいします。
724名無しさん@そうだ選挙にいこう:04/06/11 15:37
年寄りだが、教えてくれないか。
歳とったことと、昔コボルをやった関係でシステム構築には、やや自信がある。

なんとかAccessで構築出来るようになった。
所が、作ったやつをコピーされ、ひどい時には3年位して、回りまわって
自分の所に来たのには、驚いた。

で 教えてほしいのは簡単なプロテクトはないかなー。(暗号化は難しいから)
たとえば、テーブル・クエリー又はフオームだけに。
エクセルの保護と言うような機能。

いじわるせず、教えてくれー。 69歳だ。
戻ってろ・・・!墓に・・・・!
>>724
プロテクトは標準装備されているからHELPを読むと良い。

フリーソフトにすればよい。一般公開すれば無料で著作権を守ることが出来る。

COBOLで書けばいいやん
727名無しさん@そうだ選挙にいこう:04/06/12 00:40
借金の返済についての質問です。
Access2000利用してますが
借金テーブル
    借金名   借金額  率
1   長期借入1 100000 3.4
2   長期借入2 200000 3.8

返済予定テーブル
借金ID 返済日   元金返済分  利子
   1  6月10日        0   300
   1  7月10日     50000   300
   2  5月25日     50000   300
   2  6月25日     50000   150

ってイメージで、毎月々の返済金額とか、日付いれたらその日の借金残高とかを表示したいのですが、
うまい計算式が思いつきません。エクセルならなんとかなりそうなのですが。
利子の値は利率で計算するのはあきらめて、データ化するつもりです。
テーブルの構造はこれでいいか?また計算方法等アドバイスお願いします。
728名無しさん@そうだ選挙にいこう:04/06/12 01:46
両面印刷についてです。

| =====| |===== |
|  1P  | .|  2P  |

上記のように奇数ページと偶数ページで全体をオフセットして印刷したい
のですが、どうすればよいでしょうか。

会社の専用紙の裏表に手差しで両面印刷を行います。両面印刷対応プ
リンターではありません。プリンターも数機種あるのでプリンターのドライ
バー設定などに頼らずに印刷します。
>>724
基本的には不可能

それはシステム的なことで不可能といっているわけではない。
何よりもあなたが、そのシステムを納入した先には使い方を教
えなければならない。

当然ながら、最初のパスワードから何からなにまで教えなけれ
ば相手も使えない。逆に相手はコピーしたらそれを伝えれば、
別の相手も使えることになる。

これはシェアウェアをどう完全に守るのかということにもつながる
がいまだ決定打など存在しない。ただ、クラックまでにはいかない
ような専門のシステムだろうから、その点打開策はあるのかもしれ
ないが。

あとはそれこそ簡単なアクティべーションさせるとか、メモリーキー
を使うといったハードウェア的な事、PGPを応用する くらいしかない
730名無しさん@そうだ選挙にいこう:04/06/12 09:06
>>727
なんでわさわざaccessでやんの

借金の返済金額とかはexcelの方に関数がいくつかあるでしょ
財務関数 PMT PPMT IPMT でググッテ頂戴
ただし excelのここら辺のヘルプは誤訳があって結果が逆らすいというのを
南下で見たことがあるので注意。

おいらにaccess おいへて  まだ頭が access用に切り替わっていない  鬱だっっっ
731名無しさん@そうだ選挙にいこう:04/06/12 14:19
ACCESSとEXCELどっちのVBA勉強したら転職に有利ですか?
>>731
VBA 自体は一緒だよ。
扱えるオブジェクトが違うだけだから、どっちでもたいして変わらん。

ちなみに Access はよく知らんが、今時 Excel がどうのこうので就職に有利なんて思っている時点で遅れていると思う。
コンボボックスがA・Bと2つあり、
Aで選択した内容によってBの内容が変わる。
というのどうすればよいのでしょうか?

環境はACCESS2000です。
734731:04/06/12 14:26
Excel VBAの講座行きます。ありがとう
735名無しさん@そうだ選挙にいこう:04/06/12 18:41
>>726 >>729
どうもありがとう。
感謝する。
724です。
736名無しさん@そうだ選挙にいこう:04/06/12 19:29
Access200 NTorW2kですが
データ格納用mdbと
そこへのリンクが張ってある画面用mdbに分けて使ってます。
1ユーザが画面用mdbを正規にメニューから閉じないで
OSをシャットダウンしたりすると
データ格納用mdbに「認識できません」エラーが発生します。
で、強制終了させられそうになった時に
正規の終了手順をイベントとして起こしたいんですが
どうすれば良いか教えてください。
737名無しさん@そうだ選挙にいこう:04/06/12 22:52
質問です。
【.  目 的  】 フォームで選択されているレコードのみ印刷する
【.  条 件  】 win2k、ACCESS97
■試したけどうまくいかなかった処理
【. 概  要  】 MSのサイトにあるwhere文をそのまま使ってみました。
ttp://support.microsoft.com/default.aspx?scid=%2Fdirectory%2Fworldwide%2Fja%2Fkblight%2FT005%2F4%2F11.asp
初めてアクセスを触るので、まずはテストでフィールドが3つ、うち
主キーにオートナンバーのフィールドを含む簡単なテーブル、
テーブルをレコードソースにしたフォームとレポートを作成してやってみたんですが・・・
【駄目な理由】 全レコードがレポートに出てしまいます。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 フォーム レコード 印刷 WHERE

MSのサイトはACCESS2000なんですが、私は97です。それは関係ありますか?
また他にヒットしたサイトではstrLinkCriteriaとあり、stの後にrがついているかいないかの
違いなんですが、こういったことは関係あるのでしょうか?
プロシージャをコピペしても出来ません。
レポート名やフィールド名の指定は間違っていないと思います。
一体何がいけないのか、どうかどなたかご教示ください。よろしくお願いします。
737です。
すみません、自己解決いたしました。スレ汚し大変失礼いたしました。
739名無しさん@そうだ選挙にいこう:04/06/13 16:43
>>734
Excelより、Accessの方が、データの運用、分析、バックアップ、マルチユース、速度、
あらゆる面で優れてるとおもうけど、
簡易にいじれる点で、Excelの方が、いいのかな。
しかし、ACCESSを知れば知るほど、Excelがチャチク感じてしまう。

Excelの方が、汎用的なので、段階的としてはExcel→Accessと移っていったほうがいいのかな。
用途がまるっきり違うと思う
ちょっと聞きたいんですが、
AccessのVBAのメソッドとかプロパティの一覧と
簡単な機能の説明載ってるようなものが欲しいんですが
どなたか知りませんか?
742741:04/06/13 17:29
月曜必要なので探してるんですが全然なくって・・
743名無しさん@そうだ選挙にいこう:04/06/13 18:57
質問させてください。
ACCESS97のソフトが欲しいのです。
東京で中古でしたらどこに売っていますでしょうか?
秋葉原に行けばありますか?
744名無しさん@そうだ選挙にいこう:04/06/13 18:58
>>740
用途まるっきり違うとは思わないな。

Excelでは、計算する時に、扱いやすいかもしれないけど、

Accessでも、フォームを使えば出来る。グラフも作成できるし。

ExcelでやってることはAccessでも十分対応できる。

そして、そのデータを蓄積して、運用するのにも優れてる。
細かいこといったらきりが無いけど、業務上Excelで必要な処理は、Accessで十分網羅できる。

データの運用や、マルチユースで使ったり、テーブルバックアップも出来、Excelより断然いいと思う。
売掛表とかも、メインフォームとサブフォームを使えばいいのが出来ますよ。
745すいません。その1:04/06/13 19:07
Accessは持っていなくてマイナーなDBソフトを使っているのですが
そこでは回答が得られず(メジャーであるAccessがうらやましいです)、
またソフトというよりDBの基本的な使い方といった質問なのでスレ違いを
承知で質問させて下さい。

ある印刷物の工程管理システムを作ろうと思っています。
そこで行程管理システムのデータは1つの表で持った方が良い
のか行程ごとに別表を作って持った方が良いのか教えて下さい。

例えば以下の様なシステムがあり、

(1)商品受注台帳で商品を受注する。(受注番号をつけて管理)

この台帳で受注した商品の工程管理をする為に、下記の(2)の
様なシステムを作りたいと思います。

(2)未完成の商品を幾つか工程を経て完成させて出荷する。

工程には以下の3つがあるとします。

(A)サンプル作成
(B)顧客へサンプルを送付してのチェック
(C)印刷

(1)で受注する商品には種類があり、

通常の新規注文の商品はA→B→Cの工程を経て完成します。
通常の再注文の商品はCの工程のみを経て完成します。
チェックが厳しい顧客の新規注文の場合はA→B→A→B→Cという用に
(A)と(B)を何度も繰り返す事になります。
(A→B→Aの繰り返しは最大5回ぐらいです。)
746すいません。その2:04/06/13 19:08
A,B,C,それぞれの工程から次の工程に移る時には伝票を発行します。(※あ)

(1)の受注台帳で受注番号0001から0006までの受注があり、
受注番号0001と0004の商品が工程C、0002と0005の商品が工程B、
0003と0006の商品が工程Aの作業中だとします。

ここからが質問です。
いま工程Aの作業中の商品の受注番号一覧や工程Bや工程Cの作業中の
受注番号一覧を必要に応じて見たいと思います。(※い)

その為のデータの保持の仕方として2つ思いつきました。

1つ目の方法は(1)の商品受注台帳コピーテーブルを作り、そのテーブルに
[現在の作業工程]の様なフィールドを作り、ここに(※あ)の伝票発行時に
作業工程を書き込む。
そして(※い)の事をする時に[現在の作業工程]を元に抽出をして
フォームで表示する。

2つ目の方法は、やはり(1)の商品受注台帳コピーテーブルを作り、その他に
工程Aテーブル、工程Bテーブル、工程Cテーブルと3つのテーブルを作り、
(※あ)の伝票発行時に商品データを商品受注台帳コピーテーブルから工程A
テーブルへ移動させたり、工程Bテーブルから工程Cテーブルへ移動させたりして
(※い)の事をする時には工程Aテーブルや工程Bテーブルなどをフォームで表示させる。

この2つの方法の内どちらが一般的なのでしょうか?
「それはケースバイケースだよ」と言う場合でも、時間を掛けて作り込ん
でから重大な問題が見つかり、やり直しとなるとショックが大きいので、
それぞれの方法の特徴とかがお分かりでしたら教えて下さい。
>>744
ヴァカなの ?
それとも、引っ込みがつかなくなってるのか ?

がんばれば○○ができると言うなら、多分 VC++ を買えば何でもできるぞ。(藁

特定の処理が、「簡単に」できると言うところにアプリケーションプログラムの意味があると思うぞ。
748740:04/06/13 21:40
マァマァ
>>745
生産管理の典型的なパターンですね
販売管理から受注残データを使って日程計画データを作る。発送売上と共に消える。

ごく普通に1の方法を取ります。2の方法が何故必要なのか理由がわかりません。
組織の他部署が必要とするのは1のデータです。そしてシンプルです。

ここで書かれている内容以外にも多くの懸案事項があると思います
受注取り消し、納期変更、材料計画、分納、などなど
今後拡大される要求は予想できるし、変更作業は3回以上は当たり前です。
大切なことは操作ミスに影響されずに正確に動作する事です。

データ抽出(SQL)の能力は想像以上に高いので安心して使うことができる。
データ入力の間違いは大きく影響するので慎重に行うべき事。
750すいません。:04/06/14 00:45
>>749

どちらが良いのか分からなかったのですっきりしました。
ちなみに2の方法を考えたのは各工程での処理中のデータを
表示させる時に簡単だしデータを実際に動かした方が
わかりやすいのかな?と思いました。
しかし、たしかに行程が多いとシステムがかなり複雑になってしまいます。
ありがとうございました。
751名無しさん@そうだ選挙にいこう:04/06/14 03:24
>>747
頑張んなくても出来ますよ。
逆にAccessの方が作りやすい。
Accessはデータベースアプリ。
VC++、データベース機能を実装してないと思うけど、時間も掛かりそうですし、
高くつきそうですね。
>>751
> 頑張んなくても出来ますよ。
> 逆にAccessの方が作りやすい。

一体何を念頭において話してるんだ ?
Access の方が作り易いやつなんて星の数ほどあるだろうし、Excel の方がやりやすいやつも星の数ほどあるだろうね。

> Accessはデータベースアプリ。

と言う風に考えてるから、ダメなんだろうね。
Access は、データベースアプリケーションの開発環境だよ。
だから、それこそやる気になれば大抵のことはできる。
もっともそんなこと言うと、Excel でも VBA + MSDE 使えば大抵のことはできるわけなんだけどね。

> VC++、データベース機能を実装してないと思うけど、時間も掛かりそうですし、
> 高くつきそうですね。

あなたがやるとそうかもね。(藁
753740:04/06/14 22:07
うーん
Accessは使い込んでるようだけど、Excelのことはよく分かってないんじゃないか?
Excelの機能とAccessの機能でオーバーラップする部分について
Accessのほうが強力だという主張はわかるけど、棲み分けを考えていない。

VC++は...ODBC API を叩けるから、データベース機能は備わっている
と言えなくもない。
Access 使い込んでると言うか、Access がやっとわかりかけたぐらいじゃないの ?
確かに、Excel ではできないことが色々できたりするから、Access マンセーになってるだけでしょ。
まあ、俺もそういう時代あったし。
パラメータクエリを開く時、値を問われますが
これをコンボボックスで選択させるようにはできないのでしょうか?
無理なのかな〜
↑できないわけがない。
いや、問われてからコンボボックスを出したいとかいうことになると話は面倒いが
普通は最初からパラメータをコンボボックスにすると思う

757751:04/06/15 02:08
Accessの方が、現金出納、売掛表など、汎用業務ファイルは、MDBファイル間での方が、
ExcelとAccess間よりもデータの共有をしやすい。
過年度データの蓄積、それによる過年度データとの分析も容易。

こういった主張を、いちいち、断言(万人がそう思ってる)と取るのは、揚げ足取り。

<一体何を念頭において話してるんだ ?
<Access の方が作り易いやつなんて星の数ほどあるだろうし、Excel の方がやりやすいやつも星の数ほどあるだろうね。

「」と私は思います。

という文章をいちいち入れる必要は無いと思いますよ。
自分の意見が、万人の意見ではないと捉えるのは常識だから。

Accessをわかり始めた程度ということは否定しません。
ただ、Excelで売掛表なりを作った経験から、Accessの方が良いと判断したまでです。

これから、データアクセスページを勉強します。
758751:04/06/15 02:44
<Accessの方が作りやすい。

コーディングした後、Excelの場合、その対象となるセルをある事情により変えた時、
またコーディングし直さなくてはならないこと。

ExcelのフォームはAccessのフォームに比べて編集しづらいし、機能も充実してないこと。
(ヘッダー、詳細セクション、フッターに分かれてなく、かつ帳票フォーム、単票フォームなど選択できない)

Excelにはレコードセットオブジェクトの概念が無いこと。
モチツケ
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
760740:04/06/15 07:52
ようするに、最初から「売掛表を作るのに」Accessが良いって
言えば良かったんじゃない。
あらゆる面で優れているとか言っちゃうから火種になるんだろ
アクセスとエクセルは基本的な考え方が違う。それを理解しないといけない。
データーベースと表計算の違いを把握すべきです。
762名無しさん@そうだ選挙にいこう:04/06/16 11:29
【.  目 的  】フィールドに 画像欄を加えたい
【.  条 件  】 XP home、ACCESS2000
■試したけどうまくいかなかった処理
【. 概  要  】 データ型をOLEオブジエクトとして画像枠を作ったが、挿入がうまくいかなかった。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】はい
【検索キーワードは?】 アクセス 画像
>>762
どういうVBA構文、又は処理で画像の挿入をしようとしたか
書いてもらわないと。
764名無しさん@そうだ選挙にいこう:04/06/16 16:58
【.  目 的  】
登録・更新画面と表示用(参照のみで編集不可)画面を1つのフォームで作成したい。
表示用ではTextボックスのBorderStyleをなくしラベルのようにしたい。
【.  条 件  】 WinXP, Access2002
■試したけどうまくいかなかった処理
【. 概  要  】
 LockedをTrueにする、EnabledをFalseにする。
BorderStyleを実行時に変更する。
【駄目な理由】
LockedをTrueにした場合、各項目の編集は行えなくなるが、
見た目が登録画面と同じである。
 Enabledをfalseにした場合には文字が薄くなってしまう。
 BorderStyleは実行時に変更できない。
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
 Access フォーム 切り替え
Access BorderStyle 変更
VB 入力制御

 このような仕様を満たしたい場合にはどのような解決策をとられていますか?
 画面レイアウトの修正を減らすためにも1つのフォームで可能であれば1つの
 フォームで実現したいのですが、無理な場合にはテキストボックスの
 BorderStyleのみが異なるフォームを2つ作成し、それらをサブフォームとして
 動的に組み込むという方法も検討しています。


 
765名無しさん@そうだ選挙にいこう:04/06/16 18:50
>>764
Docmd.openForm "そのフォーム"
を使って、デザインビューにした後、BorderStyleを変える。
Docmd.RunCommandで保存した後、

Docmd.openform "そのフォーム"
を使って、フォームビューに戻す。

フォームビュー上で変更できないプロパティは、デザインビューで変更できます。

でも、デザインビューに変更する時に画面がちらつくので、
別のテキストボックス、ラベルを新たに作って、Visibleプロパティを使った
方が、処理が早いですし、画面のちらつきも抑制できると思います。
766764:04/06/16 19:35
>>765
回答ありがとうございます。
1つのフォームを使いまわすより2つ作ったほうがいいのかも知れないですね。
あと弊害としてフォームの変更→保存を繰り返すと
mdbファイルが壊れやすくなる。
>>767
意味不明。

なぜ壊れやすくなるのかをきちんと説明もしないで、何を
言って居るんですか?
経験則だろ。
なぜ壊れやすくなるかは MS に聞いてくれ。

俺も、そういう経験を何回かしている。
アイデアを頂きたく書き込みます。
【1. 目 的 】
客先データの変換(EDI情報。csvファイルにて供給)
CRのみの改行コードをCR+LFにしたい
【2. 条 件 】
Windows98、ACCESS97
【3.自分のアイデア】
Access2000のReplaceを使えれば楽だが、使えるAccessは97のみ。

1)変数Aにデータをインプットする
2)instr関数で X=instr(A,chr(13))
3)Mid関数で  A'=mid(A,1,X)
4)instr関数で Y=instr(X+1,A,chr(13))
5)Mid関数で  A'=mid(A,X+1,Y)

あとは4−5の繰り返しですが、マズイのは何回繰り返せばいいか指定できない
(客先データの上限が変動する)
ことでしょうか。
なにか、良いアイデアはありませんでしょうか……

■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 キャリッジリターン ラインフィード 変換 Access
771名無しさん@そうだ選挙にいこう:04/06/17 11:13
>>770
Windows Scripting Hostが使える環境なら、
ttp://www.mhl.janis.or.jp/~winarrow/psoft/vbatips.htm
という方法もあるようです。
772770:04/06/17 11:41
もしかしたら、CRのみじゃなくてLFだけかも。
>>770
for i=len(str変数) to 1 step -1
  if mid(str変数,i,1)=vbLf and i>=2 then
    if mid(str変数,i-1,2)=vbCr & vbLf then
      i=i-1:goto to_next_i
    endif
  endif
  if mid(str変数,i,1)=vbCr or mid(str変数,i,1)=vbLf then
    str変数=left(str変数,i-1) & vbCr & vbLf & mid(str変数,i+1)
  endif
to_next_i:
next i
MacからDosへの変換ですか? Unixですか?
アクセス2000をWIN98SEで使っています。
普段は表示されていたメニューバーが突然表示されなくなってしまったのですが
元のように表示させるにはどうすれば良いのでしょうか?宜しくお願いいたします。
>>768
>>769も書かれていますが、Accessは新しいバージョンでFormが
壊れにくくなったとはいえ、全く壊れなくなったということは有りません。
自衛策としてFormやReportの変更時にバックアップを取る必要です。

>>770>>773
InStr()とMid()関数を使った例です。
 Dim sOrigin As String, sResult As String
 Dim lLastPos As Long, lPos As Long

 sOrigin = "......." '変換したい文字列
 sResult = "" ' 変換結果が入る
 lLastPos = 1
 lPos = InStr(sOrigin, vbLf)
 Do While lPos ' LFが見つかる間、ループ継続
  sResult = sResult & Mid(sOrigin, lLastPos, lPos - lLastPos) & vbCrLf
  lLastPos = lPos + 1
  lPos = InStr(lLastPos, sOrigin, vbLf)
 Loop
 ' 最後のLFがなかった時
 If lLastPos < Len(sOrigin) Then
  sResult = sResult & Mid$(sOrigin, lLastPos)
 End If
777770:04/06/17 17:11
>>774
客先の情報が、受領したCSVしかないのでよくわからないんですよ。
Macとは考えづらいと思うんですけど。

773>>
776>>
試してみます。
ありがとうございます!
778770:04/06/17 17:11
771が漏れてました…(^^;ゞポリポリ
779775:04/06/17 17:22
初心者の質問をしてしまい申し訳ありませんでした。
いま、そばに聞ける人がだれもいなかったんです。他所で伺ってきまーす。
780名無しさん@そうだ選挙にいこう:04/06/17 17:32
>>779
表示→ツールバー  じゃないの??
おいおい、メニューバーと書いてあるぞ・・・
Access本体ではもちろんきちんと動く、インポートのマクロ

しかし、Access2000のランタイム上で走らせるとインポート
のマクロがまるで動きません。
インポートしたいのは、csvファイルでして、通常ならテキスト
インポートウィザードが立ち上がるところが、一向になにも、
動作しません。

インポートのマクロをランタイム上で動かす為にはどうしたら
よいでしょうか?また、同様の処理をVBAで実現するために
はどうしたらよいでしょうか?
いくつか理由があって、クエリを使わずにSQL文だけで済ませなくてはならない箇所が出てきてしまいまして。

SELECT tbl1.日付, tbl1.品番, tbl1.点数 FROM tbl1 WHERE 日付条件;

この単純な選択クエリを元にして、「品番グループ化」「点数合計」を出すSQL文は、どう書けばいいんでしょう。
>>783
サブクエリを使ってみては?

SELECT Q1.品番, Sum(Q1.点数) AS 点数の合計
FROM (SELECT tbl1.日付, tbl1.品番, tbl1.点数 FROM tbl1 WHERE 日付条件) AS Q1
GROUP BY Q1.品番;
785783:04/06/18 16:23
>>784
すごい
おもしろいです
このSQL文、クエリのデザインビューで見るとどうなるのかと思って貼りつけてみたら、
データベースウィンドウの中には存在しないQ1を基にしてるんですね。
ありがとうございました
786名無しさん@そうだ選挙にいこう:04/06/20 02:35
さっぱりなので、よろしくお願いします。
【.  目 的  】 レポートへの出力で複数のチェックボックスの中から、
         チェックが入っている項目のみ出力する
【.  条 件  】 XP access2000
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 レポート チェック

1つのテーブルの中に、チェックボックスのフィールドが複数あります。
このチェックボックスの中より、チェックされているフィールドのみ、
レポートへ出力するようにしたいと思います。
よろしくお願いします。

テーブル A
フィールド 1  2  3  4  5
          レ     レ
この場合レポートへは、
2レ  4レ
のように出力したいのです。

>>786
if関数とforでループさせるといいよ
788名無しさん@そうだ選挙にいこう:04/06/20 18:16
------|--------|-----------|----------|----------|----------|----------|----------|
日付 | 評価額 |  数量  | 金額   |評価損益 | 売却数 | 残数  | 残存価格 |
------|--------|-----------|----------|----------|----------|----------|----------|
1/1 | 100 | 100 | 10,000 | 0|     0 | 100 | @10,000 |  
------|--------|-----------|----------|----------|----------|----------|----------|
2/1 | 200 | 100 | A20,000 | A−@  | 0 | 100 | B20,000 |
------|--------|-----------|----------|----------|----------|----------|----------|
 3/1 | 50 |  100 | C 2,500 | C−B |  0|   100 | D 2,500
 
はじめて質問いたします。アクセス超初心者です。
なにもわからず、どつぼにはまっています。

O/SはWin2000です。ACCESSは2000バージョンです。
クエリ上で計算式を入力したいのですが、方法がわかりません。
上記の表の中で評価損益のフィールドに入れる計算式はどのようにすれば良いでしょうか?

表も見づらいと思いますが、アドバイスをよろしくお願いします。



789名無しさん@そうだ選挙にいこう:04/06/20 18:57
評価損益:[評価額-金額]*[数量]

ではいかんのか?? エロイ人 おしえてーーー   /(-_-)ヽ
それはひょっとして

評価損益:([評価額]-[金額])*[数量]

じゃないのか
791名無しさん@そうだ選挙にいこう:04/06/20 21:20
>>788、789
ACCESSで処理する理由は何?
その表だけ見るとエクセルでやったほうがいいんじゃないか。
ACCESSでやるならVBAを使うか、VBAを使わないでとなると
前月評価額フィールドを作って、
[前月評価額]-[金額]*[数量]



792名無しさん@そうだ選挙にいこう:04/06/20 22:43
エクセルだとこのような物をアクセスで作りたいのですが、とりあえず、先程の表は不完全だったのでSSを載せてみました
http://para-site.net/up/file/128.jpg


>>789-790
ありがとうございました 
ごめんなさい 私の表が不完全でした 新しい表をもし良かったらご覧ください
>>791
会社の指示です
VBAも全く分からないので、フィールドを作る方法でトライしてみようと思いますが、

新しく作った表のケースでは、どう処理したら良いのか 図々しいのですがもう一度アドバイスお願いします
 
株だろうとは思ってたけど、評価替えは年一回?
それと、取得価額は取得の時によって変動があると思うけど
それは考慮しなくても良いの?
794名無しさん@そうだ選挙にいこう:04/06/20 23:51
>>ありがとうございます。
 評価替えは年二回です。
 そうですね!気がつきませんでした。取得価格の変動は、確認してみます。
 もしも、フィールドを作る方法だと前回評価額フィールドに入力するのでしょうか?
 VBAは私には難解なのですが、マクロの値の代入など(知ったかぶりですみません)では
 無理がありますか?
795名無しさん@そうだ選挙にいこう:04/06/21 07:49
access つーーより excel の方が臨機応変に対応できるような気がするけど

excelで表全体を見せるのがいやであれば グループ化するとみやすくならないのか?
796名無しさん@そうだ選挙にいこう:04/06/21 19:11
Accessで作ったシステムに使用期限をつけたいんですが、PCのシステム
時刻を遡って変更されても大丈夫にしたいんです。
レジストリに直接使用期限日を書くだけでは出来ないので悩んでいます。
どなたかご存知であればご享受ください。
797名無しさん@そうだ選挙にいこう:04/06/22 12:12
あるAccessデータベースから、他のAccessデータベースのフォームやレポートを利用する方法はないでしょうか?

可能なら、DLL的な使い方をする共用データベースを作りたいのですが・・・
>>797
取り込みたい方のmdbを開いて
[ファイル]−[外部データの取り込み]−[インポート]
でおkです
レコードソース等は適宜修正してね
ところで、DLL的って何ですか?私はよく分かりません
>>796
思いつきですので軽く受け流してください
ACCESSを使われるPCがネットワークで使用されると仮定して
対象のmdb起動時に、他の常に電源はいっているPC(サーバ)に
時間の同期を取りに行くようにしては如何でしょうか?

コマンドはご存じでしょうが
net time \\時間サーバ /set /y
として、mdb起動時に、時間サーバの日時を使用しているPCに同期させて
使用期限と比較してACCESS起動の有無を判断させる・・・と思いついてみました

単独PC(非ネットワーク)での使用で時刻を変更されたら・・・うーん、思いつきませんね
ごめんなさい
800名無しさん@そうだ選挙にいこう:04/06/22 14:15
aaa
801800:04/06/22 14:25
アクセス規制が解けてますた・・・。

レポート印刷時のページ設定を保持する、
あるいは印刷のたびにマクロあるいはVBAで設定するにはどうすればいいのでしょうか?
昔はもっとヘルプトピックが豪華だったように思うのですが、
何度インストールし直しても、目的のトピックが出てきません。
クエリで新しいテーブルを作成する時に、姓と名の間にある空白を取り除きたいんですが
どうすればいいでしょうか。教えてください。
>>801
確かベクターがどこかに便利なツールがあったと思います
レポート毎に用紙設定や余白が設定できたと思います
探してみてください

>>802
色々なやり方があると思いますが
ACCESS97以前でしたら、LEN関数とRIGTH関数を用いてスペースを削除してみたら
いかがでしょうか?
で、Do Until-Loopで回してみると良いかも知れません
ACCESS2000以上でしたらsplit関数なるものが新しく仲間入りしたような気がします
では
>>802
ごめんなさい、書き方悪かったです
型はVariantです
len関数で文字数を求めて
left関数で空白を削って
rigth関数で抽出です

私的には、空白自体うっとうしい場合、姓と名を分解して別フィールドに分けて
空白は置換してしまいます
必要に応じて、[姓]&" "&[名]としてしまいそうです
805796:04/06/22 16:16
>799
ご回答ありがとうございます。実はスタンドアロンの客先なもので・・・。
環境等を書かなかったことお詫び申し上げます。

なるほど、常に稼動しているサーバのシステム日付を見るというのは
有効ですね。

レジストリに暗号化した期限をいれておいて、起動都度見に行き、更に
起動した日付時刻もレジストリに格納して、もしも格納した前回起動より
今回システム日付が遡っていたら(手作業でシステム日付をもどされる
ことを考慮して)前回起動日付と有効期限を再計算して・・・とか考え
たのですがどうもすっきりしません。
ACCESSだけでどうにかしようというのは無理なのかもしれませんね。
ありがとうございました。
>>まえーにスレ立てしていた1
┐(´ー`)┌
807名無しさん@そうだ選挙にいこう:04/06/22 16:32
画面右下に「EXT」と表示が出るのですが
これを消すにはどうしたら良いのでしょうか?
「EXT」と表示されて方向キーでカーソルを動かすと
範囲選択になってしまいます。

バージョンは2000です。
808801:04/06/22 16:34
>>803
レスありがとうございます。
早速探してみます。
809802:04/06/22 16:37
>>803-804
ありがとうございました。

Access2000なのでクエリで直接Replaceが使えずどうしたらいいかと思っていましたが
ユーザー定義関数に入れれば使えるという事なのでそうします。
810807:04/06/22 16:56
解決しました

F8でEXT
ESCで解除ですね
windows xp + access 2000 での質問です。

あるテーブルを一覧表示でフォームに表示しています。
その画面ではレコードをチェックボックスで選択した後
選択したレコードに処理を実行するような画面です。

そのレコードを選択するのにチェックボックスを使用してる
のですが、どうやるのが最善かわからず、現在はテーブルに
選択用の項目をYesNo型で定義しています。

で現時点では問題なかったのですが、一覧表示をある項目で
グルーピングして表示して欲しいと言われたのです。

チェックというのは基本的にクエリに対して更新をしているので
Group byとなると当然そのクエリに対しての更新が無理になる為
チェックができなくなります。

これってどうにか回避できますでしょうか?

チェックの方法が他にあれば良いのでしょうが...

よろしくお願いいたします。
>>811
チェックボックスがクリックされたときにクエリに対して再クエリを行うと解決できるかと思います
DoCmd.Requeryというコマンドがあります

requeryで検索してみましょう
返答ありがとうございます。

しかしクエリが集計により更新不可なクエリになっているので
リクエリをしても「このレコードセットは更新できません」って言われます。

なんとかうまくチェックをつけたいのですが...

>>813
よく読んでいませんでした
すみませんです
更新不可なクエリに問題がありそうです
リレーションなど外してみて最小限のテーブル構成でクエリを作り直してみてください
>>813
あと、私はチェックボックスで絞り込みなどを行うときは
フレームにて非連結チェックボックスを作成し、2択や3択にしてそれぞれの選択に応じて
フォームに抽出するレコードの表示を変えたりします

If Me.Frame_a=1 Then
DoCmd.処理
Else
・・
・・・と、おちゃらけてみるテスト
>>797
ここで勉強すれば出来そうな・・・
ttp://www.tsware.jp/study/indexv2.htm
フォームからテーブル作成クエリを実行する時に、
作成されるテーブルの名前を tbl+"フォームで指定した値"のようにするには
どうしたらいいのでしょうか?
フォームでテキストボックスに2004と入力されたらtbl2004というテーブルが
作成されるようにしたいのです。
819名無しさん@そうだ選挙にいこう:04/06/23 09:43
以下のコードで、新規作成テーブル名を変更することが出来ます。

Sub tbl作成()
Dim mydb As Database
Dim mySQL As String
Dim myQuery As QueryDef
Dim tblName As String

tblName = "tbl" & "フォーム指定値"

Set mydb = CurrentDb()
Set myQuery = mydb.QueryDefs("All商品")

mySQL = myQuery.SQL
mySQL = Replace(mySQL, "addTable", tblName)

mydb.Execute mySQL

Set mydb = Nothing
End Sub
820名無しさん@そうだ選挙にいこう:04/06/23 15:06
とにかくフォームを開くのが遅い。
10個ほどコンボボックスに再クエリをぶらさげているからなのか、
何とか速度を早くできないものでしょうか?
821名無しさん@そうだ選挙にいこう:04/06/23 15:33
ホント困ってます教えてください!
既存のaccess2000形式のプログラムをaccess2003で使おうと思ったら、
レポート画面に飛ぼうとすると エラー表示されてバグります。
デザインビューすら開くことができません。 先ほどまったく新しく
つくった簡易なデータをレポートウィザードで作ろうとしたら、それ
すらもエラー表示でなんともなりません。どうか教えてください。
>>821
1. 2003側で新規に2000形式のmdbを作って、全てのオブジェクトをインポートする

2. 一度97形式に落としてから2000形式に戻してみる

3. デコンパイルする(DOSプロンプトから↓)
C:\>"(MSACCESS.EXEのフルパス)" "(対象となるmdbのフルパス)" /decompile
823名無しさん@そうだ選挙にいこう:04/06/23 16:44
>>822
書き込みありがとうございます。
1.2.3 やってみましたが駄目でした。
そもそもまったく新しくdbをつくり、レポートを作ろうとして
もできないのでaccessのシステム的な問題なのでしょうか?
もし他に妙案がありましたら教えてください!
824818:04/06/23 18:11
>>819
Dim mydb As Database の所でユーザ定義型は定義されていませんという
エラーになってしまいます。どうしてでしょうか。
>>824
参照設定でMicrosoft DAO 3.* Object Libraryにチェック
>>824
さらに
Dim mydb As DAO.Database
とするといいかも
827818:04/06/23 18:58
>>825-826
ありがとうございます!
しかして次の問題が・・・
mySQL = myQuery.SQL
でmySQLの中にSQL文が入り切ってないようなのですがこれはどうすれば
よいのでしょうか。
828名無しさん@そうだ選挙にいこう:04/06/23 21:04
>>827
説明不足で申し訳ない。

All商品のところを818さんの該当クエリ名に変更してください。
Set myQuery = mydb.QueryDefs("All商品")

当該新規テーブル作成クエリの新規テーブル名を"addTable"にしてください。
829名無しさん@そうだ選挙にいこう:04/06/23 21:09
>>820
もし、テーブルの分割をしているなら、テーブルの分割が原因だと思います。

あとは、その再クエリの内容如何によりますね。
830818:04/06/23 23:47
>>828
初歩的な事ばかり聞いてこちらの方が申し訳ないです。
設定はそういう風にしてあるのですが mydb.Execute mySQL の所で
パラメータが少なすぎます。1を指定してください。というエラーになってしまうのです。
831名無しさん@そうだ選挙にいこう:04/06/24 01:18
>>830
mySQL = Replace(mySQL, "addTable", tblName)

上記のコードを一端削除して、
テーブル名「addTable」のテーブルが新規に作成されるか確かめてみてください。
新規作成することができたら、削除した上記のコードに問題があります。
832818:04/06/24 01:53
>>831
その通りにしても同じエラーが出ました。
>>827に書いたようにmySQLの中にSQL文が途中までしか入ってないようです。
833名無しさん@そうだ選挙にいこう:04/06/24 02:58
>>832
Dim mySQL As String

試しに、mySQLのデータ型をVariantに変えてみたらどうでしょうか。
834818:04/06/24 03:28
>>833
それもやってみたんですがだめでした。。。
835名無しさん@そうだ選挙にいこう:04/06/24 03:34
>>834
Debug.Print mySQL
で、SQL文は欠けてましたか。
836818:04/06/24 04:08
>>835
欠けてないようです!
すいません、ひとりで変な勘違いしてましたね。。。

となると「パラメータが少なすぎます。1を指定してください。」っていったい。。。
837818:04/06/24 04:32
Rename後のmySQLの中味をコピペしてSQLとして実行するとちゃんとできます。
コードのRename行を削除してコードを実行しても同じエラーが出ます。
お手上げなので諦めますか。。。
838名無しさん@そうだ選挙にいこう:04/06/24 04:40
上記コードで私のデータベースでは動作するんですが。

最後の一あがきとして、

DoCmd.RunSQL mySQL

ではどうでしょうか。
839名無しさん@そうだ選挙にいこう:04/06/24 04:44
もしくは、
別途、簡易なテーブル作成クエリを作成してみて、動作確認してみてはどうでしょうか。

もしエラーが生じないなら、その問題のクエリ自体のプロパティや、構造上の相性が悪いのかもしれません。
840818:04/06/24 05:09
>>838-839
DoCmd.RunSQL mySQL だと実行できました!
ありがとうございます!
841名無しさん@そうだ選挙にいこう:04/06/24 05:18
>>840
やったー!
夜明けに解決すると、感慨もひとしおです。
私も勉強になりました。
これから、コンビニ行って、コーヒーとパン買って、第2Rに備えます。
842818:04/06/24 05:23
>>841
本当にありがとうございました。助かりました・゚・(ノД`)・゚・。
>>842
SQLにパラメータ使ってるなら以下を参考に
ttp://support.microsoft.com/default.aspx?scid=kb;ja;404918
OS:Windows2000
Access2002使用

テーブル内容をエクセルに出力する処理をしたら
「定義されているフィールドが多すぎます」とエラーがでてきます。
テーブルのフィールド数が100もないのに何故出るのでしょうか?
フィールド数が255超えてたら出たような気もしますが・・・。
レコード数が65536行を超えているとか。
>>845
フィールドって言ってんじゃん
847名無しさん@そうだ選挙にいこう:04/06/24 18:41
OS win2000
access97です

はがきを1000通以上出すときにカスタマーバーコードを使えば安くなると聞いて
やろうとおもうのですが、どうやったらできるか誰か教えてください。
住所、郵便番号は入力済みです
vectorあたりでフリーの生成モジュール拾って、関数にして打ちな
849名無しさん@そうだ選挙にいこう:04/06/24 18:48
全くの素人ですので、生成モジュールや関数がわからないのです
どこかよいHP等あれば教えてください
>>カスタマーバーコード
Accessでそのままできるでしょ
フォームでもレポートでもいいから、デザインビューでツールボックスクリックしてみ。
ぞろっと出てきた一覧の中に、Microsoft Barcode Conyrolって、ない?
それを貼りつけて右クリック、Microsoft Barcode Conyrolオブジェクト→プロパティ
で、「スタイル」に、カスタマバーコードを選択。
そこまでやったら、ためしにコントロールソース="1000005-1-5-4" とかやってみ。
ただしこれはAc2000の話。97になかったらごめん
851850:04/06/24 23:58
ついでに大きなお世話かもしれないけど
カスタマバーコードってのが、郵便番号+ 番地 の形なのは知ってるよね
入力されてる住所が、市町村名番地一緒くただとすると、関数つくって番地部分だけ
切り出さなきゃならない。
何か、バーコードのことなんかよりこっちのほうが面倒くさそう。
>>850
揚げ足取りで悪いが、Conyrolってのを見ると、
「マイクロソフト、ばーかで、こんにゃろー」
って読んでしまう。
>>850
ありがとうございます。
続けて質問ですが、郵便番号をそのコントロールソース="1000005-1-5-4"とかの
数字?に変換するのにはどうしたらいいですか?
>>853
少しは自分で考えろ
考えてもわからないんです
856名無しさん@そうだ選挙にいこう:04/06/25 14:24
ADOとDAO、スピード的にはDAOのほうがお勧めですか?
>>855
[郵便番号] & "-" & [番地以下]
ただしこれは、番地以下が必ず 半角英数-半角英数-半角英数・・・の形になってなきゃダメ
何とかセンター B棟 3階 307号 だったら、B-3-307 とか

数百件程度なら手作業で直してもいいんだろうけど、それ以上だとどうかな。
変換するための関数つくるにしても、入力された住所に何か規則性がなきゃきびしいし。

そこまでやって、「安くなる」とかいってもたかだか3%かそこらだよ。
実はウチも検討したことあるの。1回に出すDMは2000通近いから。
でも馬鹿馬鹿しくなってやめた。
配達の何週間前までに、とか、くだらないシバりもあったし。
(大体うちの場合、「DM出そっかな」と思い立つのが、届いて欲しい日の4,5日前の場合が多いし)
DMって、指定場所に行けばそれだけでPS2とかくれる、とかいうあれ?
859名無しさん@そうだ選挙にいこう:04/06/25 15:40
>>858
Σ(^∇^;)えええええ〜 

エー?(ё_ё) (ё。ё)ナニー?
860名無しさん@そうだ選挙にいこう:04/06/25 18:10
861820:04/06/25 18:42
>>829
レスありがとうございます。
テーブルの分割といわれてもわかりませんので、
やってないと思います。
再クエリの内容は、コンボボックスである項目を選ぶと、
その都度、該当する品名を表示させるというクエリを値集合ソースとする
コンボボックスが11個ついてます。
モジュールは書いてません。
862名無しさん@そうだ選挙にいこう:04/06/25 21:26
>>861
Excelで処理が遅くなることがあったけど、
その時は、
ファイルの検索で

*.emf
又は、
*.tmp

で検索して、
もし、emf又は、tmpの拡張子をもつファイルがたくさんあったら、
それを削除してみたら解消されるかも。
(Microsoft社から、直接教えてもらったことなので、
何の脈略もなさそうなファイルだったら、削除しても問題ないと思います。)
>>861
コンボボックス10個程度が原因で異常と感じられるほど遅くなるとは思えない。
そのフォーム、デザインビューで開くときも異常に遅くないか?
だとしたら、新規のmdbつくって全オブジェクトインポートだ。
864名無しさん@そうだ選挙にいこう:04/06/25 23:10
Win2000SP4+Access2002です

[ファイル]→[データベースプロパティ]内の情報を
VBAで取得したいのですがご存知の方がいらっしゃいましたらご教示ください。

mdbであればDAOのContainerオブジェクトで取得できました。
Excell、Wordのドキュメントプロパティ?はOfficeObjectのDocumentPropertyで
取得できることはわかりました。
で、今回はadpのデータベースプロパティの内容を取得したいのですが、
DAO接続できないし、BuiltInPropertiesはサポートしてないらしいし、、、、

何か根本的に間違ってますかねぇ?
↓Microsoft Access、Microsoft FrontPage、および Microsoft Outlook のドキュメント プロパティ
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/modcore/html/decondocumentpropertiesinmicrosoftaccessmicrosoftfrontpagemicrosoftoutlook.asp
865861:04/06/26 09:39
>>862
はぁ、そんな裏技あったんですか。
ちょと怖いけれど試してみますかね。
>>863
私も何でこんなに遅いのか不思議です。
因みにデザインビューで開くとサクっと開けます。
フォームビューだと1分程度かかってます。
866861:04/06/26 09:41
正確にタイム測ったら45秒でした。
form_loadやform_openイベントで何かやってるか、もしくは連結で重たいクエリ貼り付けているか
868名無しさん@そうだ選挙にいこう:04/06/28 17:19
こんにちは、教えてください。
OS−XP,OFFICE−XP

access97のファイルを開くと変換のウィンドウが出ますが
変換でもそのまま開くでも「MDEファイルを変換するか使用可能にする事が出来ません」
と出ます。
MDEファイルなんてどこにも無いし困りました。

今は古いPCで97で動かしてますが結構不便だし上手く行く方法があれば
お願いします。
869861:04/06/28 18:09
000
870861:04/06/28 18:11
うわお、アクセス規制解除されてた
>>867
VBAはぶら下げてません。更新クエリでコンボボックスを2重にぶら下げたレコードを
11アイテム乗っけてるので、致し方ないのでしょうか・・・。
871名無しさん@そうだ選挙にいこう:04/06/28 18:13
access2003を使用しています。

クエリについて質問があります。

[期間(年)]フィールドに、
「3.1」「4.5」「10.1」「15.6」・・・
といった感じで数字が入力されています。

これらの数字を
「3年未満」「3年以上5年未満」「5年以上9年未満」「9年以上15年未満」 (間隔は不定)

といった感じで、クエリを用いて区分に分けたいのですが、いい方法はないでしょうか?

excelでは、vlookupを使って簡単にできたのですが、accessでdlookupでできるのか
調べてみたのですが、よくわかりません。

集計クエリまたはピボットテーブルで、任意の区分で分ける方法でも結構です。

よろしくお願いします。

よろしくお願いします。
872名無しさん@そうだ選挙にいこう:04/06/28 18:34
>>871
ワークテーブルに
3・5・9・15
とかデータを入れてクエリを作れ
873名無しさん@そうだ選挙にいこう:04/06/28 18:39
>>868
そのファイルはmdbファイルなのか?
874871:04/06/28 18:54
>>872
すいません。
クエリが思いつきません。
式ビルダを使えばいいのでしょうか?
office97からoffice2000にupdateしてから、
acceseで作成されたソフトを起動しようとすると
"Can't Find Language DLL"と出るようになりました。

調べたのですが対処方法が判りませんでした。
何方様か対処方法が判る方はいらっしゃいませんか?
宜しく御願いします。
876868:04/06/28 20:16
>>873
そうです。
877名無しさん@そうだ選挙にいこう:04/06/28 20:55
>>874
ワークテーブルと元のテーブル使って
少しは考えろ。


878名無しさん@そうだ選挙にいこう:04/06/28 20:57
mdeに変換済で、拡張子がmdbに変更してあったら、
なんともならん。
素直にAccess97をインストールして切り替えて使え

つーか、作った本人に聞けよ。
879871:04/06/29 01:27
>>877
dlookupを使うのが正解なのでしょうか?
かなり考えてみたのですが、結局わかりません。
ぐぐっても、使えそうなのがないんです・・・
880>>871:04/06/29 03:09
lookupのことは忘れた方がいいと思う
iif文を使った式でも出来るけど、>>872の言うとおり別テーブル
を用意した方が後々融通がききそう

ここから ここまで
  0 3
3 5
5 9

んな感じの、「ここからここまでテーブル」を用意して、

SELECT [問題のテーブル].[期間], [ここから] & "〜" & [ここまで] AS Hoge
FROM 問題のテーブル, ここからここまでテーブル
WHERE ([ここからここまでテーブル].[ここから]<=[問題のテーブル].[期間]) And ([ここからここまでテーブル].[ここまで]>=[問題のテーブル].[期間]);

これをクエリのSQLビューに貼りつけてみ
881名無しさん@そうだ選挙にいこう:04/06/29 07:11
>ここから ここまで
>0 3
>3 5
>5 9

1カラムで良い
お前ももう少し考えた方が良いな。
882871:04/06/29 13:16
>>880
ありがとうございました。
クエリは、結合だけだと思ってました・・・
条件ではさんでやることで、選択クエリが使えるんですね。

>>881
今回は、880さんのやり方で十分なんですが、今後のために教えてください。
ついでだから、僕も知りたいよん
フィールド一つから「ここからここまで」の形を作るためにクエリ2つかます
やり方は思いついたけど

Q1
SELECT T1.ここから, T1_1.ここから AS ここまで FROM T1, T1 AS T1_1 WHERE [T1_1].[ここから]>[T1].[ここから];

Q2
SELECT Q_1.ここから, Min(Q_1.ここまで) AS ここまでの最小 FROM Q_1 GROUP BY Q_1.ここから;

これじゃしつこすぎるし。

と、書き忘れ
880です
いっこでいいんじゃないの?

select t1.ここから, max(t1_1.ここから) as ここまで
from t1, t1 as t1_1
where t1.ここから > t1_1.ここから
group by t1.ここから;
886883:04/06/29 16:35
>>885
ああ、そういえばそうだよね

ありがと
(って、僕が御礼いってもしょうがないってば)
887871:04/06/30 09:21
883さん、885さんどうもありがとうございます。
最後にもうひとつ質問なのですが、今回のようにt1_1のように、仮想的にテーブルを複写するようなことは、
通常のaccessのクエリの画面ではどれにあたるのでしょうか?
まぁSQLで直接書き込めばいいという意見もあるかもしれませんが・・・
質問です

テーブルA:フィールドA1、フィールドA2
テーブルB:フィールドB1、フィールドB2、・・・・・・

A1がB1に存在していたらA2に"○"を、なかったらA2にNullを入れる処理は
どうやって作るんですか?
>>888
普通は...

> A1がB1に存在していたらA2に"○"を、なかったらA2にNullを入れる処理は

なんて事はしない。

SELECT [テーブルA].[フィールドA1], iif([テーブルB].[フィールドB1] Is Null,Null,'○') AS フィールドA2
FROM テーブルA LEFT JOIN テーブルB ON [テーブルA].[フィールドA1]=[テーブルB].[フィールドB1];

とすれば、所望のものが得られる。

VBA とか、SQL をうまく書けば A2 を更新することもできるだろうけど、テーブルA もしくは テーブルB の内容が変更されてから、その VBA や SQL が走るまでの間はフィールドA2 の値が不整合となるので、あまりデータベースらしくない。
890名無しさん@そうだ選挙にいこう:04/07/01 04:57
>>888
横レス失礼
テーブルA,テーブルBの「A1」「B1」
の一致クエリ「更新maru」と、不一致クエリ「更新Null」を作成して、
両方とも更新クエリに変更します。
「更新maru」:[A2]レコードの更新 "○"
「更新Null」:[A2]レコードの更新 Null

そして、マクロを次のように作成します。

マクロの名前:更新マクロ 
クエリ開く:更新maru
クエリ開く:更新Null
(テーブルを開いてる場合、最新データ更新、テーブルを開いてないとエラー)
再クエリ
レコードの移動:テーブルA、新しいレコード

マクロの名前:Autokeys
マクロ名:{INSERT} 
マクロの実行:更新マクロ

これで、Insertキーを押したら、データが○とNullに変更されます。
891名無しさん@そうだ選挙にいこう:04/07/01 09:42
帳票フォームを使用しております。
Name グループ
Aaaa Hoge
Bbbb Hoge
Cccc Age
Dddd Age
のように表示しております

Aaa Hoge
Bbb 
Ccc age
Ddd 
このようにはできないでしょうか?

ワークテーブルにデータを作成する方法も試したのですが
件数が多いと、スクロールさせた場合グループが見えなく
なります。

できれば、グループ名はスクロールさせてもトップに表示
したいのですが、方法はありませんでしょうか?
892名無しさん@そうだ選挙にいこう:04/07/01 16:27
VBAでフィールド名を変数で指定する方法を教えてください。
バージョンはAccess 2003です。

   F = "フィールド1"
   D = "データ"
   rs![F] = D

みたいにやりたいのですが、このままだと
フィールド名が "フィールド1" ではなく "F" とみなされてしまい、
コレクションが見つからないというエラーが出てしまいます。

一応ぐぐってはみたのですが、
フィールド名を格納したテーブルを別に用意するとか、
面倒な方法しか発見できませんでした。

たとえばこんなふうに、一発で指定できる関数や構文が
あるんじゃないかと想像しているのですが、
私の知識レベルではヘルプもうまく引けません。
      ↓
   rs!hoge(F) = D

よろしくおねがいします。
>>892

rs(F) = D

でいいはずなんだけど。
或いは

rs.Fields(F) = D

とか。
894892:04/07/01 17:25
>>893
ありがとうございます。さっそく試してみます。
895名無しさん@そうだ選挙にいこう:04/07/01 19:15
Access2003のVBAでプログラムを作っています。
非常に処理に時間のかかるモジュールがあって、進行状況を確認できるように
イミディエイトウィンドウにDebug.Printで途中経過を出そうと思ったのですが、
処理中は何も表示されず、終了時にまとめて出力されてしまいます。
途中経過を逐次表示させるにはどうしたらよいのでしょう?
OSはWinXP Proです。
>>895
Debug.PrintのあとDoEventsだったと思ったけど。
897名無しさん@そうだ選挙にいこう:04/07/02 01:14
Access2003で、XMLデータベース作ってる人いませんか?

いましたら、使い勝手なんかを教えて頂きたいのですが・・・
898名無しさん@そうだ選挙にいこう:04/07/02 19:26
Access2003でテーブルの設計図 (フィールド名、データ型、説明の一覧) を印刷したいのですが、
どうすればよいのでしょう?
デザインビューを開くと印刷メニューがグレーアウトして選択できなくなってしまいます。
今はデザインビューの画面をPrinsScreenで撮ってペイントから印刷しています。
ツールかどこかにある「解析」で
900名無しさん@そうだ選挙にいこう:04/07/03 01:59
Access2003
901名無しさん@そうだ選挙にいこう:04/07/03 02:00
Access2003で普通にファイルを開くと
いつもセキュリティ警告が出て、開くかキャンセルの選択肢が
出現するだけど、これを出なくする方法ってあるんですか?
902名無しさん@そうだ選挙にいこう:04/07/03 10:30
Access 2003 で VBA のクラスモジュールを他の MDB ファイルから
参照する事はできるのでしょうか?

今、よく使う自作関数は一つの MDB ファイルの標準モジュールに
まとめておいてあって、他のファイルからは参照を設定して問題なく
使えています。 もう少し込み入った事をしたいと思って共通 MDB
ファイルにクラスモジュールを作ってみたのですが、参照設定した
他のファイルのほうで「Dim C As New 自作クラス」 とするとエラー
「Compile Error: Invalid Use of New keyword」になります、、、、
(OSは WIN-XP 英語版 / Access も英語版ですね、これ。この件には
直接は関係ないと思うのですが)

既出でしたらすみませんがどの辺にあるか教えていただけますか??
宜しくお願いします、、、
903名無しさん@そうだ選挙にいこう:04/07/03 21:15
すみません、初心者レベルなんですけど助けてください。

---------- ここから ----------
【.  目 的  】:テーブルで郵便番号を上3桁下4桁と分けたが、これを『3桁−4桁』という表記にしたい
【.  条 件  】:Access2002
■試したけどうまくいかなかった処理
【. 概  要  】:関数のHELP探してみたけど該当するものが見当たらない
【駄目な理由】:
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】:Access,関数,文字列,
---------- ここまで ----------
文字列の連結  
="123"&"-"&"4567"

123-4567
905名無しさん@そうだ選挙にいこう:04/07/03 21:33
=Format([郵便番号],"000-0000")
906名無しさん@そうだ選挙にいこう:04/07/03 21:40
定型入力ウィザードを使う やってみよう
907名無しさん@そうだ選挙にいこう:04/07/04 11:04
今、サーバー環境がないので実験できないのですが。

【.  目 的  】 データベース分割
【.  条 件  】 ACCESS2000で、リレーションやクエリを使ったアクセスデータベースは分割できるのでしょうか?
         データベース分割して、テーブルをサーバーに載せて、その後でもフォームやクエリの追加、テーブルに新たなフィールドを追加できるのでしょうか?



2000なんですが、2個のmdbを1つにしようとおもって新しい
空のmdb作ってインポートしました。

動きませんでした.....

インポートした直後は動いていたのですが、一度切ってもう
一度立ち上げ直すと見事に動かないのです。ネットワークが
どうこうというエラーがでて....

すべてのモジュールとコードもちゃんとインポートできている
のにこの症状 どうしたら2つを1つにできるでしょうか?ちな
みにリレーションはきちんと設定されています。
VBAで1命令がとても長い命令を使う時に、
その経過時間をフォームなんかに表示したいんだけど
なんか上手いやり方ってないかな?

DoEventsもはさむ事できないし・・・
>>907
ここを見て勉強してください。
ttp://www.mahoutsukaino.com/ac/ac2000/ac2000/base/base01.htm
911名無しさん@そうだ選挙にいこう:04/07/04 23:16
>>855
ttp://www.tsware.jp/tips/
の#299参照。
>>902
Access2002/2003で仕様が変わっていなければ(私は2000です)、
Accessの場合クラスモジュールはMultiUse等のPublicにできませんので、他MDBから直接新しいインスタンスを生成できません。

私は、参照設定したMDBにあるクラスモジュールをどうしても使いたい場合、
非常に面倒ですが次のような方法で処理しています。
以下
[A]=参照設定を使う側のMDB
[L]=参照設定される側=共通mdb)
[C]=[L]の利用したいクラスモジュール
とすると

1. [L]を単独で開き、クラスモジュール[C]のInstancingプロパティをPrivate→PublicNotCreatableにしておく
2. [L]の標準モジュールに[C]の新しいインスタンスを返すモジュール[M]を書く
3. [L]終了
4. [A]を開き(参照設定済仮定)、[M]を実行して[C]オブジェクトを取得するコードを書く
5. 以降Cクラス利用が可能

2.[M]のサンプルは
Function M As C
Set M = New C
End Function
4.のサンプルは
Dim C As L.C
Set C = L.M()
C.プロパティ = ○○
C.メソッド(○○,△△)
てな具合です。長文ソマソ
913912:04/07/05 13:23
訂正
2. [L]の標準モジュールに[C]の新しいインスタンスを返す『プロシージャ』[M]を書く
914名無しさん@そうだ選挙にいこう:04/07/05 23:53
>>904〜906
ありがとうございました。できました。
915902:04/07/06 05:53
>>912 & 913

な る ほ ど !
できました! 素晴らしい! 
これは自分ではいくら考えても気がつかなかっただろうなぁ。
助かりました。 どうもありがとうございました。 世界が広がった気がします。

それにしてもなんでMSは標準モジュールは他ファイルから参照可能にしてるのに、
クラス・モジュールはそうしないんでしょう。確か Excel でもそうだったような。

所詮VBAではクラスなんて本格的に使うもんじゃないよって言ってるんでしょうか、、、

916名無しさん@そうだ選挙にいこう:04/07/06 14:13
皆さん、すげー スキル。
私は 2002ですが、VBAはほとんど出来ません。
機械のメンテナンス業務で @ 受付(電話番号入力で該当客先表示) A 受付表作成
B サービスマンへの手配票作成 C 請求書発行 

を マクロでなんとか作りました。
C はただ請求リストだけ印刷して、担当経理に渡せばよかったんです。
しかし 近く請求書も出すようにと言われました。

5 10 15 20 25日 月末締めの、翌月末請求(或いは客先指定日)或いは翌々月末請求
等(皆さんはご承知とは思いますが) 私には、頭が混乱して、出来ません。

テーブル客先レコードに区分コードで区分出来ると思うのですが。 計算方法が判らないのです。
解説した適当な参考書有りませんか。 あったら教えてほしいのですが。 
よろしくお願いします。
>>916
まずはSQLのBetween句とVBのDateAdd()関数の使い方を勉強

918名無しさん@そうだ選挙にいこう:04/07/06 19:07
>>916
いっかい、人の作ったVBAをよく読み、
モジュールのデバッグでシングルステップを繰り返し、挙動を覚える。
(vectorなどで他人作成のMDBは配布されてる。ぐぐってもすぐに見つかる)

その後は覚えた動作を、自分のMDB上でマネしてみる。
定義とかの記述ルールはあらかじめ理解しておくように。

その後は、http://www.tsware.jp/ あたりから、使えそうなモジュールを
借りてきて、自分のに埋め込む(将来的には自分のしたいことを自分で書けるようにね)

以上、がんばれ。
919名無しさん@そうだ選挙にいこう:04/07/06 20:31
>>917
>>918
916だ、ありがとう。
実は私69歳なの。
アクセス95からやっている。
メニュー画面作るだけでも大変、メニュー1からメニユー2へ
行くのもマクロではメニュー1を終了させメニユー2へ行く、となる。
マクロだけでもすごく有るぞ。 それでもシステムは動く。

だが システム作りには自身あるぞー。
マジレス返事ありがとう。
絶対作る。
920名無しさん@そうだ選挙にいこう:04/07/06 21:26
>919 それだけでもスゴイ!
 自分は2×才なのに‥
921名無しさん@そうだ選挙にいこう:04/07/06 22:17
>919 それだけでもスゴイ!
 自分は2×才なのに‥
922名無しさん@そうだ選挙にいこう:04/07/07 11:48
はじめまして。WindowsXP、Access2003を使用しています。
最近Aceessを使い始めました。よろしくお願い致します。


テーブル            フォーム
 ┌──┬─────┐
 |名前|住所      |       ┌────┐
 ├──┼─────┤  名前 ....│     ...│
 |太郎|東京都    |       └────┘
 |花子|千葉県    |       ┌───────┐
 |次郎|神奈川県  |  住所 ....│          . │
 └──┴─────┘       └───────┘

↑のようなテーブルを作り、普通にウィザードでフォームも作りました。
フォームを開くと、1番目のレコードである「太郎」の名前とその住所
「東京都」が表示されます。
このフォーム上で花子の住所を見たいという場合なんですが、例えば
「太郎」「東京都」と表示されている状態で名前欄に「花子」と入力して
TABキーを押すと、「太郎」の名前を「花子」に変更しようとしたと判断
されるのか「値の重複〜」エラーが出てしまいます。

感覚的に、「名前欄に『花子』と入力してTABキーを押すと、住所欄に
花子の住所『千葉県』が表示され、例えば花子の住所を埼玉県に
変更したい場合は『埼玉県』と上書きし更新ボタン等を押す」というのが
普通のような気がするんですが、Accessでこのような挙動(更新ボタン
を押すまでは入力内容がテーブルに反映されない等)にしたい場合、
VBAを使わないとダメなんでしょうか?

よろしくお願い致します。
923名無しさん@そうだ選挙にいこう:04/07/07 12:21
>>922
テーブルの名前フィールドが主キーに設定されてるか、
または、主キー以外でインデックス:重複なし に設定されてるからだと思います。

主キーとして IDフィールド:オートナンバー型を別に設定すると、問題は解決されると思いますよ。

検索用のテキストボックスを作成するのなら
コントロールソースを空欄(テーブルにデータが記録されないようにするため)にして、
非連結にした後、そのテキストボックスの更新時イベントに、
検索用のマクロを設定する必要があります。
924名無しさん@そうだ選挙にいこう:04/07/07 12:51
しかし、それよりも、コンボボックスを利用したほうが良いと思います。

プロパティ設定として、
データ:
値集合タイプ:テーブル/クエリ
値集合ソース:SELECT DISTINCT テーブル名.名前 FROM テーブル名;
連結列:1
入力チェック:いいえ

イベント:
更新後処理:検索

オブジェクト、マクロの作成

マクロの名前として:検索
アクション:フィルタの実行
WHERE 条件式:[名前]=[Forms]![フォーム名]![コンボボックス名]
925名無しさん@そうだ選挙にいこう:04/07/07 13:06
>Accessでこのような挙動(更新ボタン
>を押すまでは入力内容がテーブルに反映されない等)にしたい場合、

VBAでの処理になってしまいますが、一応載せておきます。
コンボボックスは、フォームのヘッダー、フッターにおいて、
それとは別途

詳細部分に、名前ボックスと、住所ボックスをおきます。
名前
コントロール名:名前
コントロールソース:名前
編集ロック:はい

住所
コントロール名:住所
コントロールソース:住所
編集ロック:はい

ヘッダー、フッター部分に更新トグルボタンを作成
更新トグルボタン
コントロール名:tgl更新
既定値:False
イベント:クリック時
コードビルダで、VBEを起動し
次のコードを添付
If Me!tgl更新 = True Then
Me!名前.Locked = False
Me!住所.Locked = False
Else
Me!名前.Locked = True
Me!住所.Locked = True
End If
926922:04/07/07 13:47
>>923-924
本当にどうもありがとうございます。
コンボボックス、さっそく試してみます。

ExcelのVBAでは、フォームの挙動の一部始終をVBEに全てベタ打ち
してたんで、「ウィザード」「マクロビルダ」などの便利(なはずの)機能が、
どうにもとっつきにくくて・・・。

おそらく私自身が、Accessにおける「ウィザードなどの全自動系で可能
な処理」と「VBA記述しないと不可能な処理」といった棲み分けを把握
できてないだけなんだと思うんですが、
なんかもう普通に完全「非」連結の素フォームを作って、
「名前」テキストボックスのフォーカス喪失時イベントに「住所をDLookUp
で検索し、検索結果を単なる文字列として住所テキストボックスに表示」、
「更新」ボタンのクリックイベントに「テーブルの住所フィールドの文字列
を住所テキストボックス内の文字列に上書き更新する」みたいな感じで、
やりたいことをVBEに全てベタ打ちして作っちゃうのがラクそうな気が・・・。

こういう使い方は、Access的にやっぱりダメダメなんでしょうか?
927名無しさん@そうだ選挙にいこう:04/07/07 14:11
>>926
そういうやり方で、いいと思います。
パフォーマンスに影響が出たり、顧客のニーズから外れたりしなければ、
自分の思い通りに出来るのが最高ですから。
928922:04/07/07 17:51
>>927
>パフォーマンスに影響が出たり

やっぱりデータ量が増えてきたりすると、ド素人の自作コードだと
重くなるんでしょうね。Excelよりは全然マシだとは思いますが・・・。
とりあえず「棲み分け」をしっかり把握して、本当に「書かなきゃ無理」
な処理以外はコード自作は避ける方向で、勉強してみます。

どうもありがとうございました。
929名無しさん@そうだ選挙にいこう:04/07/07 21:47
T-SQLに関する質問です。

テーブルAには次のフィールドがあります:注文ID、商品ID、注文日、出荷日
日数管理の為に、商品IDごとに注文日から出荷日までの日数が5日以内、10日以内の件数を知りたいと思っています。
そこで、次のステートメントを作成しましたが商品IDの個数に比べて膨大なレコードが返されてしまい、困っています。
DISTINCT指定以外に解決方法はあるのでしょうか??

SELECT 商品ID,five,ten FROM TableA
INNER JOIN (
SELECT 商品ID,COUNT(商品ID) AS five FROM TableA
WHERE DateDiff(day,注文日,出荷日)<=5 GROUP BY 商品ID) Q1
ON TableA.商品ID=Q1.商品ID
INNER JOIN (
SELECT 商品ID,COUNT(商品ID) AS ten FROM TableA
WHERE DateDiff(day,注文日,出荷日) BETWEEN 6 AND 10 GROUP BY 商品ID) Q2
ON TableA.商品ID=Q2.商品ID
>>919
文章に年齢を感じさせないところに俺は、正直目から鱗が落ちた。

>>929
サブクエリは (…) AS Q1のように AS を入れないと...
932名無しさん@そうだ選挙にいこう:04/07/08 13:53
>>931
ASは省略可能ですよね?ASを入れても入れなくても同様の挙動を示します。
933名無しさん@そうだ選挙にいこう:04/07/08 14:02
GROUP BYの前のWHERE句をHAVINGに変更したらどうだろう。

WHERE DateDiff(day,注文日,出荷日)<=5 GROUP BY 商品ID


GROUP BY 商品ID HAVING DateDiff(day,注文日,出荷日)<=5
>>929
SELECT TableA.商品ID, Q1.five, Q2.ten
FROM (TableA LEFT JOIN (SELECT 商品ID, Count(商品ID) AS five
FROM TableA
WHERE DateDiff("d",[注文日],[出荷日])<=5
GROUP BY TableA.商品ID) Q1 ON TableA.商品ID = Q1.商品ID) LEFT JOIN (SELECT 商品ID, Count(商品ID) AS ten
FROM TableA
WHERE (DateDiff("d",[注文日],[出荷日]) Between 6 And 10)
GROUP BY TableA.商品ID
) Q2 ON TableA.商品ID = Q2.商品ID;

これでいいの?
DateDiffのinterval部分が変じゃない?
935名無しさん@そうだ選挙にいこう:04/07/08 16:54
>>933
サブクエリの部分は商品IDの個数と同じ件数が出力されるので修正しなくて問題ないと思います。
HAVING指定は集計された結果に制約を加える為のものなのでこの場合はWHEREで大丈夫だと思います。
>>934
確かに一番最初の商品IDにはTableA.商品IDと指定する必要がありますね、ミスでした。
LEFT JOINだと件数が増えてしまいます…
ちなみにDateDiffのinterval部分の指定はT-SQLでは問題ありません。
936名無しさん@そうだ選挙にいこう:04/07/08 21:50
>>935
結局DISTINCTで乗り切ることにしました。ありがとうございました。
長文ごめんなさい
何だか激しく混乱しています。誰か気が向いたら答えてやって下さい。
コードが書かれたフォームのある自mdbではない、別のmdbに接続する実験をしていました。

Dim MyMDB As New ADODB.Connection
Set MyMDB = New ADODB.Connection
MyMDB.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\MsAcFiles\Test.mdb'")
MyMDB.Execute "Qry_Ins"
↑この追加クエリは、その別mdb中に作成保存済みのもの
INSERT INTO Tbl_Tmp ( Fld1, Fld2) SELECT Fld1, Fld2 FROM Tbl_Hon WHERE Tbl_Hon.Fld2 Not Like "ヤマダ *"));

このクエリが、まるでデタラメな追加をしてくれます。
たぶん、WHERE条件を無視して全レコード追加してくれちゃってます。
仕方なく、その追加クエリをSQL文で書いてみると、どうにか正しい追加をしてくれましたが
このインサート文も、クエリのSQLビューそのままじゃダメで、ワイルドカードは%、文字列囲みは
""ではなく''でようやく動いてくれました。

作成保存済クエリは、単独でダブルクリックすれば正しく動いてくれるわけですから
Executeでダメなんて、んなバカな話があるか、以前、自mdb(CurrentProject.Connection)で
Executeしたときは、ちゃんと動いてくれたじゃないかと怒りつつ、以下のような実験を
してみましたが、やっぱりダメ。WHERE条件は無視。

Dim MyMDB As New ADODB.Connection
Set MyMDB = CurrentProject.Connection
MyMDB.Execute "Qry_Ins"
938937つづき:04/07/09 00:56
けっきょく、作成保存済クエリの実行は、CurrentDb.Execute "Qry_Ins" の書き方しか受け付けてくれないのかと
再び怒りつつ、ヤケクソの実験を試みました。
作成保存済クエリのWHERE条件を、"*" の形ではなく、'%' の形で書いてみたんです。
このクエリをデータシートビューで見ると、またしてもWHERE条件は無視(これはこれで驚き、ついでに怒り)
ただ、このデタラメとしか思えないクエリを、別mdbからExecuteしたら、困ったことに正しく動いてくれちゃったんです。

これはどう考えればいいんでしょ。
取りあえず動いてくれる形は二つ。
☆クエリのSQLビューとは違う(自分には不慣れな)文法で、SQL文を書く
☆単体としてはデタラメだけれど、外からは正しくExecuteできる保存済クエリを使う

もし問題がないなら、ぜったに問題がないと言い切れるなら、自分としては後者を選びたいんです。
というのも、Executeしたいクエリってのは実は10個ほどあって、その連続実行なので、できたら
クエリに連番ふって、For 〜 Next で行きたいな、と。
>>938
SQLモードの所為でしょう
ADOはANSI-92、Access内部/DAOはANSI-89
外部mdbからADOを実行しようといると書かれているSQL文のワイルドカードを
"*"を"%"とは読み替えてくれないからでは?
940>>939:04/07/09 17:01
なるほど
ってどこまで理解できたか分かりませんけど。
Ac2000から使い始めたもので(というか、それしか知らない)、DAOは参照設定が面倒なため
今までずっと意図的に避けてきましたが、以下の実験でみごと成功

Dim MyMDB As DAO.Database
Dim MyRst As DAO.Recordset
Set MyMDB = OpenDatabase("C:\MsAcFiles\Test.mdb")
MyMDB.Execute "Qry_Ins"

SQL文ってのは、たぶん実行しながら読んでいるんですよね。
文中にミスがあっても、コンパイル(って呼んでいいのかな)は通っちゃう。
作成保存済クエリは、完動品としてあらかじめ認められていて、命令したら即
余計な手続きなしで、めくら判押すように実行してくれるものだと思ってました。
名前の付け方、連番の振り方なんかを工夫すれば、かなりコンパクトな書き方が
出来るので、いままでは出来るだけ作成保存済クエリを使うようにしてたんですが
(てか、SQL文書くのってけっこうつらいです)
ADOで別MDBに接続する場合は気をつけなきゃいけませんね。
てか、作成保存済クエリですら実行中に翻訳の手続きが入るようなら、腹くくって
SQL文書くべきか・・・
941940:04/07/09 17:06
なに余計なこと書いてんだろ
Dim MyRst As DAO.Recordset
は、いらないじゃないか(この場合は。。。いや、自分のところからの
コピペなので)
942名無しさん@そうだ選挙にいこう:04/07/09 19:39

ACCESSにCSVファイルをインポートすると、ある特定のファイルのみ
日本語が文字化けします。
このCSVファイルをメモ帳やEXCELで開くと日本語が正しく表示されます。
何が原因でしょうか?


943名無しさん@そうだ選挙にいこう:04/07/09 21:25
ACCESS97で作ったファイルを、ACCESS2000で読み込むとコンパイルエラーが出ます。
これってデータがおかしくなったり、機能が正常に動かなくなったりするんですか?
944名無しさん@そうだ選挙にいこう:04/07/09 23:01
>>942
この辺を熟読しろ
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
>>943
根本的に、作りがショボイと変換がうまくいかない場合がある。
どこでエラーが出るかを確認しろ。そこが特にショボイ箇所だ。
マクロでメッセージボックスをつくって警告音のところを「はい」にしたのですが
メッセージボックスはでるものの警告音が鳴りません。
ちなみに普通にエラーを出した時には鳴ります。これってどこか設定しなおすよう
なんでしょうか・
コントロールボックス→サウンドとマルチメディア
あたりの設定じゃなかったっけ
うちのは余計な音いっさい出さないようにしてあるんでまったく無自信。
間違ってたら五目
947945:04/07/10 00:37
>>946
コントロールバネルいじってみたけどナオラナイッス。うぇぇぇぇん。
誰かたすけてくだちゃい。今日はもう寝ますが明日またきます。
ちなみにOSはXP。ソフトはACCES2003です。
948945:04/07/10 01:47
なんか気になって寝られずいろいろ調べてみましたが、一般の警告音で音が鳴るように
設定すればいいということまではわかりました。
しかし、サウンドのプログラムイベントに一般の警告音の項目がありません。
なにかのソフトを削除するときに一緒に消してしまったものと思われます。
再インストールするしかないんでしょうか。
>>940
>腹くくってSQL文書くべきか・・・
クエリデザインで作ってSQLビューにして貼り付ければたいしたことないだ?
小難しいのは致し方ないが...
サブクエリなんかも小分けにすれば逆に簡単だし...
950945:04/07/10 11:35
レジストリを修正したら直ります田。
951名無しさん@そうだ選挙に行こう:04/07/11 11:29
データ3000件ほどの2つのリスト(テーブル)AとBがあって
それぞれ「名前」「「ふりがな」「住所」「電話番号」の4つの項目があります
AをBと比較して
完全一致するデータと、部分一致:例えば「名前」と「電話番号」だけ一致、
、「電話番号」だけ一致
みたいな判別して、Aリストに「判別結果」という項目を作って
表示したいのですがどうやったらよいですか
教えてください
>>951
VBAで作った方が手っ取り早い気がするが・・
どっちにしてもそれぞれのテーブルに共通のキー項目がないと
できないだろ
(それともふりがなでソートしてから比較するか)
953名無しさん@そうだ選挙に行こう:04/07/11 15:24
リンクテーブルを使用し、クエリ→レポートまで作成したファイルがあります。
現在接続しているDBをDBaとすると、参照先をDBbに変更しようと考えています。
この場合、テーブルのどこかを変更するだけでうまくいくのでしょうか?
クエリが複雑に組まれている為、再作成せずにDB変更だけを行いたいのです。

DBa、DBbのテーブル構成・フィールド名等全く同じです。
環境はWindows20000、ACCESS2000です。

ご存知の方がいましたら教えて下さい、よろしくお願いします。。


954名無しさん@そうだ選挙に行こう:04/07/11 16:49
年・月・日 の各フィールドが文字列で存在していて
YYYY/MM/DDの形式になるようにクエリを組みたいんだけど
どうやればいいかわかりません、教えてください。
「YYYY/MM/DDの形式」って日付型?

SELECT dateserial(int(年), int(月), int(日))
956Ζ:04/07/11 22:32
質問です。
【.  目 的  】:集計をしたい。100から90までの点数、90から80、80から70の個数を一括して出したい。
count([点数])だと、0-100までの点数をだしてしまうが、その点数を限定する方法はないか?
【.  条 件  】:Access2000
■試したけどうまくいかなかった処理
【. 概  要  】:関数のHELP探してみたけど該当するものが見当たらない
【駄目な理由】:
■これだけはやりました
>>1を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】:Access,関数,count
>>956
たぶんAccess使いの多くはこういう課題が好きなはず。
俺もやり方はいくつか思いつくのだが、俺よりかっこいいやり方を
知ってる奴がいっぱいいそうで、それを出されたら悔しいので答えない。

たぶん968がすんごい格好いいやり方を教えてくれると思う。
958Ζ:04/07/12 06:44
>>957
できるだけお急ぎで探してます。
やりかたできればお教えしていただけませんか?
GROUP BY int(点数/10) だと90点の人を2回数えられないな。
誰か詳しい人、UNION以外のかっこいいやり方を教えてくれ。
960名無しさん@そうだ選挙にいこう:04/07/12 09:28
クロスでできるだろ。そんなもん。
>90点の人を2回数えられないな
そんないじわるを言うもんじゃないよ
>>953
テーブルのリンク先の変更であれば、リンクテーブルマネージャを使えばよいのでは?
状況に応じて動的にテーブルのリンク先を変更したい場合は、
ADOXやDAOを使ってVBAコーディングする必要があります。
963名無しさん@そうだ選挙にいこう:04/07/12 11:35
access 2003を使用しています。
ピボットテーブルの集計で、median値を出したいのですが、いい方法はありませんでしょうか?
helpをみたところ、基本的にはaccessではmedian関数は使用できないとのことでしたので、
式を定義してやる必要があるのかもしれませんが・・・

もしaccess上で無理なようでしたら、excelに飛ばしたあとに、ピボットテーブルで算出してもいいんですが、
ピボットテーブルフィールドの設定の「集計の方法」にはmedian関数がなく、どちらにしてもうまくいきません・・・

以上、どなたか詳しい方よろしくお願いします。
964名無しさん@そうだ選挙にいこう:04/07/12 13:59
WIN−XP上でアクセス2000を使っています。
サーバー上にMDBファイルを置き、数台のPCから参照する形にしているのですが、
選択クエリでデータ入力していると、一日に何回か
「ディスクまたはネットワークのエラーです」とのエラーメッセージが表示されます。
一応「はい」ボタンを押せば、データ入力を続行することはできるのですが、
何度も出てくると気になって仕方がありません。
原因と、対策について、何かヒントをいただければ幸いです。
うーん、パスが切れた時にそういう表示が出ますけど、
更新できるってのは・・・実際はつながってるんですよね。

ネットワークドライブの割り付けをしてますか?
割付だけ落ちてそんな表示が出ることがあるかも?

ネットワークパス直だったらすみません。
966名無しさん@そうだ選挙にいこう:04/07/12 21:49
>>960
できる?クロスで。
967名無しさん@そうだ選挙にいこう:04/07/12 22:36
>>956
level   POINT_FROM POINT_TO
70-79    70         79
80-89    80         89
90-100   90         100
というテーブルを作る。
後はできるだろ。

これで80%以上完成だから、
教えて欲しいなら金くれたら教えてやる。
>>956
値の重複がなけりゃ、Partition関数でそれっぽい事できるんだけど…

こんなんでどう!
[クエリ1]
SELECT "90〜100" AS 範囲, Count([点数]) AS 点数の件数 FROM テーブル
WHERE [点数] Between 90 And 100 GROUP BY "90〜100"
UNION SELECT "80〜90", Count([点数]) FROM テーブル
WHERE [点数] Between 80 And 90 GROUP BY "80〜90"
UNION SELECT "70〜80", Count([点数]) FROM テーブル
WHERE [点数] Between 70 And 80 GROUP BY "70〜80";

[クエリ2] … おまけ
TRANSFORM Sum([点数の件数]) AS 点数の件数の合計
SELECT "件数" AS 結果 FROM クエリ1 GROUP BY "件数" PIVOT [範囲];
969956:04/07/12 22:41
>>967さんへ
ありがとうございます。
しかしながらあまり知識がなくまだ分かっていません。
お願いします。教えてくれませんか?
970名無しさん@そうだ選挙にいこう:04/07/12 22:49
>>969
まずは教えたテーブルと
点数のテーブルから
level   点数
70-79   76
90-100  92
70-79   78
80-89   86
というような検索結果を作れ

あとはSELECT区から点数を外し、
count(*)をlevelについてGROUP BYすれば
できあがり。
971名無しさん@そうだ選挙にいこう:04/07/12 22:50
区→句だった
968でいいじゃん!
俺も968でOKと思う
ただ>>956 はSQL文というものを、というか、クエリのSQLビューというものを
まだ知らないのではないかと疑っている。
値の重複についても、深い考えは持ってないのではないかと疑っている
値の重複なしとして、こんなのいかが?
点数テーブルを[TT]、点数フィールドを[SCORE](整数型)として


SELECT DCOUNT("SCORE","TT","SCORE>=" & [SCORE]+1)+1 AS 順位,
SCORE & '点' AS 点数,
COUNT(SCORE) AS 件数
FROM TT
WHERE SCORE>=90
GROUP BY SCORE

UNION SELECT MIN(DCOUNT("SCORE","TT","SCORE>=" & [SCORE]+1)+1) AS 順位,
([SCORE]\10)*10+10 & '点未満' & ([SCORE]\10)*10 & '点以上' AS 点数, COUNT(SCORE) AS 件数
FROM TT
WHERE SCORE<90
GROUP BY ([SCORE]\10)
ORDER BY 順位;
976名無しさん@そうだ選挙にいこう:04/07/13 09:44
レベル設定テーブルを使うと、
クエリの変更なしにデータ変更のみで
あとからレベルの範囲を自由に設定できる。

決め打ちでクエリの中にずらずら直接
書くのとどっちがきれいか、各自の判断にまかせるよ。

まあ、Accessの場合システム屋ではなく、趣味や
個人で作って自分で使うのも多いから決め打ちで
もいいけどな。
977名無しさん@そうだ選挙にいこう:04/07/13 09:45
レベル設定テーブルを使用した例

>>967のテーブルを
レベル設定
表示順序 レベル 点数FROM 点数TO
1     70-79   70    79
2     80-89   80    89
3     90-100   90   100
とすると、
どんな範囲設定でもこれだけで対応できる
SELECT
 M.レベル AS 範囲,
 IIF(D.人数 is null,0,D.人数) AS 人数
FROM レベル設定 AS M
LEFT JOIN
 (SELECT L.レベル AS レベル ,count(*) AS 人数
  FROM
   レベル設定 AS L,
   成績 AS R
 WHERE
  R.点数>=L.点数FROM AND
  R.点数>=L.点数TO
 GROUP BY L.レベル
 ) AS D
ON M.レベル = D.レベル
ORDER BY M.表示順序
978名無しさん@そうだ選挙にいこう
失敬、、、
R.点数>=L.点数TO

R.点数<=L.点数TO