【まだまだ】Microsoft Access クエリ2【使える】

このエントリーをはてなブックマークに追加
11
http://www.microsoft.com/japan/Office/Access/
質問・雑談なんでもどうぞ。
21:04/07/07 09:48 ID:???
3NAME IS NULL:04/07/07 09:55 ID:???
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
4NAME IS NULL:04/07/07 10:12 ID:???
>>3
慣れれば、かなり安定して運用できるけどねぇ。
ただ、慣れるのに時間が掛かるので、いまだにJet3.51+ADOだけど。
5NAME IS NULL:04/07/07 10:47 ID:???
運用期間が1年以内の使い捨てシステムになら使ってもいいかな。
6NAME IS NULL:04/07/07 10:52 ID:Dh+YPpnJ
このくらいの規模で、このくらいの期間運用してるとか実例はないの?
俺の知ってる範囲だと、スタンドアロンで動いてるやつだと、ぜんぜん問題ないみたいだけど。
7NAME IS NULL:04/07/07 12:28 ID:???
>スタンドアロンで
Access使用上の注意としてはこれが基本だね。
8NAME IS NULL:04/07/07 22:16 ID:EHs0AWCY
インターフェイスとして使う分には、かなりいいんでないか?
9NAME IS NULL:04/07/07 23:05 ID:2fatn0rv
教えてほしいのですが、数値入力フォームというのを作って、数値データを入力してクリックボタンをクリックすると
と、その数値データが、何かしらのデータフォームに登録されて、数値入力フォームはまた白紙になって違う数値を入れてクリックボタンをクリックすると
前回入力した数値にどんどん足されていくデータベースっていうのは作れるんでしょうか?
作れるとしたらクエリとか、フォームとか、テーブルとか何を作ればいいのか教えてください。
お願いします。
10NAME IS NULL:04/07/07 23:59 ID:37UI6oWn
出来ますよ。
Accessだったら、更新クエリで。

更新欄に次のように記述して
テーブル名.フィールド名+Forms!フォーム名!数値データ
WHEREでそのレコードを指定すれば。
1レコードのみの運用だったら、Whereは指定する必要ないですけど。
11NAME IS NULL:04/07/08 09:59 ID:QqTbl2Mt
ナンバリングの自動入力のようなものはありますか?
例えば「今回は200から」と一番最初のレコードに入力すると、次に入力するレコードからは自動的に「201,202,・・・」とナンバリングされるような感じです。
すみませんが、ご教授くださいませ。
12NAME IS NULL:04/07/08 13:27 ID:bs8jTisP
>>11
自動でユニークのナンバーを入力するなら、
オートナンバーを使うだけのこと。

任意に入力したいのなら、最大値+1を求めて初期表示。
13NAME IS NULL:04/07/08 13:38 ID:???
>>8
いろんな人がいるもんだね。
14NAME IS NULL:04/07/08 13:44 ID:k6U7Xnws
おじゃまします。
過去にアクセスで給与算出システムを作りましたが
納品時に客が「2台のパソコンで同時入力させろや!」
っていきなり言われたのでMDBファイルをコピーして
2台のPCに入れてテーブルのみリンクさせて使って
います。更新画面はテーブルと非連結なので更新
するタイミングが同時でなければなんとか同時入力
できているみたいです。
スタンドアローンが基本なのは知っていますが
後々へんなことになりますかね?
15NAME IS NULL:04/07/08 13:47 ID:???
>>14
後々へんなことになりそうですね。
16NAME IS NULL:04/07/08 13:51 ID:k6U7Xnws
14です
>>15
例えばどんな症状が起きるのでしょうか?
納品して半年、まだクレームがきていませんが・・・?
17NAME IS NULL:04/07/08 13:57 ID:???
>>16
どんな症状が起きるかはテーブル等の設計次第。
クレームきてないんならほっといてもいいんじゃない?
18NAME IS NULL:04/07/08 17:32 ID:bs8jTisP
設計をキチンとし、自前ロック(Access標準の行ロックは糞)
やバックアップを考慮しとけば、数十台で同時入力するような
個所でも使用は可能だろう。

ただ、かえって設計は面倒だし、データ量など考えたら、
mdbでやる意味など無い。
漏れは、そんなことする気は全く無いけどな。
19NAME IS NULL:04/07/08 17:42 ID:k6U7Xnws
>>18
一応同時アクセスの限定はしてます。バッチ処理はいづれかのmdb
からのみ実効可能(まぁ当然ですが)
同時入力を行うのはマスタのデータ登録画面と給与データの保守画面
のみです。
もちろんクエリのリレーションがかかっているテーブルの同時
更新も行えないように片方のMDBのメニューからなくしました。
20NAME IS NULL:04/07/08 18:47 ID:bs8jTisP
>>19
結局何が言いたいわけだ?

漏れは別に、2-3台程度でデータ件数も知れていて、
問題なく運用できる自信があれば、お好きにどうぞ
と言っているわけだが?
21NAME IS NULL:04/07/08 23:04 ID:n/uPySIo
>>14
あなたの会社のサポートはうけたくない。
 
22NAME IS NULL:04/07/09 09:52 ID:4RiSCMN+
>>20
後々変なことになるか?という質問に対して変なことになる
と自身満々に答えたあなたの自身はどこから来たの?
と言いたい。過去の事例に基づいていっているならもう少し
詳しく聞きたかったんだが・・・。
どうやらおまいは知ったかでいっているようだな。
無知な技術者はPC初心者のスレに行きなさい。
>>21
こっちもお断り。逝ってよし。
2315:04/07/09 10:16 ID:???
>>22
20と15は別人。
2420:04/07/09 11:22 ID:D5mPkM2s
どーでもいーが、漏れが>15と同一かどうかぐらい
文面見て判断できんのか?
25ななしのごんべい:04/07/09 12:43 ID:gYKaIf2G
どなたかデータベース作ってもらえませんか?
26NAME IS NULL:04/07/09 15:41 ID:RxJ07FmE
エッチなデータベース作ってください…(ポ
27NAME IS NULL:04/07/09 22:14 ID:???
問題なくログ削除してよさそうだなw
28悩み中:04/07/10 09:09 ID:M3ce3HdH
9と同じような感じなんですが製品ごとの日報データベース作りたいと思ってます。
たとえば、仕事番号1.2.3というのがあって、作業者Aが7/7に仕事番号1を50分やりました。作業者Bは仕事番号2を30分やりました。作業者Cは仕事番号1.2.3を30分ずつやりました。7/8に作業者A.B.Cは仕事番号1.2.3を90分ずつやりました。
作業者の日報は一人ずつ毎日入力するのですが作業者Aの7/7の日報を入力したらクリックすると登録されるボタンでも押してそれを押すと入力フォームが白紙になって作業者BとCの日報を入力できるというフォームをつくり、
29悩み中:04/07/10 09:15 ID:M3ce3HdH
製品は一日じゃ作り終わらないから何日もその時間を入力していってその時間がどんどん足されていくというのを作りたいんですがどーやればいいでしょうか?
重要なのはクリックすると白紙になるってとこと時間がどんどん足されていくというところが出来なくて今悩んでいます。教えていただけませんか?フォームはおおかた出来てるんですが…
30NAME IS NULL:04/07/10 10:53 ID:azeV388d
過去の日報をそのフォームで閲覧可能にしたいのなら単票フォームで、
クリックした時、新たなレコードに移動すれば、入力部分はNullになります。

もし過去の日報をそのフォームで閲覧不可能にしたいのなら、非連結のフォームを作成して、
クリック時、追加クエリでテーブルに入力すればいいと思います。
そして、そのクリック時の追加クエリ発現後、入力欄をVBAで空白にする。

Me!txt日報=Empty

入力フォームが開いている時間を調べたいのなら、開く時にVBAでTimeを使って、特定のテーブルのフィールドに開始時刻を記録し
閉じる時に再度Timeを使って終了時刻を記録し、その差分を求めるようにすれば作業時間は求まると思います。

開始時に自動的に開くフォームがあるなら、そのフォームの開く時イベントで、Timeを使い、
通常の閉じるボタンの使用を不可にして、自ら閉じるコマンドボタンを作り、そのクリック時イベントで、Timeを使う。
という感じです。

通常の閉じるボタンの使用不可については他のAccess質問サイトを検索すれば、見つかると思います。

私用のためレスできずもうしわけないですが、これで失礼します。

テーブルについて、フォームのコントロールの内容について、
もっと詳細に書かれたほうが、解決は早いと思います。
31NAME IS NULL:04/07/10 13:09 ID:???
ニキータさん?
32NAME IS NULL:04/07/11 22:49 ID:qjDKOaVh
データ3000件ほどの2つのリスト(テーブル)AとBがあって
それぞれ「名前」「「ふりがな」「住所」「電話番号」の4つの項目があります
AをBと比較して
完全一致するデータと、部分一致:例えば「名前」と「電話番号」だけ一致、
、「電話番号」だけ一致
みたいな判別して、Aリストに「判別結果」という項目を作って
表示したいのですがどうやったらよいですか
教えてください
33NAME IS NULL:04/07/12 01:35 ID:???
>>32
ソースが欲しいのか?
3433:04/07/12 01:42 ID:???
あー残念。もう寝るよ。
35NAME IS NULL:04/07/12 16:20 ID:AfStwXD+
2002まではDeveloperEditionってのがあってランタイム配布できましたよね。
2003からはその辺が変わってVisual Studio Tools for Officeとかいうツールが必要になるみたいですが
.NETがなんたらかんたらと書かれているあたり一癖ありそうな気がするのですが・・・
実際に使われている方いらっしゃいましたら、使用感など教えて下さい。

今のAccessの最新版はAccess2003ですが、Access2002もまだまだ健在?
素直に2002にした方が吉でしょうか?
3632:04/07/13 00:31 ID:+bgP3iLc
>>33
ソースって何?
とにかく結果のリストに「どこ」と「どこ」の項目一致という列を作って
入れたいのです
起きたらおねがい
37NAME IS NULL:04/07/14 04:17 ID:diP05LXk
以下のコードで、出来ると思います。動作確認してないので、間違ってるかも。
以下のコードのAテーブル、Bテーブル並びに各フィールド名を変更してください。
SQLで出来るのが一番いいんだけど、わかりませんでした。
コードの実行処理は遅いかも。

次の文字列が判別結果フィールドに入力されますが、32さんに合うように変えてください。
"完全一致"
"名前、住所一致"
"名前、電話番号一致"
"住所、電話番号一致"


Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim a As Integer
Dim i As Integer

Set cn = CurrentProject.Connection
rs.Open "Aテーブル", cn, adOpenKeyset, adLockOptimistic

If rs.EOF = False Then
a = rs.RecordCount
For i = 1 To a
If rs.EOF = False Then
Else
Exit For
End If

If DCount("名前", "Bテーブル", "名前 = '" & rs!名前 & "' And 住所 = '" & rs!住所 & "' And 電話番号 = '" & rs!電話番号 & "'") >= 1 Then
rs.Update "判別結果", "完全一致"

ElseIf DCount("名前", "Bテーブル", "名前 = '" & rs!名前 & "' And 住所 = '" & rs!住所 & "'") >= 1 Then
rs.Update "判別結果", "名前、住所一致"

ElseIf DCount("名前", "Bテーブル", "名前 = '" & rs!名前 & "' 電話番号 = '" & rs!電話番号 & "'") >= 1 Then
rs.Update "判別結果", "名前、電話番号一致"

ElseIf DCount("名前", "Bテーブル", "住所 = '" & rs!住所 & "' And 電話番号 = '" & rs!電話番号 & "'") >= 1 Then
rs.Update "判別結果", "住所、電話番号一致"

End If
rs.MoveNext
Next i
End If
38NAME IS NULL:04/07/14 06:23 ID:???
>>32
クエリ使え
39NAME IS NULL:04/07/15 01:57 ID:???
「名前も住所も電話番号も一致している」クエリ1
「少なくとも名前と住所は一致している」クエリ2
「少なくとも名前と電話番号は一致している」クエリ3

「クエリ1とクエリ2を結ぶ。クエリ2.名前→クエリ1.名前 で、クエリ1.名前=Null」クエリ2A
「クエリ1とクエリ3を結ぶ。クエリ3.名前→クエリ1.名前 で、クエリ1.名前=Null」クエリ3A

あとは別テーブルでも用意して、クエリ1に「完全一致」、クエリ2Aに「名前と住所だけ一致」、
クエリ3Aに「名前と電話番号だけ一致」のフラグをくっつけ、インサート。

クエリ1は選択クエリとして再利用しなきゃならないから、インサートは別の追加クエリつくらなきゃ
ならないけど、クエリ2Aとクエリ3Aは初めから追加クエリとして作っちゃってOKかな。

実際に試したわけでもない妄想実験なのでダメだったらごめんね
4039:04/07/15 02:07 ID:???
でも何だかなあって感じ
たぶん>>32はさ、テーブルの構造ややりたいことの詳細を簡略化して書いてるんだよね。
で、こっちは、それを鵜呑みにしたふりして時間つぶしの妄想パズルやってる。
ユニークID云々とか、ところで名前とフリガナの食い違いは、みたいなことも、まるで眼中に
ありませんってふりしてさ。
ホントはこんなんじゃ全然解決にならないって、分かってるのにさ。
41NAME IS NULL:04/07/17 21:37 ID:???
テーブルAとテーブルBがあり、それぞれキーワードフィールドがあるとします。
キーワードフィールドには、1,2,5のように「,」で区切られた数字が入っています。
テーブルAの各レコードのキーワードがテーブルBの各レコードのキーワードとが
いくつマッチしているか調べたいのですが、どうやったらいいんでしょうか?

つまり、セパレータ「,」で区切られた文字列を比較して一致した個数を返す関数
の作り方が分からないのです・・・_| ̄|○
42NAME IS NULL:04/07/17 23:06 ID:???
>>41 instr()でゴリゴリ書く
43NAME IS NULL:04/07/18 01:10 ID:DoJkEoo4
>>37>>39
ありがとう!本当に助かります
当方初心者ゆえ本当にわからないんです
教えていただいた事、今から試します!

でもその前に言っておくと
要するに不一致クエリの結果選ばれた対象を
スプレッドシートに選んで出すのではなく
もともとの表のまんまのものにもう一項目付け加えて
「不一致」とか表示したいって事なんだ
44NAME IS NULL:04/07/18 07:50 ID:???
45NAME IS NULL:04/07/19 16:52 ID:???
クエリじゃないんすけど質問いいですか?

IIf([在庫数]<=0,"MsgBox ("在庫がありません",0+16,"在庫不足")=1 ","")

でドコが間違いですかねえ?
46NAME IS NULL:04/07/19 17:14 ID:???
>>45
MsgBoxのコマンド文字列返して何するんだろう…

フォームのイベントプロシージャで、単にメッセージを表示したいのなら
If [在庫数]<=0 Then Call MsgBox("在庫がありません", vbOK Or vbInformation ,"在庫不足")
では?
47NAME IS NULL:04/07/21 11:02 ID:???
>>41
テーブル設計そのものが悪い。とりあえず「正規化」でぐぐるべし。
正規化しとけば、集計関数で簡単にマッチする個数が出せるから。

>>46
45はマルチ野郎。
http://pc5.2ch.net/test/read.cgi/db/1057041973/
>962 :NAME IS NULL :04/07/19 17:00 ID:???
>ACCESSで初心者質問です
>
>IIf([在庫数]<=0,"MsgBox ("在庫がありません",0+16,"在庫不足")=1 ","")
>
>これでエラーになるんですけど・・・・
48NAME IS NULL:04/07/22 16:46 ID:???
>>41
一つ聞きたいんだが、テーブルA、B共に10レコードあった場合、
どう比較されるんだ?
テーブルAの1レコード目とテーブルBの1レコード目
テーブルAの1レコード目とテーブルBの2レコード目
     :
テーブルAの1レコード目とテーブルBの10レコード目
テーブルAの2レコード目とテーブルBの1レコード目
     :
テーブルAの10レコード目とテーブルBの10レコード目
だと100通りの比較が必要だが、それとも
テーブルAの1レコード目とテーブルBの1レコード目
テーブルAの2レコード目とテーブルBの2レコード目
     :
テーブルAの10レコード目とテーブルBの10レコード目
の10通りなのか。
49NAME IS NULL:04/07/23 00:56 ID:???
>>47-48 前者でした。急いでいたので、csvエクスポート→C++でSTL&boostウマー→Excelとなりました_| ̄|〇
50NAME IS NULL:04/07/23 09:52 ID:???
>>41
まずはテーブルAを正規化する。

TableA
ID key  other
1 1,2,4 100
2 2,3  200

  ↓

TableA
ID other
1 100
2 200

KeyTableA
ID key
1 1
1 2
1 4
2 2
2 3

テーブルBに関しても同様に。
あとは、こんな感じでいけるはず。

SELECT KeyTableA.ID, count(*)
FROM KeyTableA, KeyTableB
WHERE KeyTableA.ID = KeyTableB.ID AND KeyTableA.key = KeyTableB.key
GROUP BY KeyTableA.ID
51NAME IS NULL:04/07/27 23:28 ID:2OjAMHeh
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
UNIX DB使え、
52初心者T:04/07/28 00:24 ID:KCb+S7h1
はじめて書き込みます。
急にMS-ACCESSで簡単なDB作れと言われてしまい、参ってます。
簡単に例を書きますと
利用しているACCESSは、
MS-ACCESS 2000です。

県名→群名→市町村名

というような絞込をフォーム上でやりたいのです。
(県名→群名→市町村名というのはあくまでも例であり、
 実際には違います。
 ですので、郵便番号検索オプションは利用不可です)

県名の選択をコンボボックスかリストボックスでやり、
その結果によって、
群名のコンボボックスもしくはリストボックス内に
該当の郡名群が表示されるようにしたいのですが、
どのようにしたらよいでしょうか。

なるべく標準機能で出きれば良いのですが、
標準機能だけで作るのが難しい場合には
VBA等でも構いません。
初心者がここのカテゴリに来るのは如何なものかと
迷ったのですが、どなたかよろしくお願いします。
53NAME IS NULL:04/07/28 00:34 ID:???
>>52
初心者にコンボコンボはお薦めできない。
54初心者T:04/07/28 00:46 ID:KCb+S7h1
ガガン(TT)
アドバイス有り難うございます。
本を読んでいてもやり方が書いていないので、
きっとそうなんだろうなとは思っていましたが。。。
でもいきなり郡名を選ぶとなると、
選択肢が多くて探すのが大変になってしまうんです。
なにか良い方法ないでしょうか?
コンボコンボ、もしやるとしたら、どうしたらよいでしょうか?
併せてお願いします。
55NAME IS NULL:04/07/28 01:00 ID:Gshvi7n8
初心者ですが宜しくお願い致します。

Aテーブル →[氏名],[名前]
Bテーブル →[氏名],[結婚後氏名]

(1)上のようなテーブルがあります。クエリで、AテーブルとBテーブルの[氏名]フィールドをキーにしてリレーションを組み、A,Bテーブルのフィールド全てを表示させます。

(2)(1)で抽出されたデータだけ、Aテーブルの[氏名]フィールドをBテーブルの[結婚後氏名]フィールドに書き換えたいのですが・・・・

注意)Bテーブルの[結婚後氏名]には空欄もあります。
よって、更新クエリでAテーブルの[氏名]フィールドに上書きしてしまうと
空欄まで上書きされてしまいます。あくまでもBテーブルの[結婚後氏名]
にデータがある人だけをAテーブルの[氏名]フィールドに上書きしたいのですが・・・。



なにかよい方法はありますでしょうか。
詳しい方、教えてください。
宜しくお願い致します。
56NAME IS NULL:04/07/28 02:00 ID:/5vEUw1P
クエリで、LEFT JOIN 句 やINNER JOIN句でたくさんのテーブルを結合しようとすると
「演算子がありません」というメッセージがでるのだが、どうしてでしょうか。
57NAME IS NULL:04/07/28 11:01 ID:???
>>52

テーブルAのフィールドに、県名、郡名、市町村名。
県名のコンボボックスの値集合ソースには、クエリ画面でテーブルAの県名のみを選択。
郡名の値集合ソースのクエリ画面では、県名、郡名のフィールドを選択し、県名の抽出条件に
県名のコンボボックスを指定する。(Ex. [Forms]![入力フォーム]![県名])
ついでに県名のフィールドは表示のチェックボックス外しちゃってもいいでしょう。
市町村名の値集合ソースのクエリ画面では、県名、郡名、市町村名を選択し、県名と郡名に抽出条件を設定する。
県名と郡名の表示はオフ。

説明へたくそですません。
58NAME IS NULL:04/07/28 11:39 ID:???
>>55
更新クエリで対応できると思います。

更新クエリのフィールドに、Aテーブルの氏名、Bテーブルの結婚後氏名を選択します。
氏名フィールドのレコードの更新セルに、[結婚後氏名]と入力。
結婚後氏名フィールドの抽出条件に is not null と入力。
(1)で仰っているクエリは不要だと思います。

蛇足ですが、氏名でリレーションを組み、その氏名を更新するというのはあまり歓迎できません。
できれば個人を識別するID番号等のフィールドを設けて、そこでリレーションを組みましょう。
すべて了承した上のことでしたら、失礼致しました。
59NAME IS NULL:04/07/28 11:47 ID:???
更新クエリってぇのはあれかい、UPDATE文のことかい?
60NAME IS NULL:04/07/28 12:30 ID:???
>>59
そうです
6155:04/07/28 23:29 ID:Gshvi7n8
>>58
なるほど!!出来ました!!
有難うございました!!!!!
62NAME IS NULL:04/07/29 04:41 ID:???
>>56
多分Access君がいっぱいいっぱい。
クエリをSQLビューにて直書きしているのであれば、まずは記述ミスを疑う。
デザインビューで作成していてそうなっている場合は、結合したいテーブルを数段階に
分けて、複数のクエリーにして結合する。
ただし、これすると無茶苦茶処理が遅くなる(場合がある)ので、この手のことをしたい
場合は、その結果を見たいところ(フォームなりレポートなり)を開かせる処理のところ
で更新クエリーを使って、空テーブルにテンポラリーデータを作成して結合させて
いきまつ。
63初心者T:04/07/30 00:43 ID:o7X62hPa
>>57

ありがとうございます。
早速やってみましたが。。。うまくいきません(;;)
もう少し続けてやってみます。

>県名のフィールドは表示のチェックボックス外しちゃってもいいでしょう。

←これはどうやるのでしょう?

64初心者T:04/08/04 00:15 ID:ENSvGynw
なんとかコンボxコンボ(2つのコンボボックスを連動させる)出きるようになったのですが、不具合が。。。

これまでしたことの手順
(1) テーブルを3つ作成。
 (i) テーブルAは基本データで、ここに県名と郡名を取り込む
 (ii) テーブルBには県名と県コード
 (iii) テーブルCには郡名と郡コードと県コード
(2) テーブルAを使ってフォームAを作成
(3) フォームAの県コンボボックスのプロパティ内の、値集合ソースに、
  テーブルBの県名を指定
(4) フォームAの郡コンボボックスのプロパティ内の、値集合ソースに、
  テーブルBの県名とテーブルCの郡名を指定。
  県名は非表示。
  県名で抽出条件[forms]![フォームA]![県名]
(5) フォームAの郡コンボボックスのプロパティ内の、イベント−フォーカス取得時に
  マクロビルダを使ってマクロを指定。
  マクロの中身は、
    「再クエリ」引数は「県名」

以上。ここまでやって、コンボボックスが連動するようになったんですが、
不具合が。。。orz
不具合内容は
(a) フォームAのレコード番号を変えれば、
  県名も郡名も一度リセットされて、
  郡名のコンボボックス内のデータも新たに選択された県名に連動すべきなのですが、
  最初に入力した県名のデータに連動された郡名が、
  いつまでも郡名コンボボックスに残り、
  正しい郡名を選択出来ないのです。

どこが悪いのでしょう?
再クエリした内容を、コンボボックスからフォーカスが
外れた時点でリリースすればいいように思いますが、
やりかたが思いつきません。
どなたか、ご指導よろしくお願いします。
65NAME IS NULL:04/08/04 07:14 ID:LIw+Ax9c
accessて使う前はバカにしてたんだけど
4月から使い始めて簡単なのでハマった
vbとか簡単〜
クエリのデザインとか楽すぎ

コードは醜くなるけど
66NAME IS NULL:04/08/04 21:32 ID:4tvJMmst
時間間隔の単位のwとwwの違いを教えていただけますか?
67NAME IS NULL:04/08/05 08:27 ID:???
>>64
県名コンボボックスの更新後処理イベントにコード

Me.郡名.Requery

でいいのでは?
68NAME IS NULL:04/08/05 08:29 ID:???
>>66
少しはヘルプ見ろ
※Ac2000以降のヘルプの場合
VBエディタ側のヘルプで「書式」と入れて「"Format/書式" プロパティ ― 日付/時刻型」を...
69NAME IS NULL:04/08/05 22:16 ID:EBb5gW84
クエリとテーブルを内部結合した短いクエリと
テーブルを直接参照する冗長なクエリがあるのですが
パフォーマンスを比較する方法はありますか?
70NAME IS NULL:04/08/06 20:10 ID:WiPfD8pX
パフォーマンスとは?
71NAME IS NULL:04/08/06 21:22 ID:i7wsIAie
>>70
CPU処理時間とか……
72NAME IS NULL:04/08/06 21:22 ID:???
小鼠の得意技。
73NAME IS NULL:04/08/06 21:31 ID:???
>>71
それって負荷じゃ・・・
74NAME IS NULL:04/08/06 21:33 ID:???
>>70
お客さんへのファンサービス
7569:04/08/07 00:11 ID:hhIeO9uh
質問中のパフォーマンスが高いとは、
http://www.microsoft.com/japan/msdn/sqlserver/columns/sysbuild/sysbuild3.asp
このページに書いてあるところの、「クエリの総コストがより低い」状態
と意図しています。

手元には ACCESS と PostgreSQL しかありません。
なので、Microsoft SQL Server のような表示は出てきません。
76NAME IS NULL:04/08/07 02:49 ID:b3We31b9
sql serverのフロントエンドとして使うなら最強だけどねえ。

凄い使い易いし。
結局sql serverの一部ツールとして考えれば最強。
77NAME IS NULL:04/08/09 20:13 ID:szBIdzj9
accesssでサブクエリ使えるのですか?
78NAME IS NULL:04/08/09 21:10 ID:D3DW4m3E
>>77
使える。
79初心者T:04/08/11 08:51 ID:Z7yNIn/w
>>67

64です。できました。ありがとうございました。
80NAME IS NULL:04/08/26 14:09 ID:L70NqcYu
すいません。
名前を選ぶコンボボックスで「Aさん」を選んだ場合、自動的にクラスが「1組」に書き換わり、
その直後クラスを選ぶコンボボックスで「2組」を選んだ場合には「2組」が保存される、
というようなものを作るにはどうしたらいいのでしょうか?
81NAME IS NULL:04/08/26 16:51 ID:2UxZ/ddt
>>80

氏名とクラスを格納するテーブルを「学年名簿」とすると

Private Sub 氏名_Change()

Dim dbs As Database, rst As Recordset, strCriteria As String

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("学年名簿", dbOpenDynaset)

strCriteria = "名前 = " & Me!名前

rst.FindFirst strCriteria
If rst.NoMatch Then
    Exit Function
Else
Me!クラス = rst!名前
Exit Sub
End If
End Sub

こんな感じのプロシージャを氏名コンボボックスのChangeイベントに書けばいいと思う。
保存するにはクラスコンボボックスのChangeイベントに保存用のプロシージャが必要。
82NAME IS NULL:04/08/26 23:24 ID:???
>>68
わや亀レスですが、

ヘルプは、見ました。
「時間間隔の単位」で使った時の違いがわからなくて質問したのです。
(本来、そういう使い方すべきではないのかもしれませんが、
あるテキストにのっていたので)
それに対する答えは、ヘルプになかったと思いますが・・・
でも、解決しました。

83NAME IS NULL:04/08/30 15:23 ID:ko3yWlYh
はじめまして。

質問です。
テーブル及びクエリのフィールド名を、プログラムから
変更することは可能でしょうか。

よろしくお願いいたします。

84NAME IS NULL:04/08/30 15:55 ID:wm4+ze2v
>>83
可能です。
85NAME IS NULL:04/08/31 00:07 ID:ErtCixzY
>>84
83です。
ご回答、ありがとう御座います。
続けて質問なのですが、その方法を教えて
頂けないでしょうか。
まだ、始めたばかりで詳しくないので、
よろしくお願いいたします。
86NAME IS NULL:04/08/31 00:44 ID:JN7+kpHn
>>85
Sub ChangeFieldName_Table()
Dim l_Database As Database
Set l_Database = CurrentDb

On Error Resume Next
l_Database.TableDefs.Delete ("T_TEST")
On Error GoTo 0

Dim l_TableDef As TableDef
Set l_TableDef = New TableDef
l_TableDef.Name = "T_TEST"
Dim L_Field As Field
Set L_Field = New Field
L_Field.Name = "F_OLD"
L_Field.Type = dbLong
l_TableDef.Fields.Append L_Field
l_Database.TableDefs.Append l_TableDef

l_Database.TableDefs!T_TEST.Fields!F_OLD.Name = "F_NEW"

Set l_Database = Nothing
End Sub

Sub ChangeFieldName_Query()
ChangeFieldName_Table

Dim l_Database As Database
Set l_Database = CurrentDb

On Error Resume Next
l_Database.QueryDefs.Delete ("Q_TEST")
On Error GoTo 0

Dim l_QueryDef As QueryDef
Set l_QueryDef = New QueryDef
l_QueryDef.Name = "Q_TEST"
l_QueryDef.SQL = "SELECT F_NEW FROM T_TEST"
l_Database.QueryDefs.Append l_QueryDef

l_Database.QueryDefs!Q_TEST.SQL = Replace(l_Database.QueryDefs!Q_TEST.SQL, "F_NEW", "F_NEW AS F_NEW2")

Set l_Database = Nothing
End Sub
87NAME IS NULL:04/08/31 00:55 ID:ErtCixzY
>>86
85です。
早々にご回答頂きありがとう御座いました。
早速、これを参考にチャレンジをしたいと思います。
ありがとう御座いました。
88NAME IS NULL:04/08/31 04:03 ID:???
DAOの参照設定についてもちょっとは解説してやらないと
このコードは使えない肝吸い
89NAME IS NULL:04/09/02 01:18 ID:XOkoeo+v
テーブル1に「会社名」「番号1」「名前1」「番号2」「名前2」というフィールドをつくり、
テーブル2に「番号」「種類」「商品名」というフィールドをつくります。
テーブル1の「番号1」と「番号2」をテーブル2の「番号」に対応させて、
テーブル1をメインにしてテーブル2の「種類」「商品名」をそれぞれ「番号1」「番号2」
の横に表示させるようにするにはどのようにしたらよろしいでしょうか。
90NAME IS NULL:04/09/02 02:49 ID:???
「番号2」「名前2」というフィールドを削除し、
フラットな構造にした方が早いと思うんだけど。
91NAME IS NULL:04/09/02 02:57 ID:???
>>89
テーブル2を参照するクエリ2を作成。
あとは2つのテーブルと1つのクエリをデザインビューに配置。
2本とも結合のプロパティでテーブル1の全レコードを含めるに設定。
92NAME IS NULL:04/09/02 10:25 ID:vgt66x6m
>>86
85です。
多少試行錯誤しましたが、何とか上手く出来ました。
ありがとう御座いました。
93NAME IS NULL:04/09/04 15:49 ID:???
空調設備工事の会社
9493:04/09/04 17:39 ID:???
↑激しく誤爆。スマソ
95NAME IS NULL:04/09/05 07:14 ID:RVUXCNsc
ACCESSは確か2.0の時少し触ってそれ以来インストールした事も
なかったのですが、他の板で気になる表記を見つけで、
ネットワークでの共有に関して、教えてください。

ACCESSだけで、データベースの共有を行う、c/sみないな事って
実現出来るのですか?どこかの掲示板で2000以降なら可能という
記述を見た事があります。例えば、1台のホストに統合的に全て
のデータが集まり、10台くらいのクライアントから更新する
として、そのカラクリは?

9695:04/09/05 07:17 ID:???
つづいて、もう一つ、

MS SQL ServerのクライアントとしてACCESSで作ったものを
見せてもらったのですが、SQL鯖との接続部分は、

ACCESSの設定で、サーバのレプリケーションを作って、
そのローカルデータへの作業を、後からサーバに返して
あげるというニュアンスの話を聞いた記憶があります。

なんでも排他制御でしんどい思いをするとか市内とか?

こんな認識であってますか?
教えてエロイ人
97NAME IS NULL:04/09/05 07:34 ID:???
>>95-96
あ、あ、あ、危なーーーーーーーーーーい!逃げて、逃げてぇーーーーーーーー!
9895:04/09/05 15:00 ID:???
>>97

自分で何かしようという訳ではないのでご安心を。???
実現する方法とその仕組みが知りたいのです。

ああ、そういえば>>96の件はもっと使いやすく作り直して
って頼まれていて、クライアント側はc#あたりで作ろうと
は思ってます。
99通りすがり:04/09/05 18:33 ID:UmnB7WJL
>>95 ホストにはテーブルだけがあるMDBを置いて、クライアントからアタッチします。
ファイル共有であり、SQLによるクライアントサーバでは無ですが。
偶然2台のクライアントが同じレコードを修正して書き込む時に警告が出ます。
昔はMDBが壊れやすかったですが、最近は大丈夫みたいです。(Backupはしっかり)

>>96 私はACCESSのレプリケーションしか経験が無いですが、排他制御は自動的に
やってくれます。
これも競合時にはワーニングが出ます。
ACCESSのレプリケーションは、データだけでなくプログラムも同期してくれますが
通常、開発環境と実行環境は異なるので、データだけレプリケーションさせた方が
良いでしょう。
オートナンバー型がランダムしか使えないとか、レプリケーションID(GUID)を
理解する必要があったり、ちょっと面倒かも。
今はWANでも速いので、レプリケーションより、ただのC/Sのほうが良いかも。
10095:04/09/05 22:14 ID:???
>>99
レスありがとうございます。

>ファイル共有であり、

smb経由のファイル共有で複数のホストがMDBファイルをオープンして、
ACCESSが協調して同時書き込み等を制御してくれる・・・という理解
で良いですよね。

>今はWANでも速いので、レプリケーションより、ただのC/Sのほうが良いかも。

SQL Serverのクライアントになるには、レプリケーション型と、生粋
のc/sが可能。レプリケーションでは気をつけなければならない事が
少しばかりある・・・と。

ただのc/sとは?どういう話ですか?ACCESSのスクリプトでSQL問い合
わせを行って、result-set objectみたいなのを生成してVBAでゴリゴリ
やるという感じでしょうか?それなら素直にVBかC#かで良さそうに思え
ますし、ACCESSならではのメリットってあるのですか?

質問ばかりですみません。
101通りすがり:04/09/06 15:06 ID:IXNXpIbA
>100
>ACCESSが協調して同時書き込み等を制御してくれる・・・という理解

あくまでイメージですが・・・
1.クライアントがデータを読み込んだ時、オリジナルデータをとって置く。
2.クライアントが変更データを書き込む直前に、もう一度データを読み込む。

・もし直近データと、オリジナルデータが同一なら、誰もデータを変更して
いないので、そのまま変更データを書き込む。

・もし直近データと、オリジナルデータが異なっていたら、誰かが変更データ
を書き込んだことになる。
このまま自分が書き込むと、他人の変更を上書きしてしまうので具合が悪い。
そこで警告を出し、そのまま書き込むか、自分の変更を無効にするか選択させえる。

以上のようなことを内部的に行っているようです。(楽観的ロック)
他のクライアントと通信する必要は無いし、読み込み時にレコードロックする必要
もなく、排他制御のコーディングも必要ありません。
102通りすがり:04/09/06 15:08 ID:IXNXpIbA
>ただのc/sとは?どういう話ですか?

クライアントからサーバに直接SQLを投げるということです。

レプリケーションの場合、クライアント側にあるレプリカDBに対してSQLで
データ更新ます。
レプリカとサーバDBは定期的に同期処理を行い、更新済データを交換し合います。

レプリケーションは、クライアント・サーバ間の回線が細い時、レスポンス
低下を避ける為、クライアント側に複製データを置くものです。
複製データですから、他のクライアントの変更がリアルタイムに反映せず、
同期処理時にデータ競合が起こる可能性があります。

>それなら素直にVBかC#かで

どんな開発が「素直」かは、その人が使って来た開発環境によるでしょう。

ACCESSは、テーブルとモジュールが同じMDBに含まれており、自分のデータに
アクセスする時のコーディング量が少なくて済みます。
(データの場所を指定する必要がありません)

基本的にフォームのコントロールはDBのフィールドに連結しているので
単純なデータ更新なら、素早く作成できます。
本当に必要なビジネスロジック作成に専念できます。

・単純なテーブル(従業員テーブル、県テーブル 等)なら
DBサーバ → リンクテーブル → 連結フォーム

・パフォーマンスが要求されるなら
DBサーバ → パススルークエリー → 連結フォーム 又は VBAでゴリゴリ
103NAME IS NULL:04/09/06 18:59 ID:SInApfrv
Access2003で、レポートにImageオブジェクトを貼り付けているんですが、
環境によってPNGファイルが表示できたりできなかったりします。
どこをチェックすれば、その可否がわかるんでしょうか?
104NAME IS NULL:04/09/06 19:03 ID:SInApfrv
10595:04/09/06 21:17 ID:???
>>101-102

詳細ありがとう。分かりやすかったです。
で、またまた質問で恐縮です。

>クライアントからサーバに直接SQLを投げるということです。

ここのコネクションは、どのような手法でしょうか?
ODBCとかADOとか(じつはADOよくわかっていない)

oo4oとかlibpqとかはcやvbで使ったことあります。

それともACCESSならではのクライアント機構があるとか?
実はPostgresやMySQLのクライアントにも簡単になれるとか?
それなら実にうれしい。
106通りすがり:04/09/06 22:38 ID:IXNXpIbA
oo4o+VB は経験ありますが、ACCESSの方がずっと楽です。
ORACLE+DAOの場合ですが、先ず[ODBCデータソースアドミニストレータ]
で、接続先のDBに合わせて、データソースを作成します。
その後の処理を 簡単な方から説明すると・・・

1.リンクテーブルと連結したフォームから手入力でデータを設定する。
上記データソース経由でDBのテーブルのリンクテーブルを作成します。
作成したリンクテーブルに連結したフォームを作成します。
フォーム上で行った更新は、自動的にDBに反映します。
データの表示・更新書込に関してはコーディングは必要ありません。

2.リンクテーブルから、VBAでレコードセットを作成し一レコードずつ
読込み処理する。
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("select * from テーブルA")
Do Until rst.EOF
  --ここに処理を書く
  rst.MoveNext
Loop

3.パススルークエリーでデータを取得し、VBAで処理を記述したり、
レポートなどのレコードソースにする。
先ず、雛型となるパススルークエリーを作成し、下記のように利用します。
Dim rst As Recordset
CurrentDb.QueryDefs("パススルークエリー").SQL = "select * from テーブルA"
Set rst = CurrentDb.OpenRecordset("パススルークエリー")
Do Until rst.EOF
  --ここに処理を書く
  rst.MoveNext
Loop

更新する時は、更新用のパススルークエリーを作成して、下記のように利用します。
CurrentDb.QueryDefs("パススルークエリー").SQL = _
 "update テーブルA set 項目1=" & 更新値 & " where ID=" & 更新ID
CurrentDb.QueryDefs("パススルークエリー").Execute

------------------------------------------------------
「1」のリンクテーブル利用は、パフォーマンスが悪いですが、手入力
  相手なら問題ありません。
「2」は、ACCESSのテーブルと同じコーディングですから理解しやすいです。
「3」は、SQLが直接サーバDBで実行されるので速いです。
  特に、複数テーブルをJoinする時は、桁違いです。
  PL/SQLの実行など、サーバがサポートするSQLは全て実行できます。
  ACCESSのSQLではなく、対象DBのSQL文法に従う必要があります。
一番早く開発できるように、上記方法を組み合わせます。
10795:04/09/06 22:46 ID:???
>>106
>「1」のリンクテーブル利用は、パフォーマンスが悪いですが・・・
>「2」は、ACCESSのテーブルと同じコーディングですから理解しやすいです。
>「3」は、SQLが直接サーバDBで実行されるので速いです。

ウホ。だいたい分かったなり。
ありがとう、通りすがり さん。いい人だね。
アタシは3番のが性に合っている様に思います。

ここまで分かったら、興味わいてきたので、
インストールして試してみます。

108NAME IS NULL:04/09/08 19:08 ID:pRMLS3SI
教えて頂きたいのですが…
FIREBIRDで作成したテーブルをACCESSでリンクしようとしたところ、
『システムで予約されているエラー』になります。
FIREBIRDではキーファイルを作成しています。キーファイルを削除したところ、リンクが出来るようになりました。
しかし、キーファイルはそのままでACCESSとリンクしたいのです。
ODBCの設定が悪いのか、わからない状況です。

環境
OS    WINDOWS98
DBMS FIREBIRD1.5
ODBC  IBPhoenix1.2

ACCESSは素人なもので、教えてください。
109NAME IS NULL:04/09/09 01:58 ID:JdVhfrfL
OS:XP, Office:XP
内部結合でFROM句にテーブルを並べた場合、
出てきたクエリを変更しようとしても、まるで
スナップショットが選択されているが如く更新できません。

確認のためにデザインビューで開いてみても
プロパティはダイナセットになっています。

冗長ですがJOIN句を追加すると更新できます。
バグですか?
110NAME IS NULL:04/09/09 08:18 ID:/JZUED5S
│得意先CD│金額│が入力されたテーブルを、
クエリで得意先CD毎に集計しました。

金額を降順にしたのですが、なぜかマイナスの値が
最大値になってしまいます。

-1000
10000
9000
8000
...
のようになってしまいます。

初心者なもので、全然理由がわかりません。
Win2000
Access2000 です。
よろしくお願いします。
111NAME IS NULL:04/09/09 08:33 ID:???
>>110
データ型は数値型?
フィールドサイズを「十進型」にしてませんか?

金額ならできるだけ「通貨型」にして「\」マークが付くのがイヤなら
書式を標準にした方が後々いいと思います。
112110:04/09/09 09:35 ID:NEAnFtsQ
>>111
十進型になっていました。

ただ、リンクテーブルなもので、テーブルを変更することはできません。
クエリで変換とかはできるものなのでしょうか?
113NAME IS NULL:04/09/09 10:01 ID:4g3XcIyA
>>112
Nullの行があったりするとかなり大変。
114110:04/09/09 10:15 ID:NEAnFtsQ
>>113
Nullはないと考えて大丈夫なのですが
それだとなんとかなりますか?
115NAME IS NULL:04/09/09 10:29 ID:4g3XcIyA
>>114
それだったら、
SELECT CCur(T1.F1) AS F1 FROM T1
とかで何とかならない?
116NAME IS NULL:04/09/09 10:54 ID:???
>>114
NullあってもNzで0にしてやればいいと思います。

SELECT CCur(Nz([F1]))
FROM T1
ORDER BY CCur(Nz([F1])) DESC;
117110:04/09/09 13:00 ID:NEAnFtsQ
>>115,116
そのような方法があったのですか、ありがとうございます。

回答を確認する前に、
クエリに項目「int(金額)」を追加し、それで降順をかけたらうまくできました。
回答していただいた方々、ありがとうございましたm(_ _)m
118h:04/09/11 01:02:25 ID:???
すいません,どうにも見つからないので,ちょっと質問させてください.
Accessで,テーブル一覧を取得するSQLは存在しないんですか?
しょうもない質問で恐縮ですが(^^;
119h:04/09/11 01:49:28 ID:???
自分で解決できました.
GetOleDbSchemaTable()を使え,と・・・.
120NAME IS NULL:04/09/11 17:56:36 ID:xzy8zwwc
ビデオを管理するmdbがあります(Access2000)。

種類(数値型)、タイトル(テキスト型)

という感じになっています。
種類(数値型)をコンボボックスにして「ルックアップ」→「値集合ソース」で

1;"SM";2;"モロ";3;"女子高生";4;"主婦";5;"風俗情報"

という風に設定していて、少しでも使いやすくなるようにしています。
最近看護婦物の数が増えて来て女子高生よりよく見てモロよりよく見ないぐらいの頻度なので

1;"SM";2;"モロ";3;"看護婦";4;"女子高生";5;"主婦";6;"風俗情報"

という風に「値集合のソース」を変更したいのですがどうすればいいでしょうか?
値集合のソースだけを変更すると「種類」の表示が変わってしまいました。
121NAME IS NULL:04/09/11 21:06:11 ID:???
更新クエリで種類が2より大だったら種類+1してから
値集合のソースを変更すればいいじゃん。
その前に、設計が……
122NAME IS NULL:04/09/11 22:03:26 ID:???
1;"SM";2;"モロ";6;"看護婦";3;"女子高生";4;"主婦";5;"風俗情報"
123120:04/09/12 00:01:35 ID:???
>>122
そういうのがしたかったです。
無事看護婦はめることができました。

>>121
orz
124NAME IS NULL:04/09/13 01:16:55 ID:FQ5cpePN
ぎゃあああああああああああああ
125NAME IS NULL:04/09/14 16:17:36 ID:???
看護婦とセクース(;´Д`)ハァハァ
126NAME IS NULL:04/09/19 16:20:40 ID:IrgpIJa8
ACCESS のシステムカタログを弄るにはどうしたら良いのでしょうか?
それと CREATE DOMAIN が使えないのですが、バグですか?
127NAME IS NULL:04/09/20 13:09:57 ID:???
ACCESSのSQLで、フィールド一覧のところに自作の関数を埋め込めるじゃないですか。
SELECT ID,SHOHIN_CD,MyFuncNedan(SHOHIN_CD) from SHOHIN_MST
みたいな感じで。

この「SQL内でVBの自作関数を使う」っていうのを、
VBプログラムからADOつかってmdbファイルにアクセスするときに
やりたいんですけど、どうやるかわかる人いますか?

mdbファイル内に使いたい関数を作っておいて(モジュールファイルに記述)
上記のようなSQLをADO recordset の open メソッドで指定しても
エラーになってしまいます。

どなたかご存知の方いらっしゃいましたら、ご回答よろしくお願いします。
128NAME IS NULL:04/09/20 14:28:04 ID:liuCgybG
>>127
できまへん。
Access内で完結するマクロをつくって、VBから呼ぶことはできるけどね。
単純なSQLでレコードセット開いて、自前で関数に掛けて使用汁。
129NAME IS NULL:04/09/20 20:59:42 ID:e9WUcsEh
本の種類を管理するテーブルがあります(Access2000)。

種類(数値)、大分類(数値)、中分類(数値)、小分類(数値)、種類名(テキスト型)

という感じになっています。
種類(数値型)は000102という感じの6桁の数値で打ち分けは
00 01 02 という感じで桁数によって大分類・中分類・小分類からなっています。
(この場合は大分類=00/中分類=01/小分類=02)

種類を入力したときに大・中・小分類に、大・中・小分類を入力したときに種類に自動で入力されるようにしたいのですが
どうすればいいのでしょうか?
知恵を貸して下さいm(__)m
130NAME IS NULL:04/09/20 22:22:34 ID:???
種類と分類が重複しているなんて冗長では?
131NAME IS NULL:04/09/20 22:30:07 ID:???
>129
 種類=大分類 & 中分類 & 小分類 なのよね。

 自分ならまず、
○テーブルから種類列(または大中小分類のどちらか)を無くす。
●次に、大中小分類に入力すると更新前動作で種類フィールドに合わさったものが入るようにする。例えば
 種類.value=right("00" & 大,value,2) & right("00" & 中.value,2) & right("00" & 小.value,2)
●同様に、フォームの種類フィールドに入力した値が大中小分類の入力フィールドに分かれる
 ようにする。
○種類フィールドを非連結にする。
○元の「種類、大分類、中分類、小分類、種類名」と同じように見える選択クエリを
 つくって、別の表示用のフォームなりレポートはそれをレコードソースとして食うようにする。

とするかなぁ。書いてあることだけやるなら、黒●のやつだけやれば実現できるけど、冗長で
食い違った内容が入ったら怖いし、まだ作ってないなら白○のとこも考えてちょ。

時に、種類に 000102 が格納されているとしたらそれテキスト型じゃ、ってオモタけど、
わかりやすいようにそう書いてあるだけよね?
132129:04/09/20 23:05:51 ID:???
いろいろわかってなくてちぐはぐな事を言ってるかもしれませんm(__)m

>>130-131
詳しくありがとうございます。
確かに冗長ですね。大・中・小分類だけにすることにします。

わからないことだらけであまりよく理解できてないのですが
わたしがやりたかった(過去形)のは「種類」(数値、書式000000)にデータシートビューで000102と入力すると
自動で大分類に00、中分類に01、小分類02にと入力されたら楽ちんでデータが食い違うこともなくていいなーと思ったんです。
もしかしてデータシートビューではそういうことはできないんでしょうか?

うまく伝えられなくてすいません。
133NAME IS NULL:04/09/21 22:55:29 ID:???
>132
(゚Д゚#ええーいデータシートビューで見ているのはテーブルだ!!概念スキーマだ!!
それをユーザに触らせるなんて言語道断!!そういう「見た目を扱う部分」「ユーザが触る部分」は
外部スキーマの「選択クエリ」や「フォーム」、「レポート」で表現しる!!
そしてテーブルには冗長性を排除した本当のデータのみを格納すべきなのです!!
134129:04/09/21 23:35:43 ID:???
>>133
       ∧_∧
      ゜(。∩∩)゜。。
    もう変なこと考えません
135NAME IS NULL:04/09/22 12:03:48 ID:W0KcCCVN
>>129
プライマリキーをLONGあるいは6桁のDECIMAL値としてその書籍分
類マスタを作るっていうのはどうでしょうか(大・中・小分類が
01 02 03 なら 10203)。マスタを使うときは大・中・小分類に
分解するクエリーを通せば良いと思います。

-- 書籍分類マスタの定義
Create table 書籍分類マスタ (
id long,
name text(50),
constraint pk_書籍分類マスタ primary key (id)
)

-- マスタを使うときに通すクエリ
SELECT ([id]\10000) Mod 100 AS 大分類, ([id]\100) Mod 100 AS 中分類,
[id] Mod 100 AS 小分類, 書籍分類マスタ.name FROM 書籍分類マスタ;

で、マスタへの登録変更フォームにも[id]を大・中・小分類に分解した
内容を表示させるテキストボックスを用意するという方向で。
136NAME IS NULL:04/09/22 12:29:35 ID:???
>>135
いい発想だが、来月に小分類あたりが100を超えて破綻。
137NAME IS NULL:04/09/22 13:43:20 ID:???
>>136
分類コードのコード体系が数字なんだから仕方ないじゃん。
っつーか、小分類が100を超えるなんて分類のしかたが
悪いんだよ。
138NAME IS NULL:04/09/22 22:34:50 ID:???
>137
文字型にして16進数に
139NAME IS NULL:04/09/22 22:35:50 ID:???
ISBNの列だけ残して、あとは削除しちゃえ!
140NAME IS NULL:04/09/22 23:10:17 ID:???
いっそmdbファイルとOffice2000ごと削除しちゃえ!!
141NAME IS NULL:04/09/22 23:28:45 ID:???
いや、冗談じゃなくてさ
ISBNには出版国とか出版社、細かいジャンルも含まれてるから
ISBNと書名だけあれば十分じゃないかと。
142NAME IS NULL:04/09/22 23:36:53 ID:???
ええい、もうHDDごと消去してジャストウィンドウいれちゃえ!
143NAME IS NULL:04/09/22 23:59:41 ID:???
さて、様々な選択肢が示されたわけだが
>>129はどうする気だい?
144NAME IS NULL:04/09/23 00:11:53 ID:QstrfqMz
アクセス2000でODBCでリンクテーブルを作って
作業してるんですけど
時々レポートが突然消えたり、開いたフォームを
閉じれなくなったりするんですけど
どんな原因が考えられますでしょーか…
145NAME IS NULL:04/09/23 01:56:08 ID:???
小分類が100か〜
それってたぶんオペレータが商品登録時にその場の気分体調で判断することになるんだよね。
DBとして破綻する前に、商品登録はじめの10個あたりでデータ自体どうでもよくなっちゃうんじゃないかな。
というわけで141に一票

>>144
LANケーブル踏んづけたとか、HUB蹴っ飛ばしたとか、いろいろ
146NAME IS NULL:04/09/23 04:08:21 ID:SoLULyfB
図書の小分類って中分類の下にそれぞれあるんじゃないの?
147NAME IS NULL:04/09/23 06:20:48 ID:???
そのうち一つの本に複数の小分類つけたくなっちゃうんだよねぇー。
属性という扱いにしてテーブル分けたほうがよさげ。
148NAME IS NULL:04/09/23 15:18:29 ID:???
分類なんざエロと非エロの2通りあれば・・・
149NAME IS NULL:04/09/23 17:36:55 ID:???
非エロの本を捨てれば分類も不要だな。
150NAME IS NULL:04/09/23 18:41:45 ID:???
玄人の俺に言わせれば、「エロ」だけで分類するのは素人。
ジャンルってものがあるだろうがw
151NAME IS NULL:04/09/23 23:29:12 ID:VhHsEf5k
参照整合性のチェックボックスを OFF のまま
テーブル間に「リレーションシップ」作成しました。

作成の前後で、線が引かれた以外で目に見える
変化は起きませんでした。
(DRI でも、直積の制限でもない?)
一体、参照整合性の無い「リレーションシップ」は
何をやっているのでしょうか?
テーブルの定義が変わるのでしょうか?
ご教示ください。(ビジネス soft 板から移動してきました。)
152NAME IS NULL:04/09/25 02:06:05 ID:???
>151
クエリ作るときに自動的にINNER JOINしてくれる程度の役にしか立たなかった希ガス
153129:04/09/25 02:54:25 ID:???
おしかりを受けた後スレを見ていませんでした。
レスいっぱいありがとう。

わたしが知りたかったのは>>135さんの方法なのですが
わたしには難しそうなので大・中・小だけでデータの種類を表すことにします。
ISBNは名案なのですが、将来本以外も扱いそうなので大中小だけという方法でいきます。

_(._.)_
154さぼい:04/09/25 19:09:05 ID:6XnjLPxY
マッタクの初心者です。
チェックボックス(商品名)をいくつか作り、それぞれに数値(価格)を与えて、
チェックされた箇所の合計を求めたいのですが、どうしたら良いでしょうか?
オプショングループで何度かやってみたんですが、うまくいきませんでした…。
「商品」チェックボックスの規定値、値(数値データ)を「合計」フィールドに保存、
を試みてるんですが、数式の入力もクエリでやるのかテーブルでやるのか分からない程の初心者でして…
どなたか教えて下さいませ!!m(_ _)m
155NAME IS NULL:04/09/26 02:26:07 ID:+Sm6B5mI
>>153
かわいい
156NAME IS NULL:04/09/26 03:40:40 ID:???
DSum("価格","テーブル名","チェックボックス=True")
な感じかな。
チェックボックスって使った経験なしだから良く分かんね
もしかしたらTrueじゃなくONとかになるのかな。
合計「フィールド」って言葉が気になるな。
たぶんフッターかヘッダーに貼りつけたテキストボックスのことだよな。
これだとチェック入れたり消したりするたびにRequery しなきゃならないか。
それよりは「合計」の既定値=0 にして、
チェックボックスクリック時
もしONなら
[合計] = [合計] + [価格]
そうでないなら
[合計] = [合計] - [価格]
おわりもし
のほうがいいかな。
でも何だかよく分かんね。
質問の意味も実は分かってね。
157さぼい:04/09/26 21:43:19 ID:XJeK7tcR
>>156
ありがとうございます!早速やってみます。
DSUM、条件にあったものの合計、ってことですよね。
チェックが入っているものを条件に出来れば良いんですね!
…って、自分で納得出来たような分かんないような…;
とにかくありがとうございます!!m(_ _)m
158NAME IS NULL:04/09/26 22:03:56 ID:uGuPGAei
ググっても分からないので教えてください。
オフィスXPsp2のアクセスなのですが、
テーブルのデザインビューのデータ型からルックアップウィザードを
使って、ルックアップさせようとすると
「選択されたデータソースからデータを取得することができません。
別のテーブルまたはクエリを選択してください」というエラーが出てきてしまうのです。
いろいろなテーブルでやってもダメでして、エラーをグーグルで検索しても
ダメなのです。よろしくお願いします。
159NAME IS NULL:04/09/27 01:15:26 ID:???
>>158
一度も遭遇したことが無いなあ。

ルックアップフィールドウィザードで追加されたフィールドの
ルックアップの値集合ソースプロパティの値をコピーして
普通のクエリとして貼り付けて実行できる?
160NAME IS NULL:04/09/27 01:25:10 ID:???
関係ないと思うけど、
参照されるテーブルのフィールド名を半角英数字だけにしてみるとか。

MDB?ADP?
http://support.microsoft.com/default.aspx?scid=kb;ja;278867
161NAME IS NULL:04/09/27 15:35:34 ID:???
1つのテーブルにAとBというフィールド(列があって)

A>0
もしくは
B>0
の時、レコードを表示したいのですが
どうすればいいでしょう?

A | B
------
>0 | >0

といった感じにデザインビューで定義しても
and条件になってこまっています。
162NAME IS NULL:04/09/27 16:02:12 ID:???
>>161
Bフィールドの条件を1つ下に書くと...ORになる
163NAME IS NULL:04/09/27 16:06:05 ID:???
神様ありがとうございます。
164160:04/09/27 16:25:57 ID:???
もう1つ質問です
where
MONA = 0 and (GIKO = 1 or NIDA = 0)

のようなクエリはどうやってデザインビューで
定義すればよいですか?

MONA| GIKO NIDA|
------------------
0| 1| |
-------------------
0| | 1|


なんていわないでください。
165NAME IS NULL:04/09/27 20:08:09 ID:???
M|G|N
0|.1|
0| |0
166NAME IS NULL:04/09/27 20:13:37 ID:???
>>164
目的のSQLが分かってるならSQLビュー使え。
167NAME IS NULL:04/09/28 15:33:49 ID:???
レコードに半角スペースだけを入力したいのだけど、
普通に入力しても、入力した半角スペースが消えてしまいます。

半角スペースだけの入力ってできないのでしょうか?
168NAME IS NULL:04/09/28 16:43:39 ID:???
SQLとかでクォーテーションで括ってやれば挿入できた筈。
紛らわしいのでおすすめできないが。
169NAME IS NULL:04/09/28 17:04:43 ID:???
>>168
できました。ありがとうございます。
Accessのレコードに ' ' と入れてみたところ、思い通りに動きました。
170NAME IS NULL:04/09/30 11:33:01 ID:A74TNTmU
どなたかお知恵を拝借・・・。

現在ACCESS2003でデータベース作ってるんですが、
顧客の相談内容を入力する欄を、相談されるたびに
追加するにはどうすればいいんでしょうか?

お客様によって相談回数が異なるので、基本フォーム
には一回分だけ入力欄を作り、相談するたびに新しい
スペースを追加していきたいのですが・・・。

最初っから入力欄をたくさん作っとくってのはどうも・・・。

何卒よろしくお願いします。
171NAME IS NULL:04/09/30 12:00:11 ID:???
顧客ID, 相談回数(相談日?), 相談内容で別テーブルを作る。
何回相談があっても新規レコード作るだけ。
正規化について学習しる。
172170:04/09/30 13:15:46 ID:A74TNTmU
>>171
ははぁ、なるほど別テーブルですね。
ありがとうございます。

恥かきついでにもう一点。
マウスのホイールをまわすとフォーム内の縦スクロールではなく、
次の入力フォーム(新規)に移動してしまうんですが、
縦スクロールするにはどうしたらいいのでしょうか?
173NAME IS NULL:04/09/30 15:47:10 ID:9PUJMLNY
Accessに保存したインポート/エクスポートの定義を印刷してくれるフリーソフトを過去に
使った事があるのですが、今探すとどうしても見つかりません。
知ってる人いませんか?
174NAME IS NULL:04/09/30 15:50:01 ID:???
>>172
単票フォーム、だよね
だったらしょうがないんじゃないの
よく知らないけど
175NAME IS NULL:04/10/01 11:15:19 ID:???
176173:04/10/03 01:07:58 ID:???
>175
コレダーありがとん
177NAME IS NULL:04/10/03 19:21:09 ID:???
ADPで非連結フォームのデータを鯖に書き込むときって
VBAでひとつずつフォームのデータを集めてから書き込んでいるんですか?
すっごく面倒なんだけど楽な方法ありませんか?
178血糖馬券死インスリン:04/10/04 09:41:43 ID:mrKXTtyY
OS:2000Access Version:2002
http://www.geocities.jp/umazanpai/
db33.lzh
グラフのリンクが挙動不審、正しいリンクのさせ方教えて。
179NAME IS NULL:04/10/05 00:58:21 ID:GdbmbLhZ
WINXP上のアクセス2000でADO(2.7)を参照設定してあるブックを
WIN98で動かしたいんだけど、どうすればいいんだろ?
MDAC 2.7 SP1 Refreshというのをインストしたけどだめでした。
180NAME IS NULL:04/10/05 09:12:45 ID:???
ブック・・・・
181NAME IS NULL:04/10/05 23:28:15 ID:KdTKVF/J
日付,得意先,商品1,商品2,送料… 

という表を日付と得意先別に集計したいんですが、
(10月の得意先別売上集計など)
今は日付をBetween〜Andで選択してテーブルを作り、
そのテーブルを得意先ごとに集計して作成しています。

これだと二度手間なので、一度でできる方法はないでしょうか?
182NAME IS NULL:04/10/06 00:16:02 ID:???
商品1とか商品2とか、何だか不吉な並び方をしているのは、まあ見なかったことにして
得意先に重複なしのコードが割り当てられているのかどうかちょっと不安だけれど、
それも気づかなかったことにして
どういう形で実現しようとしているのか今ひとつ分からないけれど、
フォーム上に
[いつから]
[いつまで]
[どの得意先]
みたいな抽出条件用のテキストボックスか何かつけてボタン一発でやりたい、として

Private Sub ボタンクリック時
Dim MyStrQry as String
MyStrQry = "SELECT 日付, 得意先, 何ちゃら, ・・・ "
MyStrQry = MyStrQry & "FROM 元になるテーブルだかクエリだか "
MyStrQry = MyStrQry & "WHERE (日付>=#" & Me![いつから] & "#) AND "
MyStrQry = MyStrQry & "(日付<=#" & Me![いつまで] & "#) AND "
MyStrQry = MyStrQry & "(得意先='" & Me![どの得意先] & "')"
Me.RecordSource = MyStrQry
End Sub
183NAME IS NULL:04/10/06 00:17:18 ID:???
SELECT 得意先, SUM(送料)
FROM hoge
WHERE 日付 BETWEEN foo AND bar
GROUP BY 得意先
ORDER BY 得意先;

とかすればいいんでないの?
184182:04/10/06 01:04:38 ID:Kctj/Umq
>>182-183
ありがとうございます。
抽出用のフォームを作って更新すればいいんですね。
早速>>182-183をお手本にして作ってみることにします。

一応、得意先も商品もそれぞれ重複なしのコードをつけて
別のテーブルから引っ張ってくるようにはしています。
185181:04/10/06 01:07:19 ID:???
>>184の名前欄は181の間違えでした。
訂正します、すみません。
186NAME IS NULL:04/10/07 09:49:54 ID:???
>>179
xp上でそのブックが正常に動作するんなら
98にMDAC 2.7 SP1 RefreshをインストールでOKのはずだが。
俺の場合、XPでビルドしたブックをWIN2000でアクセスと
連携させてるが、MDAC 2.7 SP1 Refreshのインストールで
フツーに動いてる。
1871192:04/10/10 17:38:26 ID:Z2btVjPb
Aテーブルでコマンドボタンクリックしたら全レコードに更新クエリを適用させるにはどうしたらいーですか?
188NAME IS NULL:04/10/10 18:59:40 ID:6LhXPlpH
質問させていただきます。
仕入-在庫-売上をアクセスで管理したく、
いろいろと奮闘しているのですが、
SQLで分からないことがあるので教えてください。

今月の売上分に対応する商品を、月初在庫数+今月仕入分-月末在庫分という
式で求めようと思っています。
月初在庫数というのは前月の最後に在庫を確認したときの数字を使おうと思うのですが、
SQLで日付に対してMAX()を使っても、結果がでません。
以下のようなSQLを書きました。
>SELECT max('日付')
>FROM 在庫履歴
>WHERE 日付 Between #10/1/2004# And #10/30/2004#;

WHERE FOMATを使い、何月かを入力したら、自動で前月の最終在庫確認の日と
その月の最後の在庫確認の日を出してくれるSQLというのはどう書くのでしょうか?
よろしくお願いします。
189188:04/10/11 21:12:13 ID:???
その後自分で考えて、
select top 1 日付 from 仕入履歴;
というSQLを元にすればよいのではないかと思いました。

日付を軸に別のテーブルとくっつけるときは
副問い合わせとinを使い表現しようと思います。

selectでテーブルを出力し、さらに別のテーブルと結合したいのですが
これはunionを使うのでしょうか?
190NAME IS NULL:04/10/11 21:35:50 ID:???
>189
横につなげるならカンマでつなげるか JOIN 、縦に積むなら UNION。
SELECT top 1 a.日付 AS 前月日付, top 1 b.日付 AS 今月日付
FROM 仕入履歴 a, 仕入履歴 b
WHERE 前月日付<Dateserial(year(date()), month(date()), 1);

とかかな?Access 手元にないからわからんけど。
191188:04/10/11 21:46:07 ID:???
うぉぉ!dateserialってVBAですね。すごい人に解答を頂きました。
自分はまだSQLの勉強を始めたばかりで、
アクセスにVBAや関数がどう使われるのか分かってなかったのですが
実例を見せていただき、ありがとうございます。
192NAME IS NULL:04/10/16 17:47:17 ID:A3CJ3oFV
ある時点でのmdbと今の時点のmdbを比較して
変更のあったプロシージャなどをリストとして出力してくれたりするツールってない?
193NAME IS NULL:04/10/17 19:19:45 ID:uH7rsvff
Access2000のmdbファイルを、
Access97で開く方法ってないのでしょうか?

とにかく今は、Acccess97しか使えない状況です。
VBで吸い出すことも考えたのですが、
mdbの中身を把握してないし、
コーディングしてる時間もあまりありません。

ツールとかあればお教えください。
194NAME IS NULL:04/10/17 19:52:00 ID:???
自己解決しました。
失礼しました。
(193)
195NAME IS NULL:04/10/17 23:56:06 ID:???
グリグリ(´Д`>>194(⊂(・∀・ )どうやったのかおしえろよぉ〜
196NAME IS NULL:04/10/18 22:39:33 ID:jLcmhR3g
>>195
ベクターでツールを見つけました。
http://www.vector.co.jp/soft/win95/business/se258994.html

自分の目的が、
中のデータを取り出してオラクルに入れるだけなので、
一応、このツールでデータをエクセルに吐き出し、
それをコピペして、Access97のodbcオラクル・リンクテーブルに
入れました。

が、実際、コピペで入れてると、
型が合わないなどで、全部のデータを入れる事ができませんでした。

今日、職場のAccess2000の環境にて、
旧バージョンでのmdbファイル作成を試したところ、
同じく、型が合わないなどで、旧バージョンmdbの作成を断念しました。

結局、私の目的を難なく達成する場合、Access2000が必要なようです。
197NAME IS NULL:04/10/19 07:52:38 ID:???
もしかしたらこれで出来るかも。


'-----mdbファイルを最適化.vbs-----

Option Explicit
Dim path1, path2, con1, con2, jet

path1 = "C:\最適化前.mdb"
path2 = "C:\最適化後.mdb"

con1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path1
con2 = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=4;Data Source=" & path2

Set jet = CreateObject("JRO.JetEngine")
jet.CompactDatabase con1, con2

'Createobject("Scripting.FileSystemObject").CopyFile path2, path1, True
198NAME IS NULL:04/10/19 22:37:36 ID:???
Access初心者にお勧めの解説書はありますか?
あれば教えてください、お願いします。
199NAME IS NULL:04/10/19 22:57:46 ID:???
200NAME IS NULL:04/10/19 23:34:00 ID:???
>>199
ありがd探してみます
201NAME IS NULL:04/10/20 17:58:42 ID:???
>>192
$ strings a.mdb > a.txt
$ strings b.mdb > b.txt
$ diff -c a.txt b.txt
202NAME IS NULL:04/10/21 00:30:28 ID:???
>>196
Access2000からでもオラクルのリンクテーブルに貼り付けるときエラー出ると思う。

自分でもいろいろ試したんだけど、oracleのvarchar2型で長めのカラム
(256バイト以上とかの)への貼り付けでだめになるみたい。

もし同じ現象なら、コピー元のACCESSやEXCELで、そういうカラムに対応
するとこに半角スペース(なんでもいいから空じゃない文字列)を設定して
おいてコピーペーストするとうまくいったよ。
203NAME IS NULL:04/10/21 23:09:25 ID:???
クロス集計について教えてください。以下のクロス集計クエリを実行すると「抽出条件でデータ型が一致しません」とエラーになります。

[選択クエリ]
SELECT 子.品目コード, マスタ.品目名, 子.数量, Weekday([親.日付]) AS 曜日
FROM (子 LEFT JOIN 親 ON 子.外部キー = 親.主キー) LEFT JOIN マスタ ON 子.品目コード = マスタ.品目コード
WHERE 親.日付 Between #7/1/2004# And #7/30/2004#;

[クロス集計クエリ]
TRANSFORM Sum(選択クエリ.数量)/(DateDiff("ww",#7/1/2004#,#7/31/2004#,選択クエリ.曜日)-Int(選択クエリ.曜日=Weekday(#7/1/2004#))) AS 数量の平均
SELECT 選択クエリ.品目コード, 選択クエリ.品目名
FROM 選択クエリ
GROUP BY 選択クエリ.品目コード, 選択クエリ.品目名
PIVOT 選択クエリ.曜日;

子テーブルの「数量」列を曜日別に平均 (数量の合計/任意の期間内での曜日の出現数)したいのです。
合計の場合は素直に Sum(選択クエリ.数量) で望む結果が得られます。
解決方法が分かる方が居られましたら、よろしくお願いします。
204203:04/10/22 00:45:19 ID:???
自己解決しました。
mdbのクロス集計クエリでは無理?だと思ったので、adpを作成し、MSSQLのストアドプロシージャに
任意の期間に出現する曜日の回数を平均値の算出に使う「割る数」用パラメータとして投げ、
T-SQLで計算しました。

というか、質問するときに SQL Server 2000 + Access 2003 という環境を書いていませんでした。
すみませんでした。
205NAME IS NULL:04/10/22 00:49:49 ID:i7bEvDLp
>>197
>>202
レスありがとうございます。
一応、Access2000(Office2000)を人から借りました。
Access97で出てた貼り付けエラーはAccess2000では出なくなりました。

今は、手動でデータをコピペするのに疲れまして、
一括でデータをコピーできる方法は無いか考え中です。

Dim mdb1 As Database
Dim mdb2 As Database
Dim mdb2_path As String

Dim table_name As String

Dim strSql As String
Dim lngLoop As Long

mdb2_path = InputBox("データコピー先MDBファイル", "C:\db2.mdb")

Set mdb1 = CurrentDb()
Set mdb2 = DBEngine.Workspaces(0).OpenDatabase(mdb2_path)

For lngLoop = 0 To mdb1.Containers("Databases").Documents.Count - 1
table_name = mdb1.Containers("Databases").Documents(lngLoop).Name

strSql = ""
strSql = strSql & "INSERT INTO " & mdb2.name & "." & table_name
strSql = strSql & " VALUES( SELECT * FROM " & mdb1.name & "." & table_name )"
mdb1.Execute strSQL
Next

こんなような事がしたいです。たぶんコレ↑のSQL文は動かんでしょう。
コーディングのアバイスや、VBAを使わなくても出来る方法等、ございましたらお教えください。
206NAME IS NULL:04/10/22 22:14:45 ID:???
質問させてください。

何もないところにFormを作って、その中にテキストボックスのコントロールを
追加するというのをVBAでやりたいのですが、可能でしょうか?
本を読み漁って見ましたが、フォームはCreateForm(DB,Name)で
可能みたいですが、その後のコントロール作成まで書いていませんでした。
207NAME IS NULL:04/10/23 09:44:03 ID:???
>>206
CreateControl
208NAME IS NULL:04/11/01 12:43:32 ID:???
>>205
HELPのIN句をみれ
209NAME IS NULL:04/11/05 21:03:41 ID:U4IQ8MN6
作成したデータベースを共有していて、
2人同時に使用したことによってひらけなくなりました。
バックアップファイルもなく、
修復もインストールもできません。
何か開く方法はありませんか?
210NAME IS NULL:04/11/06 00:57:42 ID:???
>>209
(-人-)ナムナム



新しいMDB上からインポートで吸い出したり、ADO とかで差し込んでテーブルだけでも…
だめだろうナァ。

(-人-)♪バ〜ックアップを忘れずに〜、メモリが飛べばおしまいだ (あっ)
211NAME IS NULL:04/11/06 01:55:03 ID:???
>>209
興味があるのでその壊れたmdbどっかにうpして!
調べるから。
212NAME IS NULL:04/11/06 12:04:19 ID:???
情報漏洩の悪寒
213NAME IS NULL:04/11/18 22:25:24 ID:???
先日入社した会社の基幹システムがAccessです。
顧客の担当者が部署を変わるたびに部署コードを

顧客の電話番号を入力して検索ボタンを押して待つ(十秒ぐらい)

検索結果が表示されたら修正をする

更新ボタンを押して待つ(十秒ぐらい)

と一件一件開いて更新しています(つД`)
おかしくないですか。
214NAME IS NULL:04/11/18 22:37:19 ID:???
>>213
おかしい。

その担当者は前の部署の後任に顧客を引き継ぎするべきだ。
215NAME IS NULL:04/11/18 23:17:45 ID:???
電話番号にインデックスはってないんじゃないの?
216NAME IS NULL:04/11/18 23:28:36 ID:???
>先日入社した会社の基幹システムがAccessです。
(ノД`)シクシク
217NAME IS NULL:04/11/18 23:35:14 ID:???
基幹がAccessって10人ぐらいの会社?
218NAME IS NULL:04/11/18 23:38:47 ID:???
10人ぐらいだったらAccessが基幹システムでも大丈夫なんですか?
219NAME IS NULL:04/11/19 00:19:27 ID:???
>218
200〜250人くらいが限界だな。それ以上になると列を増やせなくなるから特別なテクニックが必要になる。
220NAME IS NULL:04/11/19 09:17:17 ID:???
>219
おまえ素人だな。
テキスト型のフィールドに固定長でデータを持てば項目数の限界なんか一発で解決するぞ。
221NAME IS NULL:04/11/19 09:38:24 ID:???
社員20人の会社なら大丈夫でつか?なんかおまいらの話聞いてると不安になってくる(;´д`)
勢いで買っちゃったしなあ。月2000件ペースでレコード入力なんですが。。
222NAME IS NULL:04/11/19 10:08:28 ID:???
>>221
普通に作れば全然大丈夫。
ただし、同時に複数箇所からデータ入力とかしないこと。
223221:04/11/19 12:24:42 ID:???
>222 安心しました。
てか、同時入力なんて恐ろしい事が出来るんですか?
ガクブルですね、勿論しません。
224NAME IS NULL:04/11/19 12:32:51 ID:waZhySUT
>>223
いや、あんたがせんでも偶然他人がすることもあるだろ。
Access危険ってのはそのへんの制御があんまり効かないのも
一つの理由。
225NAME IS NULL:04/11/19 18:23:24 ID:VrSFpYy5
Addnewの反対 削除は何でしょうか?
226NAME IS NULL:04/11/19 18:29:57 ID:LY57dq1w
>>225
Delete
227NAME IS NULL:04/11/19 22:01:38 ID:???
会社の中枢システム関連のフォルダの中に.mdbというファイルが
イパーイなんですが、これが基幹がAccessということですか?
それとももっと上位のデータベースを使っていても
Accessのファイルを使うということがあるんでしょうか?

全国の支店あわせて社員1000人ぐらいはいるとおもうんですが
Accessでもそこまでできるものなんですかね (゚д゚;)
228NAME IS NULL:04/11/19 22:09:09 ID:waZhySUT
>>227
無理。絶対無理
229NAME IS NULL:04/11/19 23:09:40 ID:???
>>228
工エエェェ(´д`)ェェエエ工
230NAME IS NULL:04/11/20 04:26:09 ID:RTyGiyyl
OracleのフロントエンドにAccessを使ってるだけかもしれないじゃないか。
231NAME IS NULL:04/11/20 08:13:34 ID:???
>>223 普通に作ってあればの話し。 
>検索ボタンを押して待つ(十秒ぐらい)
て言うのは普通か?
232NAME IS NULL:04/11/20 09:38:50 ID:???
>>230
 同感。基幹でMDBいっぱい使ってデータ分散させてるってのはちょっと考えられないっす。
 基幹DBは他にあって それを参照するために MDBからリンク張ってるか。
 全然別個の業務に使ってるとかだろーね。 基幹がAccessではなく 枝葉がAccess
233NAME IS NULL:04/11/20 10:37:18 ID:???
>>230,232
Oracleとか使っててもAccessファイルを使う
ということもあるんですか…。
でもそれをするメリットって何なんでしょうか?

> >検索ボタンを押して待つ(十秒ぐらい)
> て言うのは普通か?
普通じゃないんですか?(´・ω・`)
もっと待つことある…というより、1クリックごとに
フリーズしていると言ってもよいぐらい重いことも多いのですが、
枝葉とはいえAccessがからんでいることが一つの原因に
なったりしますか?
234NAME IS NULL:04/11/20 10:49:26 ID:???
>>233
ACCESSなら素人でも開発できるからw
帳票はしばらく前までは最強の部類だったし・・・最近は知らん
235NAME IS NULL:04/11/20 10:52:51 ID:???
ORACLEを使っててもACCESSからでは遅くなる
なぜなら検索をACCESS内部で行う為にテーブルデータを一度全部持ってくるから
嘘のようだが本当の話・・・やっぱり最近は分からんがw
パススルークエリを使えばDBMSの機能を使えるが、ACCESSを使う意味が薄れる。。。
236NAME IS NULL:04/11/20 10:59:40 ID:???
>>234,235
まともな処理速度にするための第一歩は
Accessを使うのをやめることだが、
人材がなければAccessをやめるのは難しい…
というかんじでしょうか。
237NAME IS NULL:04/11/20 11:13:50 ID:???
どちらかといえば、お金と時間をかけられるか(かける意味があるか)だな
238NAME IS NULL:04/11/20 11:48:16 ID:???
>>237
システムがランクうpすれば、
エンドユーザーにとっては時間の短縮になるけど、
システム担当者の仕事はいままでより時間がかかるようになる
んですか?
239NAME IS NULL:04/11/20 20:17:12 ID:???
>>238
最近のDBMSはメンテフリーと言っても嘘じゃない(ACCESSで処理できるような範囲なら)からシステム担当の負担は増えないと思う
ただ、クライアント1台ごとにライセンス料が発生するわ、保守に入らないといけないわで、(ACCESSと比べて)とんでもなくお金が掛かる
240NAME IS NULL:04/11/20 21:15:14 ID:???
自社のシステムがOracleとかAceessとか
おまいら見た目で分かるんですか?
241NAME IS NULL:04/11/20 21:38:49 ID:???
>>239
やっぱりお金ですね・゚・(ノД`)・゚・。

いろいろ教えてもらい、みなさんありがとうございますた。
242NAME IS NULL:04/11/21 11:15:55 ID:???
>>240
分からない
243NAME IS NULL:04/11/22 10:29:45 ID:TYoF+TTM
ちょっと質問いいですか?
Access2000を使い始めたぺーぺーなんですが、テーブル上のレコード件数を取得(表示?)する方法はないんでしょうか?
いまあるデータベースに27カテゴリーのデータがあっていちいち検索絞りででた結果のビューの
スライドバーで件数を確認して取得してます。
もぅまんどくさくてまんどくさくて…(ToT

自動でやれるようにしたいんですが、クエリなんか出来るんでしょうか?
それともVBで組まないとだめポ?
244NAME IS NULL:04/11/22 10:38:42 ID:???
COUNT
245NAME IS NULL:04/11/22 11:07:13 ID:TYoF+TTM
COUNTは分かるんだけど…
246NAME IS NULL:04/11/22 11:43:14 ID:???
何がわかんねーの?
247NAME IS NULL:04/11/22 12:07:19 ID:???
>>245
DCountではダメなの
248NAME IS NULL:04/11/22 12:34:12 ID:???
COUNTで解答にたどり着けなきゃしんでいいな。
249NAME IS NULL:04/11/22 14:49:22 ID:TYoF+TTM
すいません

27カテゴリごとに何件のレコードがあるかを一発で表示、もしくはテーブルにして
表のようにしたいんです。
しろーとには無理でしょうか?
250NAME IS NULL:04/11/22 14:58:28 ID:???
Access2000で会社の作業伝票を蓄積しているのですが、
データーベースファイル(MDB)はあまり大きくなってくると不安定になってくるようなウワサを昔聞いたのですが、
どれくらいのサイズまで大丈夫でしょうか?
現在3.5MBくらいです

251NAME IS NULL:04/11/22 15:12:25 ID:???
>249
27カテゴリって何だよ。
そのカテゴリとやらの考え方や何をどう数えるのかも説明せず
どうすればいいですか?じゃ誰も答えられん。


252NAME IS NULL:04/11/22 16:52:03 ID:TYoF+TTM
>>251
ごめんなさい。
01000から27999までの抜けのある番号を主キーにしたデータテーブルがあるんですが、
それらの上2桁が店舗番号になるんです。
つまり、14番店舗は14000〜14999まで範囲があって、その範囲のなかに番号を持つ
レコードがいくつあるかを、手作業で個別ではなく一括で取得したいと…

出来れば、新しいテーブルに01から27までのフィールドをつくってそれぞれ対応するレコード
件数を書いたテーブルまで作れれば…と思って勉強中なんですが、道はかなり遠いと思い
質問してみました。
よろしくお願いします。
253NAME IS NULL:04/11/22 21:26:00 ID:???
SELECT 番号 \ 1000, COUNT(*)
FROM テーブル
GROUP BY 番号 \ 1000
ORDER BY 1
254NAME IS NULL:04/11/23 16:23:35 ID:???
>>250
2GBまでならモウマンタイ。但し一つのテーブルのサイズが1GBを超えないように。
255NAME IS NULL:04/11/23 20:24:27 ID:neRorjd9
Access の「最適化」って、データベースの圧縮以外に何かしてるんでしょうか?例えば
インデックスの再構成とかクエリの効率改善とか。
 ただ単にサイズの圧縮だけなら、記憶域に余裕があれば限界容量に近づいたときに
かけてやるくらいで、つまりほとんどの利用シーンでまったくかけなくても良いものでは
ないか考えたのですが…
256NAME IS NULL:04/11/23 20:42:45 ID:EO0kIJOS
>>255
圧縮っつーよりデフラグに近いイメージだぞ。
257NAME IS NULL:04/11/23 23:27:05 ID:???
>>「最適化」
>>クエリの効率改善
たぶんだけど、逆
最適化されたmdbのクエリは、使い古しでボロボロになったmdbのクエリより遅い
(ような気がする)
ただ、SQL文直書きの場合は別

以下、アホな素人の勝手な想像
クエリってのは初めて実行されたときにコンパイルみたいなことが行われている。
ゆえに2回目以降の実行は速い。
でも最適化されると新品に戻っちゃう。
SQL文直書きの場合は、どっちにしろ実行しながらのコンパイルなので、
新品だろうが中古だろうが関係ない。

間違ってるかな。
誰か詳しい人解説キボンヌ
258NAME IS NULL:04/11/24 02:07:10 ID:???
>>255
mdbファイルを一旦消して作り直してる
259NAME IS NULL:04/11/24 18:29:28 ID:???
>258
元MDB

テンポラリMDB作成(最適化処理含む)

元MDB削除

テンポラリMDB名を元MDBにリネーム

つまりMDBが別ファイルになるので,アクセス権を個別に設定している場合は
設定し直す必要がある.
260NAME IS NULL:04/11/24 23:06:23 ID:oskyx2hA
>259
システムドライブと同じドライブにあるMDBだと、最適化を実行したユーザのみフルコントロールに
権限塗り変わるから端末を共用してる場合あとからきたユーザが使えなくなるのな。ドハマリしたよ…
NT4 までは良かったのにW2kから突然なってとても困った…
261NAME IS NULL:04/11/25 16:17:40 ID:oyLspmrq
Win2K+ACCESS2000です。

レポートを印刷するために、余白設定で上下を0にしたいのですが、
いくら0にしても6mmに戻ってしまいます。
ちなみにプリンタはNECのドットプリンタ700JXです。
Win98+Win2000のときには上手くいっていたのですが。。。

用紙はユーザー定義の用紙で、プリンタサーバ上で作りました。
1000インチ×1000インチ で余白0の設定です。

ちなみに、プリンタはNTのプリンタサーバにぶら下がってるネットワークプリンタです。

ACCESSとはちょっと無関係?かもしれませんが、
原因ご存知の方よろしくお願いします。
262NAME IS NULL:04/11/25 17:27:13 ID:7tC4W3je
MySQLとかのSQLでいうところの"LIMIT"みたいなSQL文ってAccessやMicrosoftSQLサーバにもありますか?
263NAME IS NULL:04/11/25 19:54:16 ID:???
Access 2003のレポートのプレビューのウィンドウに
「印刷」「閉じる」の文字の書かれたボタンを追加する
ことはできますか?
自作のツールバーをドッキングさせたりはできない
ですよね?
264NAME IS NULL:04/11/26 10:12:00 ID:???
>>263
プロパティのポップアップを「いいえ」にすればいいのでは?
265NAME IS NULL:04/11/26 14:04:17 ID:???
>>263
私の場合、
・レポート用のツールバーを新規に作成し、当該レポートのツールバープロパティに設定
・レポートOpenイベントにレポート最大化コードを書く
・レポートCloseイベントにレポートを元のサイズに戻すコードを書く
ってなことをよくやります。

こうすればメインウィンドウにあるレポート用ツールバーが
あたかもレポートウィンドウにあるように見せかけることができます。
(レポート以外かは見えなくなっちゃうけど)
266NAME IS NULL:04/11/26 14:21:17 ID:???
ありがとうございます。
その方向でやってみます。
267NAME IS NULL:04/11/26 22:16:02 ID:???
>>261
うろ覚えなのですが、確かプログラムで自動的に余白0にすることは
できなかったように思います。
(ACCESS 2003からできるようになったはずです)

余白0をプログラムでやるためには、Windows APIを使うとできたはずです。
その方法を解説しているホームページもどっかにあったはずです。

いいかげんなことを言ってたらすみません。
268NAME IS NULL:04/11/28 10:58:53 ID:ykSPN17q
Access2000なんですがファイル⇒外部データの取り込み⇒インポートでExcelファイルを
取り込もうとしたとき4割くらいの確率で
「ファイル"***.xls"をインポートするときにエラーが発生しました。
ファイルはインポートされませんでした。」
と出てしまいます。
特に対象としているxlsファイルを開いているとかしていないのですが、、、
何か原因分かる方がいたら教えてください。
269NAME IS NULL:04/11/28 14:43:20 ID:FuQWq6CJ
レポートを開くときに、フォームで作ったリストボックスを
表示して、選択したリストのみのレポートのページ
を表示できるようにするにはどうすればいいのでしょうか?

今の所リストを選択するまではできたのですが、
指定したレポートのページだけを抽出できません。
どなたかご教授お願いします。
270NAME IS NULL:04/11/28 15:18:05 ID:zaWAG4jc
>>268
エクセルファイルのバージョンは?
マクロは?
パスワードは?
ていうか開ける?
271ほよよ?:04/11/28 16:04:45 ID:0EO2fi0V
エクセルシートを外部データとして、アクセスの既存テーブルに
データインポートしたいんですけど、
「既存テーブル」のリストボックスが選択できないんです。

なんかコツがあるんでしょうか?
ちなみに、エクセルとアクセスの、フィールド数やデータ型は
一致させています。
272268:04/11/28 18:16:21 ID:ib0KDqeq
Excelファイルは開けます。(壊れてません。)
Access2000でExcel2003のファイルを開こうとしたからかな?
ノートPC買ったときに付録にWORD2003とExcel2003が付いてたのでこの2つだけ2003なんですがこれが原因ですか?
273NAME IS NULL:04/11/29 02:01:41 ID:???
274NAME IS NULL:04/11/29 09:41:17 ID:tn+gSIPb
「商品コード」と「商品名」のテーブルが別に存在しているとして、
入力フォームを作る時に、「商品コード」を入れると「商品名」が
表示されるにはどうしたらいいでしょうか。
住所入力支援ウィザードというのがありますが、あんな感じで。

それぞれフォームののテキストボックスのコントロールソースを
「商品コード」「商品名」にすると、当然ながら連動しないのですが、
検索してもその方法しか見つからなかったもので困っています。
275NAME IS NULL:04/11/29 12:00:41 ID:???
>>274
根本的に間違ってない?商品コードと商品名は1つのテーブルに
しないと思うのですが...
商品名テーブルに商品コードフィールドを追加してDLookupで
276NAME IS NULL:04/11/29 12:42:56 ID:???
商品コードと商品名が別テーブルだったら

商品名テーブルの一意キーは何なのかと。
商品コードテーブルのフィールドは商品コードだけなのかと。
ただコードが縦に一列並んでいるだけなのかと

みかんが20581709
りんごが56182677
であることを、誰がどうやって保証してくれるのかと

ささ、飯喰って昼寝だ
277NAME IS NULL:04/11/29 12:49:56 ID:tn+gSIPb
>>275>>276
「別に存在」という書き方がおかしかったようですみません。
納品書などの入力フォームのデータテーブルとは別に、
「商品一覧マスター」のようなテーブルがある、という意味でした。

そこで「商品コード」をオートナンバーにし、「商品名」や「単価」などを
登録していっています。
その「商品一覧マスター」テーブルを元に、納品書などのフォーム
入力の時に、「商品コード」を入れると「商品名」が選択できるように
したいなと思っていたのですが…。

>>275さんの言うDLookupを使えばいいのかな。調べてみます。
278NAME IS NULL:04/11/29 12:51:47 ID:???
>274
 話を省略しすぎだ。訳ワカメ。

 商品マスターを入力する時の話なら、それは両方とも同じ
テーブルに入れる。(商品名も入力するし)
 売上や仕入れを入力するテーブルの話なら、「商品コード」と
「商品名」の双方を含むクエリーを作成して、それをフォームの
レコードソースにするのがセオリー。
(商品コードを入れると商品名は自動的に出る)
 初心者向けのAccess入門書には必ず説明がある筈なので、
入門書を買って来ることを強くお薦めする。
 もしくは、サンプルのNorthWindデータベースを見て、自分の
希望に近い動きをしている部分がどうなっているか調べるとかね。

 ただなー、コンボボックスで商品名を選択すると商品コードが
入力される(コードは選択時にしか表示されないが)パターンも
可能なんだがな。

>275
 DLookup関数は、帳票フォームで使用されると致命的なまでに
遅くなる。
 害虫^H^H外注が未完成で放り出したmdbを完成させるように
命じられた時、一応出来ている部分だけど異様に遅いのも何とか
してくれと言うので調べてみたら、帳票フォームでDLookup関数を
使っていた。
 単票フォームなら、まだ良いけどね。DLookup関数を使う事自体が
悪いのではなく、害虫の奴のTPOが・・・
279NAME IS NULL:04/11/29 13:10:38 ID:tn+gSIPb
>>278
分かりづらくてすみません。

まず、「商品マスター」には「商品コード」「商品名」の両方入っています。

そして売上や仕入れを入力する時(のフォームを作っていて)、「商品コード」と
「商品名」それぞれのテキストボックスを作り、「商品コード」に入力したら
「商品名」も連動して出るようにしたかったのですが、それの答えが、

>「商品コード」と「商品名」の双方を含むクエリーを作成して、
>それをフォームのレコードソースにするのがセオリー。

もしくは

>コンボボックスで商品名を選択すると商品コードが入力される
>(コードは選択時にしか表示されないが)パターンも可能

ということなのですね。

一応、エクスメディアの図解ACCESS2000基礎編を片手に
作っているのですが、もう一度よく読みなおすことにします。
サンプルNorthWindデータベースもじっくり研究してみます。

皆さん、ありがとうございました。
280NAME IS NULL:04/11/29 13:30:13 ID:???
現在MDEで作成したBDがあります。
本支店間でデータを共有するとしたらどのような方法が考えられるか
教えて頂きたいです。(出来るだけコストを掛けない方法で)
MSDE+Accessで考えていますが、レスポンスとか悪くなりそうで・・・

初心者に毛が生えた程度だと思うのでお手柔らかにお願いします。
281NAME IS NULL:04/11/29 13:48:31 ID:???
>280
共有するのは全てのデータか、一部のテーブルだけか?
共有するデータに対する要求は参照だけか?更新もあるのか?
更新された場合、他へリアルタイムに反映する必要があるのか?
そうでなければどんなタイミングで同期を取るのか?
最低ラインこれくらいは決めておかないと。
どちらにしろ細かい事になっちまうんで、業務の面から話した方が早いかもなー
282250:04/11/29 14:18:00 ID:???
おそくなってすみません、254さんありがとう
まだ3MBくらいだから全然大丈夫そうですね
283NAME IS NULL:04/11/29 15:36:22 ID:???
280です
>281
ありがとうございます。
共有するのは最低限の一部のテーブルだけでいいはずです。
データは追加・修正・削除を行います。

業務内容として
受注・伝票の作成
納品書の作成
原価管理
請求書の発行
入金処理
その他
ってかんじでして1日の更新が100件程度になります。
もとのmdeファイルは私が作成した物ではないのですが、修正変更は私がしました。
Webも考えたのですが、Accessのレポートの機能がどうしてもはずせなくて・・。
LAN内ではMSDE+Accessで十分と思うのですが、
>255あたりにレスポンスのことが書いてあったので、
WAN経由だと遅すぎることになるのかな・・・
データのサイズが営業所毎にmdeで40MBとかなってまして
合計すると200MB・・・・
FTTH接続でも遅くなりそうで・・・・

284NAME IS NULL:04/12/01 01:00:16 ID:E2Io6v+G
>283
最繁時間帯の一時間あたり何件の更新要求があるか、更新時一件当たりの容量、検索処理数、
それで流れる一回あたりのデータ量をあわせて、WAN の帯域を必要以上に食いつぶさなければ

 本店MSDE --WAN== 各支店AccessProject(ADP)

という構成でよいと思われ。
 MSDE+ADP ならサーバがテーブルの結合から選択・射影までサーバがやるから、ネットワークを
流れるデータ量は検索結果のレコードセット分しかない。
 AccessMDB(MSDE+MDEリンクテーブル) だと結合する全対象テーブルが転送されて、各端末で
結合などをするからネットワークに優しくない。

 MSDE+ADP でなお検索で流れるデータ量が大きすぎるなら、レプリケーションを組んで本社に
パブリッシャ/ディストリビュータ(マスタ)MSDEを、特に転送量に問題のある支店に
サブスクライバ(バックアップ)MSDEを設置する。
 転送量の多い支店は自分のところのサブスクライバMSDEを参照すれば負荷を減らすことが
できる。でも、この場合サブスクライバのデータは常に最新ではなくなるから注意。
285NAME IS NULL:04/12/01 01:13:21 ID:???
これからデータベースを作ってみようと思っています。
文書ファイルの文章やインターネット上の文章をドラッグして選択し、
右クリックから選択文字列をデータベースで検索ということをしたいのですが
Access VBAでこれは可能でしょうか?
286285:04/12/01 02:55:40 ID:???
Access VBAで
右クリックメニューに「データベースから検索」というようなものを追加する事はできるか
ということです
どなたか是非教えてください。お願いします。
287NAME IS NULL:04/12/01 10:10:55 ID:???
>284さんへ
ありがとうございます。
今使用しているmdeをもとに作り直す予定なのですが、
もとのアプリはVBAで処理を全部を行っています。
実のところSQL Serverのビューとかストアドプロシージャとかいまいち分かっていません。
特に設定しなくても問題ないのでしょうか?

現在LAN内でMSDEサーバーを作成して移行作業中なのですが、
Windows認証だとレスポンスが悪すぎます。(接続するのに1分とかかかってしまう。)
SQL Server認証だとレスポンスは悪くはないです。
何か設定上の問題なのでしょうか?

どなたかご教授お願い致します。
288NAME IS NULL:04/12/01 10:24:00 ID:???
アクセス2002でレポートを使っていますが
レポートでコントロールを255以上できませんエラーで怒られました
レポートの内容は集計形式で、小計、中計、大計、総合計と
コントロールは貼り付けていったところ、最後の総合計あたりで
数の限界がきました。どうやったら回避ますか?

289NAME IS NULL:04/12/01 11:24:24 ID:???
Access2003のレポートにトンボを打ちたいんですが、
余白設定した領域に印刷する方法はないのでしょうか?

詳細の中に直線オブジェクトを配置する方法だと左右で
違うのを実装するのが大変なので、フォーマット時の
ハンドラなどでLine()で描画したいのですが。
普通にやると余白領域はクリップされてしまいます。

よろしくお願いします。
290NAME IS NULL:04/12/01 12:57:37 ID:???
>>288
複数のサブレポートに分割するとかはだめ?
試したことないからちょっと怪しいけど…

うまくいったら結果報告キボンです。
291NAME IS NULL:04/12/01 13:01:45 ID:???
>>290
あー、なるほどですね。
やってみます。
292NAME IS NULL:04/12/01 16:49:58 ID:MByc81pd
>287 そこまで話を広げるならSQL鯖スレに投げ直したほうがいいんでない?
293288:04/12/01 18:20:19 ID:???
>>290
あー、なるほどですね。
やってみます。
294NAME IS NULL:04/12/01 21:01:13 ID:???
<テーブル>
取引先コード 取引先 企業コード・・・・
D345555    aaa   001
D345544 aab   001
D345555 bba   002
F345847 bbb   002
@コンポボックスに企業コードを重複させずに表示させて
001
002

Aそして001を選択すると別のコンポボックスに
aaa
aab
↑のように表示され

Bそこで選択した取引先の情報がテキストボックスに表示される

上記のようなことをVBを使わずにできますか?
アドバイスお願いします。
295NAME IS NULL:04/12/01 22:30:46 ID:???
マクロ使うぐらいならVBA使うよな。ふつうは
296294:04/12/01 23:46:33 ID:???
VBAを使った場合
@コンポボックスに企業コードを重複させずに表示させて
↑の部分がわからない・・・・何を使えばいいのですか?
297NAME IS NULL:04/12/02 00:15:21 ID:Ekcd2egY
>>296
SELECT DISTICT 企業コード
298284:04/12/02 00:23:45 ID:???
>>287
>今使用しているmdeをもとに作り直す予定なのですが、
>もとのアプリはVBAで処理を全部を行っています。
>実のところSQL Serverのビューとかストアドプロシージャとかいまいち分かっていません。
>特に設定しなくても問題ないのでしょうか?
 設定しなくても使えるけど、mdb 共有よりもはるかに遅くなる。そんな使い方をするなら素直に
mdbを共有しとけってこった。ちゃんとインデックス張ればそれなりに早いぞ。それなりに。

 ビューもストアドも、mdbでいうクエリをデータベース側に保存したもの。選択/射影/結合などを
データベースに実行させて、その結果のみを受け取ることでネットワークに流れるデータ量を
削減する効果がある。
 ビューは普通の選択クエリ、ストアドはパラメータクエリや追加/更新/削除クエリなど
パラメータを与えたり行を返さないクエリがそれぞれ該当する。ストアドはちょっとしたプログラムを
作成できるからmdbのアクションクエリより高機能。

>Windows認証だとレスポンスが悪すぎます。(接続するのに1分とかかかってしまう。)
BDCやPDCがMSDEサーバのネットワーク外にない?
299NAME IS NULL:04/12/02 13:31:02 ID:???
Accessでテキストファイルを読み込むことてできますか?
VBもよくわからないが。VBAはもっとサパーリです。
300NAME IS NULL:04/12/02 16:55:15 ID:???
>>299
データベースウィンドウのテーブルの何もないところで
右クリックしてインポート
301NAME IS NULL:04/12/03 00:03:24 ID:???
来月のデータを抽出したいのですが、month+1だと
12月のデータは13月になってしまい抽出されません
どうしたらいいものか・・・
302NAME IS NULL:04/12/03 00:24:18 ID:???
>301
month MOD 12 + 1
303NAME IS NULL:04/12/03 00:30:47 ID:???
DateAdd("m", 1, Now())
304NAME IS NULL:04/12/03 12:46:57 ID:???
if month + 1 > 12 then
 month = month - 11
else
 month = month + 1
end if
305NAME IS NULL:04/12/03 19:51:04 ID:???
>>302-303-304
ありがとうございます!皆さんの式を
自分なりに考えて作ってみましたが上手くいきません。

生年月日のフィールドから来月の誕生日を抽出する条件なんです。

302の方、もう少し詳しい解説を頂けますか? よろしくお願いいたします。
306NAME IS NULL:04/12/03 20:06:11 ID:???
なんでもう少し詳しくなんて・・・orz
307NAME IS NULL:04/12/03 20:20:12 ID:???
とりあえずmounthの型は何でどんな値が入っているのかくらい書けよ。
>302の解説?ヘルプで「MOD」嫁
308NAME IS NULL:04/12/03 22:49:50 ID:???
生年月日フィールド 
テキスト型、
昭和○○年○月○日

ここから月の部分を取り出したフィールドを作って→month(生年月日)、
来月が誕生日の人だけが抽出されるように条件をどうすればいいのか
考えているところです

309NAME IS NULL:04/12/03 23:17:15 ID:???
>>308
print DatePart("M", cdate("昭和60年5月23日"))
5
310NAME IS NULL:04/12/03 23:25:03 ID:???
>>308
クエリでとあるフォームの値+1で抽出するとか
311NAME IS NULL:04/12/03 23:40:24 ID:???
>>309
ありがとうございます。初めて見る関数ですが今からやってみます。
>>310
それをやったら12月+1は13月となり、
1月の誕生日の人が抽出されませんでした
312NAME IS NULL:04/12/04 00:26:41 ID:???
>309
(´゚▽゚`)ヘェーcDateって和暦にも対応してるんだ。
DatePart("M", cdate(生年月日)) = month(date()) MOD 12 + 1
とかなるのかな。

#激しく重そうな悪寒
313NAME IS NULL:04/12/04 09:50:49 ID:???
工場の能率集計のデータベースを作ったのですが、一年間蓄積したデータを次年度更新
出来るようにして、前年度のデータはそのままどこかにボタン1つで残せるようにって
できます?その時に更新された次年度の時には、入力フィールドには前年度分はクリア
されてるようにしたいんですが…。
マジで困ってます。
ヘルプお願いします。ファイルを渡せれば一番わかってもらいやすいのですが
ここでは無理そうだし。どうしたものですか?
314NAME IS NULL:04/12/04 10:00:40 ID:???
>313
今テーブルを参照してるなら、選択クエリで今年の分だけ見せるようなクエリをつくって、それを
参照するように変えたらどうカナ?どうカナ?
SELECT * FROM hoge WHERE 日付>=dateSerial(year(date), 1, 1)
データ量が多くてあふれてしまうようなら物理的に移動する必要があるけど、そうでないなら
これで見かけ上今年の分しかないように見せられる。
315NAME IS NULL:04/12/04 10:09:37 ID:???
早速の回答ありがとうございます。見かけ上だけでなく、物理的に一年分を違う
テーブルにボタン1つで移動して、それをCDに焼いて保存したいみたいなんですよ。
その作業をするのも初心者の人が扱うから、ボタン一つでファイルそのまま別で保存して、
テーブルはきれいに初期化できないのかと考え中です。
一度、どこかにファイルをアップしますので、みていただけませんか?って
どこにアップすれば見てもらえるか、わかんないですが…。(泣
316NAME IS NULL:04/12/04 10:34:22 ID:???
テーブルを CD-R に保存すると言うのがいまいち良く判らんけど、別の MDB に書き出して
その MDB を CD に落とすと言うことか。
そうなら、プログラムから
 新しい MDB を生成 -> 新しいMDBに向けて前年度分を SELECT INTO 〜
 -> 現在のテーブルから前年度分を DELETE
若しくは
 新しい MDB を生成 -> 新しい MDB に現在のテーブルの構造をコピー
 -> 新しいテーブルに前年度分を INSERT 〜 -> 現在のテーブルから前年度分を DELETE
すればバカチョン操作も可能かな。新しいmdb作るの面倒ならモデルとなるmdbをどっかに
置いといてコピーしてやればよし。

制約やインデックス無しでただデータを別テーブルに移したいなら前者の
SELECT INTO 〜 を使って前年度のデータを適当なテーブルにポイポイ。
テーブルを事前に作らなくてもいいから簡単。インデックスとかも再現するには
SELECT INTO したあとで ALTER TABLE とか CREATE INDEX しないとアカン。

制約やインデックスも保持したいなら、後者のとおり元のテーブルをコピーして
内容を全て消したものを新 MDB に用意しておいて、これに
INSERT INTO 〜 で前年度のデータを INSERT すると。事前にテーブルを作る
手間があるけどインデックスとかちゃんと張った状態にできる。
317NAME IS NULL:04/12/04 10:40:11 ID:???
ありがとうございます。がんばってみます。
318NAME IS NULL:04/12/04 12:49:12 ID:???
>>312

神よ!できました! ご協力いただいた皆さん、本当にありがとうございます!
319NAME IS NULL:04/12/07 16:41:04 ID:???
教えてください。(アクセス2000です)
ツール→起動時の設定で「すべてのメニューを表示する」のチェックを
外してしまったのですが、起動時の設定の画面を表示させるにはどうした
らよいのでしょうか?
320NAME IS NULL:04/12/07 19:27:29 ID:???
>319
●Shift 押しながら開くとよいよいよい(例のアレ含む)
321NAME IS NULL:04/12/07 19:59:55 ID:z3NKJSUC
今までAccess97使ってて、最近AccessXPを触り始めたんですが、
97で作ったやつ開くとデータベースウインドウやらフォームやらが
タスクバーに複数表示されてしまうんですが、これはこういうものなんでしょうか
_____________________________________
|Microsoft Access|                            |○○ 21:10 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
つまり↑(97)が↓(2002)みたいになるんですが
_____________________________________
|データベース ウィ...||フォーム1||フォーム2||フォーム3|  |○○ 21:10 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
322321:04/12/07 20:17:29 ID:???
って 出来ました
オプションに項目がありましたね・・・
スレ汚しごめんなさい
323NAME IS NULL:04/12/08 13:37:11 ID:Piqvil6s
あるフィールドに文字列で“1424A1”みたいに6桁の番号がつくレコードがずらーっと並んでるとします。
とある条件抽出した結果をこのフィールドの番号の上位3桁(↑の場合‘142’。ほかにも‘149’‘201’といろいろある)
ごとに並び替えたい時ってどう指定すんでしょうか?

文字列抽出関数( getstr("1424A1",1,3) …"1424A1"の1番目から3文字を取り出すの意)みたいなのも見当たらないし…
324NAME IS NULL:04/12/08 13:58:49 ID:???
LeftなりMidなりご自由に
325323:04/12/09 08:14:36 ID:YLsSSe+i
そんなんあるんでしたか!?
まだまだヒヨッ子なもんで(^^;
調べてみます。
326NAME IS NULL:04/12/09 11:27:45 ID:???
Access2000で、ADOを使って2つのテーブルのデータのマッチングチェックをしようと思っているのですが、
1レコードに100以上のフィールドがある為、フィールド毎に抽出してチェックしていく方法を取ると膨大な長さになってしまいます。
何か良い方法は無いものでしょうか?

int1 = RS1!フィールド1 'int型変数にRS1データベースのフィールド1のデータを代入
int2 = RS2!フィールド1 'int型変数にRS2データベースのフィールド1のデータを代入
If Not (int1 = int2) Then
   flg=flg+1    'マッチングしなかったフィールドをカウントする
end if

↑みたいな照合を100フィード分する様なケースです。
327NAME IS NULL:04/12/09 11:33:54 ID:???
!を使った表記はやめたほうがいいんじゃなかったっけ。
If rs1("フィールド名") <> rs2("フィールド名") Then 〜
じゃあかんの?
一歩進めてForEachでFieldsを回せば、列数がいくらあろうと数行で済む。

328NAME IS NULL:04/12/09 13:01:13 ID:???
>>327
早いレスありがとうございます!お陰様で解決しました!
329NAME IS NULL:04/12/09 20:28:13 ID:I8w4oecc
英語版のACCESSで作ったデータベースで
sql文を勉強したいのですが
抽出条件に日本語を入れると
抽出できません。回避する方法を教えて欲しいです。
よろしくお願いいたします。
330名無しさん@編集中:04/12/10 00:08:52 ID:tbEhD8x/
まったくDBについて詳しくないのですが、会社でACCESSを
やることになりました。まったくの初心者からなのですが初心者向きの
テキストでよい本はないでしょうか。
331NAME IS NULL:04/12/10 08:24:11 ID:ZPm6RTeR
僕のオススメは技術評論社の『Access はじめてのデータベース』(牧村あきこ)が
いいと思います。これでおおよその概念を理解したら各種ブ厚い技術書などで
何をAccessでどうするには、こうする…といった事を学べばいいと思います。
332319:04/12/10 16:54:30 ID:???
>320
遅くなりましたが、ありがとうございました
333NAME IS NULL:04/12/13 22:40:52 ID:???
某魔法使い氏の書いた本ってどうなのかな?Webはとてもわかりやすいけど…
334NAME IS NULL:04/12/14 22:49:22 ID:D72VyWAr
いまだにデザインクエリなしにjoinできないよ
335見習:04/12/15 01:06:07 ID:k4K3flzj
joinって外部結合のことですよねー。
デザインクエリで外部結合するのってどうしたらいいんでしょうか?
336NAME IS NULL:04/12/15 01:11:21 ID:???
ジョインっつったらインナーに決まってる
337NAME IS NULL:04/12/15 01:12:11 ID:???
いや、たまにはレフトライトぐらいは許すが
338NAME IS NULL:04/12/15 09:36:17 ID:???
時期的に考えると彼女とJOINしなきゃ・・・
339NAME IS NULL:04/12/15 10:38:04 ID:???
>>338
彼女にINSERT権限がありません
http://pc5.2ch.net/test/read.cgi/db/1057289721/
340NAME IS NULL:04/12/16 00:02:50 ID:???
>>339
物理結合だな

じゃあ、漏れは論理結合だ
プログラマーのくどき文句を考えよう。
http://pc5.2ch.net/test/read.cgi/prog/1102083541/
341NAME IS NULL:04/12/16 11:39:49 ID:???
INNER JOIN と書くのがマンドクサイんで、省略語 JOINNER を作りましょう。
なんとなく結合が高速で出来そうだが
342NAME IS NULL:04/12/16 17:18:45 ID:???
>>341
発作であぼーん…
( −人−)合掌
343NAME IS NULL:04/12/16 18:21:31 ID:???
>>341
FROM hoge, moge って書いとけ
344NAME IS NULL:04/12/18 02:34:11 ID:h2gNGJtd
知人の企業にaccessで在庫管理とDM発送ができるものを作ってくれって言われたんだけど、
いくらぐらい貰ったらいいんだろ?
年商8,000万くらいの企業で、当方ただのpcオタク。

相場はどんなものか教えてエロイ人
345NAME IS NULL:04/12/18 03:16:27 ID:???
>>344
毎日使い方の質問責めにあい、遅いと文句を言われ、
追加開発はロハでやらされ、バグが出ようモンなら徹夜で対処、
会社に損害与えりゃ下手すると賠償 →廃人まっしぐら

結論: 逃げろ
346NAME IS NULL:04/12/18 09:33:50 ID:Q/BQD6+3
>>344
どこまで面倒見るかだけど
800万円くらいじゃね?
347NAME IS NULL:04/12/20 01:02:18 ID:DjaX5Zlu
質問です。
VB6(DAO)+SQLで.mdbファイルにテーブルを作成する際、それと同時にフィールドの説明欄への
文字入力を行うためのSQLコマンドは存在するのでしょうか?

過去にどこかで見たような気がするのですが、必要になったとき探してみると見つからなくて…。
348いなむらきよし:04/12/20 18:33:49 ID:Be2dmnG6
奇形でキュアキュアだキケー!
349NAME IS NULL:04/12/21 17:18:16 ID:9oIOyQt+
失礼します。

他人が作ったフォームに新たにフィールドの値を表示させるテキストボックスを作ったんですが、
そのテキストボックスにどのテーブルのどのフィールドの値を対応させる…とかいう設定が見当たら
なくて困ってます。
そのフォームはデザインウィンドウにした時、ツールボックスの『フィールドリスト』が選択不能(灰色)
になってます。
何がどうなったんのか、トホホ
350NAME IS NULL:04/12/21 23:00:57 ID:???
・・・テキストボックスじゃなくラベル貼ってるに1票
351NAME IS NULL:04/12/22 01:02:57 ID:???
実は費連結フォームだった。に一票
352NAME IS NULL:04/12/22 02:15:49 ID:NFyyyNPR
株価の4本値のDBを作りたいんだけど、前日比はどうやって計算させたら良いの?
Excelなら単に上のセルと引き算すれば良いだけなんだが、Accessはまったく異なるよね?

他のテーブル(TOPIXとか日経平均先物など)も作成するので、日付データなんかは別テーブルに
した方が良い?
353NAME IS NULL:04/12/22 02:33:31 ID:???
>>352
>株価の4本値のDBを作りたいんだけど、前日比はどうやって計算させたら良いの?
SQL使え。

>他のテーブル(TOPIXとか日経平均先物など)も作成するので、日付データなんかは別テーブルに
した方が良い?
お好きなようにしてくらはい。
354NAME IS NULL:04/12/22 07:53:06 ID:NFyyyNPR

>353
> SQL使え。

簡単に言ってくれるじゃないか。
スキルが伴わないんだよ・・・

クエリのフィールドへ数式入れてみたんだけど、エラーが出て使えないのだ。

> お好きなようにしてくらはい。

らじゃ
355NAME IS NULL:04/12/22 09:45:44 ID:???
>>354
どんな風に書き、どんなエラーが出たのか書きなよ。
別テーブルの同名フィールドの計算ならフィールド名の前に
当該テーブル名(ex:テーブルA!)を付ければ大丈夫だけど...
356NAME IS NULL:04/12/22 09:55:45 ID:990xE7a3
349ですが、全てのてきすとボックスに「非連結」と出てます。
ちなみにコレってプログラムか何かで、テーブルの各フィールド値を放り込んでる
とかってんでしょうか?(予想)

だったら、僕にはどーしよーもないやorz
357NAME IS NULL:04/12/22 10:31:05 ID:NFyyyNPR
<テーブル> :<フィールド>
j_Data(日付):IDjD(主キー、オートナンバー)、Data(日付)
225t(日経平均4本値):ID225t(j_DataのIDjDとリレーション)、
              225O(始値)、225H(高値)、225L(安値)、225C(終値)
<クエリ>  :<フィールド>
jq(上記2テーブルから):Data、225O、225H、225L、225C、
              225Ch(前日比を算出させたいフィールド)

225Ch:[225C]-(select 225C from 225t as A where A.ID225t=225t.ID225t-1)

上記のようにクエリのフィールドに入力して、

"[225C]-(select 225C from 225t as A where A.ID225t=225t.ID225t-1)"構文エラー

と出た。
ただ、上記の計算式は受け売りなので、どこが構文エラーなのかワカラン・・・
358NAME IS NULL:04/12/22 10:31:46 ID:NFyyyNPR
>>357>>355
359NAME IS NULL:04/12/22 12:24:21 ID:???
>>357
> 225Ch:[225C]-(select 225C from 225t as A where A.ID225t=225t.ID225t-1)
のサブクエリがおかしい

SELECT [225t].[225C] FROM 225t, 225t AS A WHERE A.ID225t=[225t]![ID225t]-1;
こうしてみてどうか?
360357:04/12/22 12:58:34 ID:NFyyyNPR
>>359
ありがと。

それって以下のようにしろってことだよね?
225Ch: [225C]-(SELECT [225t].[225C] FROM 225t, 225t AS A WHERE A.ID225t=[225t]![ID225t]-1)

試したら、「カレントレコードがありません」ってエラーダイアログが出た・・・
361357:04/12/22 13:01:26 ID:NFyyyNPR
これもやってみたが、結果は同じ。

225Ch: [225t].[225C]-(SELECT [225t].[225C] FROM 225t, 225t AS A WHERE A.ID225t=[225t]![ID225t]-1)
362NAME IS NULL:04/12/22 13:01:50 ID:???
ageスマソ
363NAME IS NULL:04/12/22 14:00:46 ID:???
>>361
225tの中にID225tフィールドの値が重複して存在する?
その場合はサブクエリ単体で起動(※)すると分かるけど値が
複数出るからエラーが出る。


SELECT [225t].[225C]
FROM 225t, 225t AS A
WHERE (((A.ID225t)=[225t]![ID225t]-1));
をSQLビューに貼り付けて見て複数行でれば問題あり
364NAME IS NULL:04/12/22 14:31:54 ID:???
>>361
当日終値-前日終値をするの?
その逆?
365357:04/12/22 15:11:34 ID:???
>>363
重複していない。
361は、(知識も無いのに)「もしや・・・」と思ってやってみただけなのでスルーで。

>>364
そう。
前日との差を出したい。
366357 :04/12/22 15:17:09 ID:???
>>365

前述のものでは出来ないよ

サブクエリで抽出した値が複数行に必ずなるから
225Cからは複数行の値は引けない

SELECT j_Data.IDjD, j_Data.Data, [225t].[225O], [225t].[225H], [225t].[225L], [225t].[225C], [225t]![225C]-Nz([Q1]![225C],0) AS 225Ch
FROM (j_Data LEFT JOIN 225t ON j_Data.IDjD = [225t].ID225t) LEFT JOIN (SELECT [225t]![ID225t]+1 AS ID225t, [225t].[225C]
FROM 225t, 225t AS A
WHERE (((A.ID225t)=[225t]![ID225t]))
) as Q1 ON j_Data.IDjD = Q1.ID225t;

長いけど...
367359:04/12/22 15:19:02 ID:???
↑名前間違った...orz
357は359ということで...
368357:04/12/22 15:35:39 ID:???
>>366
うおっ!でけた!
ありがとん!!

ただ、表示される差(本日終値-前日終値)の桁が、小数点以下第2位だったり、
同11位だったりバラエティに富んでるんだけどw・・・・なぜ?
プロパティで表示桁数を指定しても駄目っす。

と、もう一つ。
今回は日経平均だけなんだけど、他に日経平均先物・TOPIX・TOPIX先物も
同様にする場合は、別のクリエとして作成した方が良い?
同じクエリに詰め込んでしまおうかと考えてたんだけど・・・(何せ無知なんで)

もし、同じクエリでもOK!ってな場合なら、同様の差を出すようにするのは困難?
・・・・って聞いてる時点で困難か?
369359:04/12/22 17:11:28 ID:???
>>368
如何せんこちらは株には疎いので...

コンマ以下の数字も必要なの?
値の入っている(テーブルの)フィールドを通貨型にしてみれば?
(小数点以下4位まで可能)

> もし、同じクエリでもOK!ってな場合なら、同様の差を出すようにするのは困難?

SELECT j_Data.IDjD, j_Data.Data, [225t].[225O], [225t].[225H], [225t].[225L], [225t].[225C], [225t]![225C]-Nz(Q1![225C],0) AS 225Ch, [226t].[226O], [226t].[226H], [226t].[226L], [226t].[226C], [226t]![226C]-Nz([Q2]![226C],0) AS 226Ch
FROM (((j_Data LEFT JOIN 225t ON j_Data.IDjD=[225t].ID225t) LEFT JOIN (SELECT [225t]![ID225t]+1 AS ID225t, [225t].[225C]
FROM 225t, 225t AS A
WHERE (((A.ID225t)=[225t]![ID225t]))
) AS Q1 ON j_Data.IDjD=Q1.ID225t) LEFT JOIN 226t ON j_Data.IDjD=[226t].ID226t) LEFT JOIN (SELECT [226t]!ID226t+1 AS ID226t, [226t].[226C]
FROM 226t AS A, 226t
WHERE (((A.ID226t)=[226t]![ID226t]))) AS Q2 ON j_Data.IDjD=[Q2].ID226t;

こんな感じでやってく...分からないなら
サブクエリを使わないで
Q1クエリ
SELECT [225t]![ID225t]+1 AS ID225t, [225t].[225C]
FROM 225t, 225t AS A
WHERE (((A.ID225t)=[225t]![ID225t]));
Q2クエリ
SELECT [226t]![ID226t]+1 AS ID226t, [226t].[226C]
FROM 226t, 226t AS A
WHERE (((A.ID226t)=[226t]![ID226t]));
のようにクエリを作ってGUI(デザインビュー)で繋げた方(結合線)がいいぞ
370357:04/12/22 20:58:03 ID:???
>>369
度々さんくすこ!

教えてくれた方法を理解するよう努力するっす。
ありがとう。
371NAME IS NULL:04/12/23 21:33:23 ID:mmzK1fwb
すみません、ショボイ質問かもしれませんがよろしくお願いします。

EXCELからのファイルのインポートに失敗して困っています。
具体的な方法としてはACCESSからインポート先のACCESSファイルを開き
[ファイル]-[外部データの取り込み]-[インポート]からインポート元となるEXCELファイルを指定しています。

フィールド数・レコード数が少な目のテストデータをインポートした時には成功するのに
実際の本番データでは「●●件のレコードが失われました」となります。
その失敗した件数が、[契約期間(始)][契約期間(終)]に日付データが入っているものばかりです。

EXCELのファイルのフィールドは次のとおり。

 [顧客名][顧客カナ名][TEL][FAX]・・・[契約期間(始)][契約期間(終)]

もちろんACCESSファイルにも全く同じフィールドが存在します。
レコードは大量にあります(ファイルに因るが最高で500件くらい)。
このEXCELファイルの後の方のフィールド[契約期間(始)][契約期間(終)]は、表示形式を「2004/11/30」の日付形式にしているので
実際には日付のシリアル値が入っている事になると思います。
このフィールドはACCESS側でも日付形式です。

何か良い方法はないでしょうか?仕事にならなくて困っているのでどうかよろしくお願いします!
372NAME IS NULL:04/12/24 08:54:05 ID:d0I1mRl1
基本外的な質問かもしれませんが、
アクセスの各ウィンド内に表示されるテーブルやクエリなどのデータ表示の
フォントを大きくしたり小さくしたりって出来るんでしょうか?
こまごまとしたデータやクエリのデザインなどでは字を大きくして見やすく、
ほんのすこしスクロールが必要な位のテーブルは字を小さくして画面内に収める、

とか出来たら便利か、、、
373NAME IS NULL:04/12/24 09:31:19 ID:???
>>371
たぶんなのだが...
データの1列目には、[契約期間(始)][契約期間(終)]両セルともデータが
入っていない(もしくは日付型でない何かある)のでエラーとなるのでは?

xlsをリンクテーブルにしてみて確認してみては?
374NAME IS NULL:04/12/24 17:18:09 ID:ae30sZD8
カナリ初心者です。質問させてください。


給料計算のレポートを作っているのですが、

・テーブルで時給を記入
・クエリで時給×勤労時間を計算し、給料を算出

として、

・レポートで時給と給料を記入

したいのですが、レポートウィザードで

・テーブルから時給を
・クエリから給料を

選択しようとしたら、
「選択したフィールドのレコードソースにアクセスできません。テーブルと、
そのテーブルを基にしたクエリのフィールドを選択した可能性があります。
もしそうであればテーブルかクエリのどちらかのフィールドだけを選択してください」

とエラーが出るのですが、
レポート1枚にテーブルとクエリの情報を両方載せることは不可能なのでしょうか?
375NAME IS NULL:04/12/24 17:50:50 ID:???
>>374
クエリにも時給フィールドを追加してけばいいのでは?
376NAME IS NULL:04/12/24 19:41:36 ID:xpCRdUCq
アクセスで賀状とかの住所録を管理してんだけど
横書き住所のときは気にならなかったんだけど
縦書きでレポート作って出力すると
数字が横になったりハイホンが縦に入らなきゃ変なのに横になったりと
直接入力とカナ入力での違いの出力に激しく違和感があるんだけど
なにか改善策ってありますでしょうか?
377NAME IS NULL:04/12/24 22:47:41 ID:VbD8Zt5s
>>376
縦書きの場合、数字を全角・ハイフンを半角で入力する。

同じ入力方式で、双方に対応させたいというなら・・・・・・・・
数字は全角で、ハイフンの代わりに「の」にするしかない・・かな。
378NAME IS NULL:04/12/25 13:29:54 ID:???
379NAME IS NULL:04/12/26 10:49:36 ID:veR7i32A
>>359
ちょっと問題が出た。
長くてスマソ

>>366 を元に以下の流れでクエリを作った。
テーブル名(225t→TSE)・フィールド名(ID225t→IDjD)の変更

>>366 を以下に編集。
SELECT j_Data.IDjD, j_Data.Data, [TSE].[225O], [TSE].[225H], [TSE].[225L], [TSE].[225C], [TSE]![225C]-Nz([Q1]![225C],0) AS 225Ch
FROM (j_Data LEFT JOIN TSE ON j_Data.IDjD = [TSE].ID_TSE) LEFT JOIN (SELECT [TSE]![ID_TSE]+1 AS ID_TSE, [TSE].[225C]
FROM TSE, TSE AS A
WHERE (((A.ID_TSE)=[TSE]![ID_TSE]))
) as Q1 ON j_Data.IDjD = Q1.ID_TSE;

225Chのフィールドの値。
225Ch: [TSE]![225C]-Nz([Q1]![225C],0)

ここで、クエリを簡潔にするために225C(前日差)のみとするために、Data・225O・225H・225Cをデザインビューから削除。
要はIDjDと225Chのみ。
これに前日比を出すフィールドを追加。
225R: [225Ch]/[TSE]![225C]

ここまで問題なく作業が進み、データシートビューでも正しい値が表示された。
SQLビューは以下。

SELECT j_Data.IDjD, [TSE]![225C]-Nz([Q1]![225C],0) AS 225Ch, [225Ch]/[TSE]![225C] AS 225R
FROM (j_Data LEFT JOIN TSE ON j_Data.IDjD = TSE.ID_TSE) LEFT JOIN [SELECT [TSE]![ID_TSE]+1 AS ID_TSE, [TSE].[225C]
FROM TSE, TSE AS A
WHERE (((A.ID_TSE)=[TSE]![ID_TSE]))
]. AS Q1 ON j_Data.IDjD = Q1.ID_TSE;

このクエリを225Gとして保存して、再度開いていも問題なくデザインビューで閲覧できる。
しかし、これを一度閉じてデータベースウィンドウをテーブルに切り替えた後、
再度クエリに戻りデザインビューで開こうとすると以下のエラーが表示される。

「デザインビューで、連結式 j_Data.IDjD = Q1.ID_TSE を表示できません。」

もちろんこの間にフィールド名の変更など一切行っていない。
なぜこのようなエラーが出るの?
380357:04/12/26 10:53:30 ID:???
>>379 は 折れ(>>357)です。

エラーが表示された後の記述は以下。

SELECT j_Data.IDjD, [TSE]![225C]-Nz([Q1]![225C],0) AS 225Ch, [225Ch]/[TSE]![225C] AS 225R
FROM [SELECT [TSE]![ID_TSE]+1 AS ID_TSE, [TSE].[225C]
FROM TSE, TSE AS A
WHERE (((A.ID_TSE)=[TSE]![ID_TSE]))
]. AS Q1, j_Data LEFT JOIN TSE ON j_Data.IDjD = TSE.ID_TSE;

なんで勝手に変更されんねん!!!
381357:04/12/26 11:24:31 ID:???
ちなみに何度書き直しても同じエラーが出てしまう。
クエリの書き換えをされないようにするにはどうしたらいい?

それとも書き換えされるってことは、元の構文がダメダメ?
382NAME IS NULL:04/12/26 13:38:01 ID:???
>381
 「デザインビュー」で表示しようとすると勝手に書き換えるよ。
(そういう仕様)

 それでエラーになるのは、複雑過ぎて処理できないんでしょうね。
 UNIONクエリーだとデザインビューで表示する事が出来ないから
書き換えは無いんだが。
 と言うわけで、手でSQL文を書き込んだ奴はデザインビューで
表示しない方が良い。
383359:04/12/27 08:46:25 ID:???
>>381
382氏がいうとおり、SQL文を書き換えてしまうのはAccessのSQLビューの仕様らしい
サブクエリ使用時は特に
(****) AS Q1を[****]. AS Q1と書き換えるのでたぶんその辺を再度(****)AS Q1の
ように書き換えれば大丈夫かと...

だから、サブクエリを使わずに小クエリでやったら?と提案したわけ...
>369の「サブクエリを使わないで」以降を参照
384NAME IS NULL:04/12/27 09:14:27 ID:B7Xnonh+
今会社でACCESSの購入を検討してるみたいなんですが、2000と2002と2003って
何がどう違うのでしょうか?
あと2004って発売予定ってあるのでしょうか?
385NAME IS NULL:04/12/27 12:58:44 ID:???
>>384
Officeファミリ全体に言えることだけど、2002でXMLとの連携機能が搭載されて2003で強化された。

以下Accessの差異。これで全部じゃないけど。
2002で複数回のUndo,Redoに対応して生産性が向上した。
2002でピポッドテーブル、ピポッドグラフを扱うことが可能になった。
2002バージョンのファイル形式が追加されてレスポンスが向上した。(既定は2000形式)

2003でAccessにもスマートタグ機能が搭載されて操作性が向上した。
2003でプロパティやフィールドの継承が可能となり生産性が向上した。
2003でクエリ等オブジェクトの依存関係をAccessが憶えてくれるので保守性が向上した。

2005は .NET Frameworkベースの開発環境になる可能性がある、と海外のBlogで仄めかしがあった。
次期VB.NETからDBシステム構築関係の部分だけを抽出した状態で出てくるんじゃないかと思う。
実際のところは分からんけども。
386385:04/12/27 13:02:42 ID:???
2005って書いちゃったけど、次期バージョンが2005なわけ無いねw
387384:04/12/27 13:18:37 ID:B7Xnonh+
2005?かどうか分かりませんが、待ったほうがいいんでしょうか?
説明が出来なければ2003を買えといわれるだけですが、、
388NAME IS NULL:04/12/27 14:28:11 ID:UbXan2Tw
  |   /  / |_|/|/|/|/|     (´⌒(´⌒`)⌒`)
  |  /  /  |文|/ // /  (´⌒(´祭だ!!祭だ!!`)⌒`)
  |/  /.  _.| ̄|/|/|/    (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/  / /  |/ /     (´⌒(´(,゚Д゚ )つ `)`)
/|    / /  /ヽ  (´⌒(´⌒  (´⌒( つ |〕 /⌒`)⌒`)
  |   | ̄|  | |ヽ/|  遅れるな!!   ( |  (⌒)`)⌒`) 
  |   |  |/| |__|/.   ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
  |   |/|  |/  (´⌒(´( ´∀` )つ  ド  ∧_∧⌒`)
  |   |  |/    (´⌒(´( つ/] /    ォと( ・∀・ ) 突撃――!!
  |   |/        ( |  (⌒)`)  ォ ヽ[|⊂[] )`)
  |  /         (´ ´し'⌒^ミ `)`)ォ (⌒)  |
  |/                     .   ̄ (_)`)`)

http://news13.2ch.net/test/read.cgi/news/1104088900/

389NAME IS NULL:04/12/27 15:47:11 ID:???
>384
2000と2003を使った俺の感想
2003のアクチがマンドクサ
390NAME IS NULL:04/12/27 16:25:59 ID:???
VLだから無問題
391385:04/12/27 17:43:32 ID:???
>>387
今必要なら今、最新バージョンを買う。
必要でなければ買わない。
自分で言っておいてアレだけど、正式発表もされていない製品を待つのは良くない。

現在VSTOが存在し、次期VisualStudioでOffice開発がサポートされるのを見ても
MSがOfficeファミリの開発環境を .NETベースにしたいのは確かなようだけど、
何故かAccessだけ置いてきぼりなんだよねw
.NETに対応したバージョン(出るならば)からAccessの世界に飛び込むのもアリかもしれないけど。
392NAME IS NULL:04/12/27 21:48:28 ID:???
2000のADPってだめだめなんですか?
393NAME IS NULL:04/12/28 01:16:39 ID:???
>>392
使ってるけど、駄目だと思ったこと無いよ。要はT-SQLをどう書くかでしょ。
何でそういう質問を思いついたの?
394NAME IS NULL:04/12/28 16:04:35 ID:???
ACCESSのユーザ管理とWindowsの認証って連動させられないんですかね?
395NAME IS NULL:04/12/28 16:05:49 ID:SSo49SuO
ACCESS 97を使用しているのですが、
列挙型のEnumやSplit関数が使用できず困っています。

参照設定でなにかを指定しないといけないのでしょうか?

ご存知の方いましたら、ご回答よろしくお願いします。
396NAME IS NULL:04/12/28 17:42:34 ID:XZSeSs4G
質問です。

既存のAccess97で開発したシステムを、Access2000+SQL Serverで再構築を行っております。
mdbファイルからadp、DAOからADOにプログラム変更したのですが、リストボックスのWhere句での抽出条件処理(値集合ソース=クエリ)が機能しません。

SQL文は以下のようになってます。

SELECT dbo_tblDKeikan.KeikaID AS ID, dbo_tblDKeikan.KaisyaCode AS 番号,
(中略)
FROM dbo_tblDKeikan INNER JOIN
dbo_tblMKaisya ON dbo_tblDKeikan.KaisyaCode = dbo_tblMKaisya.Code
WHERE (dbo_tblDKeikan.KaisyaCode LIKE N'[forms]![frmKeikan]![cboKaisyaCode] & [%]')
AND
(dbo_tblDKeikan.ShinryouSyo LIKE N'[Forms]![frmKeikan]![cboShinryouSyo] & [%]')
ORDER BY dbo_tblDKeikan.KeikaID DESC

どなたか解決方法をご存知の方がおられましたら、ご教授ください。
よろしくお願いいたします。
397NAME IS NULL:04/12/28 20:12:54 ID:???
>396
LIKE N'[forms]![frmKeikan]![cboKaisyaCode] & [%]')
-> LIKE [forms]![frmKeikan]![cboKaisyaCode] & '%')
他のlike句全部同様に処置する。
398NAME IS NULL:04/12/28 21:55:36 ID:???
>>393
>>何でそういう質問を思いついたの?

アップサイジングウィザード使って作ったADPをさわっていて思いつきました。
クエリに連結したフォームの使い方がさっぱりわからんので勉強してます。
399393:04/12/29 10:58:50 ID:???
>>398
ADPを勉強するならPASSJの連載が解りやすいと思う。
http://www.sqlpassj.org/bunkakai/begin/series/s01/default.aspx
400名無し募集中。。。:05/01/02 03:34:41 ID:???
( 晴れ) ↓(雪)
→ →   ∧
401NAME IS NULL:05/01/08 04:11:37 ID:???
質問です。
用語検索をしたときに
用語Aを検索>検索結果フォーム1にAの結果
用語Bを検索>検索結果フォーム2にBの結果
用語Cを検索>検索結果フォーム3にCの結果
用語Dを検索>検索結果フォーム1にDの結果
用語Eを検索>検索結果フォーム2にEの結果
・・・

のように検索結果を3つの検索結果フォームでマルチウインド表示し、3つ表示した時点で古い検索結果のものから
最新の検索結果に入れ替えるにはどのようにしたらよいのでしょうか?
どうぞよろしくお願いいたします。
402NAME IS NULL:05/01/08 08:51:21 ID:???
それだけでは的確なアドバイスはえられない思うが。もっと具体的に現在の処理状態などを書かないと
「3つ表示した時点で古い検索結果のものから最新の検索結果に入れ替える」
としか言えんよ。
403NAME IS NULL:05/01/08 12:09:54 ID:STFU6DzG
No 枝番
1  1
1  2
1  3
2  1
2  2
3  1
4  1
4  2

というようなデータがあってNo一つに対する枝番の最大値を求めたいのですが
Dmax文で抽出できるでしょうか?
↓こんな感じで抜き出したいのですが・・・。よろしくお願いします。
1 3
2 2
3 1
4 2
404NAME IS NULL:05/01/08 13:17:49 ID:???
>>403
SELECT [No], Max(枝番) AS 式1 FROM テーブル名 GROUP BY [No];
405NAME IS NULL:05/01/08 13:19:10 ID:???
SELECT No,MAX(枝番) FROM TABLE_NAME GROUP BY 枝番

じゃだめなの?
406NAME IS NULL:05/01/08 13:20:40 ID:???
うっ、被った上に枝番でグルーピングしてるし…
>>404 405 スマソ
407NAME IS NULL:05/01/08 15:54:10 ID:???
>>404-405
ありがとうございました!
408NAME IS NULL:05/01/10 14:28:54 ID:Cb/ktuI3
マルチポストですいません。

ファイルサーバーにデータを積むMDBを作成しました。(MDB1)
そのテーブルをリンクし、フォームとマクロを使って画面を作り、台帳を作成
しました。(MDB2)

MDB2を各ローカルへコピーし、複数人が使用するという使い方なんですが、
たまに
「○○.mdbは認識されません(MDB1の方)」と出て、
修復と最適化が必要となります。

また、それで直るケースと直らないケースがあり、最適化をかけると、主キー
設定した項目にだぶったデータや、「####」という意味不明な文字列になった
り、消えるレコードがあります。


これらはどういったことが原因で発生するのでしょうか?

Accessは2000と2003を使用する人が混在し、NTとXPも混在しています。作った
MDBは2000で作成しています。
409NAME IS NULL:05/01/10 14:41:37 ID:???
>>408
> マルチポストですいません。
許さん。
どことのマルチなのか明記するように。
410NAME IS NULL:05/01/10 14:44:33 ID:Cb/ktuI3
>>409

いや、書き方悪かったので書き直しましたが、 DB板自治・質問・雑談スレ (265)にもいる。 
411NAME IS NULL:05/01/10 14:57:08 ID:???
>408
 Accessと言うより、Jet Database Engineのmdbを複数人で同時に
使用するような仕組み、特にファイル共有でのそれは推奨されません。

 データの読み書きの際に、データの排他処理を行うが、これが
アクセスしているPCそれぞれで個別に管理しているので、排他処理
自体が上手くいかない事がある。
 書き込みのタイミングが上手い具合に一致すると排他処理が上手く
出来なくてmdbファイルが破損する。

 データベースを格納する部分だけでもMSDEやSQL Serverに
変更することを強くお勧めする。
412NAME IS NULL:05/01/10 15:15:01 ID:Cb/ktuI3
Accessのバージョンは同一Access2000(9.06926 SP-3)なんですが、システム
情報を見ると、ADOは2.8と2.6という差分が
VBAは6.04と6.00の差分があります。


これはトラブルの元でしょうか?
413NAME IS NULL:05/01/10 15:16:20 ID:Cb/ktuI3
>411

そうなんですか・・・。ありがとうございました。
みんなに、オプションの設定を一致してもらうようにはしているのですが。
それでも無理でしょうか。
414NAME IS NULL:05/01/10 15:45:04 ID:???
>>413
>オプションの設定を一致してもらうようにはしている
詳しく
415NAME IS NULL:05/01/10 15:54:24 ID:Cb/ktuI3
ツール→オプションで

全般→名前の自動修正情報をトラックするチェック外し
   名前の自動修正を行うチェック外し

詳細→規定の開くモード
   共有モード
   規定のレコードロック
   編集済レコード

レコードレベルでロックして開くにチェック
です。これをコピーしたMDBに対して行ってもらっております。

です。
416NAME IS NULL:05/01/10 17:12:41 ID:Cb/ktuI3
Access2000でExecl2000へエクスポートした際に、
Excel側で以下の問題が発生します。何が問題が教えて下さい。
@フィールド名が"□□□"と表示されます。
  ただし、そのセルにカーソルを移動すると、内容は正しく表示されています。
A1つのセルに表示しきれない文字数のデータがある場合に隣のセルの文字列が重なって表示されます。
双方とも、フォントタイプを再入力することによって、正しく表示されます。

417NAME IS NULL:05/01/10 17:22:33 ID:???
>>415
それは排他処理を行うための設定だよね?そして、>>411には「排他処理自体が
上手くいかない事がある。」って書いてあるが・・・
418NAME IS NULL:05/01/10 17:42:06 ID:Cb/ktuI3
>>417
いや、その排他をうまくきかせる手段として、設定はそろえているよって意味ですが、

それ以外に何か共通してマシン設定をそろえるべき項目があるのですか?
419NAME IS NULL:05/01/10 19:51:42 ID:1v7gpRzY
テーブルやクエリの日付表示で西暦を表示させない方法はありますか?
420NAME IS NULL:05/01/10 21:18:41 ID:???
>>418
> いや、その排他をうまくきかせる手段として

(どんな設定をしても) 「排他処理自体が上手くいかない」と言う日本語の意味がわかりませんか ?
421NAME IS NULL:05/01/11 13:01:09 ID:eXcZErlN
>>420

じゃ、だめってことだ。
了解.
422NAME IS NULL:05/01/11 22:12:59 ID:???
>419
フィールドのプロパティで書式設定をすれば良い話では?
423NAME IS NULL:05/01/13 03:27:57 ID:uwPoRp0l
access2000で、マクロを定義するところでテキスト変換を選んでも
テーブル名のインポートがリストに出てきませんがどうすればよいですか?
424NAME IS NULL:05/01/13 09:02:59 ID:???
>>423
どのプロパティのことをいってるの?
変換の種類
定義名
テーブル名
ファイル名
フィールド名の設定
HTML テーブル名
コードページ
425yo-ko:05/01/13 19:55:32 ID:KcEKcyWW
MYSQLを使用しています。
初歩的な質問で恐縮ですが物凄い勢いで教えて下さい。以下のような3つのテーブルを結合したいのですがうまく行きません。どうか助けて下さい。

テーブル:甲
+-----+-----+-----+
| A | B | C |
+-----+-----+-----+
| 1| 1| 600 |
| 2| 1| 200 |
| 3| 2| 500 |
| 4| 3| 800 |
| 5| 1| 300 |
+-----+-----+-----+
テーブル:乙
+-----+-----+
| A | D |
+-----+-----+
| 1| 100|
| 2| 500|
| 2| 800|
| 4| 300|
| 5| 200|
+-----+-----+
テーブル:丙
+-----+-----+
| A | E |
+-----+-----+
| 1| 500|
| 1| 600|
| 3| 300|
| 5| 700|
| 3| 900|
| 5| 100|
+-----+-----+
B = "1" の時の結果が以下になるようなselect文が書けません。
+-----+-----+--------+--------+
| A | C | sum(D) | sum(E) |
+-----+-----+--------+--------+
| 1 | 600 | 100 | 1100 |
| 2 | 200 | 1300 | null |
| 5 | 300 | 200 | 800 |
+-----+-----+--------+--------+

SELECT 甲.A, 甲.C, sum(乙.D), sum(丙.E) FROM 甲 LEFT JOIN 乙 ON 甲.A = 乙.A LEFT JOIN 丙 ON 甲.A = 丙.A WHERE 甲.B = 1 GROUP BY 甲.A ;
上記のように私なりに書いてみたのですが、以下のように合計値がダブってしまいます。
+-----+-----+--------+--------+
| A | C | sum(D) | sum(E) |
+-----+-----+--------+--------+
| 1 | 600 | 200 | 1100 |
| 2 | 200 | 1300 | null |
| 5 | 300 | 400 | 800 |
+-----+-----+--------+--------+
426NAME IS NULL:05/01/13 20:11:12 ID:???
>425
このスレはMicrosoft Access。スレ違いだ。
427yo-ko:05/01/13 20:11:51 ID:KcEKcyWW
書き込む場所を間違えちゃいました。返信頂ける方は"物凄い勢いで誰かが質問に答えるスッドレ "にお願いします。
ごめんなさい。よろしくお願いします。
428NAME IS NULL:05/01/14 00:51:50 ID:36mDG7eH
質問します。
Access2000を使っていますが、クラスの継承はできますか?
例えば標準のボタンクラスを継承させて新メンバを設けたnewボタンクラスを作り、
それをフォームにペタペタ貼り付けていくとか。

あともうひとつ、関数にオブジェクトへのポインタを渡すことはできますか?
自前関数の引数にクラスオブジェクトを放り込んで、
そのクラスのメンバ関数を実行したりできるととても幸せなのですが。
429423:05/01/14 00:54:46 ID:???
定義名 のことです。
変換の種類 には 区切り記号付きインポート を選んでます。
現在定義しているテーブル名のリストがインポートとエクスポートの1種類づつ出てくると思ったのですが…
新しくテーブルを定義しても自動で出てきてくれません。
人から受け継いだファイルには1つづつあったもので
430NAME IS NULL:05/01/14 01:40:26 ID:36mDG7eH
>>429
あれはテーブルを定義しただけではでてきません。
インポート/エクスポート定義は、それ単体で独立しているので、
テーブルとは別に定義のみ作成する必要があります。

作成方法は、
1.手動でインポートウィザードを出す。
2.左下に「設定」のボタンがあるので、これを押す、
3.次のダイアログで保存のボタンを押すと、作成できます。
ここでいぢることもできますが、まぁそこはフィーリングで。
431423:05/01/14 02:23:00 ID:???
インポートウィザード ってどうやって出すんですか?
432NAME IS NULL:05/01/14 02:41:00 ID:36mDG7eH
メニュー>ファイル>外部データの取り込み>インポート
433423:05/01/14 03:08:10 ID:???
なるほど。出来た。ありがとうございます。 >>432
434NAME IS NULL:05/01/14 22:13:32 ID:???
>416
SR1 -> SP3 に更新しる
435NAME IS NULL:05/01/16 22:56:21 ID:???
最近必要に迫られてACCESSに取り掛かった者です。どうぞよろしくお願いします。

現在、以下の様なフィルタをかけて、フォームなりテーブルで表示したいのですが、うまくいってません。
(当然、私のレベルが低いのが問題なんですが。)

一つのレコードが、5つの似たようなフィールドを持っています。実際には元素記号が入るのですが。
例えば

ID 名称 元素1 元素2 元素3 元素4 元素5
1. プラスチック  C O Ca Na Ba
2. 消しゴム C O B
3. ステンレス Fe Ni Cr

みたいな感じです。
(内容は適当に書いてます。)

これに、入力フォームをくっつけて、任意の元素記号を入力したらその元素記号でフィルタをかける
クエリを作成していたのですが、複数の元素記号を入力した時、そのいずれかが含まれるフィルタは
私でもどうにかかける事が出来ました。
ここでやりたいのは、仮に"C"と"O"と"Ca"を入力したら、上のテーブルのプラスチックだけをフィルタ
するようなクエリです。いずれかが含まれるではなく、レコードのどこかに、入力された項目全てが
含まれているものだけを抽出クエリです。(判りにくくて申し訳ありません。)
CとかOとかが決まった所に書かれていればいいのですが、O C Na Ca Baのように異なった順番で入力
されている物も、ヒットさせるようにしたいです。


色々探してみたのですが、なかなかうまく行きません。(上記の、いずれかが含まれるフィルタでも
結構悩んだと言うレベルです。)

悩んだ挙句、皆様の御知恵を拝借したいと思いまして書き込む事にしました。

どうぞ宜しくお願いします。m(__)m
(呼び方を間違って記述している所があるかも知れません。その際は御指摘下さい。)


436NAME IS NULL:05/01/16 23:05:28 ID:???
>>435
SQL文の"SELECT"句の"AND"と"OR"を勉強して下さい。あと、テーブルの設計に
ついても勉強して下さい。急がば回れです。がんばって!
437NAME IS NULL:05/01/17 01:24:55 ID:d2Hp/Lvv
ACCESSからEXCELにデーターを取り込んでいます。
SQL文のSELECTの次に来るフィールド2つを変数化してVBA
でループさせることは可能でしょうか?

たくさんの項目から2つづとりだし、それぞれの組み合わせで他の項目
がどうなるか分析したいもので。

438NAME IS NULL:05/01/17 02:49:50 ID:6bIxb6Go
for i=1 to 10
db.fields.item(i)
next i
みたいなのでいいのか?
439437:05/01/17 09:59:23 ID:d2Hp/Lvv
>>438
ありがとうございます。初心者(あるいはAFO)なんで直接
テキストとして代入を試みてうまくいってませんでした。
438と手元の本、HELPなどで夜にでも再挑戦してみます。
フィールドを定義して呼び出し、変数としてループさせる
ということですよね?
440NAME IS NULL:05/01/17 11:16:18 ID:/nf658MC
>435
436の中に >あと、テーブルの設計についても勉強してください。
とありますが、実際、私がこのテーブルを設計すると
[元素構成] [構成物]
ID| 元素 ID| 名称
-------- -------------------
1 | C 1 | プラスチック
1 | O 2 | 消しゴム
1 | Ca 3 | ステンレス
1 | Na
1 | Ba
2 | C
2 | O
---以下略---
の2つのテーブルに分けます。その上で元素構成テーブル上で、
集合[C,O,Ca]の全てを元素に含む、そういうidを探すことになります。
これは、30年以上前RDBが提唱された直後から関係代数の割り算として
知られている演算で、実際にしばしば現われる参照です。
実は、私は気まぐれにここを覗いただけでの者で、肝心のACCESSや
それを呼び出している環境について詳しくないのでこの演算の
実現方法については、他の方のサポートを待ちたいと思います。
441NAME IS NULL:05/01/17 11:34:27 ID:/nf658MC
>440 思ったように表示されなかった。スペースを全角にしてみよう。
[元素構成]   [構成物]
ID| 元素    ID| 名称
--------   -------------------
1 | C     1 | プラスチック
1 | O     2 | 消しゴム
1 | Ca     3 | ステンレス
1 | Na
1 | Ba
2 | C
2 | O
---以下略---
さて、これでどうか。
442NAME IS NULL:05/01/17 16:38:02 ID:SRsHoSwz
初心者の質問ですが、答えてください。
オプショングループの中にオプションボタンがあるのですが、
オプショングループの使用可能を常時"いいえ"にしています。
違うところのオプションボタンを選択したときのみ"はい"になるように
フォーカス取得後、喪失後のイベントプロシージャにコードを書き込んだのですが、
グレーアウトが直るだけで、中にあるオプションボタンが選択できません。
なぜですか?スレ違いかもしれませんが、お願いします。
443NAME IS NULL:05/01/17 16:51:26 ID:???
>>442
オプショングループのフレームに対し行う

Private Sub 違うところのオプションボタン名_AfterUpdate()

If Me. 違うところのオプションボタン名9 = True Then
 Me.オプショングループのフレーム名.Enabled = True
Else
 Me.オプショングループのフレーム名.Enabled = False
End If

End Sub

な感じ...
444NAME IS NULL:05/01/17 17:10:29 ID:SRsHoSwz
>443
ありがとうございます
早速やってみます。
445NAME IS NULL:05/01/17 18:19:43 ID:???
>>440-441
SQL文の"CREAT VIEW"と"INNER JOIN"を勉強して下さい。
もう一息です。がんばって!
446435:05/01/17 21:31:38 ID:???
>436さん 440-441さん 445さん
アドバイスありがとうございます。現状のテーブルのまま簡単にクエリーで検索しようと思ったのが甘かったようですね。

なんとはなく、440-441さんの言われるようなテーブル構成はおぼろげながら考えていました。色々サンプル作って
勉強しながら実験してみたいと思います。

遅ればせながらSQL解説HP等を、参照していた所です。
"CREAT VIEW"と"INNER JOIN"ですね。早速、調べてみます。

その他、こう言った事知っておいた方がいいよとかありましたら、御指導いただけたらと思っています。m(__)m

(今まで、EXCEL VBAとVB.NET、C++builderはかなり使い込んでいましたが、データベース関係は初めてに近い
ので色々戸惑っている最中です。(苦笑)

今後とも宜しくお願いします。m(__)m
447NAME IS NULL:05/01/18 20:36:17 ID:???
VBAのエディタってどうしてあんなに使いにくいのでしょうか?
タブが半角スペース4つに強制的に直されてしまうのですが、どうにかなりませんか?
簡単な代入式が続く場合に、イコールの桁位置を統一させたいのですけど、
これも強制的に直ってしまうので、何か良い方法はないですか?
448NAME IS NULL:05/01/18 20:49:49 ID:???
>>447
自分の心を入れ替える。これが一番。

あれに身をゆだねてしまえばそれなりに快適だよ。
プログラマたるもの、それぐらいの柔軟性がないと。
449NAME IS NULL:05/01/19 00:39:14 ID:???
俺も最初はやだったけど、今は慣れた。
450435:05/01/19 00:39:45 ID:???
>436さん、440-441さん、445さん

事後報告です
おかげさまで、とりあえず、ちゃんと検索出来るようになりました。ありがとうございます。
リレーションちゃんと設定してテーブル作り直したら、クエリー操作だけでおっけですね。
SQL表示させると、INNER JOINも・・・。的確な助言のおかげで、自分の勉強にもなりました。
これでACCESSの使い方の概念が見えてきたかなと言う気がいたします。

後は、未入力の項目があった時の処理くらいですか・・・。Nz関数使うのかな?いや、それ
よりも・・まず、現存する既に作成されたテーブルを、分ける作業ですか。(笑)早速、EXCELに
エクスポートして、元素テーブルを作成するVBA作って変換作業していました。

また、お世話になる事もあるかと思いますが、今後とも宜しくお願いします。m(__)m
451NAME IS NULL:05/01/19 09:18:32 ID:???
>>447
ツール>オプション>タブ間隔を変更するのではダメなの?
452437:05/01/19 17:17:07 ID:HqQNoClg
>>438
オソレスですが、事後報告です。
フィールドの取得もできましたが、SQL文にVBAの変数を入れる形で
なんとかやりたいことはできました。ありがとうございます。

Dim Koumoku1 as String
途中略
.CommandText = Array( _
"SELECT TableA.`" & Koumoku1 & "`,  以降略

この``がAFOの混乱をまねいたようです。
453NAME IS NULL:05/01/21 11:24:22 ID:QYqmjmPH
データシートで右クリックで「昇順で並び替え」をしたとき
レコードソースのORDER BY句が無視されてしまうのですが
何か対処法ないですか?
454NAME IS NULL:05/01/21 11:32:58 ID:QAlrrp5B
Access で文字列型のフィールドにデータを手入力した時に、二文字目を自動的に
小文字する機能を無効にするには、どうすればよいのでしょうか。
455NAME IS NULL:05/01/21 12:25:49 ID:???
>>451
半角スペースに置き換わることがイヤなのですよ。

>>453
あれはORDER BY句を変更する機能だからそれが普通なんだが...。
クエリで別に作ったら?

>>454
CapsLockをオンにすれ。
456NAME IS NULL:05/01/21 12:47:37 ID:???
>>455
いや、二文字目までを大文字にしたいのに、勝手に小文字にされるのが
イヤなんです。

全角文字も使いたくないんです。
457NAME IS NULL:05/01/21 12:57:23 ID:???
>456
他のバージョンは知らんが2003だと、

ツール→オプションでスペルチェックのタブを選択。
「オートコレクトオプション」ボタンをクリック。
あとは自分で見てみ。
458NAME IS NULL:05/01/21 13:15:05 ID:???
>>455
データソースをクエリで
ORDER BY フィールド1 にしています。

フィールド2順に右クリックで「昇順で並び替え」をしたとき
ORDER BY フィールド2 になってしまうが、
これを
ORDER BY フィールド2, フィールド1
にしたいのですが無理ですか?
459NAME IS NULL:05/01/21 13:23:47 ID:???
>>457
感謝!!
46033:05/01/21 16:05:17 ID:Slcbaq0V
クエリでは、2つ以上の項目を指定してけんさくすることはできるんですか?
461NAME IS NULL:05/01/21 18:08:13 ID:???
初めてAccess触ったんですが、外部参照使い難すぎ。
ORACLEの(+)が使えたらめちゃめちゃ簡単なのに・・・。
462NAME IS NULL:05/01/21 18:37:56 ID:???
>>458
テーブルデザインでフィールドの順番を入れ替えれば、
範囲選択で複数フィールドで主キーを設定できるが、
フィールドの順番そのままというのはわからん。
パススルークエリでSQL書くとかいう方法もないわけではない。

>>460
できるよ。基本すぎて本買えといいたくなるが...。
463NAME IS NULL:05/01/21 20:40:49 ID:???
>>460
よおーし決まった。
今日からお前のニックネームはけんさくだ!
464NAME IS NULL:05/01/22 00:35:59 ID:???
>>460
けんさく、がんばれー
465NAME IS NULL:05/01/24 15:26:06 ID:???
ACCESS2000のDBにテキストデータをインポートして、処理をしようとしています。
どうしても分からない部分あるので質問させて下さい。

|19|590607|
|20|030607|


上記のように日付項目が本来は1959/06/07というように一項目で表示させたいのです、
しかし、元のテキストではセパレータ"|"で分けられ、ACCESSにインポート後、
項目が二つに別れてしまいます。

考えた方法として、それぞれを文字型に変換して文字列として付加させた後に
日付型に変換する方法を考えたのですけど、ACCESSでどのように処理するのか
分かりません。

ACCESSにインポート後に日付型項目として一項目にまとめる方法があれば
それを教えていただきたいです。

よろしくお願いします。
466NAME IS NULL:05/01/24 17:46:51 ID:???
>>465
フィールド1:1959
フィールド2:06
フィールド3:07

DateSerial([A]![フィールド1],[A]![フィールド2],[A]![フィールド3])
467465:05/01/25 11:21:23 ID:???
ちなみに
フィールド1は数値型で西暦の上2ケタのみ

例)
19
20

フィールド2:はテキスト型で西暦の下2ケタと月、日

例)
590607
030607

です。

質問する前にも、DateSerialまでにもっていく方法が分からないという事で質問させていただきました。
すみません、よろしくお願いします。
468NAME IS NULL:05/01/25 12:01:48 ID:???
>>467
|19|590607|
|20|030607|
でなく
|1959|06|07|
|2003|06|07|
こう切れませんか?
469NAME IS NULL:05/01/25 12:04:42 ID:???
>>467
あるいは
フィールド1 & フィールド2でどうにでもなろうかと...
470465:05/01/25 13:35:01 ID:???
>>468

Dim strA as String
Dim strB as String
Dim strAll as String
Dim strComp as String

Dim dtA as Date

strA = Str(フィールド1)
strB = フィールド2
strAll = strA & strB


ここまではうまく文字列として認識できました。
ありがとうございます。

ここから

strComp = Mid(strAll, 1, 4) & "/" & Mid(strAll, 5, 2) & "/" & Mid(strAll, 7, 2)
dtA = CDate(strComp)

で処理しても


dtA = CDate(Format(strAll, "@@@@/@@/@@"))

で処理しても
「型が一致しません」

という事で変数型が一致しません。

cDate(文字列)ではDate型に変換してくれるという訳ではないのでしょうか?
471465:05/01/25 13:47:30 ID:???
自己レスです。

strAの西暦の上二桁の先頭にブランクがあり、文字列をうまく取得できなかったようです。
LTrimでうまく処理できました。

お騒がせしました。

ありがとうございます。
472NAME IS NULL:05/01/25 22:08:59 ID:0tu8LxKt
アクセスを初めて2日目の者です。

入力フォームに10個フィールドがあって、どんどんDBに格納して行くとします。

その中を編集したいときに、主キーをある場所に入力したら、そのレコードの
内容を入力フォームの初期値をして入れる事は可能でしょうか?
473NAME IS NULL:05/01/25 22:34:09 ID:???
もちろん、可能。
VBAでゴリゴリコピーするべし。
速度を気にしないならDLookupを使うと簡単。
474472:05/01/25 23:23:27 ID:0tu8LxKt
>>473 ありがとうございます。

VBAの本を明日買って勉強します。(いいサイトがあったら教えてください。)
Java,C,Perl,Oracle の基礎は分かるので、VBAも何とか出来そうです。

今回、友達のお店(個人マッサージ店)の予約システムを作ろうと思っています。
(もちろんスタンドアロン)
予約は1日2件位、年700〜800位なので、Accessで作ろうと思ったのですが、
このスレを見ると、「業務システムをAccessで作る奴は氏んでくれ」と
書いてるようですが、小さいお店なので十分と思いますが、プロの方の
ご意見聞かせてください
475NAME IS NULL:05/01/26 00:21:56 ID:???
>>474
>1日2件位、年700〜800位
手書きで十分。
476472:05/01/26 00:28:15 ID:YtsR0etB
>>475 って、元も子もないじゃないすか〜!!

でも、確かに手書きで十分かもしれません。
只、お客様の住所録管理もしたいし、やっぱAccessで作ります
477>>474:05/01/26 03:12:54 ID:???
元も子もないじゃない→みもふたもない

技術的なことや安全性についてほぼ無問題として
>>友達のお店
ってのがたぶん一番の問題
義理人情の格安または無料サービスだとしたらもっと問題
「お、こんなこともできるんかい、だったら・・・」
な感じで泥沼にはまること確実
478NAME IS NULL:05/01/26 21:39:46 ID:???
だがそれがいい
479NAME IS NULL:05/01/26 22:36:10 ID:???
>>476
マジレスしていいですか?
Excelでよかんべ。
480NAME IS NULL:05/01/28 03:16:19 ID:???
けど株式会社と名がつくところでも
結構ACCESSってとこ多いべ
481NAME IS NULL:05/01/28 21:32:45 ID:6UZy3LdI
入力フォームで

'移動ボタンとレコード番号ボックスの表示制御
Me.NavigationButtons = False
はできたのですが、

マウスホイールでレコードが変わる、EnterでDBにInsertする。
の2つを無効に出来ません。

ご教授お願いいたします。
482NAME IS NULL:05/01/28 22:31:51 ID:???
非連結ホームにしれば?
483NAME IS NULL:05/01/28 23:25:48 ID:6UZy3LdI
>>483

非連結ホームの仕方がよく分かりません。
484NAME IS NULL:05/01/29 09:40:25 ID:???
485NAME IS NULL:05/01/29 12:11:30 ID:???
非連結ホーム
http://search.naver.co.jp/search.naver?query=%94%F1%98A%8C%8B%83z%81%5B%83%80&where=nexearch

ウェブ検索 1-10件 (すべてのページから検索 / 日本語ページ:11538件 )
486NAME IS NULL:05/01/30 09:49:15 ID:FwOOJB5w
すれ違いかもしれんが

テーブル作成クエリで作られたテーブル、データ型が全部テキスト型になってるわけだが
このデータ型って事前に変えておくことは出来ませんか?ルックアップ使いたいんですが・・・
487NAME IS NULL:05/01/31 01:15:06 ID:???
>>481
EnterでDBにInsertするは、"AllowAdditions/追加の許可" プロパティ でどうにかならないか。
マウスホイールでレコードが変わるは少し自信ない。
"ScrollBars/スクロールバー" プロパティでもいぢってみれ。
488NAME IS NULL:05/01/31 01:20:12 ID:???
今日のaccess

フォームにコントロールいっぱいはりつけてたら、
タブオーダーが212までしか設定できないとか言われた。
せめて255くらいまではできてもいいだろ...。タブ移動自前でとりつけました。

public a(10) as new class1
エラー。配列・自前クラスはpublicにできません。
工エェ・ェエ工

コントロール配列作ったはいいが、イベントプロシージャを実行してくれない。
他のSubプロシージャやFunctionはVBAからアクセスできるのに、なんやねん。
489NAME IS NULL:05/01/31 04:39:57 ID:5vUT1RK2
山田君 たこ
田中君 うに
山田君 うに
竹下君 さば
吉田君 いか
山田君 ざぶとん
となってるのを、

山田君 たこ うに ざぶとん
吉田君 いか
田中君 うに
・・・

とするには、どうしたらいいですか?
490NAME IS NULL:05/01/31 05:34:40 ID:???
>山田君 たこ うに ざぶとん
>吉田君 いか
>田中君 うに
という形で欲しいのは選択クエリなのかフォームなのかレポートなのか
491NAME IS NULL:05/01/31 05:53:12 ID:???
クエリでおねがいします。。。
492NAME IS NULL:05/01/31 07:02:41 ID:???
もちろん出来なくはない
ただ人によっては道はかなり険しいかも

ところで、たこうにざぶとんは一つのフィールドにまとめてぶち込んでしまうのか
それともひとつにつき1フィールド用意するのか
後者の場合フィールド数はいくつぐらい想定しているのか(フィールド数には限界があるわけで)
493NAME IS NULL:05/01/31 12:26:05 ID:cP8oOxbe
すいませんもちょっと質問させてください。

Access2003,WinXP

あるフィールド[備考](テキスト形式)にある文字列の中に、
あるフィールド[整理番号](テキスト形式)が含まれるものを抜き出す
クエリかSQLでの指定の仕方ってどうやるんでしょうか?

つまり、like "*1234*"とか実値ではなく、like "*"&[整理番号]&"*"みたいな感じがしたいんです。
                         ↑
                        このフィールドにある文字列で
                        ちなみにこの指定では出来ないみたい

おながいします。
494493:05/01/31 12:32:54 ID:cP8oOxbe
げげっ

like "*"&[整理番号]&"*" で出来ました。

どうやらリレーションの設定に問題があったようでした。
すいません。
495NAME IS NULL:05/01/31 13:04:00 ID:JQ7c6wwT
ACCESS2000です、トランザクションで以下のような更新を行いましたが
なぜか更新されません

デバッグでステップ実行すれば問題なく更新されます
また同じトランザクション中にINSERTやDELETEを入れると
こちらの方は問題なく追加、削除が出来ます
トランザクションをはずせば問題なく更新できます

この件お分かりになる方いらっしゃいましたら
ご回答お願いいたします

やはり一件づつ更新するしかないのでしょうか

???.BeginTrans

UPDATE TABLE_A INNER JOIN TABLE_B
ON TABLE_A.FIELD_A = TABLE_B.FIELD_A
AND TABLE_A.FIELD_B = TABLE_B.FIELD_B
SET TABLE_A.FIELD_C = TABLE_B.FIELD_C
,TABLE_A.FIELD_D = TABLE_B.FIELD_D
,TABLE_A.FIELD_E = TABLE_B.FIELD_E
WHERE TABLE_A.FIELD_A = 1

???.CommitTrans
496NAME IS NULL:05/01/31 13:08:46 ID:???
はじめまして。質問させてください。
特定業務用のアクセスで作成されたソフトを使っています。
この度パソコンの不調に伴い買い替えを検討しているのですが、そのソフトの元データ(インストールディスク)を
紛失してしまった事に気づきました。さらにそのソフトを購入した会社もつぶれているようで、会社名やソフト名で検索しても
でてきませんでした。ソフトは99年購入です。
このデータが無いと仕事ができませんので、なんとかできないものかとインストールフォルダを見るとアクセスのマークが
あったので、ものは試しとそのフォルダごと別のパソコン(アクセス2000インストール済み)にコピーしてみたのですが案の定ダメでした。
顧客の住所録はなんとかCSVで抽出できたのですが、肝心の仕入れ取引データがどうしてもできないので困っています。

以上のような状況なのですが私が試した丸ごとコピーの様な方法でなんとか新しいパソコンにデータを移行する方法は
無いものでしょうか?専門知識の要る様な方法でも頑張りますのでどうかよろしくお願いします。
497NAME IS NULL:05/01/31 13:47:52 ID:???
>コピーしてみたのですが案の定ダメでした。
エラーメッセージ等を詳しく。

そのフォルダ内にあった別のファイルは晒せる?
せめて拡張子とサイズだけでも。
498NAME IS NULL:05/01/31 13:50:55 ID:cP8oOxbe
また一つ質問させてください。

テーブルのデザインビューをプリントする事って出来ないのでしょうか?
てっとりばやくテーブルのフィールド構造をプリントアウトして検討会なんかでつかいたいんですが、
今のトコ手写しか、データシードビューのフィールド幅を詰めて印刷してます。

ども出来そうになくて困っているんですが、知ってたら教えてください。
機能としてなくても、こんな事でリストをつくってるってのもあれば教えてください。
よろしくお願いします
499NAME IS NULL:05/01/31 14:05:44 ID:???
500NAME IS NULL:05/01/31 14:24:49 ID:cP8oOxbe
>>499
ありがとうございます。
さっそく試して見ます。

も一つ質問させてください。
管理テーブルの主キーフィールド[Number](オートナンバー型)で作ってるデータベースで、現在100件のデータが入ってるとします。
そこに、新たに5件(たとえば)のデータを追加します。
その追加データは管理テーブルの[number]を除く全てのフィールドと合致した形になっています。

で、クエリかSQLで追加をした時、その時点での管理テーブルの末尾[number]の次から自動的にナンバーを振る指定って出来るんでしょうか?

元データ   98, 日本太郎, ニホンタロウ, 東京都, 30, …
       99, 本州花子, ホンシュウハナコ, 秋田, 27, …
      100, 四国三平, シコクサンペイ, 高知, 45, …

追加データ  九州お通, キュウシュウオツウ, 熊本, 60, …
         沖縄源三郎, オキナワゲンザブロウ, 11, …


    ↓ 追加クエリ(SQL)実行
    ↓

新しいデータ
       98, 日本太郎, ニホンタロウ, 東京都, 30, …
       99, 本州花子, ホンシュウハナコ, 秋田, 27, …
      100, 四国三平, シコクサンペイ, 高知, 45, …
      101, 九州お通, キュウシュウオツウ, 熊本, 60, …
      102, 沖縄源三郎, オキナワゲンザブロウ, 11, …

という具合に。

追加してからナンバーを打つのか、ナンバーを打って(ナンバーのみのレコードを作って)データを写すのか、
プログラムでならなんとでも出来るんでしょうが、その前にクエリやSQLで出来る用に作れとのご命令で…
単発クエリでもサブクエリ方式でも構いません。



501495:05/01/31 14:45:38 ID:JQ7c6wwT
>498
ツール>解析>データベース構造の解析で出来るのでは?

>500
オートナンバーは最適化しなければ初期化されないはず
100件あるテーブルを全レコード削除しても1件目は101からになってしまいます
プログラムでやるしかないと思いますよ
502NAME IS NULL:05/01/31 15:20:17 ID:???
>>497
不十分な文章ですいません。以下がフォルダの中身です。

Mscreate.dir 0kb
system.mdw 92kb
system1x.mdw 68kb
tgmapl.mde 23.672kb
tgmdata.mdb 6.08kb

tgmaplを開くと「データベース変換」画面が出てきて変換orそのまま開くを聞いてくるのですが
どちらを選んでも「MDFファイルを変換するか使用できません」と表示されます。

tgmdataを開くと「データベースtgmdataのオブジェクトの設定を変換出来ません」と表示されます。
ツールのデータベースの変換を使って顧客データは取り出せました。

よろしくお願いします。
503NAME IS NULL:05/02/01 01:11:51 ID:???
なんで突然こんなに質問きてるの?
いつものマターリとしたふいんきはドコにいったんだyo!
504NAME IS NULL:05/02/01 04:51:27 ID:???
>>501
最適化はマクロでできないんだっけ?

>>498
MS-SQLServerがあればそっちにインポートしてやると全部テキストの命令文に直すことができる。
オラクルでもできるんかなぁ。
アクセスも全部テキスト文に直すことができればメンテしやすいんだけどねー。
505NAME IS NULL:05/02/01 07:33:15 ID:???
SaveAsText, LoadFromTextがテーブルでもできればいいんだけどね
506NAME IS NULL:05/02/01 21:30:53 ID:???
>504
DoMenuItem辺りのマクロで最適化も出来ると思います。
Access95/97での記憶なので、2000以降で出来るかどうかは
分かりませんが。
507NAME IS NULL:05/02/01 21:34:02 ID:???
VBAでTableDefオブジェクトを操作するとテーブルのフィールドや型、その他プロパティ類の
一覧表を取得できます。
TableDefsコレクションを併用すれば、一気に全てのテーブルの情報を取得することも
可能です。(システムテーブルまで取得されるので注意)
508NAME IS NULL:05/02/01 21:36:04 ID:???
すまん、507に補足。
VBAで使う際に「DAO3.6」の参照を行う必要があります。
(TableDefsコレクション、TableDefオブジェクトはDAOのコレクション/オブジェクトの為)
509NAME IS NULL:05/02/01 21:49:06 ID:???
>>506
97でメニューバーが表示されているならばマクロで最適化できるよ。
アクション キー送信
キー操作 %TDC

キー操作を代えれば2000でも動くと思われ
510NAME IS NULL:05/02/01 22:41:59 ID:???
>>507
readするだけかぁ。書き換えることができるとメンテに使えるのになあ。
511NAME IS NULL:05/02/01 23:57:30 ID:???
>510
書き換えも追加も削除も出来ますよ。
慣れればテーブル作成クエリを使うよりも細かい事が出来ますし、
Access独自のプロパティをフィールドに追加することも。
512NAME IS NULL:05/02/02 01:14:07 ID:pFDAtAer
SQLで複数値を返すサブクエリって出来ないのでしょうか?
たとえば、テーブルAのなかから該当する製品番号を全てだし、
その製品番号と一致する梱包番号を出す…みたいな

梱包テーブル T_box 製品テーブル T_item
T_box.梱包番号 T_item.製品番号
T_Box.発送先 T_item.製品名

仕分けテーブル T_mix
[梱包番号][製品番号]
 A01 I01
A01 I02
A01 I03
A02 I04
A02 I01

SELECT T_box.梱包番号, T_box.発送先, T_item.製品名
FROM T_box, T_item, T_mix
WHERE (T_mix.梱包番号 = SELECT T_mix.梱包番号
FROM T_mix
WHERE T_mix.製品番号 = "I01" )
で、製品番号"I01"が含まれる梱包番号を出して、それらの梱包に含まれる全ての製品名を出すとか。
513NAME IS NULL:05/02/02 04:41:46 ID:???
そもそもサブクエリがいらない。

SELECT T_box.梱包番号, T_box.発送先, T_item.製品名
FROM T_box, T_item, T_mix
WHERE
T_box.梱包番号 = T_mix.梱包番号 AND
T_item.製品番号 = T_mix.製品番号 AND
T_box.梱包番号 = '101'
514512:05/02/02 09:11:36 ID:dhhRXb6W
>>513
とりあえずありがd

サブクエリでなくとも出来るんだけど、聞きたいのが
値を複数返すサブクエリを指定する事が出来るのかどうかなもんで。
515513:05/02/02 09:57:01 ID:???
イコールのかわりにinを使えば可。
516512:05/02/02 14:38:40 ID:dhhRXb6W
in …

さっそく調べてみます!
517NAME IS NULL:05/02/02 21:20:52 ID:???
ぶっちゃけ機械とかの世代管理ってどうすればいいんだ?
機器のナンバーが変更掛かったりしてマジうぜぇ。
518NAME IS NULL:05/02/03 08:48:02 ID:SrVkfqtp
質問させてください。

AccessのSQLでテーブルの行を指定する事って出来るんでしょうか?
もし出来るのなら、指定の仕方を教えてください。

テーブルのエクスポートエラーで、[エラーの内容]と[フィールド]とそれがある[行]が
出て来るんですが、出来ればこれらの行に相当する元テーブルのレコードのみを抜き出したいんです。
519NAME IS NULL:05/02/03 13:13:35 ID:SrVkfqtp
連続で失礼します。

以下のテーブルがある場合、

整理番号 … 会員番号, 変更元会員番号, 変更前会員番号,…
  1 Null, Null, 1A01
  2 1A33, 1A01, Null
  ・     ・      ・        ・

会員番号フィールドがNullの場合、そのレコードの情報は会員番号変更前の履歴とし(整理番号1)、
その履歴レコードには元の会員番号を変更前会員番号フィールドに書き込んでおきます。
で、新しく会員番号を振ったレコード(整理番号2)の変更元会員番号に変更前の会員番号を書き込んでおきます。

このとき、SQLやクエリ等で

  以前会員番号があった会員(整理番号2を指す)の変更前のデータを、[変更元会員番号]と[変更前会員番号]で参照し、
  現在の[会員番号(整理番号2のもの)][元の会員番号(整理番号2のもの)][過去の情報(整理番号2のもの)]…で

抽出表示させたいんですが、こういうことって出来るんでしょうか?
出来そうな気もするんですが、DBMSの構造概念から出来なさそうな気もします。
ちなみに整理番号とは説明の便宜上付けたものです。

よろしくお願いします。
520NAME IS NULL:05/02/03 18:17:26 ID:???
SELECT * FROM 以下のテーブル x INNER JOIN 以下のテーブル y ON x.変更元会員番号 = y.変更前会員番号
521519:05/02/03 22:00:51 ID:Fjk1+cnX
>>520
調べてみたました。

テーブルにラベルみたいなのをつけて指定することが出きるみたいですね。
意図した結果が得られました。ありがとうございます。

ところで、関数の説明やSQLの構文や基本的な使い方などの解説書はいろいろ出てんですが、
質問したような、構造的な概念みたい(基本知識…というかそれとは違う次元の)なのが説明されている
ものって何かいいのないんでしょうか?
うまく説明できませんが、Wordで文章作れても、Windowsを知らなければパソコンのエラーに対処できないみたいな。

522NAME IS NULL:05/02/09 11:43:28 ID:???
523NAME IS NULL:05/02/10 10:59:08 ID:???
access2003を使ってて思うのですが、
式ビルダのリストボックスでホイールを
回してスクロールさせたときの動きがどうにも気持ち悪いです。
何というか、原点を基準とせずに、スクロール後のイメージが上から降ってくる感じ。
たしかmac osの標準コントロールでもそんなスクロールしてました。

視線の移動位置が読めないので、使う度にイライラします。
これ普通のリストボックスに出来ないでしょうか?
524NAME IS NULL:05/02/10 15:38:34 ID:???
>523
確かに気持ち悪いねw
スライダクリックするしかないのでは?

まぁ、漏れは式ビルだ使わないから関係ない(ォ
525NAME IS NULL:05/02/11 18:47:46 ID:???
全くの初心者でこれからAccessを勉強しようと思うのですがオススメの書籍とかってありますか?
526NAME IS NULL:05/02/12 14:57:01 ID:???
作業用PC;ソフトAccess2002SP3
       OSwindowsXPPro
       メモリ128MB CPU1133MHz
サーバー;ソフトSQLバージョン8.0
       OS;windowsserver2000
この環境で鯖のSQLから引っ張ってきたデータを作業用PCのAccessでレポートとして抽出し、
そのレポートをSnapShot形式でエクスポートすると9割の確立でAccessが応答なしになってしまいます。
違う作業用PCでも確認したんですが同じようにとまってしまいました。
作業毎に応答なしになってしまい作業効率が非常に悪いです。
よい改善方法はないでしょうか?
527NAME IS NULL:05/02/12 15:01:35 ID:???
>>525
広野忠敏&できる編集部著(2002)『できるAccess2002完全入門Windows対応』インプレス
はどない?
アマゾンURL
http://www.amazon.co.jp/exec/obidos/ASIN/4844316656/249-3607478-0544301

業者じゃないぞよ。
528NAME IS NULL:05/02/12 19:01:28 ID:???
>>527

乙、業者じゃないとすれば著者?
529NAME IS NULL:05/02/12 19:57:37 ID:vrWiMy+n
フォームにクエリには含んでないが、クエリ内のデータとリレーションシップはつけているテーブルのデータはテキストに
連結データとして参照できませんか?
530NAME IS NULL:05/02/13 21:21:52 ID:CnIPzHk4
【.  目 的  】 機器のリスト一覧に「個別コード」という外部キーのフィールドが012-3456の形でありますが、
このコードの左3桁012で別のテーブルを指定し、右4桁3456がそのテーブル内のIDとなっています。別テーブル
のフィールド内容、数は機器により異なります。

これを一つのフォームで表示、選択できるようにしたいと思っています。

具体的には、ある機器を選ぶとそれに応じたフィールド名称とその詳細情報 が表示されるviewerとしての機能。
また、機器に情報を登録できるように、それら詳細情報を選択できる機能をつけようとしています。

【.  条 件  】 OS:winXP personal, access2000

■試したけどうまくいかなかった処理

外部キー012-3456のコードをleft3桁とright4桁に分離して、別テーブルのフィールド名称を
  
  For C = 0 To rst.Fields.Count - 1
フィールド名称 = rst.Fields.Item(C).Name
Me.機器情報.RowSource = "フィールド名称"
Next

として取得し、別テーブルの詳細情報はSQL文で取得できましたが、これをリストボックス
に表示しようとしたところ、行き詰ってしまいました。ご教授よろしくお願いします。
531NAME IS NULL:05/02/14 19:01:02 ID:suYW2SF/
 Access初心者です。ストアドプロシージャについて調べましたが、
よく掴めません。
 Aテーブルのレコードを削除すると、
 それに対応する、Bテーブルのレコードが削除されるように
 するにはどうしたらいいでしょうか?

 クエリを使うといいようなのですが、引数の渡し方が分かりません。
532NAME IS NULL:05/02/15 09:21:10 ID:vmY+cp7a
>>531
鳥蛾
533NAME IS NULL:05/02/15 15:55:49 ID:9s6FnqA2
Access2003、リレーションシップ設定についての質問なんですが、

[T_ABC] [T_RS] [T_123]
A A | 1 1
B A | 4 2
C B | 2 3
C | 5
[T_DE] D | 3 [T_456]
D E | 6 4
E 5
6

※[T_ABC]と[T_DE]はunion可能
 [T_123]と[T_456]はunion可能
 [T_RS]は[T_ABC/DE]と[T_123/456]を関連付けたテーブル

このとき、[T_RS]とそれぞれのテーブルに“参照整合性”を有効にしようとすると
出来ないってエラーが出ます。
なんでなんですか?
整合性は取れてると思ってるんですが、なんかトンデモない勘違いしてるんでしょうか?

…てかいまいちこの参照整合性って理解しきれてないかも
534NAME IS NULL:05/02/15 16:14:52 ID:???
>>531
http://www.microsoft.com/japan/SQL/techinfo/selfstudy/Self_doc.asp
ここの [SQL Server 2000 と Access 2000 によるアプリケーション開発] にトリガの解説がある。
535533:05/02/15 16:15:31 ID:9s6FnqA2
あ、ちなみに図にある全てのフィールドに主キー設定してます。
536533:05/02/15 16:47:39 ID:9s6FnqA2
[T_ABC] [T_RS] [T_123]
__A_____A_|_1____1____
__B_____A_|_4____2____
__C_____B_|_2____3____
________C_|_5_________
[T_DE]__D_|_3__[T_456]
__D_____E_|_6____4____
__E______________5____
_________________6____


ずれたので、図のみ修正'_'はスペースとして。
537534:05/02/16 01:44:24 ID:???
まてよAccessでいう連鎖削除のことかもしれない。
だったらDBサーバのテーブルに参照整合性制約を作る。
538NAME IS NULL:05/02/17 22:34:35 ID:LphK6wFP
なんか難しい質問ばっかりで腰が引けますが、、、、

3つのテーブルがあります。
1:顧客マスタT 2:販売実績T 3:受注T
毎日お得意さんから配送希望の電話を受け、その番号を受注Tに入力したら、
顧客マスタTに登録されている住所などの基本情報と、
販売実績Tの一番最近販売した日付の単価フィールドを
配送伝票に印字するようにしたいのですが、、、
実際には、過去に販売した実績の日付全ての伝票が出てしまいます。
たとえばAさんが12月と11月に購入実績があると12月の単価の載った伝票と
11月の単価が載った伝票の2枚、配送伝票が出力されてしまいます。
クエリで過去の実績のフィールドに対してどういう数式で絞込みを
したらよいのでしょうか?
539NAME IS NULL:05/02/17 22:55:40 ID:???
>538
 下のように二段階で取得すると良いと思う。

 1. 販売実績Tから、その顧客の「最大」の販売日付を取得する。
 2. 1で取得した日付の販売実績を取得する。
540538:05/02/17 23:49:31 ID:LphK6wFP
なるほどー

おとついから始めたもので、思いつきませんでした。
ありがとう

と言って無事終わりたい所なんですけど、1の関数(恐らくMAX?)と
2のやり方がピンときません。 度々すいませんが、更にヒントを!
541EXCEPTION:05/02/18 00:13:54 ID:???
教えてください君です。

訳あってADOでACCESS 2000(SP3)のVBAを書いてます。

フォームのボタンを押下したら任意のSQL文を実行し、
結果をサブフォームのデーターシートに表示したい
のです。

具体的なプログラムのイメージでは・・・

Private Sub cmdTest_Click()  

dim sql As String
sql = "SELECT * from TABLE_1 WHERE id = 1234"

 'このSQLを実行し、結果をcmdTestボタンと
'サブフォームのデータシートに表示する

End Sub

こんな感じです。

フォームの検索条件をユーザーが選び、ボタンを押す毎に
結果が変わるようにしたいのです。

つまり、SQLは、FROM句もWHERE句も*の中身(実際は
フィールドを指定する)も条件によって複雑に変える必要が
あるので、慣れたVBでベタ書きしたいのです。

ADOで接続しており、TextBoxやLabelにはRecordSetに取得
した値を表示させることに成功しています。ただ、VBAでサブ
フォームにSQLの実行結果を表示する方法が全くわかりません。

それはADOではできないとか、あるいは方法があれば是非
教えていただけないでしょうか。

----
OS/ Windows2000 Pro
Access/Access2000 SP3





542NAME IS NULL:05/02/18 00:33:21 ID:SJEL00ob
>>538

SELECT TOP 1 単価 FROM 販売実績T WHERE 顧客=取得したい顧客 ORDER BY 販売日付 DESC

というのはどう?


543NAME IS NULL:05/02/18 04:47:18 ID:vwBFQCuY
教えてください
Win NT+ Access + IIS + ASP でデータベースを使っておりますが
作り直したい・・そこで
WinXP(Pro) + Access + IIS + ASP での同一システム構築は可能でしょうか?
本屋の立ち読み知識ではこの組み合わせ自体が可能か否か良く分かりませんもんで

(300ギガ)なんて作った当時無かったもんでHDエリア拡張が目的です

544NAME IS NULL:05/02/18 18:25:28 ID:usCCHSXH
mdbデータをアップサイジングし、SQL server + ADP 環境へ移行したのですが、
mdb環境では問題なく動いていた、モジュールがエラーが出て動かなくなりました。

モジュールは別ウィンドのフォームのボタンのクリック時イベントに

DoCmd.ApplyFilter "フォーム名", " 受注番号= " & Forms!フォーム名]![受注番号検索]

と記述してあるのですが、ADPに変換後SQL接続環境で

”ApplyFilte/フィルタの実行”アクションに、実行できないフィルタ名が含まれています

とエラーが出ます。
単純に" 受注番号= 2222”と記述しても同じです。

ApplyFilterは使えないのでしょうか?
545NAME IS NULL:05/02/19 17:48:10 ID:jn/21WFB
よろしくお願いいたします。

Accessにストアドファンクションはないみたいですが、
かわりになるものはありますか?
546545:05/02/19 17:51:03 ID:jn/21WFB
続きです。

select 前月未請求額,今月発生額,今月入金額,今月請求額
from ****

みたいなクエリを作りたいのですが、

各カラムは、全てWHERE句以下が違うものなのです。
どうしても、ストアドファンクションを使いたいのです。
547NAME IS NULL:05/02/19 21:33:05 ID:???
>>545-546
VBA
548545,546:05/02/19 23:18:30 ID:???
>>547
ありがとうございます。VBAはまだ初心者です。

上記のクエリ結果をレポートで表示したいのですが、
VBAで処理をする、という事は
RecordSetをループでまわして、1カラムづつ処理をして、
新テーブルに書き込んで、
それをレポートにして、新テーブルを消すということになるのでしょうか?

ちょっと回りくどい方法しか思いつきません。
549NAME IS NULL:05/02/20 00:00:52 ID:???
>>548

Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "select * from .... "
End Sub
550NAME IS NULL:05/02/20 00:11:15 ID:???
>>548
>>547 は、ネタだろ。

まずどんな処理したいか書かないでストアドとか言ってるから馬鹿にされてると思うよ。

>>546
> 各カラムは、全てWHERE句以下が違うものなのです。

マジで質問してるつもりなら、テーブル構造と where の条件句を晒せ。
話はそれからだ。
551NAME IS NULL:05/02/21 14:21:28 ID:???
レコードソースのWhere句をVBAでその都度変えればいいだけでしょ
Where句をダイナミックに変えるファンクション作って
>>549みたいにしたらええんちゃうん?

どんなツールもそうだけど、こういうマッピングがめんどくさいし、メンテも大変だな。
552NAME IS NULL:05/02/21 19:18:34 ID:TS7q3RdF
Access2003使ってて思ったんですけど、
数値型のフィールド一列だけ作ってテキトーに、3,2,6,5,1…といっていきますよね。で一度保存で閉じる。
次に開いた時、当然順番でない入力数字が見えますよね。
で、ソートして数字を順番に並べ替えます。
ところが、閉じる時保存せずにおくと、次開いた時またもや入力順のばらばらな数字列です。

ここで、
  ・データ内容、ソートしたかどうかなど関係なく、テーブルが作られた時の順番をテーブルの各行が持っている
のでないかと…

とすれば、これをVBAで扱うにはどういう方法があるんでしょうか?
サンプルコードとか教えて貰えれば助かります。
絶対出来ると思うんですけど…
553NAME IS NULL:05/02/21 22:59:44 ID:ii4DfBEB
SNとかいう円山の馬鹿会社の人間がいるようだな。
554NAME IS NULL:05/02/21 23:41:47 ID:???
>>552

Open "TEST.MDB" For Binary As #1
Do While Not EOF(1)
Input #1, buffer
' ToDo
Loop
Close #1
555552:05/02/22 10:48:38 ID:j0GOjt4s
>>554
サンクス

ちなみにそのテーブルに存在するレコード数とか、直接10レコード目を指定する
といった事は可能なんでしょか?
556NAME IS NULL:05/02/22 16:06:12 ID:xBCtWIX1
ACCESS97を使用していて、自分自身の存在するディレクトリのパスを知りたいのですが、
VB での App.Path や ACCESS2000 での Application.CurrentProject.Path
などに相当するプロパティはないんでしょうか?

ご存知の方いましたら回答よろしくお願いします。
557まあ、つりだろうが...。:05/02/22 22:11:13 ID:???
>>552
> 作られた時の順番をテーブルの各行が持っているのでないかと…

もちろん俺は中身を知らんけど、多分違う。
558NAME IS NULL:05/02/22 22:33:53 ID:WmubF3m/
>>556

CurrentDb.Nameの最後の\の前までを見ればいいと思う。

559NAME IS NULL:05/02/22 22:51:01 ID:???
>>552
意味わからん。
保存しなかったんだから
並び順が元のままなのは当然だろ。
560NAME IS NULL:05/02/23 00:53:49 ID:???
Accessは何もかもお見通しなんだぞ
あとからデータ改竄しても、すぐにバレちゃうんだぞ
561552:05/02/23 08:12:36 ID:cFlvfH1x
>>559
分かりませんか?

フィールドなどこちらが見る・弄る事が出来るもの意外の物理的なレコード番号みたいなのが
あると思う(あるハズ)ので、それの参照と操作の仕方が知りたいのです。
いろいろ書籍ほふってみましたが、そういう事に触れている本がなかなかないもので
562NAME IS NULL:05/02/23 11:47:10 ID:e6b7dA+N
>>558
ご回答ありがとうございました。
パス取得できました。
563NAME IS NULL:05/02/23 21:01:09 ID:???
>>561
ttp://support.microsoft.com/default.aspx?scid=kb;ja;834927

んでよ、そんなもん参照して何するつもりなのよ?
564NAME IS NULL:05/02/24 20:58:10 ID:???
>>561
挿入順序を格納するフィールドを作って自分で管理しな
565561:05/02/24 21:51:33 ID:ct1AqQa6
>>563
インポートエラーやエクスポートエラーで、エラーが発生した「行番号」しかでないじゃないすか
だから、レコード内の各フィールド値に依存しない、物理的なレコード(行)指定の方法も知って
おきたくて…ですよ。

リンク先のサポート読ませていただきました。
内容自体は可能とも不可能とも触れておらず、追加順を示すデータを明示もしてないので???ですが、
だったら上記のようなエラーレポートは関連性のないものなのかな?
ただ、自分があのエラーレポートのエラー箇所行から、該当テーブルのエラー行を抜き出す方法を知らないだけか…

でも、やっぱりどこにもないし(見つけ出せない?)…
566NAME IS NULL:05/02/24 22:26:09 ID:???
>>565
並び順を指定してインポートやエクスポートしてください。
567NAME IS NULL:05/02/24 23:27:59 ID:???
DLast関数で、「最後に入力された」レコード取れるよね
こいつでそれを突き止め、Delete
またDLastで、こんどは最後から2番目に入力されたデータ取って
・・・
レコードがなくなるまでLoop
568NAME IS NULL:05/02/25 02:06:47 ID:AqKmYAT8
Accessでクエリ結果をテーブルにするボタンがあるって聞いたんですが
どれのことでしょうか?
ご存知の方がいましたらご教示ください。
569NAME IS NULL:05/02/25 07:37:40 ID:???
>>568
ボタンつーか、クエリの種類だな。
「テーブル作成クエリ」
570NAME IS NULL:05/02/25 10:28:51 ID:???
>>552
一つの手としてなのだが
>テーブルが作られた時の順番をテーブルの各行
はオートナンバー型のフィールドを追加することで表面化する(と思う)
ので

一時的にテーブルに対して
ALTER TABLE テーブル2 ADD COLUMN ID COUNTER;
※IDフィールドをオートナンバー型として追加

利用後に
ALTER TABLE テーブル2 DROP COLUMN ID;
でIDフィールドを削除

で何とか出来ないか?
571552:05/02/25 15:33:25 ID:ORoi14cu
>>570
打開策を提示してくれているのですね
ありがとうデス
自分で追加順のフィールドを作って管理するのはやり方はいろいろあると思います

何をしたいからそれが知りたいか…は特にありませんが、ACCESSのアーキテクチャとして

・物理的な行(レコード)指定の仕方{中身関係ない、その時点でのテーブルのn行目を指定したりする為}
・追加した順番を持つ内部物理データがあるハズ{前カキコでいった現象}→が知りたい、でもどこにもない

です。

あと、インポート&エクスポートで、エラーの内容とそのエラーがあるフィールド、行がテーブルとしてはじき出されるので、
エラーテーブルの各行の[エラー行]の値で、対象となるテーブルの行を抜き出すクエリなりSQLなり方法がないものか?…
(VBAでやれば可能なのは創造できるけど、そんな技術が求められるようなエラーテーブルなのか?)

依然、書店や知人、ググリでリサーチ中…いまだ分からず… orz
572NAME IS NULL:05/02/25 16:00:34 ID:???
>>571
> 自分で追加順のフィールドを作って管理するのはやり方はいろいろあると思います

いやいや...追加順のフィールドを作るのでなく
出来上がったテーブルに「オートナンバー型」のフィールドがなくても
後からALTER TABLE(SQL)で「オートナンバー型」のフィールドを追加してやると
入力(現在並んでる)順のナンバー振られると思うのだが...
573570=572:05/02/25 16:37:56 ID:???
追伸

インポートされたテーブル名:T1
Accessの吐くエラーテーブル名:T1_インポート エラー
エラー明細テーブル名:インポートエラー明細


Dim dbs As DAO.Database
Dim strSQL(2) As String

インポート処理

strSQL(0) = "ALTER TABLE T1 ADD COLUMN ID COUNTER;"
strSQL(1) = "SELECT T1.* INTO インポートエラー明細" & _
" FROM T1" & _
" WHERE T1.ID In (SELECT [T1_インポート エラー].行" & _
" FROM [T1_インポート エラー]);"
strSQL(2) = "ALTER TABLE T1 DROP COLUMN ID;"

Set dbs = CurrentDb
dbs.Execute strSQL(0)
dbs.Execute strSQL(1)
dbs.Execute strSQL(2)
dbs.Close

こんな感じか?
574552:05/02/25 19:02:12 ID:ORoi14cu
>>572-573
おぉっ


やはりVBAしかないんでしょうね
SQLやクエリで出来ればてっとり早いと思ったんですが…

建設的なレスありがとうございます。
コードはVBAで処理タスク作る時試用させて頂きます。

575570=572:05/02/26 01:41:53 ID:???
>>574
>やはりVBAしかないんでしょうね
>SQLやクエリで出来ればてっとり早いと思ったんですが…

はにゃ?
ただクエリを実行させてるだけだよ?

strSQL(0)とstrSQL(2)はデータ定義クエリ
strSQL(1)は単なるテーブル作成クエリ
576NAME IS NULL:05/02/26 11:57:34 ID:???
はにゃ?
577NAME IS NULL:05/02/27 00:14:46 ID:???
>>571
> ・追加した順番を持つ内部物理データがあるハズ

何をもってそう信じているか知らんけど、そんなものはない。

そういうのが欲しければ、自分でそういうフィールドを持て。
578NAME IS NULL:05/02/27 01:27:30 ID:???
>>577
あるんじゃないかな?>570でもチラッと書いたけど
ここでもそれらしき事は書いてあるし...
ttp://www.f3.dion.ne.jp/~element/msaccess/AcTipsTblReNumberAutoNumFld.html

579NAME IS NULL:05/02/27 02:39:58 ID:???
>>578
> ここでもそれらしき事は書いてあるし...

| オートナンバー型フィールドの存在しない既存のテーブルに後から
| オートナンバー型フィールドを追加した場合、データの格納順にカウ
| ントアップされていくものと考えられる。
                 ^^^^^^^^^^^^^^^

まあ、信じるも信じないも君次第なんだけど...。

少なくとも俺なら信じない。

もし、上の記述が正しいとしても MS がいつそういう仕様を変更する
かわかったもんじゃないし、そもそもそういうこと (=登録順序を管理)
したければ自分でやればいいだけだから。
580NAME IS NULL:05/02/27 12:32:15 ID:???
追加順と格納順ってのはたぶん意味が違うと思う。
追加した順番と格納されている順番ってことね。

んでいつ変わるかもしれない格納順にこだわっても意味ないと思う。
581NAME IS NULL:05/02/27 12:53:28 ID:???
サブフォームのレコード数を制限したいのですか・・
サブフォームを帳票フォームにしていて、7個以上は追加出来ないようしたいのですが・・
582NAME IS NULL:05/02/28 11:24:41 ID:???
>>581
BeforeInsertでレコード数を確認しるかAfterUpdateで7件入力されたならば
AllowAdditionsを変更するでどう。

AllowAddtionsをいじるときは削除されたら元に戻すことも忘れずに。

583NAME IS NULL:05/02/28 23:12:33 ID:???
>>582

ありがとうございました。
If CurrentRecord >= 8 Then
MsgBox "7個以上の注文は入力できません。", 48
AllowAdditions = False
End If
でいけました。
584NAME IS NULL:05/03/01 20:25:44 ID:9ArRh4Zt
マクロを組んでてSQLの実行とかすると、『2件のデータが追加されます、てでつか?』
などと確認ダイアログがいちいち出てくるんだけど、これを前部自動で「はい」を押したことにする
設定ってどうするんでしょうか?
585NAME IS NULL:05/03/01 20:53:32 ID:???
>>584
普通は確認ダイアログを無効にすることを先に考えないか?
586NAME IS NULL:05/03/01 22:48:26 ID:X+S0zsCJ
>>585
DoCmd.SetWarnings False とかな
587NAME IS NULL:05/03/01 23:08:26 ID:d25DDS8t
>>584

>マクロを組んでてSQLの実行とかすると・・・

恐ろしいことしてるな。
588NAME IS NULL:05/03/02 09:03:09 ID:???
>>584
1.マクロのアクション「メッセージの設定」を「いいえ」に
2.ツール>オプション>編集/検索>確認のチェックを外す
のいずれか
589NAME IS NULL:05/03/03 09:02:04 ID:3fVA1RLD
g\
590NAME IS NULL:05/03/03 09:04:00 ID:3fVA1RLD
>>584
マクロのアクションに『キー送信』があるから、それを該当する「SQLの実行」の前に必要数入れて
「y」を設定しておけば、キー入力があったということで処理できる
591NAME IS NULL:05/03/04 19:48:09 ID:dkcRg06F
>>590
キー送信(SendKeys)は不安定ないのでなるべく使わないほうがいい。
98SEでは動くが(Win)2000ではダメという事例がイパーイあるから
592NAME IS NULL:05/03/04 19:49:05 ID:dkcRg06F
ないので・・・×
なので・・・○
593NAME IS NULL:05/03/05 17:54:32 ID:3r2dBU/R
質問です。
 value1, valueA
value2, valueB
value3, valueC
のようなテーブルから、
ある条件で、 2番目のレコードを選んだときに、
クエリ結果を
  value2
valueB
のように、別行として結果を出すには
 どうすればよいのでしょう?
 何かヒントがあればお願いします。
594NAME IS NULL:05/03/05 20:29:46 ID:???
>>593
UNIONする。
595NAME IS NULL:05/03/05 22:43:35 ID:???
>594
ありがとう。
そうか、UNIONならできそう。
596NAME IS NULL:05/03/07 08:18:16 ID:hgAoJulF
便乗ですが、unionでつなげたビューを実テーブルとして吐き出すのはどうしたらいいのですか?
597NAME IS NULL:05/03/07 09:37:35 ID:???
>>596
テーブル作成クエリ。
598596:05/03/07 13:21:05 ID:hgAoJulF
>>
599596:05/03/07 13:24:29 ID:hgAoJulF
>>597
どうやって?

SELECT * FROM T_sample1
union
SELECT * FROM T_sample2
(T_sample1とT_sample2は同じ構造)
で出したビューをテーブル作成クエリにする場合、どういうSQL文になるの?

ちなみにメニューからテーブル作成クエリにしたら作ったunion SQL が消える。

出来るとしたら、やり方教えてー
600NAME IS NULL:05/03/07 13:31:53 ID:???
>>599
SELECT * INTO [作成したいテーブル] FROM [ユニオンクエリ]
601596:05/03/07 13:41:26 ID:hgAoJulF
>>600
なるへそ
出来た

[ユニオンクエリ]の箇所を()で囲まなければならないのね

ありがさう
602NAME IS NULL:05/03/07 14:00:54 ID:???
>>601
SQLをそのまま書くならね。
別クエリにしてクエリ名を書く方が便利っぽいけど
まあ好きずき。
603NAME IS NULL:05/03/09 23:33:32 ID:AcZJqars
フィールドの値によって、レポート上の出力を
変えたいのですが、クエリでできますか?
たとえば、性別で、
値が "M"だったら、レポート上で「男」
NULLだったら、レポート上で「不明」
とかです。
604NAME IS NULL:05/03/09 23:36:23 ID:???
>>603
iif とかは?
クエリじゃなくてもレポートでやればいいような気がするけど・・・
605NAME IS NULL:05/03/09 23:45:45 ID:???
>604
すみません。もう少し具体的にお願い。
レポートの該当フィールドで式ビルダで書くということ?
606NAME IS NULL:05/03/10 00:15:47 ID:???
フィールドのところに
=Iif(IsNull([性別])=True,"不明",Iif([性別]="M","男","女かオカマ"))
と書く。
607NAME IS NULL:05/03/10 01:05:20 ID:???
なるへそ感謝です。
608NAME IS NULL:05/03/10 07:44:11 ID:W2+eHHUk
お願いいたします。

出席チェックボックスがあるとします。
非連結フォームで、チェックボックスをチェックしたかどうかを
DBに入れたいんですが、

INSERT INTO TABLE名 (出席) VALUES 出席.value
では、チェックしてないときに、NULLがはいってしまいます。

INSERT INTO TABLE名 (出席) VALUES NZ(出席.value,0)
にしても、


追加クエリですべてのレコードを追加できません。

型変換エラーのため、、1個のフィールドをNULLに設定しました。また、0件の
レコードで、キー違反、0件のレコードでロック違反、0件のレコードで入力規則違反
が発生したため、レコードを追加できませんでした。

アクションクエリの実行を続行しますか?
このエラーを無視し、クエリの実行を続行するときは【はい】を
クリックしてください。
これらのエラーが発生する原因については、【ヘルプ】をクリックし、
表示されるヘルプ トピックを参照してください。


という、システムエラーが発生しました。

ググっても、解決できません。助けてください。
609NAME IS NULL:05/03/10 09:29:56 ID:???
>>608
そのクエリはどこに書いてんだ?
610NAME IS NULL:05/03/10 14:09:55 ID:pU7VGCAf
日付型のフィールドを、
レポートで和暦にして出すのはどーするの?
フォームでは、書式で指定すればいいけど、、、
611NAME IS NULL:05/03/10 14:27:12 ID:???
>>610
いろいろ方法はあるが、例えばテキストのところに

=Format([フィールド],"フォーマット")

と書くのはどうだ?
612NAME IS NULL:05/03/10 15:10:34 ID:6FQqkgu+
ADO2.1+MSDEです。
ロックタイプについて質問があります。

rs.Open "SELECT * FROM Table WHERE(AAA=1);", cnn, adOpenKeyset, [LockType]
rs("BBB") = 100 ──────(1)
rs("CCC") = 200
rs("DDD") = 300
rs.Update ─────────(2)

[LockType]をadLockOptimisticにすると(2)でロックがされるところは確認できました。
で、(1)の段階でロックをかけたいのでadLockPessimisticにしてみたのですが、
(2)でロックされてしまいます。

何か良い対処方法は無いでしょうか。
613NAME IS NULL:05/03/10 16:56:44 ID:???
>611
トンクス。
和暦のフォーマットで、
"gggeemmdd"はいいけど、
"gggemd"だと区切りがヘンになるぅ〜。
614608:05/03/10 17:59:06 ID:W2+eHHUk
大変説明不足でした。


各テキストボックス、チェックボックス、オプションボタンを入力して
「書き込み」ボタンを押されたら、DBにInsertするプログラムです。


insertSQL = "INSERT INTO 団体 (利用日,公演時間,ツアー名,大人,中高生,子供,代表電話番号,
担当者,金額,支払い方法,支払日,一般Op,障害者Flg,修学旅行Flg,中国Flg,台湾Flg,韓国Flg,香港Flg) VALUES "

insertSQL = insertSQL & "('#" & 利用日.Value & _      '説明のため注釈 Date型
"#','" & 公演時間.Value & 'String テキストボックス
"','" & ツアー名.Value & 'String テキストボックス
"'," & Val(Nz(大人.Value, 0)) & _ 'Double テキストボックス
"," & Val(Nz(中高生.Value, 0)) & _ 'Double テキストボックス
"," & Val(Nz(子供.Value, 0)) & _ 'Double テキストボックス
",'" & 代表電話番号.Value & _ 'Double テキストボックス
"','" & 担当者.Value & _ 'String テキストボックス
"'," & 金額.Value & _ 'String テキストボックス
",'" & 支払い方法.Value & _ 'String リストボックス
"','#" & 支払日.Value & _ 'String テキストボックス
"#'," & Val(Nz(一般Frame.Value, 0)) & _ 'Double オプションボタン
"," & Val(Nz(障害者Flg, 0)) & _ 'Double チェックボックス
"," & Val(Nz(修学旅行Flg, 0)) & _ 'Double チェックボックス
"," & Val(Nz(中国Flg, 0)) & _ 'Double チェックボックス
"," & Val(Nz(台湾Flg, 0)) & _ 'Double チェックボックス
"," & Val(Nz(韓国Flg, 0)) & _ 'Double チェックボックス
"," & Val(Nz(香港Flg, 0)) & _ 'Double チェックボックス
")"

'SQLの実行
DoCmd.RunSQL insertSQL
↑ここで

追加クエリですべてのレコードを追加できません。

型変換エラーのため、、1個のフィールドをNULLに設定しました。また、0件の
レコードで、キー違反、0件のレコードでロック違反、0件のレコードで入力規則違反
が発生したため、レコードを追加できませんでした。

アクションクエリの実行を続行しますか?
このエラーを無視し、クエリの実行を続行するときは【はい】を
クリックしてください。
これらのエラーが発生する原因については、【ヘルプ】をクリックし、
表示されるヘルプ トピックを参照してください。


という、システムエラーが発生しました。

>>609 さんと皆さん

ググって見たのですが、全角空白文字も使っていませんし、ブレークポイントでSQL実行
前に値を見ても、ちゃんと入っています。

よろしくお願いいたします。
615608:05/03/10 18:00:50 ID:W2+eHHUk
>>609 さんと皆さん

スレ汚し、大変申し訳ありません。
書き直しました。


各テキストボックス、チェックボックス、オプションボタンを入力して
「書き込み」ボタンを押されたら、DBにInsertするプログラムです。


insertSQL = "INSERT INTO 団体 (利用日,公演時間,ツアー名,大人,中高生,子供,代表電話番号,
担当者,金額,支払い方法,支払日,一般Op,障害者Flg,修学旅行Flg,中国Flg,台湾Flg,韓国Flg,香港Flg) VALUES "

insertSQL = insertSQL & "('#" & 利用日.Value & _      
"#','" & 公演時間.Value &
"','" & ツアー名.Value &
"'," & Val(Nz(大人.Value, 0)) & _
"," & Val(Nz(中高生.Value, 0)) & _
"," & Val(Nz(子供.Value, 0)) & _
",'" & 代表電話番号.Value & _
"','" & 担当者.Value & _
"'," & 金額.Value & _
",'" & 支払い方法.Value & _
"','#" & 支払日.Value & _
"#'," & Val(Nz(一般Frame.Value, 0)) & _
"," & Val(Nz(障害者Flg, 0)) & _
"," & Val(Nz(修学旅行Flg, 0)) & _
"," & Val(Nz(中国Flg, 0)) & _
"," & Val(Nz(台湾Flg, 0)) & _
"," & Val(Nz(韓国Flg, 0)) & _
"," & Val(Nz(香港Flg, 0)) & _
")"

'SQLの実行
DoCmd.RunSQL insertSQL
↑ここで

追加クエリですべてのレコードを追加できません。

型変換エラーのため、、1個のフィールドをNULLに設定しました。また、0件の
レコードで、キー違反、0件のレコードでロック違反、0件のレコードで入力規則違反
が発生したため、レコードを追加できませんでした。

アクションクエリの実行を続行しますか?
このエラーを無視し、クエリの実行を続行するときは【はい】を
クリックしてください。
これらのエラーが発生する原因については、【ヘルプ】をクリックし、
表示されるヘルプ トピックを参照してください。


という、システムエラーが発生しました。

ググって見たのですが、全角空白文字も使っていませんし、ブレークポイントでSQL実行
前に値を見ても、ちゃんと入っています。

よろしくお願いいたします。
616NAME IS NULL:05/03/10 20:10:07 ID:???
>>615
詳しく見てないから原因はわからないけど、なんか
RecordsetをAddNewしてUpdateする方が楽っぽい。
617615:05/03/10 21:09:24 ID:W2+eHHUk
ありがとうございます。
素朴な疑問です。

VBA初心者で、AddNewというものを初めて知ったのですが、
一行のInsert文なので、処理速度も問題ないと思いますが、

DBに書き込むときに、普通は「Insert」、「Addnew」どっちを
使うのでしょうか?
618NAME IS NULL:05/03/10 21:10:22 ID:???
>615
 「"'#" & 支払日.Value & "#',"」っておい。
 これだと、シングルクォーテーションで囲んでいるから、
日付型ではなく「#2005/03/10#」と言う文字列になるよ。
 エラーの原因はこれだね。
 
619NAME IS NULL:05/03/10 21:18:28 ID:???
>617
 Accessだったら基本は連結フォーム。
 非連結フォームを使う必然性がある場合は、Vsiual Basic(NOT VBA)を
使った方が生産性が高い事の方が多い。

 SQLで処理するか、Recordsetで処理するかは好みの問題だが、
Recordsetの方が見易いし、更新と新規登録とで処理を変更すべき部分が
少なくて済む。
620615:05/03/11 00:14:48 ID:ivF/o00I
>>615

今まで、意味も分からずに、「"#日付#"」を使っていました。
文字列を "" で表すように、日付型は##で表すんですね。
@を直しました。


Aオプションボタン、チェックボックス Val(Nz(値, 0)) では、Double型なので、
チェックボックスに代入する前に CInt(Val(Nz(値, 0))) に直しました。

insertSQL = insertSQL & "(" & @CDate(利用日.Value) & _
",'" & 公演時間.Value & _
"','" & ツアー名.Value & _
"'," & CInt(Val(Nz(大人.Value, 0))) & _
"," & CInt(Val(Nz(中高生.Value, 0))) & _
"," & CInt(Val(Nz(子供.Value, 0))) & _
",'" & 代表電話番号.Value & _
"','" & 担当者.Value & _
"'," & 金額.Value & _
",'" & 支払い方法.Value & _
"'," & CDate(支払日.Value) & _
"," & ACInt(Val(Nz(一般Frame.Value, 0))) & _
"," & CInt(Val(Nz(障害者Flg, 0))) & _
"," & CInt(Val(Nz(修学旅行Flg, 0))) & _
"," & CInt(Val(Nz(中国Flg, 0))) & _
"," & CInt(Val(Nz(台湾Flg, 0))) & _
"," & CInt(Val(Nz(韓国Flg, 0))) & _
"," & CInt(Val(Nz(香港Flg, 0))) & _
")"

只、依然システムエラーは出ています。


>>619
Accessだったら基本は連結フォームというのを知りませんでした。
非連結フォームにした理由は、
連結フォームだと、マウスの第3ボタンで、レコードが切り替わるからだと思っていたのですが、
フォームの更新可プロパティをOFFにすればよいだけ、と言う事にやっと気づきました。

気持ちを切り替えて、連結フォームでトライしてみます。
621NAME IS NULL:05/03/11 00:19:19 ID:???
>>619
615は1件処理するだけなので直接関係はないけど
複数レコードの更新ならばSQLを使う方いい

只今レコードのあるフィールドをゼロにするだけの処理を
レコードセットで8万回ループさせているmdbの修正中。



622NAME IS NULL:05/03/11 09:21:58 ID:???
>>621
逆にINSERT INTOを複数回やるよりは、AddNew/Updateのループの方が速いね。
623NAME IS NULL:05/03/11 14:03:13 ID:An3+OxFu
SQLで得られた結果をそのまま、
あるテーブルに新しいフィールドとして追加するには
どうすればよいですか?
そもそも可能?
624NAME IS NULL:05/03/11 14:16:43 ID:???
>>623
クエリだけでは無理。
VBAに汁。
625NAME IS NULL:05/03/11 14:37:44 ID:An3+OxFu
では、手動で新フィールドを追加しておいて、
SQL結果を流し込むことは可能でつか?
626NAME IS NULL:05/03/11 14:40:04 ID:???
>>625
フィールドの追加されたクエリを新しいテーブルとして保存なら簡単だが。
627NAME IS NULL:05/03/11 15:12:01 ID:???
INSERT INTO tbl1 SELECT * FROM tbl2 [WHERE];
って構文はAccessでは使えなかったっけ?
628NAME IS NULL:05/03/11 15:43:26 ID:???
>>627
使えるけど、それはレコード追加。
この人はフィールド追加がしたいらしい。
629NAME IS NULL:05/03/11 16:05:25 ID:???
うーんそういう需要がないのですね。

SELECT で抽出したデータの値で
あるフィールドの値をいっせいに書き換えたいのです。
 SELECT WHERE した値を
 UPDATE SET すればいいのでしょうか?

>626
それもSELECT INTO〜 ですか? WHERE句書けます?
630NAME IS NULL:05/03/11 16:54:50 ID:???
>>629
> うーんそういう需要がないのですね。
需要っつーか、どういう書き方をしたいのかもよくわかんないんだけど。

> SELECT で抽出したデータの値で
> あるフィールドの値をいっせいに書き換えたいのです。
いっせいにって、1個の値を複数レコードに割り当てるってことか?
それなら可能性あるかもな。

> それもSELECT INTO〜 ですか?
Yes.

> WHERE句書けます?
Yes.
631NAME IS NULL:05/03/11 16:59:46 ID:???
>>629
UPDATE T1 SET F2 = (SELECT F2 FROM T2)

ってやってみたがダメだな。
「SELECT F2 FROM T2」が1行しか返さなければ可能性あるかと思ったが。
632NAME IS NULL:05/03/11 18:00:39 ID:???
>631
UPDATE T1 SET F2 = (SELECT MIN(F2) FROM T2 WHERE ...)

だとどうでしょう?
633NAME IS NULL:05/03/11 18:17:55 ID:???
>>632
ACCESSではダメじゃなかったけ?
634NAME IS NULL:05/03/11 18:50:54 ID:???
UPDATE (select * from table1 JOIN table2 ON …)
SET xxx=yyy
635NAME IS NULL:05/03/11 18:56:07 ID:???
>>634
yyyは決め打ち?
636NAME IS NULL:05/03/12 01:50:25 ID:TwGeNgaB
質問です。
オラクルで作成したDBのテーブルを読み込み、
アクセスのテーブルに取り込む処理をアクセスVBAで作成したいのですが、
インポートではなく、オラクルにアタッチして読み込む手順を教えてください。
本屋で連日探しているのですがみつかりません・・・orz
そもそも可能なのでしょうか?

637NAME IS NULL:05/03/12 02:33:35 ID:???
>>636
ODBCかADOでどうぞ。
638NAME IS NULL:05/03/12 11:39:20 ID:???
>>636
ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース
639NAME IS NULL:05/03/12 21:39:21 ID:TwGeNgaB
>>637
>>638
レスありがとうございました。

>ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース

VBAで行いたい(フォームのボタンを押したらオラクルのテーブルをアクセスに取り込む、とか)のですが、
その場合はどうすればよいのでしょうか?
640NAME IS NULL:05/03/12 23:04:07 ID:???
>ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース
を試した上で質問しているとは思えない
641NAME IS NULL:05/03/12 23:44:12 ID:???
>>640

639じゃないけど、他形式のDBでもアクセスからの
リンクテーブルみたく扱えるのですか?
642NAME IS NULL:05/03/12 23:54:21 ID:???
>>641
そのDB用のODBCドライバがあれば
643NAME IS NULL:05/03/12 23:57:11 ID:???
>>639
取り込むテーブルはあらかじめ決まってるはずだから、最初にリンクしておけばよい。
VBAで取り込む作業は不要。
644NAME IS NULL:05/03/12 23:59:54 ID:???
>>642

ありがとう。またひとつ利口になりました。
645NAME IS NULL:05/03/14 12:48:49 ID:77sioI1O
質問です

 “東京都葛飾区栄町3−5−12第一ビル205号”

  [住所@],    [番地],   [建物など]
  東京都葛飾区栄町,3−5−12,第一ビル205号


のように分割するクエリを考えてるんですが、そもそも可能なんでしょうか?
自分的には、“東京都葛飾区栄町3−5−12第一ビル205号”から“3−5−12”を
抜き出す&位置を取って前後をLEFTとMIDで取ることを考えてます。

この、“東京都葛飾区栄町3−5−12第一ビル205号”から“3−5−12”を抜き出すことから
分かりません(いろいろやってはいるのですが)


646NAME IS NULL:05/03/14 14:24:14 ID:???
>>645
まず、日本語でいいから切り出す条件(どこで切るのか)をきちんと定義する。
それがちゃんとしてれば、道はあるはずだぞ。
647NAME IS NULL:05/03/14 20:14:45 ID:???
まずhttp://www.post.japanpost.jp/へ行き、あるブツをとってくる。
648NAME IS NULL:05/03/14 21:09:57 ID:???
>>647
「以下に記載が無い場合」攻撃を食らえ!
649NAME IS NULL:05/03/14 21:22:17 ID:???
質問です。
テーブルAとテーブルBがあって、
テーブルAには元データが、テーブルBにはテーブルAから取り除きたいデータが入っています。

そこで、不一致ウィザードを使ってテーブルAからテーブルBに該当するデータを取り除いたのですが、
さらにワイルドカードを使ってデータを取り除いたのです。
例えば、テーブルBに「*cd*」というデータがあれば、これを使って
テーブルAの「abcd」や「cdef」も取り除いたのです。

そこで、「not like」文を使ってみたのですが、テーブルBのデータが多すぎて
not like文が長くなりすぎ、SQLではねられてしまいました。

何かよいアイデアはありませんでしょうか?

Access2002使用。
650NAME IS NULL:05/03/14 22:51:05 ID:???
>>649
VBA
651NAME IS NULL:05/03/14 22:53:03 ID:aX3g+89k
visual source safeでaccessのmdbを管理している人っている?
使い勝手とかどうよ?
652えりか:05/03/14 23:06:03 ID:djYnckCW
F_1で検索条件を指定して、ボタンをクリックするとF_2が開きます。
F_2はサブフォーム(F_SUB)を持っています。F_1での検索条件によって
F_SUBのソースオブジェクトの値を変更させたいのですがうまくいきま
せん。F_1のボタンのクリックイベントに

DoCmd.OpenForm "F_2"
Forms![F_2]![F_SUB].SourceObject= "代入するデータ"

と入れたのですがそもそも考え方が違うのでしょうか・・。
宜しくアドバイスお願い致します。
653NAME IS NULL:05/03/14 23:15:07 ID:???
>>652
何だかよく分からんが
SourceObject
なのか。
RecordSourceとは違うのか。
だったらデータ入れちゃダメだろ
テーブル名とかクエリ名とかSQL文とかじゃないか
654NAME IS NULL:05/03/15 00:14:19 ID:???
>645
住所をBNFで表してすべてのパターンが網羅できるかどうか
小一時間問い詰めたい。
BNFの意味はぐぐれ。
655NAME IS NULL:05/03/15 00:30:27 ID:???
>649
exists述語と副問い合わせを研究しる。

delete * from TBLA
where exists (select * from TBLB where TBLA.F1 like ('*'+TBLB.F1+'*'))
656NAME IS NULL:05/03/15 01:23:30 ID:???
>>650
えーーーーー
657NAME IS NULL:05/03/15 02:31:03 ID:???
>例えば、テーブルBに「*cd*」というデータがあれば、これを使って
>テーブルAの「abcd」や「cdef」も取り除いたのです。
テーブルBに「cd」というデータがあれば、ではなく「*cd*」というデータがあれば、でいいのか?
658645:05/03/15 12:47:20 ID:dUgl0bu7
面倒なんで住所文字列の先頭から最初に出てきた全角数字から拾い始め、
数字とハイフン以外のものが出てきた段階で切って番地のみを出す関数作って
対処しました。
659NAME IS NULL:05/03/15 23:27:33 ID:ODuvRlx2
フィールドが多すぎるテーブルを分割して、
1対1のリレーションにしようと思ってます。
(といっても、フィールド数は50〜100ぐらいです)
これは邪道?
テーブル作成の実際を知らないので悩んでます。
そもそも1対1のテーブル関係はどんな時に使うのでしょう?
660NAME IS NULL:05/03/15 23:59:05 ID:???
目標が1対1というのが良くわからん。
正規化をがんばってみたら。
661NAME IS NULL:05/03/16 01:03:09 ID:???
たとえば店舗マスタと担当スタッフマスタなんかは1対1になるな
(ならない運用もあるだろうけど)

で、50〜100ぐらいなら無理に分けなくてもいいんでは。
255を超えるようであれば分けたほうがいろんな人が幸せになれると思うけど
accessってたしか255までだっけ。
662>>659:05/03/16 01:18:56 ID:???
素人だけど
いまそれに近いことやってる(近くないかな)

商品コード : 主キー(もちろんNullなんてことはありえない)
商品名 : これも値は絶対に入る
小売値 : これも
仕入価 : これも

ここまでが先週まで使って商品マスター(約12000レコード)
これに来週から以下が加わることになった

商品解説1 : 空っぽのものが多い
商品解説2 : とにかく空っぽのものが多い
商品解説3 : 空っぽばっかりだっつの
...
とにかくメチャ多い商品解説フィールド

こぢんまりとチャーミングにまとまった商品マスターにこの凶悪なフィールド群を加えるのは
気持ちが悪かったので、別テーブルとした。

商品コード
商品解説1
商品解説2
・・・・
もちろんこいつと元マスターのレコード件数は一致していない。
商品コード以外全フィールド空っぽのレコードなんてあっても意味ないと思ったから。
で、必要に応じて元マスターとレフトジョイン
663NAME IS NULL:05/03/16 01:23:17 ID:???
システムがその修正にかかる労力に見合うならばしたほうがいいのかな。
俺は専門職じゃないからその辺はいい加減にしているけどね。
客から投げられたデータを整形させる実行時間を考えると、
とてもじゃないけどやってられません。
それにテーブルの設計を変更したら各所に問題が発生しそうで、
怖くてとてもできません。
新規に作るのだったらその辺は考えるけど。
664NAME IS NULL:05/03/16 09:41:30 ID:z3SOFake
ちょっと質問ですが、

年月日----収支--金額
2005/3/1---0---\10000-
2005/3/2---1-----\257-
 ・    ・   ・
 ・    ・   ・
 ・    ・   ・
2005/4/13--1----\3039-
2005/4/13--0---\10000-  [収支] 0:収入,1:支出

のようなテーブルデータがあるとき、単純に月ごとと収支ごとのグループ集計の方法は分かるんですが、
月締めが<20日〜翌月19日>単位で収支ごとの集計を出すとか、10000円以下の収入は計上せずに集計を出す
といった条件はどうするばいいのでしょうか?

単純クエリかSQLで教えてください。
665NAME IS NULL:05/03/16 10:07:29 ID:???
>>664
IifやDateAddを駆使して集計専用の計算フィールドを作る。
666NAME IS NULL:05/03/16 12:22:05 ID:???
>>659
それは垂直分割という技法である。あとはググれ。
667664:05/03/16 15:29:03 ID:z3SOFake
もいっこいいですか?

クエリで新規テーブルを作るとき、データが存在する列はいいとして、あとからデータを入れたい時のために
Null 列を作るんですが、これにデータ型を指定する方法ってあるんでしょうか?

例)
select [氏名] as name, [住所] as add, Null as ふりがな, … into 詳細名簿
from 名簿;

で、"Null as ふりがな" で列を作っておく。あとから自分でふりがなを埋めていくorクエる。
上記SQLだと、出来た「詳細名簿」の[ふりがな]がバイナリ型とかになってるんです。
これをテキスト型で作ってくれとか長整数型で、とかの指定が出来たらいいなぁと
668NAME IS NULL:05/03/16 16:25:15 ID:???
>>667
SELECT INTOでは無理。
669667:05/03/17 13:12:04 ID:fUFB04lR
"SELECT INTO "では無理でも他の表記SQLでは可能なんですか?
それともSQLで行うこと自体無理なんでしょうか?
670NAME IS NULL:05/03/17 13:36:49 ID:???
>>669
CREATE TABLE
ALTER TABLE
ならできる。
671NAME IS NULL:05/03/17 14:35:59 ID:kiGqwfxi
>659 です。
レスくれた人ども。
テーブルの分割といっても、新しいフィールド、データを追加するのに
新しいテーブルをつくるか、既存テーブルにフィール度を作るか
ということに近いので、>662 さんのやり方なのかなー。
ただ、別の新規テーブルにすると、>667の問題があるかも。
Null やめて、""を入れられないのかな。
672667:05/03/18 14:46:54 ID:Eh07hio+
>>670
あ、そーか

…でも、それは最初から決まったテーブルに決まったことを吐き出すといった
全体的な設計をたてておかないと辛いですね。

スパイラルのような開発には向いてないのかな、漏れのやり方が悪いのか…
673NAME IS NULL:05/03/18 15:02:53 ID:???
>>672
SQLを動的生成すりゃいいだろ。
念じるだけじゃシステムはできないんだからどこかには記述しなきゃ。
674NAME IS NULL:05/03/19 09:58:01 ID:???
なんかワロタ
675NAME IS NULL:2005/03/25(金) 14:59:35 ID:???
>>662
それはさすがに正規化したほうがいいのでは。

商品コード, 解説No, 解説文
1, 1, 新製品
1, 2, 軽くて丈夫
3, 1, ロングラン製品
4, 1, 新製品
4, 2, 超小型
4, 3, 大売出し中

こんな感じで。
676NAME IS NULL:2005/03/27(日) 01:03:09 ID:???
>>675
(・∀・)イイネー、イイネー、キレイダネー

そうですよね、こっちのテーブルもちゃんと形にしてやるべきですよね。
何かこの作業、初めから気持ちの中でテーブルに優劣つけてたようなところがありまして。
ああ、商品マスタが汚染されちゃう、みたいな感じで。
思いっきり手のばして生ゴミ鋏でつまみあげるような扱い方してました。
反省です。いまからでも手遅れじゃないんで直します
677NAME IS NULL:2005/03/31(木) 16:12:14 ID:???
Oracleに対してODBC経由でOpenDatabase()すると、
Database.TableDefsの件数が354件しか入りません。

実際は1700以上あり、手動でODBCのリンクテーブルの作成を行う際には
きちんと全てのテーブルが表示されています。

Access2003を使っています。
同じMDBをAccess2000で試したところ期待通りに動いているようです。

何か新しい制限でも加わったのでしょうか?
どの辺から調べていったらいいのかヒントだけでも思いつく方
いらっしゃらないでしょうか。
よろしくお願いします。
678NAME IS NULL:2005/04/04(月) 01:35:13 ID:K1ILMTjG
Accessってインデックスのアルゴリズムに何使っているのだ?
やっぱりBtree?
679NAME IS NULL:2005/04/07(木) 23:47:32 ID:iJRWnZzR
MDBファイルをVisualBaicをユーザーインタフェースにして複数(5,6台)のPCからADOやDAOで参照や書き込みを
したいです。VisualBaicの経験は数年ありますが、データベースを扱ったことがなく、全くの初心者です。
質問なのですが、偶然複数のPCから同じデータに対して更新を行った場合が当然想定されますが、
この場合は排他的にDBアクセスをするようにして、後からアクセスしようとした人には一瞬待たせるように
すればよいのでしょうか。
この際、排他的アクセス設定ってありますか。
後からアクセスした人は今ビジー中っていう戻り値を得られるのしょうか。

あと、ADOとDAOって簡単にいうとどう違うのでしょうか。

文章の意味不明かもしれませんがよろしくご教授願います。

680NAME IS NULL:2005/04/07(木) 23:59:27 ID:???
>>679
MSDEというものがあります。
Accessからでもある程度の管理はできます。
681NAME IS NULL:2005/04/08(金) 18:37:34 ID:???
>>679
DAO は Jetエンジン(MDB) 用に開発されたインタフェース
ADO はもっと汎用的なインターフェース

MDBで運用するならDAOがおすすめ。
MSDE等へ移行するならADOがおすすめ。

MDBというかJetの仕組み上、厳密な排他制御は難しいよ。
MSDE等のデータベースサーバへ移行すれば
排他制御はサーバ側に一任できる。
682NAME IS NULL:2005/04/08(金) 20:07:38 ID:2SnNUHgS
ODBCDirectフフフ…
683NAME IS NULL:2005/04/09(土) 00:09:20 ID:7RqO7iNX
>>680 >>681
貴重な回答どうもありがとうございます。
今日さっそくMSDEの調査を行い、MSDEの入手とインストール、あとサーバーの起動まで行いました。
その後、ACCESSを使ってADPファイルを作成せよということで、簡単なテーブルを作成するところまでできました。
明日、休日出勤して先に進めようと思いますが、再度質問があります。
このADPファイルを作成後、ADOオブジェクトを使って、このデータベースにSQLでアクセスすれば良いのでしょうか?
あと、顧客からは扱う情報が稼動後増えるかもしれないので、列情報を追加できると嬉しいとのことですが、
VBから既存のデータベースに列(要素)を追加することってできるのでしょうか?あと、データベース名だけ分かっていて
全ての列情報を取得するようなSQLってあるんですか?
今月いっぱいでデバッグまで完了させねばならず焦りと不安でいっぱいです。
684NAME IS NULL:2005/04/09(土) 07:18:20 ID:???
>>683
おいおい、一人でシステム構築やってんの?
2chに頼りながら使ったことのないDBMSで
一ヶ月でシステム完成なんて不可能だよ。
さっさと上司に相談して応援頼め。
685NAME IS NULL:2005/04/09(土) 08:19:58 ID:7RqO7iNX
>>684
そうなんです。
検査場で検査状況を参照、格納するDBです。(5〜6台のPCで)
もともとExcelの表で管理していたのを、DB化するもので、扱うテーブルはリレーショナルとか必要なく、
複雑なものでないです。指定したフィールドによる検索と、レコードの書き込みができれば良いです。
VBは結構経験有るので、今月中にサクっとできそうにも思えるのですが、どうでしょうか?

686NAME IS NULL:2005/04/09(土) 10:12:24 ID:???
>>685
> VBは結構経験有るので、今月中にサクっとできそうにも思えるのですが、どうでしょうか?
そう思うなら、2chなんか覗いてないでさっさと手を動かすことだ。
687681:2005/04/09(土) 10:54:59 ID:???
>>683
MSDEの場合は以下の方法でACCESSからクエリを投げれば実現できるよ。

--列を追加するにはこのSQL
ALTER TABLE テーブル名 ADD 列名 データ型

--DB名からテーブル名を取得するにはこれ。
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG = 'DB名'

--テーブル名から全ての列情報を取得するにはこのSQL
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'テーブル名'

ADPを使って素早く>>685の仕様を満たしたいのなら
ACCESSのウイザードで大まかな雛型を作って、それに
手を加えていく形で進めるのが早いと思うよ。
688NAME IS NULL:2005/04/09(土) 12:56:31 ID:???
689NAME IS NULL:2005/04/10(日) 00:47:23 ID:yLBu8JJ+
>>687
ありがとうございます。
クエリとかまだ勉強不足で知りませんでしたので、ネットに載っていたのをサンプルにして、
VBからADOとADOXを使って、テーブル名やフィールド名、フィールドのデータを取得することができました。
ただ、レコードの追加書き込みができませんでした。
これもネットのサンプルを見て、ADOのレコードセットを使って書き込みしたところ、処理はエラーが出ずに完了
するのですが、その後、ACCESSでADPプロジェクトを開いて、レコードが書き込まれているかを確認した
ところ書かれていませんでした。
ADPを開くと更新内容が見れないんでしょうか。それとも何らかの設定が足りなくて書き込まれないのでしょうか。
それからACCESSからクエリを投げるとのことですが、ACCESS側ではテーブルを作成するだけで、コードは
VB側で記述するものだと認識しているのですが、ACCESS側でもコードを記述する必要があるのでしょうか?
パフォーマンスを上げるのが目的ですか?素人過ぎて申し訳ありません。


690NAME IS NULL:2005/04/10(日) 02:00:08 ID:???
そもそも運用中にポコポコ列が増えるってどんな設計なんだ?4月分, 5月分とか増えていくとか?まさかね…
横じゃなくて縦に伸ばせるように仕様詰められないの?横に伸ばしたら最悪アプリの根っこから
作り直しになって( xДx)ウボァーナリヨ。
691NAME IS NULL:2005/04/10(日) 02:10:47 ID:???
テーブルだけ項目増やしてもどうにもならんと思うけど。
項目増やした後はデータを手メンテするの?
692NAME IS NULL:2005/04/10(日) 02:39:21 ID:???
テーブルAにa1、テーブルBに b1というフィールドがあるとします。
b1内のどの値とも一致しないa1を持つレコードを
テーブルAから抽出するにはどうすればいいでしょうか。
ただいま入門書を見て考えていますが、頭が爆発しそうです。
693NAME IS NULL:2005/04/10(日) 03:38:32 ID:???
>>692
クエリのデザインビューにテーブルAとテーブルBを並べる
フィールドの選択は、テーブルAからお好みでいくつか、あとテーブルB.b1
テーブルA.a1とテーブルB.b1をマウスでちょろっと結ぶ
出来た結合線にマウスカーソルを当てて右クリックする
結合プロパティ設定で、結合線の形を、テーブルA.a1 → テーブルB.b1 みたいな矢印形にする
テーブルB.b1フィールドの抽出条件 Is Null

これだけ読んで分からなかったら、↓の文を、クエリのSQLビューに貼り付け

SELECT テーブルA.*
FROM テーブルA LEFT JOIN テーブルB ON テーブルA.a1 = テーブルB.b1
WHERE テーブルB.b1 Is Null
694NAME IS NULL:2005/04/10(日) 04:04:55 ID:???
SELECT *
FROM テーブルA
WHERE a1 NOT IN ( SELECT Distinct(b1) FROM テーブルB );
695NAME IS NULL:2005/04/11(月) 23:31:28 ID:H2OCR0rb
SQL文で文字列フィールドにおける、重複を無くした全データ
を取得(Excelでいうとオートフィルタ)する記述が分かりません。
どなたか教えていただけないでしょうか。
696NAME IS NULL:2005/04/11(月) 23:49:12 ID:???
distinct でも group by でも好きにしたら良かろう
697hmmt132084.catv.ppp.infoweb.ne.jp:2005/04/11(月) 23:53:19 ID:???
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??
698http:// 218.231.163.228.eo.eaccess.ne.jp/~ss.jpg:2005/04/12(火) 00:14:55 ID:???
ええけつしとるのぉ(*´Д`)ハァハァ



うはっwwwおkwww??
699http:// YahooBB218123232154.bbtec.net/~ss.jpg:2005/04/12(火) 00:15:49 ID:???
ええけつしとるのぉ(*´Д`)ハァハァ



うはっwwwおkwww??
700NAME IS NULL:2005/04/13(水) 16:36:04 ID:RJ6cm4WZ
Access2000を使っています。
テーブルのデータを元に、「単票フォーム」で
売上明細を出しているのですが。

例えば「得意先」「日付」をグループ化して、
フォームを下のようにレイアウトした場合、

売 上 プラス マイナス 合計
振込料 プラス マイナス 合計
手数料 プラス マイナス 合計
運送料 プラス マイナス 合計
値 引 プラス マイナス 合計
返 品 プラス マイナス 合計

と項目が続くとして、合計を出す時は「合計」欄に

=[売 上プラス]-[売 上マイナス]
=[振込料プラス]-[振込料マイナス]
=[手数料プラス]-[手数料マイナス]
=[運送料プラス]-[運送料マイナス]
=[値 引プラス]-[値 引マイナス]
=[返 品プラス]-[返 品マイナス]

というように、それぞれ数式を手動で入れています。
これをエクセルの「形式を選択して貼り付け」のように
一括して数式を入れる方法はないでしょうか?

クエリを先に作る方法でも同じようにひとつひとつ
数式を入れていますが、この場合でも、計算が多いと
数式を入れるのがとても大変なので。

VBAを使うとか、そもそもが何か間違えているのでしょうか?
ちなみに、帳票フォームだと項目が多くて入りきりませんでした。
701http:// FLH1Abk223.kng.mesh.ad.jp/~ss.jpg:2005/04/13(水) 18:11:28 ID:???
ええけつしとるのぉ(*´Д`)ハァハァ



うはっwwwおkwww??
702flets-a-west-7-217.dsn.jp:2005/04/13(水) 18:17:37 ID:???
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??
703NAME IS NULL:2005/04/13(水) 20:12:11 ID:???
ひょっとして「売上プラス」と「売上マイナス」は別の項目なのか?
704700:2005/04/13(水) 22:28:58 ID:Vnbo6rp/
>>703
別の項目で、それぞれに入力されたデータがあります。

普通はプラスマイナスはいらないんでしょうが、業種が特別だからか、
元々入る予定の金額「プラス」に、日割等で減った場合の「マイナス」を
引いた金額を出す必要があるもので。

例)売上・・・基本9000円 日割-900円 合計8100円 =本日の売上

この基本の「プラス」から「マイナス」を引く計算式を、項目ごとの
日ごと、月ごと、年ごと・・・とくり返し作るのも大変なので、
エクセルの貼り付けのように簡単に出来ないものかと思ったわけです。
705NAME IS NULL:2005/04/14(木) 19:23:08 ID:k9RzpyUm
PHP から下記のinsertを行おうとすると構文エラーになってしまう。なんで?

INSERT INTO Note(Note1) VALUES('アメリカ')

Note は実在するテーブルで、データベースへの接続は事前にできている。
Note1 はメモ型
706NAME IS NULL:2005/04/15(金) 10:37:44 ID:???
>>705
予約語ってやつ。
NOTE ってのは JETエンジンに於いてはMEMO(LONGTEXT)型の別名だから、
テーブル名に使っちゃいけないんだと思うよ。
707705:2005/04/15(金) 11:54:38 ID:zPmPcQUp
>>706
ありがと、スゲー助かった。
708muro c119201.tctv.ne.jp/:2005/04/15(金) 14:05:26 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
709muro gf9.opt2.point.ne.jp/:2005/04/15(金) 19:04:29 ID:???
え     っ     る     ハ     
  ぇ     し     の    ァ ハ  
    け     と     ぉ     ァ 
うはっwww夢がひろがりんぐwwwwww   
710NAME IS NULL:2005/04/17(日) 00:30:49 ID:???
Accessに詳しい方が大勢いらっしゃるようなので、質問させていた
だきます〜!
ご存知でしたらレスお願いします!(^0^)

いまAccessにOracleのテーブルをリンクさせています。
OracleではCHAR(1)のデータ型になっていて、1又は半角スペース
のデータが入っているのですが、AccessにリンクさせたOracleテー
ブルを開くと1はそのままで、半角スペースの入っているハズのとこ
ろがNULL値(?)になってしまいます。
これはAccessの仕様によるものなのでしょうか?
OracleのCHAR(1)の半角スペースはなくなっちゃうんでしょうか??
711NAME IS NULL:2005/04/17(日) 01:16:55 ID:???
>>710
リンクをやめてインポートしてみたら?
オラクルはさわったこともないから想像で書いているが・・
712NAME IS NULL:2005/04/17(日) 11:28:53 ID:???
>>711
ありがトン!
試してみる!!(^0^)
713NAME IS NULL:2005/04/18(月) 16:05:03 ID:???
AccessdeでのクエリはオラクルでいうView(仮想表)に相当するのでしょうか?
714NAME IS NULL:2005/04/18(月) 20:46:18 ID:???
トリガーの場合もある
715NAME IS NULL:2005/04/19(火) 15:33:21 ID:A7BzLndY
トリガーの例くあしく
Accessクエリは基本的にSelectしか出来ないと思ったけど
716NAME IS NULL:2005/04/19(火) 16:12:20 ID:???
アクションクエリのことじゃないか?
717NAME IS NULL:2005/04/19(火) 21:57:19 ID:???
>716
それもトリガーじゃないが。

>715
INSERTやDELETEは?
718NAME IS NULL:2005/04/19(火) 23:03:47 ID:???
710ですが...
OracleのCHAR(1)の半角スペースはAccessにリンクしても、残ってた。
NULL値になったというのはモレの勘違い。
>>711
アドバイスくれたのにゴメン。煎ってくる。
719NAME IS NULL:2005/04/19(火) 23:29:10 ID:???
>>718
試しにリンクしたテーブルにACCESSから半角スペースを入れてみろ
720710:2005/04/21(木) 22:01:19 ID:???
>>719
設定でACCESSからORACLEにデータを追加できない
ようにしてるから、半角スペース入れてみれないんだ。
(・ω・)
721NAME IS NULL:2005/04/23(土) 23:56:09 ID:37o/jpJa
ACCESSは、ストアドプロシージャー使えますか?
722NAME IS NULL:2005/04/24(日) 00:52:26 ID:???
使えますよ?
723NAME IS NULL:2005/04/24(日) 01:04:06 ID:9bSnXZZL
>>722
どうすればSPが使えるのでしょうか?
ご教示ください。
724NAME IS NULL:2005/04/24(日) 01:10:31 ID:???
アクションクエリとVBA
725NAME IS NULL:2005/04/24(日) 21:17:24 ID:???
adpでいいじゃん
726NAME IS NULL:2005/04/25(月) 08:23:55 ID:???
そう思う
727NAME IS NULL:2005/04/25(月) 14:29:06 ID:???
入力規則について皆さんのご意見を。
ヘルプでは、Is Nullを追加しないとNullはNGのような記載があります。例えば、テーブルのある
数値フィールドに既定値0, 入力規則 Between 0 And 9 とした場合、入力時に既定値の0をDEL
してNullにするとエラーですよね?
95, 97とそうだったし2000もそのはずなのですが、最近のAccess2000ではNullにしてもエラーに
ならないんです。MDBが壊れてるわけではありません。新規MDBでテストしても同様の結果です。
フォームのコントロールに同様の入力規則をセットした場合は、Nullでエラーになってくれるので
今はその対応で回避しています。
皆さんの場合はどうですか(2002, 2003の話でもいいです)?
スレ違いなら誘導を、またMSの技術情報があればそのURLを教えて下さい(結構、検索しました)。
728NAME IS NULL:2005/04/25(月) 19:53:33 ID:???
>>727
2003でもNull入力でエラーにならないYO
エンジンの挙動が変わったのかもしれないね。

というかJETに限らずnullが入る必要のないフィールドには
nullを許さない設定をすべきだと思うよ。
明示的に設定しておけばバージョンアップに伴う挙動の
変化に悩まなくて済むんじゃね?
729727:2005/04/25(月) 23:35:31 ID:???
>>728
そうですか。2003でも。
「nullを許さない設定」:確かにそれもそうなのですが、入力規則に反してますよ
のエラーで統一したい場合もあるんで・・・特に95から2000へシステムを移行し
たユーザーなんかは、何でメッセージが違うんだとこだわる場合もあるので。
MSのアナウンスはないんですかね。
730NAME IS NULL:2005/04/26(火) 00:41:30 ID:???
>>729
2003のヘルプにも入力規則のあるフィールドにnullはNGって記述があるね。
実際は入力出来るけども。

入力規則も、それに伴うエラーメッセージの統一もプレゼンテーション層で行うべきだと思うよ。
フォームの段階でエラーをハンドリングすれば「入力規則に反してますよのエラーで統一」が
実現可能なんじゃないの。
DB層に入力規則の考えを持ち込むと設計がややこしくなると思うけど。俺だけかもw
731727:2005/04/26(火) 15:55:04 ID:???
>>730
その何とか層ってちょっと敬遠。ネットワークの時だけにしてくれ〜みたいな。
今のところは、フォームのコントロールに入力規則をセットすることでNullをはじい
てくれるので、「フォームの段階でエラーをハンドリング」とほぼ同様っすね。
エラーのハンドリングとその後のメッセージ表示は、関数を作ってるので一般的な
エラーはユーザーにわかりやすいメッセージ表示にしてます。
これ以外で、特定のエラー番号を判断してロジックを増やしたりしたくないというの
もあります。たかが数行って思ってるとそれがドンドン増えますし、バグの元なので。
なので、極力プログラミングしないで済む設定は利用したい、だけどヘルプと異な
る動作なのにMSには何の情報も無し、ってことで書き込みしてみました。
検索が下手で見つけられないとしたら、どなたか知ってる方がいるのかなと。
732NAME IS NULL:2005/04/26(火) 18:11:25 ID:???
DB に制約をつけないと AP 拡張時に無効な値をはじく処理をいれ忘れ、
ほどよく取り返しが付かなくなった頃に問題が表面化して
「仕様に書いた」 - 「なぜ制約で予防しなかった」と不毛な言い合いに
なって雰囲気が悪くなり、顧客も技術者も去っていくバッドエンドに
733730:2005/04/26(火) 22:24:03 ID:???
>>731
その意見はよくわかる。「凝ったことはしない」はバグ発生の最小化に関して原則だもんね。
MS謹製の付属ヘルプの記載と挙動には食い違いがあることだし、インシデントを保有してるなら
この際MSに直接聞いてみては?
http://support.microsoft.com/oas/default.aspx?&c1=505&gprid=1265&
734NAME IS NULL:2005/04/27(水) 09:34:33 ID:???
>>732
エラー処理って共通化しないのか?
735731:2005/04/27(水) 12:25:32 ID:MJ6t39XR
>>733
ほどよくインシデントの有効期限切れ。今まで.Net C#のWEB開発やってて、このおまけで
MSDNに入ったもので。零細企業の開発なめてる社長が、Accessごときにサポートの金が
必要かぁってなると思うので、インシデントは手に入らないっすね。
736NAME IS NULL:2005/04/28(木) 00:54:54 ID:???
>734
エラー処理以前に、変なデータ突っ込んだらそのまま入ってしまうことが問題なんじゃ?
こっち向きの話題っぽいけど。
制約っていらなくね?
http://pc8.2ch.net/test/read.cgi/db/1087483786/
737NAME IS NULL:2005/04/28(木) 13:32:56 ID:/B8UlL+2
質問です!どなたかご教授お願いします!
因みに初心者です。

ACCESSでODBCの呼び出しに失敗しました。
と出て一向に進みません。
タイムアウトかな?と思い、600秒にしたのですが、
どうやら関係ないようです。
どうしたらよいのでしょうか・・・。
テーブルのリンクもきちんとやっているつもりなのですが。
他に何が考えられますか??
738NAME IS NULL:2005/04/28(木) 14:31:15 ID:???
>>737
リンク先の構造が変わったんだよ。
739710:2005/04/28(木) 22:55:54 ID:???
>>737
ODBCタイムアウトを0にしてみては?
740NAME IS NULL:2005/04/29(金) 05:51:33 ID:4fvTKMgs
超初心者なのですが、教えてください!!
a b c d
x 0 1 0 0
y 1 1 0 1
z 0 1 1 0
というエクセルの表があったとして、これを
x a 0
x b 1
x c 0
x d 0
y a 1
y b 1
y c 0
y d 1
z a 0
z b 1
z c 1
z d 0
とアクセスに格納したいのですが、やり方がさっぱりわからず困っています。
ほんとに初心者の初心者ですみません!
聞き方もわからないので、こういう質問しかできませんが、
どなたかご親切な方、ご教授お願いします!
741NAME IS NULL:2005/04/30(土) 10:33:36 ID:???
>>740
VBAでプログラムを組むのが簡単だね。初心者というのは免罪符にはならない。
表だったら項目がどうなってるか(セルの区切りとか)を含め、もう少し表現方法を
考えて質問してよ。
742NAME IS NULL:2005/04/30(土) 16:54:18 ID:???
元表(Tbl0)の横がa, b, c, d の四つだけと言い切れるならなら、下の追加クエリ4回繰り返しでいけるけど、
いくつになるか分からないなら素直にVBAでレコードセット開くのが吉

CurrentProject.Connection.Execute "INSERT INTO Tbl1 ( xyz, abcd, Suji ) SELECT Tbl0.xyz, 'a' AS FldA, Tbl0.a AS ValueA FROM Tbl0"
CurrentProject.Connection.Execute "INSERT INTO Tbl1 ( xyz, abcd, Suji ) SELECT Tbl0.xyz, 'b' AS FldB, Tbl0.b AS ValueB FROM Tbl0"
CurrentProject.Connection.Execute "INSERT INTO Tbl1 ( xyz, abcd, Suji ) SELECT Tbl0.xyz, 'c' AS FldC, Tbl0.c AS ValueC FROM Tbl0"
CurrentProject.Connection.Execute "INSERT INTO Tbl1 ( xyz, abcd, Suji ) SELECT Tbl0.xyz, 'd' AS FldD, Tbl0.d AS ValueD FROM Tbl0"
743NAME IS NULL:2005/05/01(日) 00:19:22 ID:xD+Epexd
ACCESS2000を利用して、こんなことできるでしょうか?
教えて下さい。

T_Materテーブル(日付、場所、気温)について、
場所ごとにテーブルを作成して、日付を気温を格納したいのです。(T_A, T_B..)
場所の数が多く、T_Masterのデータが増えていくため、一つづつ手作業で
分けていく訳にもいかないので、なんとか自動化したいのですが、見当がつかず..
よろしくお願いします。

T_Master(テーブル)
日付 場所 気温
1月1日 A  10
1月1日 B  5
1月1日 C  11
1月2日 A  12
1月2日 B  6
1月2日 C  15


T_A(テーブル)
日付  気温
1月1日  10
1月2日  12

T_B(テーブル)
日付  気温
1月1日  5
1月2日  6
744NAME IS NULL:2005/05/01(日) 01:44:50 ID:???
>>743
Select 日付, 気温 From T_Master Where 場所 = [何処なの?]
745NAME IS NULL:2005/05/01(日) 15:36:46 ID:???
>>743
SELECT DISTINCT 場所 FROM T_Master
で出てくるレコードを上から順に舐めながらその場所の内容を使ったテーブルを作っていく

作成テーブル名="T_" & [場所]
SELECT 日付, 気温 INTO 作成テーブル名 FROM T_Master WHERE 場所 = [場所]

これを1つ目のレコード数分ループさせればいいだけでは?
746NAME IS NULL:2005/05/01(日) 23:19:19 ID:yd6yI+wg
>>743
入力の仕方や、後からの参照の仕方は別に考えるとして
データのため方はそのまんまの方がいいんじゃないかと

たとえば「場所」が100000ヶ所ぐらいあるとしても、そのままで
まったく無問題のはず

後からの参照の仕方については>>744の形でOKと思う。

入力の仕方については、やり方いっぱいありすぎ面白すぎで、
一口では語れない。ある意味腕のみせどころ
747NAME IS NULL:2005/05/01(日) 23:20:04 ID:???
ごめん、あげちゃって
748NAME IS NULL:2005/05/02(月) 01:19:55 ID:CCd6APdi
高校1、2年てアクセスやってたけどさっっぱりだった。全然わからん。クソ。しね。全然わからんしね。クソ
749NAME IS NULL:2005/05/02(月) 01:59:52 ID:???
>>748
わからないということは
今の君にはAccessは必要じゃないということさ。
人間、必要に迫られれば何でもやるもんさ。
750NAME IS NULL:2005/05/02(月) 17:06:51 ID:???
むしろ>748がAccessに必要とされていない
751NAME IS NULL:2005/05/03(火) 23:30:55 ID:???
752743:2005/05/04(水) 18:29:54 ID:???
>744-746
ありがとうございます。
テーブルをバラすことばかり考えてました。
これからいろいろ試してみます。
753NAME IS NULL:2005/05/04(水) 23:39:14 ID:???
>>751
どのウィザードかわからないと何とも言えないが、MSが
信用ならんのは確かだ。それにしても、そのスレはレベ
ルが低いのぉ。
754NAME IS NULL:2005/05/05(木) 12:18:45 ID:???
>>753
フォームのコマンドボタンウィザートで「フォームを開く」を指定したときのことかな?

Private Sub コマンド0_Click()
On Error GoTo Err_コマンド0_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "hoge"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_コマンド0_Click:
Exit Sub

Err_コマンド0_Click:
MsgBox Err.DescRiption
Resume Exit_コマンド0_Click

End Sub

開くフォームが初期化されていない文字列を引数として処理しようとするため
実行環境によってはフォームが開かなかったり、Access自体が異常終了する。

割と有名な話だと思うけど
755NAME IS NULL:2005/05/05(木) 13:46:36 ID:???
basicて初期化いるの?
756753:2005/05/05(木) 21:31:07 ID:???
>>754
へぇ〜、知らなかった。ウィザードは一切使用しないもんで。

>>755
basicでもCでも暗黙に初期化はされてるが、明示的に初期
化処理をした方がプログラムが見やすいと思うが、好みの
問題でもあるよね。
757NAME IS NULL:2005/05/05(木) 23:40:45 ID:???
>>756
Cの暗黙の初期化って・・
758NAME IS NULL:2005/05/06(金) 17:33:39 ID:???
staticなときだけでしょ。>>初期化

局所変数(Accessでいうプロシージャ変数)はプロシージャ(関数)
にエントリーするときにスタック上に領域をとる。
実際にはスタックポインタを変数のサイズ分だけ調整するだけなんで
プロシージャ変数は初期化されていないと見るのが妥当だと思う。

759756:2005/05/07(土) 01:42:53 ID:???
>>758
あ〜ごめんなさい。全くの説明不足を補って頂いてありがとう。
ちなみにAccessの場合は、プロシージャレベルの変数でも初
期化されてます。自分は、こういうのって嫌いですけど。

C++/C#ではどうだったっけと余計なことまで気になってしまっ
たが、調べるのもメンドイ。目の前のマシンにはインストールし
てないし。
760NAME IS NULL:2005/05/07(土) 12:33:15 ID:???
>>759
> C++/C#ではどうだったっけと余計なことまで気になってしまっ
> たが、調べるのもメンドイ。

知らないんだったら書かなきゃいいのに…。
761759:2005/05/07(土) 23:35:56 ID:???
知らないんじゃなくて、忘れたというか気にして使ってないから
どうだったろうと気になっただけだよ。
いちいち絡むなオタク!!
762NAME IS NULL:2005/05/08(日) 00:07:15 ID:???
>>761
ずいぶん偉そうだな。
>>756 で「Cでも暗黙に初期化はされてるが」と恥さらしたこと忘れたのか ? (ププッ
763NAME IS NULL:2005/05/08(日) 00:29:10 ID:???
たぶん、アンタよりは偉い人なんじゃないの。
764NAME IS NULL:2005/05/11(水) 11:17:09 ID:Fc6Gv+7F
クエリでカラム名からテーブル名の修飾をはずすには別名つければいいはず。
でも、あるカラムだけ別名つけると値が表示されなくなり、
フォームからも参照できなくなってます。

元々、同じクエリ内の他のカラムにはテーブル名の修飾はないんだよね。
でも、このカラムだけ修飾があって、しかも取れない。
なんで?
765NAME IS NULL:2005/05/11(水) 11:31:07 ID:???
>>764
そのクエリをここに書かないと話が進まんと思うが
766764:2005/05/11(水) 11:38:48 ID:Fc6Gv+7F
いや、そうは思ったんだけどUNIONを2回使ったりしていて、
ここに正確に書くのはちょっと難しいんだよね。

今、試しに元のカラム名と違う別名つけたらテーブル名の修飾は外せた。
でも、プログラムの都合でできれば元のカラム名と同じにしたいんだけどなぁ。

これと同じような現象って遭遇した人います?
767NAME IS NULL:2005/05/11(水) 15:29:00 ID:Pb6wdUxV
>>766
テーブル名の修飾を外すって、 SELECT T_A.F1 FROM T_A の T_A.F1 → F1 にしたいって
こと? オレ、何か変な解釈してるかな・・・。
FROM で結合してテーブルがあるなら、その全てのテーブルのフィールドで重複してなけれ
ば、単に修飾部分を削除するだけじゃないの?

何故おかしいのかってのは同じ経験者がいない限り、SQLをカキコしてくれないことには見当
がつかんですよ。
768NAME IS NULL:2005/05/11(水) 16:43:51 ID:???
>>766
結合してる他のテーブルに同じフィールド名が存在するから。
サブクエリでそっちのテーブルからそのフィールドを隠せば解決。
769NAME IS NULL:2005/05/11(水) 18:42:18 ID:???
だとしたら、UNIONに更にサブクエリってデータ量やインデックスにも左右されるだろうけど、
処理速度への影響を考慮して素直に別名を変えた方が良くないかなぁ。
770NAME IS NULL:2005/05/14(土) 15:00:07 ID:foJtGv0G
グラフの機能について教えていただきたいです。
ピボットグラフで棒グラフを作成しましたが、
グラフにマーカーを表示させられません。
どうやったらいいんでしょうか??
「できる」には判例のだし方とかは載ってるんですが
マーカーについては触れられてませんでした。。。
771NAME IS NULL:2005/05/15(日) 22:40:03 ID:yNPjHIPr
クエリではないのですが、質問させてくださいm(_ _)m
Access2003で構築されてるシステムに機能追加して
Soap通信をさせたいのですが、そのままで可能か、
あるいはこれこれの方法で可能、というところを教えていただきたくm(_ _)m
ちなみにAcessシステム側ので、Soapリスナ&クライアント、両方の機能が必要になりそうです。
772>711:2005/05/15(日) 22:46:00 ID:0BKeCLiE
IIS入れて.NETすればいいんじゃないの?
そもそもACCESSはスタンドアローンでパーソナル向け
DBなんだから、そういう用途に使うこと自体問題だよね。
IISを入れられない理由は何?
773771:2005/05/16(月) 00:48:16 ID:MrYz/AtZ
>>772さん
早々とレスThxです。
IISを入れられないのではなく、すでにAccessで膨大なシステム
(規模は大きいけど同時利用者数はすくないのでAccessにしたみたい)が構築されてて、
その膨大なAccess資産を捨てられないのです。
Soapを使用するのはホンの一部であり、そのためにAccess→.NETで作り直し、なんて
とても出来ません。(開発費が100倍くらいに跳ね上がる)
で、Access2003に何かアドインすれば、Soap通信できるものなのか
(もっとありていにいえばAccess2003のプロシジャで直接Soap通信&XML解析するには
 如何にすればいいか)を調べておるのです
774NAME IS NULL:2005/05/16(月) 10:46:35 ID:???
>>773
BASP21のソケットオブジェクトは?
775NAME IS NULL:2005/05/16(月) 10:50:29 ID:???
あとは Office 2003 Web Services Toolkit (Microsoft Office SOAP 3.0) とか。
http://www.microsoft.com/japan/msdn/office/wst2003/odc_WSTKNew.asp
776773:2005/05/16(月) 23:10:02 ID:INfAfmB9
>>774-775
ども、ありがとうございます!
教えていただいたキーワードを基に、色々調べてみますm(_ _)m ペコ
777NAME IS NULL:2005/05/18(水) 12:33:11 ID:RgsqjMIN
マクロさえわかんね・・・
まず、どこからどうやって勉強するか教えてください。
778NAME IS NULL:2005/05/18(水) 12:40:06 ID:???
ぐぐることから覚えれ
779NAME IS NULL:2005/05/18(水) 21:16:00 ID:gEJnbWTP
MDEからMDB作った人いませんか?
780NAME IS NULL:2005/05/18(水) 22:00:41 ID:???
>>457
何の意味があるの?
781NAME IS NULL:2005/05/18(水) 22:07:50 ID:???
457 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2005/05/12(木) 23:38:32
MDEからMDB作った人いませんか?

460 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2005/05/13(金) 02:09:11
>>457
何の意味があるの?

475 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2005/05/16(月) 00:54:00
MDEからフォームとレポートを抽出できませんか?

476 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2005/05/16(月) 00:59:37
>>475
できません

以上
782NAME IS NULL:2005/05/19(木) 11:56:12 ID:nYUwVr4E
フォームで、レコードセレクタの位置を示す関数は何ですか?
またその値は何をつかえばいいのか。。。
(カレントレコードorアクティブレコードを指す関数が分かればいいのかも)
同じフォームに戻ってきたとき、また同じ位置にあるようにしたいのですが。
783NAME IS NULL:2005/05/19(木) 12:52:29 ID:???
>>782
Bookmarkとか?
784NAME IS NULL:2005/05/19(木) 13:11:02 ID:???
主キーでfindかけるのが一番確実かも。
785NAME IS NULL:2005/05/19(木) 15:27:31 ID:???
「主キーに設定しますか?」
「しゅきにして」
786NAME IS NULL:2005/05/19(木) 15:32:57 ID:???
山田くーん、>>785の生爪2枚取んなさい。
787NAME IS NULL:2005/05/19(木) 16:40:30 ID:???
フォームを閉じたりするとBookmarkは変わるので使えません。
となると、主キーかそれにかわる一意なデータでFindだね。
788782:2005/05/19(木) 21:07:00 ID:???
やってみます
ありがとうございましたペコリ
789NAME IS NULL:2005/05/20(金) 02:20:35 ID:???
プレビューでページ毎に違うページ設定にできるかな?
組帳票で用紙サイズが違うんだけれども。
調べたけど中々見つからない
790NAME IS NULL:2005/05/20(金) 13:32:56 ID:???
>>789
素直にレポート分ける方が簡単だと思う
マクロかVBAでまとめて打ち出すのを作っておけばいいだけじゃん
791なな士さん:2005/05/21(土) 21:38:43 ID:???
/ / }
           _/ノ.. /、
           /  <   }
      ry、     {k_ _/`;,  ノノ パンパンパンパン
    / / }      ;'     `i、 
   _/ノ../、   _/ 入/ /   `ヽ, ノノ
  / r;ァ  }''i" ̄.   ̄r'_ノ"'ヽ.i   ) ―☆
 {k_ _/,,.'  ;.  :.      l、  ノ  
    \ `  、  ,i.    .:, :, ' / / \
     ,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/   ☆

【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
792NAME IS NULL:2005/05/22(日) 00:47:50 ID:iYdOfrno
ACCESS2003で、ODBCを介して、SYBASEのテーブルにリンクを張ろうとしています。
テーブルのリンクを張る際、USERIDとパスワードの入力を求められますが、
パスワードを保存する、というチェックをしておかないと、次回以降、
テーブルオープン時(VBA上でselect時)に毎回パスワードを聞かれてしまいます。
このパスワード入力をVBA上で埋め込む実装はどのようにすればよいですか。
プロパティの変更ではなく、テーブル接続時のパラメータのような感じで
実装したく思っています。
793NAME IS NULL:2005/05/22(日) 11:03:00 ID:???
>>792
VBAでデータベースOPEN時のDSN文字列にPASSWORD書く欄あるから、そこに書いておけば
以降はテーブル開ける度に必要になる事は無いハズ。
794NAME IS NULL:2005/05/22(日) 13:37:44 ID:9+eG6gvI
OracleとODBC接続すると、テーブルのデータが全部#Deletedとなるんですが、、、
Access2003使ってます。

何かの参考書に、「主キーがNumberだとそうなる」とあったんですが
varcharにしてもなるんですが、、

AccessからODBC接続すること自体が間違いなんでしょうか?
795NAME IS NULL:2005/05/23(月) 04:11:50 ID:???
エクセルソフトという会社のAccess converterというソフトがあるんですが、
内容はAccessをJavaへ変換するというものです。
興味があるんですが、使ってみた方はいらっしゃいませんか。
レポートお願いします。
796NAME IS NULL:2005/05/23(月) 11:20:15 ID:???
>>795
体験版がDLできるはず。自分で使って皆歳
797NAME IS NULL:2005/05/23(月) 22:39:26 ID:???
>>793
情報ありがとうございます。
以下のようにコーディングしてみました。

Dim cn As New ADODB.Connection
Dim ca As New ADOX.Catalog
Dim rs As New ADODB.Recordset
Dim ms As String
Dim tb As ADOX.Table

Set ca.ActiveConnection = CurrentProject.Connection

For Each tb In ca.Tables
If tb.Name = "TABLE_A" Then
ms = "ODBC;DSN=DSN名;NA=IPアドレス,ポート;"
ms = ms & "DB=DB名;UID=ユーザ;PWD=パスワード;TABLE=TABLE_A"
tb.Properties("Jet OLEDB:Link Provider String") = ms
End If
Next

これでうまくいきました。ただ、ディレクトリを読み取り専用にしたら
やっぱりうまくいきません。プロパティの変更を伴わず、パスワードを
渡せる方法はありますでしょうか。
798NAME IS NULL:2005/05/25(水) 11:26:20 ID:???
>>797
接続時のパラメータ、これ=プロパティなので変更無しでという要望は無理でしょう。
ディレクトリを読み取り専用って、どこのディレクトリの話? ldbファイルを作成する
関係上読み取り専用はあまりよくないぞ。
それと、VBAで埋め込み実装するくらいなら最初のリンク時にパスワードの保存をし
た方が楽じゃないか?
結局そのテーブルにアクセスする時に誰彼構わずOKなんだから。
799NAME IS NULL:2005/05/27(金) 09:39:35 ID:gkDE1xQN
教えて下さい 受注テーブルを作りました
クエリーで《今日から八日後迄の受注データを抜き出しなさい》
というクエリーはどうしたらいいのでしょう?初心者ですいません。
800NAME IS NULL:2005/05/27(金) 09:59:59 ID:???
>>799
DATE関数で本日の日付を取得できる
801NAME IS NULL:2005/05/27(金) 12:19:14 ID:???
>>799
DATEADD関数で○日後(前)の日付を取得できる。

んでも8日「後」までの受注データってあるのか?
先取りで受注日を入れるシステムなのか?
802NAME IS NULL:2005/05/28(土) 00:27:32 ID:???
>>801
あらかじめ内示オーダー情報があって、
客先へ出荷する○日前に
確定オーダー情報に変更するとかってシステムでは?
内示オーダーが確定オーダーに変更される日 = 受注日みたいな。

まあ、799さんの言う8日後ってのが
受注日だとは限らないわけですけど。
803NAME IS NULL:2005/05/28(土) 01:13:14 ID:A/wqnLTQ
>>800,801,802さん ありがとうございます。
すみません説明が足りませんでした。正確には
“配送指定日の日付が本日から8日後迄のデータを抜き出しなさい”です。
申し訳ないです。宜しくお願いします。
804NAME IS NULL:2005/05/28(土) 02:24:06 ID:???
>>803
DATE関数で本日の日付を取得できる
DATEADD関数で○日後(前)の日付を取得できる。
805NAME IS NULL:2005/05/28(土) 07:32:34 ID:???
>>803

>>804+between
806NAME IS NULL:2005/05/28(土) 21:03:39 ID:A/wqnLTQ
>>804 >>805さん ありがとうございました
807NAME IS NULL:2005/06/03(金) 13:17:55 ID:dup57AmK
>>805さん すみません
実際の式を教えてください
808805:2005/06/03(金) 14:11:57 ID:???
809807:2005/06/03(金) 20:51:00 ID:CmRNI67d
>>808
ウルセー!>馬鹿
810805:2005/06/03(金) 21:25:37 ID:1DstjNva
>>809
なんだとー!>ぷんすかぽんっ!
811NAME IS NULL:2005/06/04(土) 13:31:40 ID:???
マジで調べることをしないのなら、Access使うのやめな。
812NAME IS NULL:2005/06/04(土) 14:12:19 ID:???
きっと携帯で2ch見てるオフラインユーザーなんだろう。そうに違いない。それ以外ありえない。
813NAME IS NULL:2005/06/06(月) 12:59:39 ID:???
選択クエリファイル(?)のSQL文をフォーム上のVBAで作成したSQL文と丸々置き換えしたいんですが、
良い方法はないでしょうか?


理由は、クエリAを元にして作ったクエリBを使っているフォームがあるのですが、
抽出条件を多様にしたいため変数を使ってクエリAのSQL文を作ろうと思っています。
しかし、問題になるのがそのクエリAを元にしているクエリBで、
SELECT クエリA.*
FRM クエリA LEFT JOIN 〜
となっているため、VBで作ったSQL文を元にクエリBのようなSQL文をどのように書けばいいのか分かりません。
そこで元々のクエリAのSQL文を丸々置き換えすればいいじゃないかと思ったのですが、
……もっとスマートなやり方があればそちらを教えてくださいorz
814NAME IS NULL:2005/06/06(月) 13:12:27 ID:???
>>813
From にクエリAのSELECTを埋め込んで別名をつけ・・・という方法もある。
とりあえずは今のままで割と簡単に対応するとしたら、クエリAのSQLをVBA
で作成し、クエリAのSQLを書き換えてしまえばいい。QueryDefとSQLプロパ
ティを使えばできるだろ。

815NAME IS NULL:2005/06/06(月) 14:27:55 ID:???
>>814
別名付けて成功しました。thx
816NAME IS NULL:2005/06/07(火) 19:44:54 ID:???
リンクテーブルのとあるフィールドに、こちらのAccess側でだけインデックスをもたせることはできないでしょうか?
むこうのデータを使用して集計しようとすると遅くて遅くて困ってます。
817NAME IS NULL:2005/06/07(火) 20:06:40 ID:???
>>816
ALTER TABLE
818NAME IS NULL:2005/06/07(火) 20:11:24 ID:???
>>816
リンクしたテーブルをデザインで見るとわかるが、インデックスの部分は
保存不可なので無理です。JETで外部インデックスってなかったと思うし。
集計するためのSQLが複雑だったり、クエリのクエリや外部結合などボト
ルネックになる部分を徹底的に削るしかないんじゃない。
そのためには、ダミーのMDBやテーブルを使ってこれに必要なデータを
追加して。で、これはAccessだからインデックスつけられるっしょ。
そこまでする必要性がない集計で遅いのであれば、お手上げですが。
819NAME IS NULL:2005/06/07(火) 22:46:48 ID:???
>>816
間違えたこっちだった。
"create unique index <インデックス名> on <テーブル名(フィールド名)>"
820NAME IS NULL:2005/06/08(水) 07:25:07 ID:???
>>819
>リンクテーブルにはインデックスは設定できません。
>但し、ODBC リンクテーブルには 「擬似インデックス」 を設定できます。
>擬似インデックスは元のテーブルには影響を与えません。


リンクテーブルだから意味ないんでね?
821NAME IS NULL:2005/06/09(木) 21:54:41 ID:TI+V+km2
休日をカウントせずに出勤日だけの数をカウントしたい。

テーブル”T_出勤日”には年月日フィールド(日付時刻型)と出勤日フィールド(数値型)があります。
出勤日フィールドには、出勤日は"1"、休日は"0"の数値が入ってます。
これを利用してフォームで納期日の計算をしたいのです。
作業日テキストに入力された日付から、出勤日のみの7日後を非連結テキストに表示させたいのですが
どうやっていいのか良くわかりません。
VBAで
dim i as integer
for i = 1 to 7
とかでやりたいんです。
どなたか教えてください。
822NAME IS NULL:2005/06/09(木) 22:50:50 ID:???
>>821
頭の悪い回答で良ければ一つ思い付いた。
とにかく七日後の日付が分かれば良いんだよね?
だったら、

SELECT T_出勤日.年月日, T_出勤日.出勤日, DSum("年月日","このクエリ名","年月日 <= #" & [年月日] & "#") AS 作業日カウント
FROM T_出勤日
WHERE (((T_出勤日.年月日)>=[forms]![フォーム名]![作業日]) AND ((T_出勤日.出勤日)=1));

てな感じの、出勤日の値(幸いにも出勤が1なので)の累計を出すクエリを作ってしまって
フォーム上でDLookUp("年月日","クエリ名","[作業日カウント]=7")で呼び出してしまえば
出勤日のみの七日後分かるけど、どうだろう?
823NAME IS NULL:2005/06/10(金) 19:14:30 ID:???
>>818
やはり一旦ローカルにテーブルコピーするしかないようです。
既存のレコードもちょくちょくデータが変わるようなので、その都度テーブル削除して
コピーし直す時間を考えると集計速度犠牲にした方がいいのかもしれないですね。
824NAME IS NULL:2005/06/10(金) 20:14:11 ID:???
>>821
累計で出す必要なかった(重いし)。こっちで良いみたい。

select *
from T_出勤日
where 年月日=(select max(年月日) from (select top 7 年月日 from T_出勤日 where 年月日>forms!フォーム名!作業日 and 出勤日=1))
825NAME IS NULL:2005/06/11(土) 00:16:32 ID:QZdqXtV2
クエリーで 連番を入れる方法を教えてください。
可能であれば初期値の設定も。

826NAME IS NULL:2005/06/11(土) 01:36:39 ID:???
>>825
ユーザー定義関数を作成すればいい。
Public Renban As Long

Public Function XXXX(dmy) As Long
On Error Resume Next

Renban = Renban + 1
XXXX = Renban
End Function

クエリでこれを項目として設定。引数には何かしらフィールドをセットする事。
更新なら順不同が前提。レコードの追加でなら並べ替えで指定した順に
連番を付けられる。
で、そのクエリを実行する前にVBAで Renban = 0(もしくは初期値を考慮し
た数値)を実行。
とりあえずはいろいろある方法のうちの1つということで。
827825:2005/06/11(土) 13:26:31 ID:QZdqXtV2
>>826
ありがとうございます。
あなたは神様です。
828825:2005/06/11(土) 13:38:08 ID:QZdqXtV2
なんで、dmyが必要なんですかね?
確かにないと、うまくいかない・・・
クエリー実行前にRenban変数を↓のようにしても0にならないのは
なんでなんですか?

Public Sub()
Renban = 0
End Sub
829826:2005/06/11(土) 16:06:14 ID:???
>>828
dmyが必要な理由は、うまく説明できないなぁ。クエリからコールされる時にフィールドを
渡してやると、このレコードもしくはフィールドの処理ってことで毎回毎回1レコード毎に
コールされるようになる。この引数がないとその必要がないと見なされる。
もっと詳細に知りたい場合は、ぐぐるなりMSやMSDNの資料を漁るなりしてくれ。

そのSubをどこからコールしてるんだ?Subとして定義しただけでは意味はないぞ。
つうか、ちゃんと関数定義しろよ。関数名Subはやめろ。転記ミスなら気付け。
で、そもそもクエリをどうやって実行するのか知らないのだが、VBAでDoCmdするなら
その関数でDoCmdの直前に Renban = 0 とすればよいだけ。
830825:2005/06/12(日) 08:49:18 ID:KoTmaxZI
>>829
調子こいてタメ口きいてんじゃねーよ!>アフォ
831NAME IS NULL:2005/06/12(日) 12:26:30 ID:???
なんでヒーローの変身中に攻撃しないんだ的なツッコミですね
832829:2005/06/12(日) 21:09:42 ID:???
>>830
仮に825本人としたら、この程度の事もAccessでできないクセにツッコミ
入れてんじゃねぇよ!!
833NAME IS NULL:2005/06/12(日) 22:18:05 ID:???
>>832
仮に829本人としたら、うんこ釣りに反応するなよw
834825:2005/06/12(日) 22:20:56 ID:???
>>832
たかだか、グローバル変数ごときで神になったつもりかよっ!!!( ゚,_ゝ゚)バカジャネーノ
835NAME IS NULL:2005/06/13(月) 08:38:15 ID:???
自分はできると思い込んでる人も含め、やっぱりAccessやってる人って
レベル低い人が多いんですね。
836NAME IS NULL:2005/06/14(火) 09:52:34 ID:???
どんなレベル求めてるんだよw
837NAME IS NULL:2005/06/14(火) 16:02:22 ID:PY+Y24XS
>>835 は、技術的なことは推し量れないから、せめて人間としての常識レベル
を求めてるのではないかと思う。
825は、最低のクソだな。初歩的な事がわからず、それを教えてもらったのに。
Accessも人間もやめた方がいいぞ。
838NAME IS NULL:2005/06/14(火) 18:31:19 ID:???
>>837
うんこ釣りを本気にしちゃダメですよ
839825:2005/06/15(水) 00:46:48 ID:???
うんこのエサにも食いつくアフォな>>837がいるスレはここでつか?
840NAME IS NULL:2005/06/15(水) 02:15:54 ID:???
>>837
教えてもらった本人825がうんこ釣りしてもかい?
いや、なりすましなのかな?
841NAME IS NULL:2005/06/15(水) 02:16:39 ID:???
うわぁ大馬鹿。アンカー間違いました。
>>837 ×
>>838
842NAME IS NULL:2005/06/15(水) 07:19:46 ID:???
>>840
こういう時は825も829もなりすましということにしておくのがベターだ。流せ。
843840:2005/06/15(水) 12:00:14 ID:???
>>842
2chでの対応が1つわかった。ありがと。
流すことにするよ。
844NAME IS NULL:2005/06/15(水) 15:06:24 ID:???
つーか教えてもらったら金を
845NAME IS NULL:2005/06/15(水) 16:20:44 ID:???
Access2000で作成したDBをそのままAccess2003で運用していたら
日に日にファイルサイズが肥大していく・・・
2003導入当時65MBほどだったのが2週間で144MB。
2000で運用時はこんなことなかったのに。
どなたか原因わかりませんかorz
846NAME IS NULL:2005/06/15(水) 20:12:50 ID:???
>>845
データの最適化は定期的にやってますか?
847NAME IS NULL:2005/06/15(水) 21:57:58 ID:???
>>845
2002だと
ツール → オプション → 全般タブ
『 閉じる時に最適化する 』 にチェックを入れるんだけど
2003にはないでしょうか?
848NAME IS NULL:2005/06/15(水) 22:06:26 ID:???
エスパーな俺が>>845の質問の意図を読み取るに、2000で運用していた時よりもファイルサイズの
増え方が大きくて異常なんだがこれどういうことよ、ではないかと思うダニ。最適化どうこうじゃなく。
849NAME IS NULL:2005/06/15(水) 22:49:18 ID:???
>>845
ツール→オプション→詳細
『レコードレベルでロックして開く』にチェックがついているとMDBが異常に
でかくなるそうです。
2000がチェックなしで2003がチェックされているとか?
850846:2005/06/15(水) 23:50:57 ID:???
>>849
そうなの?
オレの場合、2000でチェック入れてるけど開発環境でも複数のユーザー先でも異常な
増え方はないよ。何か環境とかバージョンとか関係するんかなぁ。その話の出所も教え
てあげた方が良くないか?

>>847
それ、うっとおしい。
851NAME IS NULL:2005/06/16(木) 03:02:30 ID:???
852845:2005/06/16(木) 09:24:10 ID:???
みなさんありがd
とりあえずレコードレベルでロックして開くをオフにしてやってみます。
853850:2005/06/16(木) 10:44:46 ID:???
>>851
ありがとう!!
参考にさせてもらいます。
854NAME IS NULL:2005/06/17(金) 10:07:03 ID:3Jh7Qxk4

☆ 教えてください ☆

慣れ親しんだLANで共有されている
アクセスDBをまだ使いたいのですが、

エクセルでネットワークリンクされたアクセスDBですが、
アクセスを開くと排他となり、エクセルが開かないのですが、

初心者的な質問ですが、どなたかご回答お願いいたします。




855NAME IS NULL:2005/06/17(金) 10:29:52 ID:???
☆ 管理者にお聞きください ☆
856NAME IS NULL:2005/06/17(金) 10:51:09 ID:???
最近2003導入したんですけど、
オートコレクトの性能が思いっきり下がってるような・・・。
コンボボックスのリスト行数が増えると、ある程度以降のデータをコレクトしてくれない・・・。
以前のバージョンのような挙動に直したりできないですか?
857NAME IS NULL:2005/06/17(金) 12:44:16 ID:???
メインフォームのイベントで、サブフォームのテキストボックスにSetFocusしたり、
サブフォームの最終レコードに移動したりしたいんですが、どうすれば可能ですか?
858NAME IS NULL:2005/06/17(金) 12:56:11 ID:???
>>857
VBAで処理すれば可能。・・・この程度は本来、自分で調べて悩んで会得するものだが。
メインフォームのプロシージャとしよう。エラー処理は考えてない。

Me![サブフォームコントロール名].Form![サブフォーム上のテキストボックス名].SetFocus

最終レコードはいろんなやり方があるが、メインフォームから処理する場合の一例。
Dim SubRs As Recordset

Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone
SubRs.MoveLast
Me![サブフォームコントロール名].Form.Bookmark = SubRs.Bookmark
859NAME IS NULL:2005/06/17(金) 14:09:25 ID:???
>>858
>Dim SubRs As Recordset

>Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone
>SubRs.MoveLast
>Me![サブフォームコントロール名].Form.Bookmark = SubRs.Bookmark

式で型が一致しませんと出てダメぽです
860NAME IS NULL:2005/06/17(金) 14:30:55 ID:???
式では不要でした。
Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone
の時点でダメっぽいです
861NAME IS NULL:2005/06/17(金) 14:51:07 ID:???
DAO.Recordsetで自己解決しました。
862825:2005/06/17(金) 21:46:27 ID:???
取り乱してしまいました(^_^;)
863NAME IS NULL:2005/06/17(金) 22:56:24 ID:???
↑何を取り乱したのさ?
864NAME IS NULL:2005/06/17(金) 22:57:45 ID:???
>>863
うんこ釣りに反応するなよw
865825:2005/06/18(土) 13:29:00 ID:???
>>864
人がカレー食ってる時に、連呼をうんこするなよ!
866825:2005/06/18(土) 13:31:00 ID:???
おっと間違えた・・・・(^_^;)



>>864
人がうんこ食ってる時に、カレーを連呼するなよ!

867864:2005/06/18(土) 13:36:03 ID:???
人がうんこ食ってる時に、うんこをうんこするなよ!
868825:2005/06/18(土) 16:34:44 ID:???
うんこが人食ってる時に、うんこをカレーするなよ!
869825:2005/06/18(土) 16:44:53 ID:???
カレー食った後の、レイコのうんこ食いたいよ!

※レイコ=葉山レイコ
870NAME IS NULL:2005/06/18(土) 21:07:08 ID:???
↑アンタ、それなりの歳でしょ。
871NAME IS NULL:2005/06/19(日) 01:19:49 ID:n9q/trAx
Accessで遅いクエリの解析しようと思っても、クエリの実行計画を知る術が無いんですね。
さすが安いだけのことはある
872NAME IS NULL:2005/06/19(日) 05:22:30 ID:???
>>871
(゚Д゚)ハァ?
873NAME IS NULL:2005/06/19(日) 09:30:47 ID:???
>>871
たかがデスクトップデータベースに何を望む。
使い物になるかどうかは知らんが、パフォーマンスの最適化ってのはあるぞ。
874NAME IS NULL:2005/06/19(日) 11:31:56 ID:n9q/trAx
>>873
Explainでクエリ分析くらい、できたっていーじゃんと思ったのよ
まあいいよ
もうテストデータ作成用ツールとしか見ないから
875NAME IS NULL:2005/06/19(日) 11:47:03 ID:???
それがいいなw
876825:2005/06/19(日) 12:59:51 ID:???
>>874
馬鹿に限ってこうやって開き直る( ´,_ゝ`)プッ
877NAME IS NULL:2005/06/19(日) 13:43:53 ID:???
>>874
> もうテストデータ作成用ツールとしか見ないから

これは、社内システムの全てをAccessで構築している
俺の会社に対する挑戦と受け取っていいんだな?
878NAME IS NULL:2005/06/19(日) 13:57:23 ID:???
GUIでクエリをサクっと造れるのがAccessの売りなわけだ。
それ以外は、、 おもちゃ
879NAME IS NULL:2005/06/19(日) 14:27:53 ID:???
>>877
Accessは手軽でいいと思うが

>社内システムの全てをAccessで構築している

これはちょっと問題あるな。GUIだけならまだ救いはあるが。
880NAME IS NULL:2005/06/19(日) 14:34:00 ID:???
ネタだと思う
881NAME IS NULL:2005/06/19(日) 15:02:11 ID:???
だよな。安心した。
882NAME IS NULL:2005/06/19(日) 15:35:10 ID:???
>>880
ネタじゃないって。
ログイン管理システムから始まり
メール・スケジュール管理・掲示板システム、
メインフレームとのデータ送受信システム、
数百万レコードのバッチ更新システムなどもある。
もちろん人事・経費管理などはバリバリ。
しかもAccess95だ。

今はデータウェアハウス(もどき)を作ろうという
計画が進行中だが、レコード数が軽く億を越える
非常にチャレンジングなものだ。
883NAME IS NULL:2005/06/19(日) 15:49:18 ID:n9q/trAx
ネタじゃなかったとしても、データ件数、使う人数が限られてんのかなあ、とか思ってたんだけど、、
そんだけのデータ扱うなら今すぐAccessなんて止めたほうがいーんじゃないすか?

なんでまともなDBMS使わないんですか?
884NAME IS NULL:2005/06/19(日) 15:50:16 ID:???
別に驚かない

俺も一部上場企業の人事システムをAccessのみで組んでる案件に参加した事あるし
885NAME IS NULL:2005/06/19(日) 16:25:55 ID:???
驚けよ   異常だと思えよ
886NAME IS NULL:2005/06/19(日) 16:34:00 ID:???
せめてMSDE
887NAME IS NULL:2005/06/19(日) 21:10:12 ID:???
MSDNの会員(正式名称忘れた)になれば、SQL Serverも含め
いろいろ手に入って製品購入するより安いぞ。
名目は、開発・評価用だがな。

>>882
それはチャレンジとは言わない。無謀。
見た目は、動くものができるけどな。
888NAME IS NULL:2005/06/19(日) 22:41:04 ID:???
マジレス。
>>884と同じことした。
一部上場の中でも超一流の企業の人事をAccessで開発した。
当初、パッケージ選定を行ったが、頭の硬い人事は納得できず、
カスタムメイド。数千人規模の会社だから異動履歴とかのデータ
件数を考慮してもAccessで十分。しかも安上がり。

逆に、>>885に異常である具体的な根拠を聞きたい。
>>885はもの凄いITエンジニアか、単なる馬鹿のどちらかだとw
889NAME IS NULL:2005/06/19(日) 23:01:55 ID:???
>>887
おっと、こいつも業務知らないヴァカだった。
数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り
作業(人事異動)でせいぜい2〜3名が行う。
トランザクションのために高価なDBサーバ&開発費をかけるくらいなら
・・・
書き始めたけど、消した。これ以上は企業秘密ってことでwww
890NAME IS NULL:2005/06/19(日) 23:12:30 ID:???
>>877
うちの会社はmdbファイルに別のプログラムからアクセスして更新する方法を
とっていたが最近SQLに変更し始めた
891NAME IS NULL:2005/06/19(日) 23:42:39 ID:???
>>889
馬鹿はお前だろ

>>882の時点で↓という業務要件である、なんて一切書いてないやん。

>数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り
>作業(人事異動)でせいぜい2〜3名が行う。
892NAME IS NULL:2005/06/20(月) 00:17:08 ID:???
>>891
はぁ?
馬鹿はオマエだろ?!
論拠書いてないし・・・・( ゚,_ゝ゚)バカジャネーノ
人事システムなんて濃度は濃いが・・・おっとまた書きそうにwwww
893NAME IS NULL:2005/06/20(月) 00:41:25 ID:???
887は

>数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り
>作業(人事異動)でせいぜい2〜3名が行う。

の事実を知らない段階での意見なわけだが、、


>書き始めたけど、消した。これ以上は企業秘密ってことでwww
>人事システムなんて濃度は濃いが・・・おっとまた書きそうにwwww

↑聞いてもないこと自分からベラベラ喋るおっさん、キモイですよー
894NAME IS NULL:2005/06/20(月) 09:18:24 ID:???
( ゚,_ゝ゚)バカジャネーノを使ってる奴はバカに見える
895NAME IS NULL:2005/06/20(月) 09:56:11 ID:???
>>889
> 業務知らない
アナタの決めつけの業務なんて知らないのは当たり前、というか
井の中の蛙ってやつだね。
いろんな企業の人事関係のシステムを開発したけど・・・おっと
これ以上は企業秘密ってことで。ぷっ。
つ〜か、アンタ程度のところの企業秘密ってのは、みんなが当然
の知識としていることじゃねぇの。
896NAME IS NULL:2005/06/20(月) 10:00:04 ID:???
異動が頻繁な会社もあるしなぁ。
897NAME IS NULL:2005/06/20(月) 10:50:47 ID:???
トランザクションどうこうの問題もあると思いますが、MSの技術資料にも
あるし自分が経験してることでもあるが、MDBって壊れやすいでしょ。
安上がりなのも確かなんだけど、MDBが壊れた際にSEや開発者の手を
煩わせる必要なく、迅速にユーザーだけで復旧させることができる手段
を用意してるの?
処理速度は、いらつくことなく一連の作業が終了するようになってる?
そういうのがクリアされてれば別にAccessでもいいと思うが。
オレは、Access嫌いだけど会社とユーザーの方針だから諦めてAccess
で開発してる。
898NAME IS NULL:2005/06/20(月) 11:23:23 ID:???
SQL Enterprisemanager のジョブにて定期的に差分バックアップを
取りたいのですが、バックアップファイルに作成日時を入れることは
可能でしょうか?

データベース保守計画にて作成したフルデータベースバックアップ
ファイルには日付が付くのですが、保守計画では差分バックアップ
が作れないらしく困っています。

どなたかご存知の方がいらっしゃったら、教えてください。
お願いします。
899NAME IS NULL:2005/06/20(月) 19:40:27 ID:???
フォームにMicrosoft graphを配置して、フォームを開くと同時にグラフ展開。
グラフをエクスポート。
ここまでの流れを一回の動作でやりたいんだけど、MS graphはグラフの描画を他の命令の最後にやるので
まだ描画されてないグラフ(真っ白)がエクスポートされる。

なんとかグラフ描画を、エクスポートの命令の前にさせたい。
repaintやrequeryやっても駄目だったんだが、他になんか手無い?
900NAME IS NULL:2005/06/21(火) 00:30:57 ID:???
新入社員がDMBSを理解するための教材みたいなもんでしょ

Oracle :*********************************
SQLServer:*************************
MySQL :***************************
Access :***
901NAME IS NULL:2005/06/21(火) 09:43:53 ID:???
>>899
DoEventsとか
902NAME IS NULL:2005/06/21(火) 17:21:20 ID:???
フォームのどこにフォーカスがあっても、「↓」キーを押せば特定のフィールドに移動させたいのですが
どんなコードを書けば良いのでしょうか?
903NAME IS NULL:2005/06/21(火) 19:42:02 ID:???
>>902
(1) FormのKeyPreviewをTrueにする。
(2) Formのキーダウンイベントで↓キーの打鍵をチェックする。
(3) ↓キーが押されたならばフォーカスを移動し、↓キーが処理された
  ことにするため、KeyCodeをゼロにする。

できると思うけど、実際に実装すると移動する前のフィールドが編集中か
どうかのチェックなども必要だからかなり面倒だと思う。
904NAME IS NULL:2005/06/21(火) 21:05:11 ID:???
>>903
If keycode = 40 thenでできました。ありがとうございます。
一応これで満足しているのですが、後学のために
>移動する前のフィールドが編集中かどうかのチェック
をどんな手段で行うのか教えて貰えませんか?
905NAME IS NULL:2005/06/22(水) 11:02:06 ID:???
>>904
903ではありませんが。と、試したわけではなく頭で考えた段階で即RESしてる
ことに注意。
編集中の↓キーが考えられるパターンは、漢字変換中と複数行のテキストボッ
クス。漢字変換中の↓キーがKeyDownイベント発生してプロシージャに渡るか
どうかまでは試していないけど。
複数行のテキストボックスを考えただけでも、行を移動してるだけなのにフォー
カス移動はマズい。
その他に編集中の↓キーってのは、オレは思いつかなかった。903本人の意見
待ちだね。
906NAME IS NULL:2005/06/22(水) 12:11:44 ID:???
変換中の↓はイベント発生しないような?
907NAME IS NULL:2005/06/22(水) 13:18:54 ID:???
コンボボックス、リストボックスやリストビューとかも
↓キーは考えないとな
908905:2005/06/22(水) 13:51:18 ID:???
>>907
あ〜そうだね。それがありましたねぇ。
909NAME IS NULL:2005/06/22(水) 22:34:57 ID:cHoWp5Em
「データテーブル」に「ID」、「国ID」。
「国テーブル」に「ID」、「国ID」、「国名」と言うフィールドが
それぞれあります。

レコードソースが「データテーブル」のフォームの上に
コンボボックスがあって、コントロールソースを「国ID」としています。
が、ここにはむしろ「国テーブル」の「国名」を表示させたいのですが、
どうしたらよいでしょう。

もう一つ、このコンボボックスから「国名」を選んで「データテーブル」の
「国ID」を正しく入力したいのですが、こちらの方もお願いします。
「国名」を表示させるのはできました。ただ入力時に型が違う旨の
エラーが出ます。
910NAME IS NULL:2005/06/22(水) 23:35:14 ID:???
>>909

プロパティーの「列幅」を0cm;0cm;xxxcmにしてみたら?
911NAME IS NULL:2005/06/22(水) 23:39:40 ID:???
>>909
コンボボックスの基礎なので丁寧な解説にチャレンジしてみるか。

コンボボックスのプロパティ→データタブの値集合ソースにカーソルを合わせて「…」を押すと
クエリ作成画面が出てくるので、いつもクエリを作っている要領で「国テーブル」を選択して
列に「国名」「国ID」の順番で挿入。んで、×ボタン押して閉じようとするとメッセージが出るので
ok押してプロパティ画面に戻る。
そのあと、列連結を2にする。

こうすると、画面上には国名しか表示されないけど、データ上では国IDが保存されることになる。
[▼]を押したときに国IDも表示させたいなら、書式タブの列数も2にしておく。
912NAME IS NULL:2005/06/23(木) 00:41:46 ID:???
オレも結構知ってる範囲でレスしてるのだが、そのコンボの質問は釣りかと
思うぐらいアホくさいっすよ。ヘルプや解説本見て勉強しろと言いたい。
913NAME IS NULL:2005/06/23(木) 07:01:13 ID:???
ヘルプの存在知らなくて解説本買う金もなくて身近に質問できる友人もいないんだろう。
914NAME IS NULL:2005/06/23(木) 10:20:28 ID:???
2chやってるんだからネットで検索ぐらいできるだろうに。
まず初めに他人に聞くって根性が気に入らん。
915NAME IS NULL:2005/06/23(木) 11:35:07 ID:???
>>914
i-modeで2chなんだろ。そして本買う金もないのでパケット代も払えない、と。
916NAME IS NULL:2005/06/23(木) 11:51:52 ID:???
ハハハ。みんな優しいな。立ち読みしろ。
917NAME IS NULL:2005/06/23(木) 19:02:42 ID:J/XMKbhY
>>910>>911
ありがとう、ちゃんとできました。

お前ら怒らないで下さいよ。
918NAME IS NULL:2005/06/23(木) 21:49:18 ID:???
すみません質問させてください。
access2000でレポートにjpgなどの画像を張り付けることってできますか?
知ってる方いましたらお願いします。
919NAME IS NULL:2005/06/23(木) 22:15:34 ID:???
>>918
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおい!!!!!!!
できるに決まってるだろおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!!!!!!!!
さすがにそれくらい自分で調べようぜええええええええええええええええええええええええ!!!!!!!!!
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
920NAME IS NULL:2005/06/23(木) 22:33:24 ID:???
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Access+%E7%94%BB%E5%83%8F%20%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88&num=50

調べ方が分からないと書きそうだから、検索の見本を置いておこう……
921NAME IS NULL:2005/06/25(土) 10:31:08 ID:???
googleに質問者を奪われたのでGoogleを訴えようと思います。
922NAME IS NULL:2005/06/27(月) 00:25:33 ID:???
少々マニアックな質問ですがよろしいでしょうか?
社内で軽いDB的なものを作って、共有させていたのですが、
プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。

そうしたら、そいつがローカルに落としていろいろやろうとして、
あげく、上書きまでしようとするので、手を焼いております・・・

実行PCの制限とか、外部ファイルが無ければ起動しないとか、なにかいい知恵は
ございませんでしょうか・・

所詮いたちごっこなんですけどね・・・
923NAME IS NULL:2005/06/27(月) 01:56:20 ID:???
>>922

ここで聞く前に、そいつに直接文句なり言ったほうが早いでしょ。
924NAME IS NULL:2005/06/27(月) 02:45:27 ID:???
>>923
会話したくもないっす・・
やっぱ>>7が書いてくれてるとおりSアロンが基本ですね・・・

925NAME IS NULL:2005/06/27(月) 07:17:36 ID:???
>>924
上司に相談しなよ仕事だろ……。会話もしたくないって子供かよ。
926NAME IS NULL:2005/06/27(月) 07:19:21 ID:???
>>922
MDEにはできないのか?
MDBは、アンタが管理すればいい。それ以外では、MDBにパスワードを
つける。他の人の起動はショートカットを作成してコマンドラインにパス
ワード指定すればいい。で、Shift押しながらの起動を無効化すればオブ
ジェクト編集できなくなる。以上の措置を施す前のMDBを残しておくこと
も忘れずに。
927NAME IS NULL:2005/06/27(月) 19:43:05 ID:???
>>925
いや、こんなんで上の者の手を煩わせたくは・・・

>>926
ありがとうございます。その処理は済ませております。
私の説明がまずかったと思うのですが、問題は、ローカルに落として作業・・のほうです

>々マニアックな質問ですがよろしいでしょうか?
>社内で軽いDB的なものを作って、共有させていたのですが、
>プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。
ここまで愚痴。

>そうしたら、そいつがローカルに落としていろいろやろうとして、
>あげく、上書きまでしようとするので、手を焼いております・・・
問題はここ
ローカルに落として作業>戻して上書き・・これを防ぎたく・・・
928926:2005/06/27(月) 20:07:43 ID:???
>>927
突っ込んで申し訳ないが、コントロールボックスにPASS制限ってのが意味が通じないのだ。
更に、
> その処理は済ませております。
というが、どっちの話なのさ。MDEに変換かMDBにパスワードか???
どちらにせよ、これをローカルに落としたとしても、MDEならオブジェクトを見れないしパス
ワードの方はパスワード自体漏らさなきゃMDBを開けない。金出してパスワード解析ツール
を買って持ってるなら別だが。
MDEの変換前・パスワードかける前の元になるMDBをネット上に置いて、プチパワーユー
ザーに晒してるんじゃないのか?
どうも話がわからん。上書きを防ぎたいならアクセス権限をReadOnlyにすればいいんだし、
内容の変更されてないファイルなら仮に上書きされてもちっともこまらんだろうに。
929NAME IS NULL:2005/06/28(火) 02:27:50 ID:???
なんで、安易な道に走るんだろう。
922はACCESSの技術力より、人間関係の構築に
力を注いだ方がいいような気がする。
俺だったら
「あ、君がやってくれるんだ。じゃあ、頼んだよ」
てな具合に、諸手を挙げて大喜びなんだけどね。
930NAME IS NULL:2005/06/28(火) 07:15:29 ID:???
その同僚ってのが大音量で音楽流して引っ越し引っ越し叫ぶような奴だからだろう。そうに違いない。
931NAME IS NULL:2005/06/28(火) 08:41:54 ID:???
>>930
オマエ、朝のTV見ながら書き込みしてるだろ?

>>927
はよ出てきて書き込んでくれぇ。
>>928 が待ってるよぉ。
932NAME IS NULL:2005/06/28(火) 10:23:54 ID:???
922本人に落ち度なり弱みなりあるんじゃね?
だから内々に解決させてもみ消したい、と。
漏れも>>929に全面同意。
933NAME IS NULL:2005/06/28(火) 13:00:59 ID:???
プチパワーユーザーが社員で922が派遣に1票
934NAME IS NULL:2005/06/28(火) 22:45:16 ID:???
本当は 922 が上司でプチパワーユーザーが部下。
935NAME IS NULL:2005/06/28(火) 22:50:00 ID:???
だったら普通に注意すりゃやめるだろ……。弱みでも握られたか。可哀想に。
936NAME IS NULL:2005/06/29(水) 00:00:30 ID:JiJb7D9H
>922
926が言うとおりMDEにするかランタイム版を配布すればよいと思われ。
もしくは、これも926が言っているが、読み取り専用ユーザーを指定すれば
いいんでは。
元MDBは本人しか開けないローカルもしくはサーバのフォルダに保存しとく。
まぁ、922のマシンのログオンパスばれたら終わりだけど。
937NAME IS NULL:2005/06/29(水) 00:14:35 ID:???
922は色白でかわいい男の子タイプ。
プチパワーユーザーはロリ系巨乳ガングロ。
938NAME IS NULL:2005/06/29(水) 01:32:48 ID:???
>>922
MDBのままで制限を加えたいのならばセキュリティ設定をすればいい。

自分専用のワークグループファイル(system.mdw)を作り、新しいスーパー
ユーザーを登録し、そのスーパーユーザーでログインして、管理者を管理者
グループから削除する。
管理者の所属グループはユーザーグループだけになるから、ユーザー
グループから構造の変更と管理者の権限を剥奪すれば、通常の使用は
できるが、書き換えのできないクエリーやデザインモードで開けない
フォームやレポートができる。
設定が済んだらワークグループファイルの設定を標準に戻せばいい。
939NAME IS NULL:2005/06/29(水) 16:33:48 ID:QC2EZRZr
ここの住人は、暑さで湧いて出たウジ虫しかいねーな
脳みそはゾーリ虫なみ
ま、リストラされて淘汰されて死んじゃってくれw
940NAME IS NULL:2005/06/29(水) 16:37:05 ID:???
まあ俺から見たらここはDB覚えようとしたが挫折したウジ虫の集まりだな
頭の軽い香具師ばかりで笑えるな

(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
941NAME IS NULL:2005/06/29(水) 17:35:32 ID:???
構成展開する、生産管理系のプログラムのサンプルってどこかにありますか?
942NAME IS NULL:2005/06/30(木) 08:31:20 ID:a9IzzHYE
教えて下さい。
30名程のバイトさんのシフト管理をしたいのですが,次の月の日付と曜日をあらかじめ出す事はできますか?
イメージですが,担当者コードを入力したら七月分の日付と曜日が表示され,出勤時間と退勤時間を入力出来る様にしたいです。
初心者ですいません。
943NAME IS NULL:2005/06/30(木) 09:15:52 ID:???
>>942
できる。
944NAME IS NULL:2005/06/30(木) 09:16:40 ID:???
途中で送信しちゃった。

できるけど、そのシフト管理のテーブル構成が分からない限りこれ以上答えようがない。
945NAME IS NULL:2005/06/30(木) 16:36:19 ID:???
Accessでシリアルポートを利用して外部機器(キャッシュドロア)を操作したいんですが
良い方法はないでしょうか?
946NAME IS NULL:2005/06/30(木) 18:25:08 ID:Xy62p/jN
>>943さん ありがとうございます。
テーブル1 名前 電話  担当コード
テーブル2 担当コード 名前 出勤時間 退勤時間 
これ以外に必要な物ありますでしょうか?
947NAME IS NULL:2005/06/30(木) 18:56:03 ID:???
>>946
テーブル2に日付フィールドなくていいの?
そして2に名前はいらなくない?
948NAME IS NULL:2005/06/30(木) 19:14:44 ID:Xy62p/jN
>>946さん ありがとうございます。
そうですね。 以下に変更しました。
テーブル1 名前 電話  担当コード
テーブル2 担当コード 年月日 出勤時間 退勤時間
 
949NAME IS NULL:2005/06/30(木) 22:54:46 ID:???
>>948
次の月の日付が出てくるようにということだけど、常に次の月しか表示されないと後で
修正したい時とか困るだろうから、次の月は規定値ということにして他の月も選べるようにした方が良いと思う。
で、フォーム上で月と担当者を選択して適当なコマンドボタンを押すと、
その月と担当者のレコードがあるか判定して、なければその月の1日から月末までレコード追加。
あとはその月と担当者のレコードのみ抽出して表示するようにすればお望みの物はできるんでない?
950949:2005/06/30(木) 22:56:24 ID:???
Private Sub 適当なコマンドボタン_Click()
Dim t As Integer
Dim d As Date
Dim d2 As Date
Dim c As Integer
Dim s As String

t = Me.担当者     ←選択用の担当者コード
d = Me.年月      ←選択用の年月
d2 = DateAdd("m", 1, d) - 1
c = DCount("担当コード", "テーブル2", "([年月日] Between #" & d & "# and #" & d2 & "#) and ([担当コード] =" & t & ")")
s = "SELECT テーブル2.* " & _
"FROM テーブル2 " & _
"WHERE (((年月日) Between #" & d & "# And #" & d2 & "#) AND ((担当コード)=" & t & "))"
If c = 0 Then
While d <= d2
DoCmd.GoToRecord , , acNewRec
Me.年月日 = d
Me.担当コード = t
d = d + 1
Wend
End If
Me.RecordSource = s
End Sub
951初心者:2005/07/01(金) 10:50:20 ID:???
教えてください。

部品在庫管理で、出庫先が修理に使用と
オークに出品等(部品販売)になる場合は
テーブル構成はどうしたらいいのでしょうか・・?

ttp://www5d.biglobe.ne.jp/%7Eac2000/mokuzi.html
上記のサイトを参考にしたのですが、出庫のとこでつまづいてしまったので・・orz

宜しくお願いします・・。
952NAME IS NULL:2005/07/01(金) 11:08:39 ID:???
とりあえずお前ら



初心者と名乗るのやめようぜ……それだけで答える気力なくなる
953NAME IS NULL:2005/07/01(金) 11:12:32 ID:???
>>951
どんなデザインなのかは知らないけど、単純に在庫テーブル(があるかどうか知らないけど)に
出庫先入れるフィールド作るんじゃダメなの?
954NAME IS NULL:2005/07/02(土) 02:21:57 ID:FeUGEv4T
>>949 950さん 遅くなりましてすいません。ありがとうございます。
私にはちょっと難しいですが,調べて頑張ります。
955954:2005/07/03(日) 08:14:24 ID:4JsxXgUv
やっぱり難しいです。もっと易しいレベルはないですか?
956NAME IS NULL:2005/07/03(日) 08:36:50 ID:???
>>955
Excelで管理する。日付も曜日もマウスでドラッグすれば、いっぺんに設定で
きるしな。テンプレートとして合計出したりなどの計算式埋め込んでおけば
それなりに管理できるぞ。
今まで教えてもらったレベルが難しいなら、現時点ではAccessは諦めること。
だって、基本に近いのに難しいっていわれたら、アドバイスしようがないぞ。
957NAME IS NULL:2005/07/03(日) 12:35:32 ID:???
もっと易しいレベルと言われてもなぁ。
特殊なことやろうとすると面倒になるのは必然で、これ以外の「簡単な」方法は無いと思う。


役に立つかどうか分からないけどサンプルうpってみた。
ttp://up.isp.2ch.net/up/4f67efa370bd.zip
pass:sage
958NAME IS NULL:2005/07/03(日) 14:53:00 ID:tJaBCq+U
すいません質問させてください。式ビルダってフォームじゃないと使えないんですか?
テーブルでフィールドaとフィールドbに数値を入力したら自動的にその和がフィールドcに表示されるみたいなことをやりたいんですが
959NAME IS NULL:2005/07/03(日) 16:18:52 ID:???
>>958
無理。テーブルはそういうのは想定していない。
他のフィールドへ自動で値を入力するなんてのは、必ずフォームを使う。
見た目をテーブルっぽくしたいなら、既定のビューをデータシートにした
フォームを使えばよいと思うが、どうだろうか?
960NAME IS NULL:2005/07/03(日) 18:58:52 ID:???
>>958
テーブルで直接入力するってのは愚の骨頂。Excelじゃないんだから。
961NAME IS NULL:2005/07/03(日) 19:07:13 ID:???
DAOとかで取得したレコードセットを一覧表示って出来ないんですか?
962NAME IS NULL:2005/07/03(日) 19:30:19 ID:???
>>961
すまんが、意味がちょいわからん。
取得したレコードセット・・・それって結果的にクエリのことじゃないの?
もしくは、ダミーテーブルとか。いずれにしても、帳票形式のフォーム
でレコードソースプロパティにそのレコードセットに該当するものをセット
すれば一覧表示可能だが、詳細は割愛。
963NAME IS NULL:2005/07/03(日) 22:04:39 ID:???
>>959-960サンクス。早速やってみます
964NAME IS NULL:2005/07/04(月) 15:24:18 ID:???
951
返事ありがとうです。
文書じゃ分かりにくいので作ってるのを
テーブル構成を画像にしてみました・・。

http://v.isp.2ch.net/up/1206b5a7438b.jpg

宜しくお願いします・・。
965NAME IS NULL:2005/07/04(月) 15:57:56 ID:???
>>964
もうそれで出てきてるんじゃないの?
966NAME IS NULL:2005/07/04(月) 20:14:33 ID:fz2JqpF5
>>964
話はそれるが、仕入先が2社の部品は部品IDを分けているのか?
967NAME IS NULL:2005/07/05(火) 02:45:28 ID:???
>>964
細かい話は抜きにして、修理と販売でテーブルを分けずに1つに
する。ID(コード)がどうなってるのか知らないけどね。
あとは、修理用と販売用のコードのためにフィールドを2つ設ける。
こっちの方法なら修正は少ないと思う。が、Goodな方法かどうか
までは不明。
968NAME IS NULL:2005/07/05(火) 16:13:00 ID:???
個人情報保護法とかで、上司からコピペでデータを持って行かれないように
リスト選択後のCtrl+Cを無効にしてくれと言われたがやり方がわからん

やさしい方教えてください・・・orz
969NAME IS NULL:2005/07/05(火) 16:28:40 ID:???
レコードセレクタださなきゃ大丈夫だ・・と思ったら
Ctrl+A Ctrl+Cで全部のレコードがコピーできちまった・・・('A`;)
970951:2005/07/05(火) 16:32:05 ID:???
返事ありがとうございます。


>>967
修理と販売を纏めたテーブルには出庫用法ID設けるのはどうなんでしょうか?
>修理用と販売用のコードのためにフィールドを2つ設ける。
えっと、これは何のためでしょうか?(クエリで必要に?)
971NAME IS NULL:2005/07/05(火) 16:33:01 ID:???
>>969
AutoKeysにctrl+Cを登録すれば無効になるけど根本的な解決になっているかどうかは不明。
972NAME IS NULL:2005/07/05(火) 16:40:27 ID:???
>>970
なんというか、全く基礎がなってないようだから、いきなり全業務カバーするようなものはやめて
段階的に作っていった方がいいんでない?
質問の内容も曖昧でこれから無数に沸いてきそうだしキリがないよ。
973NAME IS NULL:2005/07/05(火) 16:47:55 ID:???
と思ったけど、テーブル構成みたら大したことないな。
>>951には難しそうだけど。
974NAME IS NULL:2005/07/05(火) 16:51:10 ID:???
>>971
レスありがとん、AutoKeys早速やってみました。

しかし、作ってあるアプリがユーザごとにフォームのプロパティの
更新、削除、追加が可変になっている作りなので、、AutoKeysを利用すると
編集をするユーザまでコピペができなくなってしまうようです・・・(;´Д`)

AutoKeysって可変にできないのかな・・・とりあえずやってきます
975NAME IS NULL:2005/07/05(火) 17:05:54 ID:???
>>969です、とりあえず自己解決しました。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
Shift = 0
End Sub

このソースで上司は満足でした、日記みたいなカキコスマソ
976967:2005/07/05(火) 21:32:16 ID:???
>>970
今のまま(修理用と販売用と分けてる)のテーブル構成でリレーションをとるため。
1つの出庫用法IDで修理用と販売用の2つにリレーションってのは無理でしょ。
出庫用法IDというのが、修理用と販売用でどういうコードつけになっているかわか
らないから的確なアドバイスはできません。
修理用と販売用でIDが重複することがないなら、テーブルを2つに分けてる方が
おかしいので1つにする。

>>975
それではユーザー毎の可変ができないだけではなく、入力キー全てが無効にな
るが。編集はオールマウス操作なのか?
977971:2005/07/05(火) 22:05:22 ID:???
>>975
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 67 And Shift = 2 Then
KeyCode = 0
Shift = 0
End If
End Sub


多分こっち
978NAME IS NULL:2005/07/05(火) 22:23:39 ID:???
If KeyCode = 67 And Shift = 2 Then

67, 2 ではなく、vbKey〜のConstを使いましょうよ。
979NAME IS NULL:2005/07/05(火) 22:43:52 ID:???
2003だとヘルプでキーコードの定数見れないんだけどこれはゲイツの嫌がらせなのかな?
980NAME IS NULL:2005/07/05(火) 23:39:28 ID:???
>>979
オブジェクトブラウザで代用したら。
981NAME IS NULL:2005/07/05(火) 23:47:37 ID:???
>>976-978
>>969です、みなさん、レスありがとん

実際にはKeyCodeとShiftに値を代入する前に
ユーザ権限チェックの分岐が入っています。

それにしても、うちの会社は基幹系以外のデータベースは
Accessで作っているものが多くて個人情報保護法なんたらに
早く対応しろやゴラァと上司にどやされており大変です・・・('A`)

んなもん、Windowsのパスワードと本体つなぐ鎖で十分だろうと(ry
982NAME IS NULL:2005/07/05(火) 23:49:21 ID:???
あと社員に誓約書書かせれば大体okだよ
983NAME IS NULL:2005/07/06(水) 11:12:11 ID:???
>>982
更に社員に一方的に不利な内容にしておけば完璧。
984NAME IS NULL
>>983

誓約書なんていうのは自分(企業)が責任逃れするためのものだから、
概してそういうものでしょ。