【まだまだ】Microsoft Access クエリ2【使える】
1 :
1 :
04/07/07 09:45 ID:???
2 :
1 :04/07/07 09:48 ID:???
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
>>3 慣れれば、かなり安定して運用できるけどねぇ。
ただ、慣れるのに時間が掛かるので、いまだにJet3.51+ADOだけど。
運用期間が1年以内の使い捨てシステムになら使ってもいいかな。
6 :
NAME IS NULL :04/07/07 10:52 ID:Dh+YPpnJ
このくらいの規模で、このくらいの期間運用してるとか実例はないの? 俺の知ってる範囲だと、スタンドアロンで動いてるやつだと、ぜんぜん問題ないみたいだけど。
>スタンドアロンで Access使用上の注意としてはこれが基本だね。
8 :
NAME IS NULL :04/07/07 22:16 ID:EHs0AWCY
インターフェイスとして使う分には、かなりいいんでないか?
9 :
NAME IS NULL :04/07/07 23:05 ID:2fatn0rv
教えてほしいのですが、数値入力フォームというのを作って、数値データを入力してクリックボタンをクリックすると と、その数値データが、何かしらのデータフォームに登録されて、数値入力フォームはまた白紙になって違う数値を入れてクリックボタンをクリックすると 前回入力した数値にどんどん足されていくデータベースっていうのは作れるんでしょうか? 作れるとしたらクエリとか、フォームとか、テーブルとか何を作ればいいのか教えてください。 お願いします。
10 :
NAME IS NULL :04/07/07 23:59 ID:37UI6oWn
出来ますよ。 Accessだったら、更新クエリで。 更新欄に次のように記述して テーブル名.フィールド名+Forms!フォーム名!数値データ WHEREでそのレコードを指定すれば。 1レコードのみの運用だったら、Whereは指定する必要ないですけど。
11 :
NAME IS NULL :04/07/08 09:59 ID:QqTbl2Mt
ナンバリングの自動入力のようなものはありますか? 例えば「今回は200から」と一番最初のレコードに入力すると、次に入力するレコードからは自動的に「201,202,・・・」とナンバリングされるような感じです。 すみませんが、ご教授くださいませ。
12 :
NAME IS NULL :04/07/08 13:27 ID:bs8jTisP
>>11 自動でユニークのナンバーを入力するなら、
オートナンバーを使うだけのこと。
任意に入力したいのなら、最大値+1を求めて初期表示。
14 :
NAME IS NULL :04/07/08 13:44 ID:k6U7Xnws
おじゃまします。 過去にアクセスで給与算出システムを作りましたが 納品時に客が「2台のパソコンで同時入力させろや!」 っていきなり言われたのでMDBファイルをコピーして 2台のPCに入れてテーブルのみリンクさせて使って います。更新画面はテーブルと非連結なので更新 するタイミングが同時でなければなんとか同時入力 できているみたいです。 スタンドアローンが基本なのは知っていますが 後々へんなことになりますかね?
16 :
NAME IS NULL :04/07/08 13:51 ID:k6U7Xnws
14です
>>15 例えばどんな症状が起きるのでしょうか?
納品して半年、まだクレームがきていませんが・・・?
>>16 どんな症状が起きるかはテーブル等の設計次第。
クレームきてないんならほっといてもいいんじゃない?
18 :
NAME IS NULL :04/07/08 17:32 ID:bs8jTisP
設計をキチンとし、自前ロック(Access標準の行ロックは糞) やバックアップを考慮しとけば、数十台で同時入力するような 個所でも使用は可能だろう。 ただ、かえって設計は面倒だし、データ量など考えたら、 mdbでやる意味など無い。 漏れは、そんなことする気は全く無いけどな。
19 :
NAME IS NULL :04/07/08 17:42 ID:k6U7Xnws
>>18 一応同時アクセスの限定はしてます。バッチ処理はいづれかのmdb
からのみ実効可能(まぁ当然ですが)
同時入力を行うのはマスタのデータ登録画面と給与データの保守画面
のみです。
もちろんクエリのリレーションがかかっているテーブルの同時
更新も行えないように片方のMDBのメニューからなくしました。
20 :
NAME IS NULL :04/07/08 18:47 ID:bs8jTisP
>>19 結局何が言いたいわけだ?
漏れは別に、2-3台程度でデータ件数も知れていて、
問題なく運用できる自信があれば、お好きにどうぞ
と言っているわけだが?
21 :
NAME IS NULL :04/07/08 23:04 ID:n/uPySIo
22 :
NAME IS NULL :04/07/09 09:52 ID:4RiSCMN+
>>20 後々変なことになるか?という質問に対して変なことになる
と自身満々に答えたあなたの自身はどこから来たの?
と言いたい。過去の事例に基づいていっているならもう少し
詳しく聞きたかったんだが・・・。
どうやらおまいは知ったかでいっているようだな。
無知な技術者はPC初心者のスレに行きなさい。
>>21 こっちもお断り。逝ってよし。
23 :
15 :04/07/09 10:16 ID:???
24 :
20 :04/07/09 11:22 ID:D5mPkM2s
どーでもいーが、漏れが>15と同一かどうかぐらい 文面見て判断できんのか?
25 :
ななしのごんべい :04/07/09 12:43 ID:gYKaIf2G
どなたかデータベース作ってもらえませんか?
26 :
NAME IS NULL :04/07/09 15:41 ID:RxJ07FmE
エッチなデータベース作ってください…(ポ
問題なくログ削除してよさそうだな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
製品は一日じゃ作り終わらないから何日もその時間を入力していってその時間がどんどん足されていくというのを作りたいんですがどーやればいいでしょうか? 重要なのはクリックすると白紙になるってとこと時間がどんどん足されていくというところが出来なくて今悩んでいます。教えていただけませんか?フォームはおおかた出来てるんですが…
30 :
NAME IS NULL :04/07/10 10:53 ID:azeV388d
過去の日報をそのフォームで閲覧可能にしたいのなら単票フォームで、 クリックした時、新たなレコードに移動すれば、入力部分はNullになります。 もし過去の日報をそのフォームで閲覧不可能にしたいのなら、非連結のフォームを作成して、 クリック時、追加クエリでテーブルに入力すればいいと思います。 そして、そのクリック時の追加クエリ発現後、入力欄をVBAで空白にする。 例 Me!txt日報=Empty 入力フォームが開いている時間を調べたいのなら、開く時にVBAでTimeを使って、特定のテーブルのフィールドに開始時刻を記録し 閉じる時に再度Timeを使って終了時刻を記録し、その差分を求めるようにすれば作業時間は求まると思います。 開始時に自動的に開くフォームがあるなら、そのフォームの開く時イベントで、Timeを使い、 通常の閉じるボタンの使用を不可にして、自ら閉じるコマンドボタンを作り、そのクリック時イベントで、Timeを使う。 という感じです。 通常の閉じるボタンの使用不可については他のAccess質問サイトを検索すれば、見つかると思います。 私用のためレスできずもうしわけないですが、これで失礼します。 テーブルについて、フォームのコントロールの内容について、 もっと詳細に書かれたほうが、解決は早いと思います。
ニキータさん?
32 :
NAME IS NULL :04/07/11 22:49 ID:qjDKOaVh
データ3000件ほどの2つのリスト(テーブル)AとBがあって それぞれ「名前」「「ふりがな」「住所」「電話番号」の4つの項目があります AをBと比較して 完全一致するデータと、部分一致:例えば「名前」と「電話番号」だけ一致、 、「電話番号」だけ一致 みたいな判別して、Aリストに「判別結果」という項目を作って 表示したいのですがどうやったらよいですか 教えてください
34 :
33 :04/07/12 01:42 ID:???
あー残念。もう寝るよ。
35 :
NAME IS NULL :04/07/12 16:20 ID:AfStwXD+
2002まではDeveloperEditionってのがあってランタイム配布できましたよね。 2003からはその辺が変わってVisual Studio Tools for Officeとかいうツールが必要になるみたいですが .NETがなんたらかんたらと書かれているあたり一癖ありそうな気がするのですが・・・ 実際に使われている方いらっしゃいましたら、使用感など教えて下さい。 今のAccessの最新版はAccess2003ですが、Access2002もまだまだ健在? 素直に2002にした方が吉でしょうか?
36 :
32 :04/07/13 00:31 ID:+bgP3iLc
>>33 ソースって何?
とにかく結果のリストに「どこ」と「どこ」の項目一致という列を作って
入れたいのです
起きたらおねがい
37 :
NAME 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
「名前も住所も電話番号も一致している」クエリ1 「少なくとも名前と住所は一致している」クエリ2 「少なくとも名前と電話番号は一致している」クエリ3 「クエリ1とクエリ2を結ぶ。クエリ2.名前→クエリ1.名前 で、クエリ1.名前=Null」クエリ2A 「クエリ1とクエリ3を結ぶ。クエリ3.名前→クエリ1.名前 で、クエリ1.名前=Null」クエリ3A あとは別テーブルでも用意して、クエリ1に「完全一致」、クエリ2Aに「名前と住所だけ一致」、 クエリ3Aに「名前と電話番号だけ一致」のフラグをくっつけ、インサート。 クエリ1は選択クエリとして再利用しなきゃならないから、インサートは別の追加クエリつくらなきゃ ならないけど、クエリ2Aとクエリ3Aは初めから追加クエリとして作っちゃってOKかな。 実際に試したわけでもない妄想実験なのでダメだったらごめんね
40 :
39 :04/07/15 02:07 ID:???
でも何だかなあって感じ
たぶん
>>32 はさ、テーブルの構造ややりたいことの詳細を簡略化して書いてるんだよね。
で、こっちは、それを鵜呑みにしたふりして時間つぶしの妄想パズルやってる。
ユニークID云々とか、ところで名前とフリガナの食い違いは、みたいなことも、まるで眼中に
ありませんってふりしてさ。
ホントはこんなんじゃ全然解決にならないって、分かってるのにさ。
テーブルAとテーブルBがあり、それぞれキーワードフィールドがあるとします。 キーワードフィールドには、1,2,5のように「,」で区切られた数字が入っています。 テーブルAの各レコードのキーワードがテーブルBの各レコードのキーワードとが いくつマッチしているか調べたいのですが、どうやったらいいんでしょうか? つまり、セパレータ「,」で区切られた文字列を比較して一致した個数を返す関数 の作り方が分からないのです・・・_| ̄|○
43 :
NAME IS NULL :04/07/18 01:10 ID:DoJkEoo4
>>37 >>39 ありがとう!本当に助かります
当方初心者ゆえ本当にわからないんです
教えていただいた事、今から試します!
でもその前に言っておくと
要するに不一致クエリの結果選ばれた対象を
スプレッドシートに選んで出すのではなく
もともとの表のまんまのものにもう一項目付け加えて
「不一致」とか表示したいって事なんだ
クエリじゃないんすけど質問いいですか? IIf([在庫数]<=0,"MsgBox ("在庫がありません",0+16,"在庫不足")=1 ","") でドコが間違いですかねえ?
>>45 MsgBoxのコマンド文字列返して何するんだろう…
フォームのイベントプロシージャで、単にメッセージを表示したいのなら
If [在庫数]<=0 Then Call MsgBox("在庫がありません", vbOK Or vbInformation ,"在庫不足")
では?
>>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通りなのか。
>>47-48 前者でした。急いでいたので、csvエクスポート→C++でSTL&boostウマー→Excelとなりました_| ̄|〇
>>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
51 :
NAME 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等でも構いません。 初心者がここのカテゴリに来るのは如何なものかと 迷ったのですが、どなたかよろしくお願いします。
54 :
初心者T :04/07/28 00:46 ID:KCb+S7h1
ガガン(TT) アドバイス有り難うございます。 本を読んでいてもやり方が書いていないので、 きっとそうなんだろうなとは思っていましたが。。。 でもいきなり郡名を選ぶとなると、 選択肢が多くて探すのが大変になってしまうんです。 なにか良い方法ないでしょうか? コンボコンボ、もしやるとしたら、どうしたらよいでしょうか? 併せてお願いします。
55 :
NAME IS NULL :04/07/28 01:00 ID:Gshvi7n8
初心者ですが宜しくお願い致します。 Aテーブル →[氏名],[名前] Bテーブル →[氏名],[結婚後氏名] (1)上のようなテーブルがあります。クエリで、AテーブルとBテーブルの[氏名]フィールドをキーにしてリレーションを組み、A,Bテーブルのフィールド全てを表示させます。 (2)(1)で抽出されたデータだけ、Aテーブルの[氏名]フィールドをBテーブルの[結婚後氏名]フィールドに書き換えたいのですが・・・・ 注意)Bテーブルの[結婚後氏名]には空欄もあります。 よって、更新クエリでAテーブルの[氏名]フィールドに上書きしてしまうと 空欄まで上書きされてしまいます。あくまでもBテーブルの[結婚後氏名] にデータがある人だけをAテーブルの[氏名]フィールドに上書きしたいのですが・・・。 なにかよい方法はありますでしょうか。 詳しい方、教えてください。 宜しくお願い致します。
56 :
NAME IS NULL :04/07/28 02:00 ID:/5vEUw1P
クエリで、LEFT JOIN 句 やINNER JOIN句でたくさんのテーブルを結合しようとすると 「演算子がありません」というメッセージがでるのだが、どうしてでしょうか。
>>52 テーブルAのフィールドに、県名、郡名、市町村名。
県名のコンボボックスの値集合ソースには、クエリ画面でテーブルAの県名のみを選択。
郡名の値集合ソースのクエリ画面では、県名、郡名のフィールドを選択し、県名の抽出条件に
県名のコンボボックスを指定する。(Ex. [Forms]![入力フォーム]![県名])
ついでに県名のフィールドは表示のチェックボックス外しちゃってもいいでしょう。
市町村名の値集合ソースのクエリ画面では、県名、郡名、市町村名を選択し、県名と郡名に抽出条件を設定する。
県名と郡名の表示はオフ。
説明へたくそですません。
>>55 更新クエリで対応できると思います。
更新クエリのフィールドに、Aテーブルの氏名、Bテーブルの結婚後氏名を選択します。
氏名フィールドのレコードの更新セルに、[結婚後氏名]と入力。
結婚後氏名フィールドの抽出条件に is not null と入力。
(1)で仰っているクエリは不要だと思います。
蛇足ですが、氏名でリレーションを組み、その氏名を更新するというのはあまり歓迎できません。
できれば個人を識別するID番号等のフィールドを設けて、そこでリレーションを組みましょう。
すべて了承した上のことでしたら、失礼致しました。
更新クエリってぇのはあれかい、UPDATE文のことかい?
61 :
55 :04/07/28 23:29 ID:Gshvi7n8
>>58 なるほど!!出来ました!!
有難うございました!!!!!
>>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のレコード番号を変えれば、 県名も郡名も一度リセットされて、 郡名のコンボボックス内のデータも新たに選択された県名に連動すべきなのですが、 最初に入力した県名のデータに連動された郡名が、 いつまでも郡名コンボボックスに残り、 正しい郡名を選択出来ないのです。 どこが悪いのでしょう? 再クエリした内容を、コンボボックスからフォーカスが 外れた時点でリリースすればいいように思いますが、 やりかたが思いつきません。 どなたか、ご指導よろしくお願いします。
65 :
NAME IS NULL :04/08/04 07:14 ID:LIw+Ax9c
accessて使う前はバカにしてたんだけど 4月から使い始めて簡単なのでハマった vbとか簡単〜 クエリのデザインとか楽すぎ コードは醜くなるけど
66 :
NAME IS NULL :04/08/04 21:32 ID:4tvJMmst
時間間隔の単位のwとwwの違いを教えていただけますか?
>>64 県名コンボボックスの更新後処理イベントにコード
Me.郡名.Requery
でいいのでは?
>>66 少しはヘルプ見ろ
※Ac2000以降のヘルプの場合
VBエディタ側のヘルプで「書式」と入れて「"Format/書式" プロパティ ― 日付/時刻型」を...
69 :
NAME IS NULL :04/08/05 22:16 ID:EBb5gW84
クエリとテーブルを内部結合した短いクエリと テーブルを直接参照する冗長なクエリがあるのですが パフォーマンスを比較する方法はありますか?
70 :
NAME IS NULL :04/08/06 20:10 ID:WiPfD8pX
パフォーマンスとは?
71 :
NAME IS NULL :04/08/06 21:22 ID:i7wsIAie
小鼠の得意技。
75 :
69 :04/08/07 00:11 ID:hhIeO9uh
76 :
NAME IS NULL :04/08/07 02:49 ID:b3We31b9
sql serverのフロントエンドとして使うなら最強だけどねえ。 凄い使い易いし。 結局sql serverの一部ツールとして考えれば最強。
77 :
NAME IS NULL :04/08/09 20:13 ID:szBIdzj9
accesssでサブクエリ使えるのですか?
78 :
NAME IS NULL :04/08/09 21:10 ID:D3DW4m3E
79 :
初心者T :04/08/11 08:51 ID:Z7yNIn/w
>>67 64です。できました。ありがとうございました。
80 :
NAME IS NULL :04/08/26 14:09 ID:L70NqcYu
すいません。 名前を選ぶコンボボックスで「Aさん」を選んだ場合、自動的にクラスが「1組」に書き換わり、 その直後クラスを選ぶコンボボックスで「2組」を選んだ場合には「2組」が保存される、 というようなものを作るにはどうしたらいいのでしょうか?
81 :
NAME 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イベントに保存用のプロシージャが必要。
>>68 わや亀レスですが、
ヘルプは、見ました。
「時間間隔の単位」で使った時の違いがわからなくて質問したのです。
(本来、そういう使い方すべきではないのかもしれませんが、
あるテキストにのっていたので)
それに対する答えは、ヘルプになかったと思いますが・・・
でも、解決しました。
83 :
NAME IS NULL :04/08/30 15:23 ID:ko3yWlYh
はじめまして。 質問です。 テーブル及びクエリのフィールド名を、プログラムから 変更することは可能でしょうか。 よろしくお願いいたします。
84 :
NAME IS NULL :04/08/30 15:55 ID:wm4+ze2v
85 :
NAME IS NULL :04/08/31 00:07 ID:ErtCixzY
>>84 83です。
ご回答、ありがとう御座います。
続けて質問なのですが、その方法を教えて
頂けないでしょうか。
まだ、始めたばかりで詳しくないので、
よろしくお願いいたします。
86 :
NAME 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
87 :
NAME IS NULL :04/08/31 00:55 ID:ErtCixzY
>>86 85です。
早々にご回答頂きありがとう御座いました。
早速、これを参考にチャレンジをしたいと思います。
ありがとう御座いました。
DAOの参照設定についてもちょっとは解説してやらないと このコードは使えない肝吸い
89 :
NAME IS NULL :04/09/02 01:18 ID:XOkoeo+v
テーブル1に「会社名」「番号1」「名前1」「番号2」「名前2」というフィールドをつくり、 テーブル2に「番号」「種類」「商品名」というフィールドをつくります。 テーブル1の「番号1」と「番号2」をテーブル2の「番号」に対応させて、 テーブル1をメインにしてテーブル2の「種類」「商品名」をそれぞれ「番号1」「番号2」 の横に表示させるようにするにはどのようにしたらよろしいでしょうか。
「番号2」「名前2」というフィールドを削除し、 フラットな構造にした方が早いと思うんだけど。
>>89 テーブル2を参照するクエリ2を作成。
あとは2つのテーブルと1つのクエリをデザインビューに配置。
2本とも結合のプロパティでテーブル1の全レコードを含めるに設定。
92 :
NAME IS NULL :04/09/02 10:25 ID:vgt66x6m
>>86 85です。
多少試行錯誤しましたが、何とか上手く出来ました。
ありがとう御座いました。
空調設備工事の会社
94 :
93 :04/09/04 17:39 ID:???
↑激しく誤爆。スマソ
95 :
NAME IS NULL :04/09/05 07:14 ID:RVUXCNsc
ACCESSは確か2.0の時少し触ってそれ以来インストールした事も なかったのですが、他の板で気になる表記を見つけで、 ネットワークでの共有に関して、教えてください。 ACCESSだけで、データベースの共有を行う、c/sみないな事って 実現出来るのですか?どこかの掲示板で2000以降なら可能という 記述を見た事があります。例えば、1台のホストに統合的に全て のデータが集まり、10台くらいのクライアントから更新する として、そのカラクリは?
96 :
95 :04/09/05 07:17 ID:???
つづいて、もう一つ、 MS SQL ServerのクライアントとしてACCESSで作ったものを 見せてもらったのですが、SQL鯖との接続部分は、 ACCESSの設定で、サーバのレプリケーションを作って、 そのローカルデータへの作業を、後からサーバに返して あげるというニュアンスの話を聞いた記憶があります。 なんでも排他制御でしんどい思いをするとか市内とか? こんな認識であってますか? 教えてエロイ人
>>95-96 あ、あ、あ、危なーーーーーーーーーーい!逃げて、逃げてぇーーーーーーーー!
98 :
95 :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のほうが良いかも。
100 :
95 :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でゴリゴリ
103 :
NAME IS NULL :04/09/06 18:59 ID:SInApfrv
Access2003で、レポートにImageオブジェクトを貼り付けているんですが、 環境によってPNGファイルが表示できたりできなかったりします。 どこをチェックすれば、その可否がわかるんでしょうか?
104 :
NAME IS NULL :04/09/06 19:03 ID:SInApfrv
105 :
95 :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文法に従う必要があります。 一番早く開発できるように、上記方法を組み合わせます。
107 :
95 :04/09/06 22:46 ID:???
>>106 >「1」のリンクテーブル利用は、パフォーマンスが悪いですが・・・
>「2」は、ACCESSのテーブルと同じコーディングですから理解しやすいです。
>「3」は、SQLが直接サーバDBで実行されるので速いです。
ウホ。だいたい分かったなり。
ありがとう、通りすがり さん。いい人だね。
アタシは3番のが性に合っている様に思います。
ここまで分かったら、興味わいてきたので、
インストールして試してみます。
108 :
NAME IS NULL :04/09/08 19:08 ID:pRMLS3SI
教えて頂きたいのですが… FIREBIRDで作成したテーブルをACCESSでリンクしようとしたところ、 『システムで予約されているエラー』になります。 FIREBIRDではキーファイルを作成しています。キーファイルを削除したところ、リンクが出来るようになりました。 しかし、キーファイルはそのままでACCESSとリンクしたいのです。 ODBCの設定が悪いのか、わからない状況です。 環境 OS WINDOWS98 DBMS FIREBIRD1.5 ODBC IBPhoenix1.2 ACCESSは素人なもので、教えてください。
109 :
NAME IS NULL :04/09/09 01:58 ID:JdVhfrfL
OS:XP, Office:XP 内部結合でFROM句にテーブルを並べた場合、 出てきたクエリを変更しようとしても、まるで スナップショットが選択されているが如く更新できません。 確認のためにデザインビューで開いてみても プロパティはダイナセットになっています。 冗長ですがJOIN句を追加すると更新できます。 バグですか?
110 :
NAME IS NULL :04/09/09 08:18 ID:/JZUED5S
│得意先CD│金額│が入力されたテーブルを、 クエリで得意先CD毎に集計しました。 金額を降順にしたのですが、なぜかマイナスの値が 最大値になってしまいます。 -1000 10000 9000 8000 ... のようになってしまいます。 初心者なもので、全然理由がわかりません。 Win2000 Access2000 です。 よろしくお願いします。
>>110 データ型は数値型?
フィールドサイズを「十進型」にしてませんか?
金額ならできるだけ「通貨型」にして「\」マークが付くのがイヤなら
書式を標準にした方が後々いいと思います。
112 :
110 :04/09/09 09:35 ID:NEAnFtsQ
>>111 十進型になっていました。
ただ、リンクテーブルなもので、テーブルを変更することはできません。
クエリで変換とかはできるものなのでしょうか?
113 :
NAME IS NULL :04/09/09 10:01 ID:4g3XcIyA
>>112 Nullの行があったりするとかなり大変。
114 :
110 :04/09/09 10:15 ID:NEAnFtsQ
>>113 Nullはないと考えて大丈夫なのですが
それだとなんとかなりますか?
115 :
NAME IS NULL :04/09/09 10:29 ID:4g3XcIyA
>>114 それだったら、
SELECT CCur(T1.F1) AS F1 FROM T1
とかで何とかならない?
>>114 NullあってもNzで0にしてやればいいと思います。
SELECT CCur(Nz([F1]))
FROM T1
ORDER BY CCur(Nz([F1])) DESC;
117 :
110 :04/09/09 13:00 ID:NEAnFtsQ
>>115 ,116
そのような方法があったのですか、ありがとうございます。
回答を確認する前に、
クエリに項目「int(金額)」を追加し、それで降順をかけたらうまくできました。
回答していただいた方々、ありがとうございましたm(_ _)m
118 :
h :04/09/11 01:02:25 ID:???
すいません,どうにも見つからないので,ちょっと質問させてください. Accessで,テーブル一覧を取得するSQLは存在しないんですか? しょうもない質問で恐縮ですが(^^;
119 :
h :04/09/11 01:49:28 ID:???
自分で解決できました. GetOleDbSchemaTable()を使え,と・・・.
120 :
NAME 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;"風俗情報" という風に「値集合のソース」を変更したいのですがどうすればいいでしょうか? 値集合のソースだけを変更すると「種類」の表示が変わってしまいました。
更新クエリで種類が2より大だったら種類+1してから 値集合のソースを変更すればいいじゃん。 その前に、設計が……
1;"SM";2;"モロ";6;"看護婦";3;"女子高生";4;"主婦";5;"風俗情報"
123 :
120 :04/09/12 00:01:35 ID:???
124 :
NAME IS NULL :04/09/13 01:16:55 ID:FQ5cpePN
ぎゃあああああああああああああ
看護婦とセクース(;´Д`)ハァハァ
126 :
NAME IS NULL :04/09/19 16:20:40 ID:IrgpIJa8
ACCESS のシステムカタログを弄るにはどうしたら良いのでしょうか? それと CREATE DOMAIN が使えないのですが、バグですか?
ACCESSのSQLで、フィールド一覧のところに自作の関数を埋め込めるじゃないですか。 SELECT ID,SHOHIN_CD,MyFuncNedan(SHOHIN_CD) from SHOHIN_MST みたいな感じで。 この「SQL内でVBの自作関数を使う」っていうのを、 VBプログラムからADOつかってmdbファイルにアクセスするときに やりたいんですけど、どうやるかわかる人いますか? mdbファイル内に使いたい関数を作っておいて(モジュールファイルに記述) 上記のようなSQLをADO recordset の open メソッドで指定しても エラーになってしまいます。 どなたかご存知の方いらっしゃいましたら、ご回答よろしくお願いします。
128 :
NAME IS NULL :04/09/20 14:28:04 ID:liuCgybG
>>127 できまへん。
Access内で完結するマクロをつくって、VBから呼ぶことはできるけどね。
単純なSQLでレコードセット開いて、自前で関数に掛けて使用汁。
129 :
NAME IS NULL :04/09/20 20:59:42 ID:e9WUcsEh
本の種類を管理するテーブルがあります(Access2000)。 種類(数値)、大分類(数値)、中分類(数値)、小分類(数値)、種類名(テキスト型) という感じになっています。 種類(数値型)は000102という感じの6桁の数値で打ち分けは 00 01 02 という感じで桁数によって大分類・中分類・小分類からなっています。 (この場合は大分類=00/中分類=01/小分類=02) 種類を入力したときに大・中・小分類に、大・中・小分類を入力したときに種類に自動で入力されるようにしたいのですが どうすればいいのでしょうか? 知恵を貸して下さいm(__)m
種類と分類が重複しているなんて冗長では?
>129 種類=大分類 & 中分類 & 小分類 なのよね。 自分ならまず、 ○テーブルから種類列(または大中小分類のどちらか)を無くす。 ●次に、大中小分類に入力すると更新前動作で種類フィールドに合わさったものが入るようにする。例えば 種類.value=right("00" & 大,value,2) & right("00" & 中.value,2) & right("00" & 小.value,2) ●同様に、フォームの種類フィールドに入力した値が大中小分類の入力フィールドに分かれる ようにする。 ○種類フィールドを非連結にする。 ○元の「種類、大分類、中分類、小分類、種類名」と同じように見える選択クエリを つくって、別の表示用のフォームなりレポートはそれをレコードソースとして食うようにする。 とするかなぁ。書いてあることだけやるなら、黒●のやつだけやれば実現できるけど、冗長で 食い違った内容が入ったら怖いし、まだ作ってないなら白○のとこも考えてちょ。 時に、種類に 000102 が格納されているとしたらそれテキスト型じゃ、ってオモタけど、 わかりやすいようにそう書いてあるだけよね?
132 :
129 :04/09/20 23:05:51 ID:???
いろいろわかってなくてちぐはぐな事を言ってるかもしれませんm(__)m
>>130-131 詳しくありがとうございます。
確かに冗長ですね。大・中・小分類だけにすることにします。
わからないことだらけであまりよく理解できてないのですが
わたしがやりたかった(過去形)のは「種類」(数値、書式000000)にデータシートビューで000102と入力すると
自動で大分類に00、中分類に01、小分類02にと入力されたら楽ちんでデータが食い違うこともなくていいなーと思ったんです。
もしかしてデータシートビューではそういうことはできないんでしょうか?
うまく伝えられなくてすいません。
>132 (゚Д゚#ええーいデータシートビューで見ているのはテーブルだ!!概念スキーマだ!! それをユーザに触らせるなんて言語道断!!そういう「見た目を扱う部分」「ユーザが触る部分」は 外部スキーマの「選択クエリ」や「フォーム」、「レポート」で表現しる!! そしてテーブルには冗長性を排除した本当のデータのみを格納すべきなのです!!
134 :
129 :04/09/21 23:35:43 ID:???
>>133 ∧_∧
゜(。∩∩)゜。。
もう変なこと考えません
135 :
NAME 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]を大・中・小分類に分解した
内容を表示させるテキストボックスを用意するという方向で。
>>135 いい発想だが、来月に小分類あたりが100を超えて破綻。
>>136 分類コードのコード体系が数字なんだから仕方ないじゃん。
っつーか、小分類が100を超えるなんて分類のしかたが
悪いんだよ。
>137 文字型にして16進数に
ISBNの列だけ残して、あとは削除しちゃえ!
いっそmdbファイルとOffice2000ごと削除しちゃえ!!
いや、冗談じゃなくてさ ISBNには出版国とか出版社、細かいジャンルも含まれてるから ISBNと書名だけあれば十分じゃないかと。
ええい、もうHDDごと消去してジャストウィンドウいれちゃえ!
さて、様々な選択肢が示されたわけだが
>>129 はどうする気だい?
144 :
NAME IS NULL :04/09/23 00:11:53 ID:QstrfqMz
アクセス2000でODBCでリンクテーブルを作って 作業してるんですけど 時々レポートが突然消えたり、開いたフォームを 閉じれなくなったりするんですけど どんな原因が考えられますでしょーか…
小分類が100か〜
それってたぶんオペレータが商品登録時にその場の気分体調で判断することになるんだよね。
DBとして破綻する前に、商品登録はじめの10個あたりでデータ自体どうでもよくなっちゃうんじゃないかな。
というわけで141に一票
>>144 LANケーブル踏んづけたとか、HUB蹴っ飛ばしたとか、いろいろ
146 :
NAME IS NULL :04/09/23 04:08:21 ID:SoLULyfB
図書の小分類って中分類の下にそれぞれあるんじゃないの?
そのうち一つの本に複数の小分類つけたくなっちゃうんだよねぇー。 属性という扱いにしてテーブル分けたほうがよさげ。
分類なんざエロと非エロの2通りあれば・・・
非エロの本を捨てれば分類も不要だな。
玄人の俺に言わせれば、「エロ」だけで分類するのは素人。 ジャンルってものがあるだろうがw
151 :
NAME IS NULL :04/09/23 23:29:12 ID:VhHsEf5k
参照整合性のチェックボックスを OFF のまま テーブル間に「リレーションシップ」作成しました。 作成の前後で、線が引かれた以外で目に見える 変化は起きませんでした。 (DRI でも、直積の制限でもない?) 一体、参照整合性の無い「リレーションシップ」は 何をやっているのでしょうか? テーブルの定義が変わるのでしょうか? ご教示ください。(ビジネス soft 板から移動してきました。)
>151 クエリ作るときに自動的にINNER JOINしてくれる程度の役にしか立たなかった希ガス
153 :
129 :04/09/25 02:54:25 ID:???
おしかりを受けた後スレを見ていませんでした。
レスいっぱいありがとう。
わたしが知りたかったのは
>>135 さんの方法なのですが
わたしには難しそうなので大・中・小だけでデータの種類を表すことにします。
ISBNは名案なのですが、将来本以外も扱いそうなので大中小だけという方法でいきます。
_(._.)_
154 :
さぼい :04/09/25 19:09:05 ID:6XnjLPxY
マッタクの初心者です。 チェックボックス(商品名)をいくつか作り、それぞれに数値(価格)を与えて、 チェックされた箇所の合計を求めたいのですが、どうしたら良いでしょうか? オプショングループで何度かやってみたんですが、うまくいきませんでした…。 「商品」チェックボックスの規定値、値(数値データ)を「合計」フィールドに保存、 を試みてるんですが、数式の入力もクエリでやるのかテーブルでやるのか分からない程の初心者でして… どなたか教えて下さいませ!!m(_ _)m
155 :
NAME IS NULL :04/09/26 02:26:07 ID:+Sm6B5mI
DSum("価格","テーブル名","チェックボックス=True") な感じかな。 チェックボックスって使った経験なしだから良く分かんね もしかしたらTrueじゃなくONとかになるのかな。 合計「フィールド」って言葉が気になるな。 たぶんフッターかヘッダーに貼りつけたテキストボックスのことだよな。 これだとチェック入れたり消したりするたびにRequery しなきゃならないか。 それよりは「合計」の既定値=0 にして、 チェックボックスクリック時 もしONなら [合計] = [合計] + [価格] そうでないなら [合計] = [合計] - [価格] おわりもし のほうがいいかな。 でも何だかよく分かんね。 質問の意味も実は分かってね。
157 :
さぼい :04/09/26 21:43:19 ID:XJeK7tcR
>>156 ありがとうございます!早速やってみます。
DSUM、条件にあったものの合計、ってことですよね。
チェックが入っているものを条件に出来れば良いんですね!
…って、自分で納得出来たような分かんないような…;
とにかくありがとうございます!!m(_ _)m
158 :
NAME IS NULL :04/09/26 22:03:56 ID:uGuPGAei
ググっても分からないので教えてください。 オフィスXPsp2のアクセスなのですが、 テーブルのデザインビューのデータ型からルックアップウィザードを 使って、ルックアップさせようとすると 「選択されたデータソースからデータを取得することができません。 別のテーブルまたはクエリを選択してください」というエラーが出てきてしまうのです。 いろいろなテーブルでやってもダメでして、エラーをグーグルで検索しても ダメなのです。よろしくお願いします。
>>158 一度も遭遇したことが無いなあ。
ルックアップフィールドウィザードで追加されたフィールドの
ルックアップの値集合ソースプロパティの値をコピーして
普通のクエリとして貼り付けて実行できる?
1つのテーブルにAとBというフィールド(列があって) A>0 もしくは B>0 の時、レコードを表示したいのですが どうすればいいでしょう? A | B ------ >0 | >0 といった感じにデザインビューで定義しても and条件になってこまっています。
>>161 Bフィールドの条件を1つ下に書くと...ORになる
神様ありがとうございます。
164 :
160 :04/09/27 16:25:57 ID:???
もう1つ質問です where MONA = 0 and (GIKO = 1 or NIDA = 0) のようなクエリはどうやってデザインビューで 定義すればよいですか? MONA| GIKO NIDA| ------------------ 0| 1| | ------------------- 0| | 1| なんていわないでください。
M|G|N 0|.1| 0| |0
>>164 目的のSQLが分かってるならSQLビュー使え。
レコードに半角スペースだけを入力したいのだけど、 普通に入力しても、入力した半角スペースが消えてしまいます。 半角スペースだけの入力ってできないのでしょうか?
SQLとかでクォーテーションで括ってやれば挿入できた筈。 紛らわしいのでおすすめできないが。
>>168 できました。ありがとうございます。
Accessのレコードに ' ' と入れてみたところ、思い通りに動きました。
170 :
NAME IS NULL :04/09/30 11:33:01 ID:A74TNTmU
どなたかお知恵を拝借・・・。 現在ACCESS2003でデータベース作ってるんですが、 顧客の相談内容を入力する欄を、相談されるたびに 追加するにはどうすればいいんでしょうか? お客様によって相談回数が異なるので、基本フォーム には一回分だけ入力欄を作り、相談するたびに新しい スペースを追加していきたいのですが・・・。 最初っから入力欄をたくさん作っとくってのはどうも・・・。 何卒よろしくお願いします。
顧客ID, 相談回数(相談日?), 相談内容で別テーブルを作る。 何回相談があっても新規レコード作るだけ。 正規化について学習しる。
172 :
170 :04/09/30 13:15:46 ID:A74TNTmU
>>171 ははぁ、なるほど別テーブルですね。
ありがとうございます。
恥かきついでにもう一点。
マウスのホイールをまわすとフォーム内の縦スクロールではなく、
次の入力フォーム(新規)に移動してしまうんですが、
縦スクロールするにはどうしたらいいのでしょうか?
173 :
NAME IS NULL :04/09/30 15:47:10 ID:9PUJMLNY
Accessに保存したインポート/エクスポートの定義を印刷してくれるフリーソフトを過去に 使った事があるのですが、今探すとどうしても見つかりません。 知ってる人いませんか?
>>172 単票フォーム、だよね
だったらしょうがないんじゃないの
よく知らないけど
176 :
173 :04/10/03 01:07:58 ID:???
>175 コレダーありがとん
ADPで非連結フォームのデータを鯖に書き込むときって VBAでひとつずつフォームのデータを集めてから書き込んでいるんですか? すっごく面倒なんだけど楽な方法ありませんか?
178 :
血糖馬券死インスリン :04/10/04 09:41:43 ID:mrKXTtyY
179 :
NAME IS NULL :04/10/05 00:58:21 ID:GdbmbLhZ
WINXP上のアクセス2000でADO(2.7)を参照設定してあるブックを WIN98で動かしたいんだけど、どうすればいいんだろ? MDAC 2.7 SP1 Refreshというのをインストしたけどだめでした。
ブック・・・・
181 :
NAME IS NULL :04/10/05 23:28:15 ID:KdTKVF/J
日付,得意先,商品1,商品2,送料… という表を日付と得意先別に集計したいんですが、 (10月の得意先別売上集計など) 今は日付をBetween〜Andで選択してテーブルを作り、 そのテーブルを得意先ごとに集計して作成しています。 これだと二度手間なので、一度でできる方法はないでしょうか?
商品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
SELECT 得意先, SUM(送料) FROM hoge WHERE 日付 BETWEEN foo AND bar GROUP BY 得意先 ORDER BY 得意先; とかすればいいんでないの?
184 :
182 :04/10/06 01:04:38 ID:Kctj/Umq
>>182-183 ありがとうございます。
抽出用のフォームを作って更新すればいいんですね。
早速
>>182-183 をお手本にして作ってみることにします。
一応、得意先も商品もそれぞれ重複なしのコードをつけて
別のテーブルから引っ張ってくるようにはしています。
185 :
181 :04/10/06 01:07:19 ID:???
>>184 の名前欄は181の間違えでした。
訂正します、すみません。
>>179 xp上でそのブックが正常に動作するんなら
98にMDAC 2.7 SP1 RefreshをインストールでOKのはずだが。
俺の場合、XPでビルドしたブックをWIN2000でアクセスと
連携させてるが、MDAC 2.7 SP1 Refreshのインストールで
フツーに動いてる。
187 :
1192 :04/10/10 17:38:26 ID:Z2btVjPb
Aテーブルでコマンドボタンクリックしたら全レコードに更新クエリを適用させるにはどうしたらいーですか?
188 :
NAME 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というのはどう書くのでしょうか? よろしくお願いします。
189 :
188 :04/10/11 21:12:13 ID:???
その後自分で考えて、 select top 1 日付 from 仕入履歴; というSQLを元にすればよいのではないかと思いました。 日付を軸に別のテーブルとくっつけるときは 副問い合わせとinを使い表現しようと思います。 selectでテーブルを出力し、さらに別のテーブルと結合したいのですが これはunionを使うのでしょうか?
>189 横につなげるならカンマでつなげるか JOIN 、縦に積むなら UNION。 SELECT top 1 a.日付 AS 前月日付, top 1 b.日付 AS 今月日付 FROM 仕入履歴 a, 仕入履歴 b WHERE 前月日付<Dateserial(year(date()), month(date()), 1); とかかな?Access 手元にないからわからんけど。
191 :
188 :04/10/11 21:46:07 ID:???
うぉぉ!dateserialってVBAですね。すごい人に解答を頂きました。 自分はまだSQLの勉強を始めたばかりで、 アクセスにVBAや関数がどう使われるのか分かってなかったのですが 実例を見せていただき、ありがとうございます。
192 :
NAME IS NULL :04/10/16 17:47:17 ID:A3CJ3oFV
ある時点でのmdbと今の時点のmdbを比較して 変更のあったプロシージャなどをリストとして出力してくれたりするツールってない?
193 :
NAME IS NULL :04/10/17 19:19:45 ID:uH7rsvff
Access2000のmdbファイルを、 Access97で開く方法ってないのでしょうか? とにかく今は、Acccess97しか使えない状況です。 VBで吸い出すことも考えたのですが、 mdbの中身を把握してないし、 コーディングしてる時間もあまりありません。 ツールとかあればお教えください。
自己解決しました。 失礼しました。 (193)
グリグリ(´Д`
>>194 (⊂(・∀・ )どうやったのかおしえろよぉ〜
196 :
NAME 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が必要なようです。
もしかしたらこれで出来るかも。 '-----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
Access初心者にお勧めの解説書はありますか? あれば教えてください、お願いします。
>>192 $ strings a.mdb > a.txt
$ strings b.mdb > b.txt
$ diff -c a.txt b.txt
>>196 Access2000からでもオラクルのリンクテーブルに貼り付けるときエラー出ると思う。
自分でもいろいろ試したんだけど、oracleのvarchar2型で長めのカラム
(256バイト以上とかの)への貼り付けでだめになるみたい。
もし同じ現象なら、コピー元のACCESSやEXCELで、そういうカラムに対応
するとこに半角スペース(なんでもいいから空じゃない文字列)を設定して
おいてコピーペーストするとうまくいったよ。
クロス集計について教えてください。以下のクロス集計クエリを実行すると「抽出条件でデータ型が一致しません」とエラーになります。 [選択クエリ] 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(選択クエリ.数量) で望む結果が得られます。 解決方法が分かる方が居られましたら、よろしくお願いします。
204 :
203 :04/10/22 00:45:19 ID:???
自己解決しました。 mdbのクロス集計クエリでは無理?だと思ったので、adpを作成し、MSSQLのストアドプロシージャに 任意の期間に出現する曜日の回数を平均値の算出に使う「割る数」用パラメータとして投げ、 T-SQLで計算しました。 というか、質問するときに SQL Server 2000 + Access 2003 という環境を書いていませんでした。 すみませんでした。
205 :
NAME 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を使わなくても出来る方法等、ございましたらお教えください。
質問させてください。 何もないところにFormを作って、その中にテキストボックスのコントロールを 追加するというのをVBAでやりたいのですが、可能でしょうか? 本を読み漁って見ましたが、フォームはCreateForm(DB,Name)で 可能みたいですが、その後のコントロール作成まで書いていませんでした。
209 :
NAME IS NULL :04/11/05 21:03:41 ID:U4IQ8MN6
作成したデータベースを共有していて、 2人同時に使用したことによってひらけなくなりました。 バックアップファイルもなく、 修復もインストールもできません。 何か開く方法はありませんか?
>>209 (-人-)ナムナム
新しいMDB上からインポートで吸い出したり、ADO とかで差し込んでテーブルだけでも…
だめだろうナァ。
(-人-)♪バ〜ックアップを忘れずに〜、メモリが飛べばおしまいだ (あっ)
>>209 興味があるのでその壊れたmdbどっかにうpして!
調べるから。
情報漏洩の悪寒
先日入社した会社の基幹システムがAccessです。 顧客の担当者が部署を変わるたびに部署コードを 顧客の電話番号を入力して検索ボタンを押して待つ(十秒ぐらい) ↓ 検索結果が表示されたら修正をする ↓ 更新ボタンを押して待つ(十秒ぐらい) と一件一件開いて更新しています(つД`) おかしくないですか。
>>213 おかしい。
その担当者は前の部署の後任に顧客を引き継ぎするべきだ。
電話番号にインデックスはってないんじゃないの?
>先日入社した会社の基幹システムがAccessです。 (ノД`)シクシク
基幹がAccessって10人ぐらいの会社?
10人ぐらいだったらAccessが基幹システムでも大丈夫なんですか?
>218 200〜250人くらいが限界だな。それ以上になると列を増やせなくなるから特別なテクニックが必要になる。
>219 おまえ素人だな。 テキスト型のフィールドに固定長でデータを持てば項目数の限界なんか一発で解決するぞ。
社員20人の会社なら大丈夫でつか?なんかおまいらの話聞いてると不安になってくる(;´д`) 勢いで買っちゃったしなあ。月2000件ペースでレコード入力なんですが。。
>>221 普通に作れば全然大丈夫。
ただし、同時に複数箇所からデータ入力とかしないこと。
223 :
221 :04/11/19 12:24:42 ID:???
>222 安心しました。 てか、同時入力なんて恐ろしい事が出来るんですか? ガクブルですね、勿論しません。
224 :
NAME IS NULL :04/11/19 12:32:51 ID:waZhySUT
>>223 いや、あんたがせんでも偶然他人がすることもあるだろ。
Access危険ってのはそのへんの制御があんまり効かないのも
一つの理由。
225 :
NAME IS NULL :04/11/19 18:23:24 ID:VrSFpYy5
Addnewの反対 削除は何でしょうか?
226 :
NAME IS NULL :04/11/19 18:29:57 ID:LY57dq1w
会社の中枢システム関連のフォルダの中に.mdbというファイルが イパーイなんですが、これが基幹がAccessということですか? それとももっと上位のデータベースを使っていても Accessのファイルを使うということがあるんでしょうか? 全国の支店あわせて社員1000人ぐらいはいるとおもうんですが Accessでもそこまでできるものなんですかね (゚д゚;)
228 :
NAME IS NULL :04/11/19 22:09:09 ID:waZhySUT
230 :
NAME IS NULL :04/11/20 04:26:09 ID:RTyGiyyl
OracleのフロントエンドにAccessを使ってるだけかもしれないじゃないか。
>>223 普通に作ってあればの話し。
>検索ボタンを押して待つ(十秒ぐらい)
て言うのは普通か?
>>230 同感。基幹でMDBいっぱい使ってデータ分散させてるってのはちょっと考えられないっす。
基幹DBは他にあって それを参照するために MDBからリンク張ってるか。
全然別個の業務に使ってるとかだろーね。 基幹がAccessではなく 枝葉がAccess
>>230 ,232
Oracleとか使っててもAccessファイルを使う
ということもあるんですか…。
でもそれをするメリットって何なんでしょうか?
> >検索ボタンを押して待つ(十秒ぐらい)
> て言うのは普通か?
普通じゃないんですか?(´・ω・`)
もっと待つことある…というより、1クリックごとに
フリーズしていると言ってもよいぐらい重いことも多いのですが、
枝葉とはいえAccessがからんでいることが一つの原因に
なったりしますか?
>>233 ACCESSなら素人でも開発できるからw
帳票はしばらく前までは最強の部類だったし・・・最近は知らん
ORACLEを使っててもACCESSからでは遅くなる なぜなら検索をACCESS内部で行う為にテーブルデータを一度全部持ってくるから 嘘のようだが本当の話・・・やっぱり最近は分からんがw パススルークエリを使えばDBMSの機能を使えるが、ACCESSを使う意味が薄れる。。。
>>234 ,235
まともな処理速度にするための第一歩は
Accessを使うのをやめることだが、
人材がなければAccessをやめるのは難しい…
というかんじでしょうか。
どちらかといえば、お金と時間をかけられるか(かける意味があるか)だな
>>237 システムがランクうpすれば、
エンドユーザーにとっては時間の短縮になるけど、
システム担当者の仕事はいままでより時間がかかるようになる
んですか?
>>238 最近のDBMSはメンテフリーと言っても嘘じゃない(ACCESSで処理できるような範囲なら)からシステム担当の負担は増えないと思う
ただ、クライアント1台ごとにライセンス料が発生するわ、保守に入らないといけないわで、(ACCESSと比べて)とんでもなくお金が掛かる
自社のシステムがOracleとかAceessとか おまいら見た目で分かるんですか?
>>239 やっぱりお金ですね・゚・(ノД`)・゚・。
いろいろ教えてもらい、みなさんありがとうございますた。
243 :
NAME IS NULL :04/11/22 10:29:45 ID:TYoF+TTM
ちょっと質問いいですか? Access2000を使い始めたぺーぺーなんですが、テーブル上のレコード件数を取得(表示?)する方法はないんでしょうか? いまあるデータベースに27カテゴリーのデータがあっていちいち検索絞りででた結果のビューの スライドバーで件数を確認して取得してます。 もぅまんどくさくてまんどくさくて…(ToT 自動でやれるようにしたいんですが、クエリなんか出来るんでしょうか? それともVBで組まないとだめポ?
COUNT
245 :
NAME IS NULL :04/11/22 11:07:13 ID:TYoF+TTM
COUNTは分かるんだけど…
何がわかんねーの?
COUNTで解答にたどり着けなきゃしんでいいな。
249 :
NAME IS NULL :04/11/22 14:49:22 ID:TYoF+TTM
すいません 27カテゴリごとに何件のレコードがあるかを一発で表示、もしくはテーブルにして 表のようにしたいんです。 しろーとには無理でしょうか?
Access2000で会社の作業伝票を蓄積しているのですが、 データーベースファイル(MDB)はあまり大きくなってくると不安定になってくるようなウワサを昔聞いたのですが、 どれくらいのサイズまで大丈夫でしょうか? 現在3.5MBくらいです
>249 27カテゴリって何だよ。 そのカテゴリとやらの考え方や何をどう数えるのかも説明せず どうすればいいですか?じゃ誰も答えられん。
252 :
NAME IS NULL :04/11/22 16:52:03 ID:TYoF+TTM
>>251 ごめんなさい。
01000から27999までの抜けのある番号を主キーにしたデータテーブルがあるんですが、
それらの上2桁が店舗番号になるんです。
つまり、14番店舗は14000〜14999まで範囲があって、その範囲のなかに番号を持つ
レコードがいくつあるかを、手作業で個別ではなく一括で取得したいと…
出来れば、新しいテーブルに01から27までのフィールドをつくってそれぞれ対応するレコード
件数を書いたテーブルまで作れれば…と思って勉強中なんですが、道はかなり遠いと思い
質問してみました。
よろしくお願いします。
SELECT 番号 \ 1000, COUNT(*) FROM テーブル GROUP BY 番号 \ 1000 ORDER BY 1
>>250 2GBまでならモウマンタイ。但し一つのテーブルのサイズが1GBを超えないように。
255 :
NAME IS NULL :04/11/23 20:24:27 ID:neRorjd9
Access の「最適化」って、データベースの圧縮以外に何かしてるんでしょうか?例えば インデックスの再構成とかクエリの効率改善とか。 ただ単にサイズの圧縮だけなら、記憶域に余裕があれば限界容量に近づいたときに かけてやるくらいで、つまりほとんどの利用シーンでまったくかけなくても良いものでは ないか考えたのですが…
256 :
NAME IS NULL :04/11/23 20:42:45 ID:EO0kIJOS
>>255 圧縮っつーよりデフラグに近いイメージだぞ。
>>「最適化」 >>クエリの効率改善 たぶんだけど、逆 最適化されたmdbのクエリは、使い古しでボロボロになったmdbのクエリより遅い (ような気がする) ただ、SQL文直書きの場合は別 以下、アホな素人の勝手な想像 クエリってのは初めて実行されたときにコンパイルみたいなことが行われている。 ゆえに2回目以降の実行は速い。 でも最適化されると新品に戻っちゃう。 SQL文直書きの場合は、どっちにしろ実行しながらのコンパイルなので、 新品だろうが中古だろうが関係ない。 間違ってるかな。 誰か詳しい人解説キボンヌ
>>255 mdbファイルを一旦消して作り直してる
>258 元MDB ↓ テンポラリMDB作成(最適化処理含む) ↓ 元MDB削除 ↓ テンポラリMDB名を元MDBにリネーム つまりMDBが別ファイルになるので,アクセス権を個別に設定している場合は 設定し直す必要がある.
260 :
NAME IS NULL :04/11/24 23:06:23 ID:oskyx2hA
>259 システムドライブと同じドライブにあるMDBだと、最適化を実行したユーザのみフルコントロールに 権限塗り変わるから端末を共用してる場合あとからきたユーザが使えなくなるのな。ドハマリしたよ… NT4 までは良かったのにW2kから突然なってとても困った…
261 :
NAME IS NULL :04/11/25 16:17:40 ID:oyLspmrq
Win2K+ACCESS2000です。 レポートを印刷するために、余白設定で上下を0にしたいのですが、 いくら0にしても6mmに戻ってしまいます。 ちなみにプリンタはNECのドットプリンタ700JXです。 Win98+Win2000のときには上手くいっていたのですが。。。 用紙はユーザー定義の用紙で、プリンタサーバ上で作りました。 1000インチ×1000インチ で余白0の設定です。 ちなみに、プリンタはNTのプリンタサーバにぶら下がってるネットワークプリンタです。 ACCESSとはちょっと無関係?かもしれませんが、 原因ご存知の方よろしくお願いします。
262 :
NAME IS NULL :04/11/25 17:27:13 ID:7tC4W3je
MySQLとかのSQLでいうところの"LIMIT"みたいなSQL文ってAccessやMicrosoftSQLサーバにもありますか?
Access 2003のレポートのプレビューのウィンドウに 「印刷」「閉じる」の文字の書かれたボタンを追加する ことはできますか? 自作のツールバーをドッキングさせたりはできない ですよね?
>>263 プロパティのポップアップを「いいえ」にすればいいのでは?
>>263 私の場合、
・レポート用のツールバーを新規に作成し、当該レポートのツールバープロパティに設定
・レポートOpenイベントにレポート最大化コードを書く
・レポートCloseイベントにレポートを元のサイズに戻すコードを書く
ってなことをよくやります。
こうすればメインウィンドウにあるレポート用ツールバーが
あたかもレポートウィンドウにあるように見せかけることができます。
(レポート以外かは見えなくなっちゃうけど)
ありがとうございます。 その方向でやってみます。
>>261 うろ覚えなのですが、確かプログラムで自動的に余白0にすることは
できなかったように思います。
(ACCESS 2003からできるようになったはずです)
余白0をプログラムでやるためには、Windows APIを使うとできたはずです。
その方法を解説しているホームページもどっかにあったはずです。
いいかげんなことを言ってたらすみません。
268 :
NAME IS NULL :04/11/28 10:58:53 ID:ykSPN17q
Access2000なんですがファイル⇒外部データの取り込み⇒インポートでExcelファイルを 取り込もうとしたとき4割くらいの確率で 「ファイル"***.xls"をインポートするときにエラーが発生しました。 ファイルはインポートされませんでした。」 と出てしまいます。 特に対象としているxlsファイルを開いているとかしていないのですが、、、 何か原因分かる方がいたら教えてください。
269 :
NAME IS NULL :04/11/28 14:43:20 ID:FuQWq6CJ
レポートを開くときに、フォームで作ったリストボックスを 表示して、選択したリストのみのレポートのページ を表示できるようにするにはどうすればいいのでしょうか? 今の所リストを選択するまではできたのですが、 指定したレポートのページだけを抽出できません。 どなたかご教授お願いします。
270 :
NAME IS NULL :04/11/28 15:18:05 ID:zaWAG4jc
>>268 エクセルファイルのバージョンは?
マクロは?
パスワードは?
ていうか開ける?
271 :
ほよよ? :04/11/28 16:04:45 ID:0EO2fi0V
エクセルシートを外部データとして、アクセスの既存テーブルに データインポートしたいんですけど、 「既存テーブル」のリストボックスが選択できないんです。 なんかコツがあるんでしょうか? ちなみに、エクセルとアクセスの、フィールド数やデータ型は 一致させています。
272 :
268 :04/11/28 18:16:21 ID:ib0KDqeq
Excelファイルは開けます。(壊れてません。) Access2000でExcel2003のファイルを開こうとしたからかな? ノートPC買ったときに付録にWORD2003とExcel2003が付いてたのでこの2つだけ2003なんですがこれが原因ですか?
274 :
NAME IS NULL :04/11/29 09:41:17 ID:tn+gSIPb
「商品コード」と「商品名」のテーブルが別に存在しているとして、 入力フォームを作る時に、「商品コード」を入れると「商品名」が 表示されるにはどうしたらいいでしょうか。 住所入力支援ウィザードというのがありますが、あんな感じで。 それぞれフォームののテキストボックスのコントロールソースを 「商品コード」「商品名」にすると、当然ながら連動しないのですが、 検索してもその方法しか見つからなかったもので困っています。
>>274 根本的に間違ってない?商品コードと商品名は1つのテーブルに
しないと思うのですが...
商品名テーブルに商品コードフィールドを追加してDLookupで
商品コードと商品名が別テーブルだったら 商品名テーブルの一意キーは何なのかと。 商品コードテーブルのフィールドは商品コードだけなのかと。 ただコードが縦に一列並んでいるだけなのかと みかんが20581709 りんごが56182677 であることを、誰がどうやって保証してくれるのかと ささ、飯喰って昼寝だ
277 :
NAME IS NULL :04/11/29 12:49:56 ID:tn+gSIPb
>>275 >>276 「別に存在」という書き方がおかしかったようですみません。
納品書などの入力フォームのデータテーブルとは別に、
「商品一覧マスター」のようなテーブルがある、という意味でした。
そこで「商品コード」をオートナンバーにし、「商品名」や「単価」などを
登録していっています。
その「商品一覧マスター」テーブルを元に、納品書などのフォーム
入力の時に、「商品コード」を入れると「商品名」が選択できるように
したいなと思っていたのですが…。
>>275 さんの言うDLookupを使えばいいのかな。調べてみます。
>274 話を省略しすぎだ。訳ワカメ。 商品マスターを入力する時の話なら、それは両方とも同じ テーブルに入れる。(商品名も入力するし) 売上や仕入れを入力するテーブルの話なら、「商品コード」と 「商品名」の双方を含むクエリーを作成して、それをフォームの レコードソースにするのがセオリー。 (商品コードを入れると商品名は自動的に出る) 初心者向けのAccess入門書には必ず説明がある筈なので、 入門書を買って来ることを強くお薦めする。 もしくは、サンプルのNorthWindデータベースを見て、自分の 希望に近い動きをしている部分がどうなっているか調べるとかね。 ただなー、コンボボックスで商品名を選択すると商品コードが 入力される(コードは選択時にしか表示されないが)パターンも 可能なんだがな。 >275 DLookup関数は、帳票フォームで使用されると致命的なまでに 遅くなる。 害虫^H^H外注が未完成で放り出したmdbを完成させるように 命じられた時、一応出来ている部分だけど異様に遅いのも何とか してくれと言うので調べてみたら、帳票フォームでDLookup関数を 使っていた。 単票フォームなら、まだ良いけどね。DLookup関数を使う事自体が 悪いのではなく、害虫の奴のTPOが・・・
279 :
NAME IS NULL :04/11/29 13:10:38 ID:tn+gSIPb
>>278 分かりづらくてすみません。
まず、「商品マスター」には「商品コード」「商品名」の両方入っています。
そして売上や仕入れを入力する時(のフォームを作っていて)、「商品コード」と
「商品名」それぞれのテキストボックスを作り、「商品コード」に入力したら
「商品名」も連動して出るようにしたかったのですが、それの答えが、
>「商品コード」と「商品名」の双方を含むクエリーを作成して、
>それをフォームのレコードソースにするのがセオリー。
もしくは
>コンボボックスで商品名を選択すると商品コードが入力される
>(コードは選択時にしか表示されないが)パターンも可能
ということなのですね。
一応、エクスメディアの図解ACCESS2000基礎編を片手に
作っているのですが、もう一度よく読みなおすことにします。
サンプルNorthWindデータベースもじっくり研究してみます。
皆さん、ありがとうございました。
現在MDEで作成したBDがあります。 本支店間でデータを共有するとしたらどのような方法が考えられるか 教えて頂きたいです。(出来るだけコストを掛けない方法で) MSDE+Accessで考えていますが、レスポンスとか悪くなりそうで・・・ 初心者に毛が生えた程度だと思うのでお手柔らかにお願いします。
>280 共有するのは全てのデータか、一部のテーブルだけか? 共有するデータに対する要求は参照だけか?更新もあるのか? 更新された場合、他へリアルタイムに反映する必要があるのか? そうでなければどんなタイミングで同期を取るのか? 最低ラインこれくらいは決めておかないと。 どちらにしろ細かい事になっちまうんで、業務の面から話した方が早いかもなー
282 :
250 :04/11/29 14:18:00 ID:???
おそくなってすみません、254さんありがとう まだ3MBくらいだから全然大丈夫そうですね
280です >281 ありがとうございます。 共有するのは最低限の一部のテーブルだけでいいはずです。 データは追加・修正・削除を行います。 業務内容として 受注・伝票の作成 納品書の作成 原価管理 請求書の発行 入金処理 その他 ってかんじでして1日の更新が100件程度になります。 もとのmdeファイルは私が作成した物ではないのですが、修正変更は私がしました。 Webも考えたのですが、Accessのレポートの機能がどうしてもはずせなくて・・。 LAN内ではMSDE+Accessで十分と思うのですが、 >255あたりにレスポンスのことが書いてあったので、 WAN経由だと遅すぎることになるのかな・・・ データのサイズが営業所毎にmdeで40MBとかなってまして 合計すると200MB・・・・ FTTH接続でも遅くなりそうで・・・・
284 :
NAME 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を参照すれば負荷を減らすことが できる。でも、この場合サブスクライバのデータは常に最新ではなくなるから注意。
これからデータベースを作ってみようと思っています。 文書ファイルの文章やインターネット上の文章をドラッグして選択し、 右クリックから選択文字列をデータベースで検索ということをしたいのですが Access VBAでこれは可能でしょうか?
286 :
285 :04/12/01 02:55:40 ID:???
Access VBAで 右クリックメニューに「データベースから検索」というようなものを追加する事はできるか ということです どなたか是非教えてください。お願いします。
>284さんへ ありがとうございます。 今使用しているmdeをもとに作り直す予定なのですが、 もとのアプリはVBAで処理を全部を行っています。 実のところSQL Serverのビューとかストアドプロシージャとかいまいち分かっていません。 特に設定しなくても問題ないのでしょうか? 現在LAN内でMSDEサーバーを作成して移行作業中なのですが、 Windows認証だとレスポンスが悪すぎます。(接続するのに1分とかかかってしまう。) SQL Server認証だとレスポンスは悪くはないです。 何か設定上の問題なのでしょうか? どなたかご教授お願い致します。
アクセス2002でレポートを使っていますが レポートでコントロールを255以上できませんエラーで怒られました レポートの内容は集計形式で、小計、中計、大計、総合計と コントロールは貼り付けていったところ、最後の総合計あたりで 数の限界がきました。どうやったら回避ますか?
Access2003のレポートにトンボを打ちたいんですが、 余白設定した領域に印刷する方法はないのでしょうか? 詳細の中に直線オブジェクトを配置する方法だと左右で 違うのを実装するのが大変なので、フォーマット時の ハンドラなどでLine()で描画したいのですが。 普通にやると余白領域はクリップされてしまいます。 よろしくお願いします。
>>288 複数のサブレポートに分割するとかはだめ?
試したことないからちょっと怪しいけど…
うまくいったら結果報告キボンです。
>>290 あー、なるほどですね。
やってみます。
292 :
NAME IS NULL :04/12/01 16:49:58 ID:MByc81pd
>287 そこまで話を広げるならSQL鯖スレに投げ直したほうがいいんでない?
293 :
288 :04/12/01 18:20:19 ID:???
>>290 あー、なるほどですね。
やってみます。
<テーブル> 取引先コード 取引先 企業コード・・・・ D345555 aaa 001 D345544 aab 001 D345555 bba 002 F345847 bbb 002 @コンポボックスに企業コードを重複させずに表示させて 001 002 Aそして001を選択すると別のコンポボックスに aaa aab ↑のように表示され Bそこで選択した取引先の情報がテキストボックスに表示される 上記のようなことをVBを使わずにできますか? アドバイスお願いします。
マクロ使うぐらいならVBA使うよな。ふつうは
296 :
294 :04/12/01 23:46:33 ID:???
VBAを使った場合 @コンポボックスに企業コードを重複させずに表示させて ↑の部分がわからない・・・・何を使えばいいのですか?
297 :
NAME IS NULL :04/12/02 00:15:21 ID:Ekcd2egY
>>296 SELECT DISTICT 企業コード
298 :
284 :04/12/02 00:23:45 ID:???
>>287 >今使用しているmdeをもとに作り直す予定なのですが、
>もとのアプリはVBAで処理を全部を行っています。
>実のところSQL Serverのビューとかストアドプロシージャとかいまいち分かっていません。
>特に設定しなくても問題ないのでしょうか?
設定しなくても使えるけど、mdb 共有よりもはるかに遅くなる。そんな使い方をするなら素直に
mdbを共有しとけってこった。ちゃんとインデックス張ればそれなりに早いぞ。それなりに。
ビューもストアドも、mdbでいうクエリをデータベース側に保存したもの。選択/射影/結合などを
データベースに実行させて、その結果のみを受け取ることでネットワークに流れるデータ量を
削減する効果がある。
ビューは普通の選択クエリ、ストアドはパラメータクエリや追加/更新/削除クエリなど
パラメータを与えたり行を返さないクエリがそれぞれ該当する。ストアドはちょっとしたプログラムを
作成できるからmdbのアクションクエリより高機能。
>Windows認証だとレスポンスが悪すぎます。(接続するのに1分とかかかってしまう。)
BDCやPDCがMSDEサーバのネットワーク外にない?
Accessでテキストファイルを読み込むことてできますか? VBもよくわからないが。VBAはもっとサパーリです。
>>299 データベースウィンドウのテーブルの何もないところで
右クリックしてインポート
来月のデータを抽出したいのですが、month+1だと 12月のデータは13月になってしまい抽出されません どうしたらいいものか・・・
>301 month MOD 12 + 1
DateAdd("m", 1, Now())
if month + 1 > 12 then month = month - 11 else month = month + 1 end if
>>302-303 -304
ありがとうございます!皆さんの式を
自分なりに考えて作ってみましたが上手くいきません。
生年月日のフィールドから来月の誕生日を抽出する条件なんです。
302の方、もう少し詳しい解説を頂けますか? よろしくお願いいたします。
なんでもう少し詳しくなんて・・・orz
とりあえずmounthの型は何でどんな値が入っているのかくらい書けよ。 >302の解説?ヘルプで「MOD」嫁
生年月日フィールド テキスト型、 昭和○○年○月○日 ここから月の部分を取り出したフィールドを作って→month(生年月日)、 来月が誕生日の人だけが抽出されるように条件をどうすればいいのか 考えているところです
>>308 print DatePart("M", cdate("昭和60年5月23日"))
5
>>308 クエリでとあるフォームの値+1で抽出するとか
>>309 ありがとうございます。初めて見る関数ですが今からやってみます。
>>310 それをやったら12月+1は13月となり、
1月の誕生日の人が抽出されませんでした
>309 (´゚▽゚`)ヘェーcDateって和暦にも対応してるんだ。 DatePart("M", cdate(生年月日)) = month(date()) MOD 12 + 1 とかなるのかな。 #激しく重そうな悪寒
工場の能率集計のデータベースを作ったのですが、一年間蓄積したデータを次年度更新 出来るようにして、前年度のデータはそのままどこかにボタン1つで残せるようにって できます?その時に更新された次年度の時には、入力フィールドには前年度分はクリア されてるようにしたいんですが…。 マジで困ってます。 ヘルプお願いします。ファイルを渡せれば一番わかってもらいやすいのですが ここでは無理そうだし。どうしたものですか?
>313 今テーブルを参照してるなら、選択クエリで今年の分だけ見せるようなクエリをつくって、それを 参照するように変えたらどうカナ?どうカナ? SELECT * FROM hoge WHERE 日付>=dateSerial(year(date), 1, 1) データ量が多くてあふれてしまうようなら物理的に移動する必要があるけど、そうでないなら これで見かけ上今年の分しかないように見せられる。
早速の回答ありがとうございます。見かけ上だけでなく、物理的に一年分を違う テーブルにボタン1つで移動して、それをCDに焼いて保存したいみたいなんですよ。 その作業をするのも初心者の人が扱うから、ボタン一つでファイルそのまま別で保存して、 テーブルはきれいに初期化できないのかと考え中です。 一度、どこかにファイルをアップしますので、みていただけませんか?って どこにアップすれば見てもらえるか、わかんないですが…。(泣
テーブルを 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 すると。事前にテーブルを作る 手間があるけどインデックスとかちゃんと張った状態にできる。
ありがとうございます。がんばってみます。
>>312 神よ!できました! ご協力いただいた皆さん、本当にありがとうございます!
教えてください。(アクセス2000です) ツール→起動時の設定で「すべてのメニューを表示する」のチェックを 外してしまったのですが、起動時の設定の画面を表示させるにはどうした らよいのでしょうか?
>319 ●Shift 押しながら開くとよいよいよい(例のアレ含む)
321 :
NAME IS NULL :04/12/07 19:59:55 ID:z3NKJSUC
今までAccess97使ってて、最近AccessXPを触り始めたんですが、 97で作ったやつ開くとデータベースウインドウやらフォームやらが タスクバーに複数表示されてしまうんですが、これはこういうものなんでしょうか _____________________________________ |Microsoft Access| |○○ 21:10 |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ つまり↑(97)が↓(2002)みたいになるんですが _____________________________________ |データベース ウィ...||フォーム1||フォーム2||フォーム3| |○○ 21:10 |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
322 :
321 :04/12/07 20:17:29 ID:???
って 出来ました オプションに項目がありましたね・・・ スレ汚しごめんなさい
323 :
NAME IS NULL :04/12/08 13:37:11 ID:Piqvil6s
あるフィールドに文字列で“1424A1”みたいに6桁の番号がつくレコードがずらーっと並んでるとします。 とある条件抽出した結果をこのフィールドの番号の上位3桁(↑の場合‘142’。ほかにも‘149’‘201’といろいろある) ごとに並び替えたい時ってどう指定すんでしょうか? 文字列抽出関数( getstr("1424A1",1,3) …"1424A1"の1番目から3文字を取り出すの意)みたいなのも見当たらないし…
LeftなりMidなりご自由に
325 :
323 :04/12/09 08:14:36 ID:YLsSSe+i
そんなんあるんでしたか!? まだまだヒヨッ子なもんで(^^; 調べてみます。
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フィード分する様なケースです。
!を使った表記はやめたほうがいいんじゃなかったっけ。 If rs1("フィールド名") <> rs2("フィールド名") Then 〜 じゃあかんの? 一歩進めてForEachでFieldsを回せば、列数がいくらあろうと数行で済む。
>>327 早いレスありがとうございます!お陰様で解決しました!
329 :
NAME IS NULL :04/12/09 20:28:13 ID:I8w4oecc
英語版のACCESSで作ったデータベースで sql文を勉強したいのですが 抽出条件に日本語を入れると 抽出できません。回避する方法を教えて欲しいです。 よろしくお願いいたします。
330 :
名無しさん@編集中 :04/12/10 00:08:52 ID:tbEhD8x/
まったくDBについて詳しくないのですが、会社でACCESSを やることになりました。まったくの初心者からなのですが初心者向きの テキストでよい本はないでしょうか。
331 :
NAME IS NULL :04/12/10 08:24:11 ID:ZPm6RTeR
僕のオススメは技術評論社の『Access はじめてのデータベース』(牧村あきこ)が いいと思います。これでおおよその概念を理解したら各種ブ厚い技術書などで 何をAccessでどうするには、こうする…といった事を学べばいいと思います。
332 :
319 :04/12/10 16:54:30 ID:???
>320 遅くなりましたが、ありがとうございました
某魔法使い氏の書いた本ってどうなのかな?Webはとてもわかりやすいけど…
334 :
NAME IS NULL :04/12/14 22:49:22 ID:D72VyWAr
いまだにデザインクエリなしにjoinできないよ
335 :
見習 :04/12/15 01:06:07 ID:k4K3flzj
joinって外部結合のことですよねー。 デザインクエリで外部結合するのってどうしたらいいんでしょうか?
ジョインっつったらインナーに決まってる
いや、たまにはレフトライトぐらいは許すが
時期的に考えると彼女とJOINしなきゃ・・・
INNER JOIN と書くのがマンドクサイんで、省略語 JOINNER を作りましょう。 なんとなく結合が高速で出来そうだが
>>341 FROM hoge, moge って書いとけ
344 :
NAME IS NULL :04/12/18 02:34:11 ID:h2gNGJtd
知人の企業にaccessで在庫管理とDM発送ができるものを作ってくれって言われたんだけど、 いくらぐらい貰ったらいいんだろ? 年商8,000万くらいの企業で、当方ただのpcオタク。 相場はどんなものか教えてエロイ人
>>344 毎日使い方の質問責めにあい、遅いと文句を言われ、
追加開発はロハでやらされ、バグが出ようモンなら徹夜で対処、
会社に損害与えりゃ下手すると賠償 →廃人まっしぐら
結論: 逃げろ
346 :
NAME IS NULL :04/12/18 09:33:50 ID:Q/BQD6+3
>>344 どこまで面倒見るかだけど
800万円くらいじゃね?
347 :
NAME IS NULL :04/12/20 01:02:18 ID:DjaX5Zlu
質問です。 VB6(DAO)+SQLで.mdbファイルにテーブルを作成する際、それと同時にフィールドの説明欄への 文字入力を行うためのSQLコマンドは存在するのでしょうか? 過去にどこかで見たような気がするのですが、必要になったとき探してみると見つからなくて…。
348 :
いなむらきよし :04/12/20 18:33:49 ID:Be2dmnG6
奇形でキュアキュアだキケー!
349 :
NAME IS NULL :04/12/21 17:18:16 ID:9oIOyQt+
失礼します。 他人が作ったフォームに新たにフィールドの値を表示させるテキストボックスを作ったんですが、 そのテキストボックスにどのテーブルのどのフィールドの値を対応させる…とかいう設定が見当たら なくて困ってます。 そのフォームはデザインウィンドウにした時、ツールボックスの『フィールドリスト』が選択不能(灰色) になってます。 何がどうなったんのか、トホホ
・・・テキストボックスじゃなくラベル貼ってるに1票
実は費連結フォームだった。に一票
352 :
NAME IS NULL :04/12/22 02:15:49 ID:NFyyyNPR
株価の4本値のDBを作りたいんだけど、前日比はどうやって計算させたら良いの? Excelなら単に上のセルと引き算すれば良いだけなんだが、Accessはまったく異なるよね? 他のテーブル(TOPIXとか日経平均先物など)も作成するので、日付データなんかは別テーブルに した方が良い?
>>352 >株価の4本値のDBを作りたいんだけど、前日比はどうやって計算させたら良いの?
SQL使え。
>他のテーブル(TOPIXとか日経平均先物など)も作成するので、日付データなんかは別テーブルに
した方が良い?
お好きなようにしてくらはい。
354 :
NAME IS NULL :04/12/22 07:53:06 ID:NFyyyNPR
>353 > SQL使え。 簡単に言ってくれるじゃないか。 スキルが伴わないんだよ・・・ クエリのフィールドへ数式入れてみたんだけど、エラーが出て使えないのだ。 > お好きなようにしてくらはい。 らじゃ
>>354 どんな風に書き、どんなエラーが出たのか書きなよ。
別テーブルの同名フィールドの計算ならフィールド名の前に
当該テーブル名(ex:テーブルA!)を付ければ大丈夫だけど...
356 :
NAME IS NULL :04/12/22 09:55:45 ID:990xE7a3
349ですが、全てのてきすとボックスに「非連結」と出てます。 ちなみにコレってプログラムか何かで、テーブルの各フィールド値を放り込んでる とかってんでしょうか?(予想) だったら、僕にはどーしよーもないやorz
357 :
NAME 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)"構文エラー と出た。 ただ、上記の計算式は受け売りなので、どこが構文エラーなのかワカラン・・・
358 :
NAME IS NULL :04/12/22 10:31:46 ID:NFyyyNPR
>>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;
こうしてみてどうか?
360 :
357 :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)
試したら、「カレントレコードがありません」ってエラーダイアログが出た・・・
361 :
357 :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)
ageスマソ
>>361 225tの中にID225tフィールドの値が重複して存在する?
その場合はサブクエリ単体で起動(※)すると分かるけど値が
複数出るからエラーが出る。
※
SELECT [225t].[225C]
FROM 225t, 225t AS A
WHERE (((A.ID225t)=[225t]![ID225t]-1));
をSQLビューに貼り付けて見て複数行でれば問題あり
>>361 当日終値-前日終値をするの?
その逆?
365 :
357 :04/12/22 15:11:34 ID:???
>>363 重複していない。
361は、(知識も無いのに)「もしや・・・」と思ってやってみただけなのでスルーで。
>>364 そう。
前日との差を出したい。
366 :
357 :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;
長いけど...
367 :
359 :04/12/22 15:19:02 ID:???
↑名前間違った...orz 357は359ということで...
368 :
357 :04/12/22 15:35:39 ID:???
>>366 うおっ!でけた!
ありがとん!!
ただ、表示される差(本日終値-前日終値)の桁が、小数点以下第2位だったり、
同11位だったりバラエティに富んでるんだけどw・・・・なぜ?
プロパティで表示桁数を指定しても駄目っす。
と、もう一つ。
今回は日経平均だけなんだけど、他に日経平均先物・TOPIX・TOPIX先物も
同様にする場合は、別のクリエとして作成した方が良い?
同じクエリに詰め込んでしまおうかと考えてたんだけど・・・(何せ無知なんで)
もし、同じクエリでもOK!ってな場合なら、同様の差を出すようにするのは困難?
・・・・って聞いてる時点で困難か?
369 :
359 :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(デザインビュー)で繋げた方(結合線)がいいぞ
370 :
357 :04/12/22 20:58:03 ID:???
>>369 度々さんくすこ!
教えてくれた方法を理解するよう努力するっす。
ありがとう。
371 :
NAME IS NULL :04/12/23 21:33:23 ID:mmzK1fwb
すみません、ショボイ質問かもしれませんがよろしくお願いします。 EXCELからのファイルのインポートに失敗して困っています。 具体的な方法としてはACCESSからインポート先のACCESSファイルを開き [ファイル]-[外部データの取り込み]-[インポート]からインポート元となるEXCELファイルを指定しています。 フィールド数・レコード数が少な目のテストデータをインポートした時には成功するのに 実際の本番データでは「●●件のレコードが失われました」となります。 その失敗した件数が、[契約期間(始)][契約期間(終)]に日付データが入っているものばかりです。 EXCELのファイルのフィールドは次のとおり。 [顧客名][顧客カナ名][TEL][FAX]・・・[契約期間(始)][契約期間(終)] もちろんACCESSファイルにも全く同じフィールドが存在します。 レコードは大量にあります(ファイルに因るが最高で500件くらい)。 このEXCELファイルの後の方のフィールド[契約期間(始)][契約期間(終)]は、表示形式を「2004/11/30」の日付形式にしているので 実際には日付のシリアル値が入っている事になると思います。 このフィールドはACCESS側でも日付形式です。 何か良い方法はないでしょうか?仕事にならなくて困っているのでどうかよろしくお願いします!
372 :
NAME IS NULL :04/12/24 08:54:05 ID:d0I1mRl1
基本外的な質問かもしれませんが、 アクセスの各ウィンド内に表示されるテーブルやクエリなどのデータ表示の フォントを大きくしたり小さくしたりって出来るんでしょうか? こまごまとしたデータやクエリのデザインなどでは字を大きくして見やすく、 ほんのすこしスクロールが必要な位のテーブルは字を小さくして画面内に収める、 とか出来たら便利か、、、
>>371 たぶんなのだが...
データの1列目には、[契約期間(始)][契約期間(終)]両セルともデータが
入っていない(もしくは日付型でない何かある)のでエラーとなるのでは?
xlsをリンクテーブルにしてみて確認してみては?
374 :
NAME IS NULL :04/12/24 17:18:09 ID:ae30sZD8
カナリ初心者です。質問させてください。 給料計算のレポートを作っているのですが、 ・テーブルで時給を記入 ・クエリで時給×勤労時間を計算し、給料を算出 として、 ・レポートで時給と給料を記入 したいのですが、レポートウィザードで ・テーブルから時給を ・クエリから給料を 選択しようとしたら、 「選択したフィールドのレコードソースにアクセスできません。テーブルと、 そのテーブルを基にしたクエリのフィールドを選択した可能性があります。 もしそうであればテーブルかクエリのどちらかのフィールドだけを選択してください」 とエラーが出るのですが、 レポート1枚にテーブルとクエリの情報を両方載せることは不可能なのでしょうか?
>>374 クエリにも時給フィールドを追加してけばいいのでは?
376 :
NAME IS NULL :04/12/24 19:41:36 ID:xpCRdUCq
アクセスで賀状とかの住所録を管理してんだけど 横書き住所のときは気にならなかったんだけど 縦書きでレポート作って出力すると 数字が横になったりハイホンが縦に入らなきゃ変なのに横になったりと 直接入力とカナ入力での違いの出力に激しく違和感があるんだけど なにか改善策ってありますでしょうか?
377 :
NAME IS NULL :04/12/24 22:47:41 ID:VbD8Zt5s
>>376 縦書きの場合、数字を全角・ハイフンを半角で入力する。
同じ入力方式で、双方に対応させたいというなら・・・・・・・・
数字は全角で、ハイフンの代わりに「の」にするしかない・・かな。
379 :
NAME 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 を表示できません。」
もちろんこの間にフィールド名の変更など一切行っていない。
なぜこのようなエラーが出るの?
380 :
357 :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;
なんで勝手に変更されんねん!!!
381 :
357 :04/12/26 11:24:31 ID:???
ちなみに何度書き直しても同じエラーが出てしまう。 クエリの書き換えをされないようにするにはどうしたらいい? それとも書き換えされるってことは、元の構文がダメダメ?
>381 「デザインビュー」で表示しようとすると勝手に書き換えるよ。 (そういう仕様) それでエラーになるのは、複雑過ぎて処理できないんでしょうね。 UNIONクエリーだとデザインビューで表示する事が出来ないから 書き換えは無いんだが。 と言うわけで、手でSQL文を書き込んだ奴はデザインビューで 表示しない方が良い。
383 :
359 :04/12/27 08:46:25 ID:???
>>381 382氏がいうとおり、SQL文を書き換えてしまうのはAccessのSQLビューの仕様らしい
サブクエリ使用時は特に
(****) AS Q1を[****]. AS Q1と書き換えるのでたぶんその辺を再度(****)AS Q1の
ように書き換えれば大丈夫かと...
だから、サブクエリを使わずに小クエリでやったら?と提案したわけ...
>369の「サブクエリを使わないで」以降を参照
384 :
NAME IS NULL :04/12/27 09:14:27 ID:B7Xnonh+
今会社でACCESSの購入を検討してるみたいなんですが、2000と2002と2003って 何がどう違うのでしょうか? あと2004って発売予定ってあるのでしょうか?
>>384 Officeファミリ全体に言えることだけど、2002でXMLとの連携機能が搭載されて2003で強化された。
以下Accessの差異。これで全部じゃないけど。
2002で複数回のUndo,Redoに対応して生産性が向上した。
2002でピポッドテーブル、ピポッドグラフを扱うことが可能になった。
2002バージョンのファイル形式が追加されてレスポンスが向上した。(既定は2000形式)
2003でAccessにもスマートタグ機能が搭載されて操作性が向上した。
2003でプロパティやフィールドの継承が可能となり生産性が向上した。
2003でクエリ等オブジェクトの依存関係をAccessが憶えてくれるので保守性が向上した。
2005は .NET Frameworkベースの開発環境になる可能性がある、と海外のBlogで仄めかしがあった。
次期VB.NETからDBシステム構築関係の部分だけを抽出した状態で出てくるんじゃないかと思う。
実際のところは分からんけども。
386 :
385 :04/12/27 13:02:42 ID:???
2005って書いちゃったけど、次期バージョンが2005なわけ無いねw
387 :
384 :04/12/27 13:18:37 ID:B7Xnonh+
2005?かどうか分かりませんが、待ったほうがいいんでしょうか? 説明が出来なければ2003を買えといわれるだけですが、、
388 :
NAME IS NULL :04/12/27 14:28:11 ID:UbXan2Tw
| / / |_|/|/|/|/| (´⌒(´⌒`)⌒`)
| / / |文|/ // / (´⌒(´祭だ!!祭だ!!`)⌒`)
|/ /. _.| ̄|/|/|/ (´⌒(´∧ ∧⌒`)`)`)⌒`)
/|\/ / / |/ / (´⌒(´(,゚Д゚ )つ `)`)
/| / / /ヽ (´⌒(´⌒ (´⌒( つ |〕 /⌒`)⌒`)
| | ̄| | |ヽ/| 遅れるな!! ( | (⌒)`)⌒`)
| | |/| |__|/. ∧_∧ ⌒`).ドし'⌒^ミ `)⌒`)ォ
| |/| |/ (´⌒(´( ´∀` )つ ド ∧_∧⌒`)
| | |/ (´⌒(´( つ/] / ォと( ・∀・ ) 突撃――!!
| |/ ( | (⌒)`) ォ ヽ[|⊂[] )`)
| / (´ ´し'⌒^ミ `)`)ォ (⌒) |
|/ .  ̄ (_)`)`)
/
http://news13.2ch.net/test/read.cgi/news/1104088900/
>384 2000と2003を使った俺の感想 2003のアクチがマンドクサ
VLだから無問題
391 :
385 :04/12/27 17:43:32 ID:???
>>387 今必要なら今、最新バージョンを買う。
必要でなければ買わない。
自分で言っておいてアレだけど、正式発表もされていない製品を待つのは良くない。
現在VSTOが存在し、次期VisualStudioでOffice開発がサポートされるのを見ても
MSがOfficeファミリの開発環境を .NETベースにしたいのは確かなようだけど、
何故かAccessだけ置いてきぼりなんだよねw
.NETに対応したバージョン(出るならば)からAccessの世界に飛び込むのもアリかもしれないけど。
2000のADPってだめだめなんですか?
>>392 使ってるけど、駄目だと思ったこと無いよ。要はT-SQLをどう書くかでしょ。
何でそういう質問を思いついたの?
ACCESSのユーザ管理とWindowsの認証って連動させられないんですかね?
395 :
NAME IS NULL :04/12/28 16:05:49 ID:SSo49SuO
ACCESS 97を使用しているのですが、 列挙型のEnumやSplit関数が使用できず困っています。 参照設定でなにかを指定しないといけないのでしょうか? ご存知の方いましたら、ご回答よろしくお願いします。
396 :
NAME 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 どなたか解決方法をご存知の方がおられましたら、ご教授ください。 よろしくお願いいたします。
>396 LIKE N'[forms]![frmKeikan]![cboKaisyaCode] & [%]') -> LIKE [forms]![frmKeikan]![cboKaisyaCode] & '%') 他のlike句全部同様に処置する。
>>393 >>何でそういう質問を思いついたの?
アップサイジングウィザード使って作ったADPをさわっていて思いつきました。
クエリに連結したフォームの使い方がさっぱりわからんので勉強してます。
399 :
393 :04/12/29 10:58:50 ID:???
( 晴れ) ↓(雪) → → ∧
質問です。 用語検索をしたときに 用語Aを検索>検索結果フォーム1にAの結果 用語Bを検索>検索結果フォーム2にBの結果 用語Cを検索>検索結果フォーム3にCの結果 用語Dを検索>検索結果フォーム1にDの結果 用語Eを検索>検索結果フォーム2にEの結果 ・・・ のように検索結果を3つの検索結果フォームでマルチウインド表示し、3つ表示した時点で古い検索結果のものから 最新の検索結果に入れ替えるにはどのようにしたらよいのでしょうか? どうぞよろしくお願いいたします。
それだけでは的確なアドバイスはえられない思うが。もっと具体的に現在の処理状態などを書かないと 「3つ表示した時点で古い検索結果のものから最新の検索結果に入れ替える」 としか言えんよ。
403 :
NAME 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
>>403 SELECT [No], Max(枝番) AS 式1 FROM テーブル名 GROUP BY [No];
SELECT No,MAX(枝番) FROM TABLE_NAME GROUP BY 枝番 じゃだめなの?
うっ、被った上に枝番でグルーピングしてるし…
>>404 405 スマソ
408 :
NAME IS NULL :05/01/10 14:28:54 ID:Cb/ktuI3
マルチポストですいません。 ファイルサーバーにデータを積むMDBを作成しました。(MDB1) そのテーブルをリンクし、フォームとマクロを使って画面を作り、台帳を作成 しました。(MDB2) MDB2を各ローカルへコピーし、複数人が使用するという使い方なんですが、 たまに 「○○.mdbは認識されません(MDB1の方)」と出て、 修復と最適化が必要となります。 また、それで直るケースと直らないケースがあり、最適化をかけると、主キー 設定した項目にだぶったデータや、「####」という意味不明な文字列になった り、消えるレコードがあります。 これらはどういったことが原因で発生するのでしょうか? Accessは2000と2003を使用する人が混在し、NTとXPも混在しています。作った MDBは2000で作成しています。
>>408 > マルチポストですいません。
許さん。
どことのマルチなのか明記するように。
410 :
NAME IS NULL :05/01/10 14:44:33 ID:Cb/ktuI3
>>409 いや、書き方悪かったので書き直しましたが、 DB板自治・質問・雑談スレ (265)にもいる。
>408 Accessと言うより、Jet Database Engineのmdbを複数人で同時に 使用するような仕組み、特にファイル共有でのそれは推奨されません。 データの読み書きの際に、データの排他処理を行うが、これが アクセスしているPCそれぞれで個別に管理しているので、排他処理 自体が上手くいかない事がある。 書き込みのタイミングが上手い具合に一致すると排他処理が上手く 出来なくてmdbファイルが破損する。 データベースを格納する部分だけでもMSDEやSQL Serverに 変更することを強くお勧めする。
412 :
NAME 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の差分があります。 これはトラブルの元でしょうか?
413 :
NAME IS NULL :05/01/10 15:16:20 ID:Cb/ktuI3
>411 そうなんですか・・・。ありがとうございました。 みんなに、オプションの設定を一致してもらうようにはしているのですが。 それでも無理でしょうか。
>>413 >オプションの設定を一致してもらうようにはしている
詳しく
415 :
NAME IS NULL :05/01/10 15:54:24 ID:Cb/ktuI3
ツール→オプションで 全般→名前の自動修正情報をトラックするチェック外し 名前の自動修正を行うチェック外し 詳細→規定の開くモード 共有モード 規定のレコードロック 編集済レコード レコードレベルでロックして開くにチェック です。これをコピーしたMDBに対して行ってもらっております。 です。
416 :
NAME IS NULL :05/01/10 17:12:41 ID:Cb/ktuI3
Access2000でExecl2000へエクスポートした際に、 Excel側で以下の問題が発生します。何が問題が教えて下さい。 @フィールド名が"□□□"と表示されます。 ただし、そのセルにカーソルを移動すると、内容は正しく表示されています。 A1つのセルに表示しきれない文字数のデータがある場合に隣のセルの文字列が重なって表示されます。 双方とも、フォントタイプを再入力することによって、正しく表示されます。
>>415 それは排他処理を行うための設定だよね?そして、
>>411 には「排他処理自体が
上手くいかない事がある。」って書いてあるが・・・
418 :
NAME IS NULL :05/01/10 17:42:06 ID:Cb/ktuI3
>>417 いや、その排他をうまくきかせる手段として、設定はそろえているよって意味ですが、
それ以外に何か共通してマシン設定をそろえるべき項目があるのですか?
419 :
NAME IS NULL :05/01/10 19:51:42 ID:1v7gpRzY
テーブルやクエリの日付表示で西暦を表示させない方法はありますか?
>>418 > いや、その排他をうまくきかせる手段として
(どんな設定をしても) 「排他処理自体が上手くいかない」と言う日本語の意味がわかりませんか ?
421 :
NAME IS NULL :05/01/11 13:01:09 ID:eXcZErlN
>419 フィールドのプロパティで書式設定をすれば良い話では?
423 :
NAME IS NULL :05/01/13 03:27:57 ID:uwPoRp0l
access2000で、マクロを定義するところでテキスト変換を選んでも テーブル名のインポートがリストに出てきませんがどうすればよいですか?
>>423 どのプロパティのことをいってるの?
変換の種類
定義名
テーブル名
ファイル名
フィールド名の設定
HTML テーブル名
コードページ
425 :
yo-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 | +-----+-----+--------+--------+
>425 このスレはMicrosoft Access。スレ違いだ。
427 :
yo-ko :05/01/13 20:11:51 ID:KcEKcyWW
書き込む場所を間違えちゃいました。返信頂ける方は"物凄い勢いで誰かが質問に答えるスッドレ "にお願いします。 ごめんなさい。よろしくお願いします。
428 :
NAME IS NULL :05/01/14 00:51:50 ID:36mDG7eH
質問します。 Access2000を使っていますが、クラスの継承はできますか? 例えば標準のボタンクラスを継承させて新メンバを設けたnewボタンクラスを作り、 それをフォームにペタペタ貼り付けていくとか。 あともうひとつ、関数にオブジェクトへのポインタを渡すことはできますか? 自前関数の引数にクラスオブジェクトを放り込んで、 そのクラスのメンバ関数を実行したりできるととても幸せなのですが。
429 :
423 :05/01/14 00:54:46 ID:???
定義名 のことです。 変換の種類 には 区切り記号付きインポート を選んでます。 現在定義しているテーブル名のリストがインポートとエクスポートの1種類づつ出てくると思ったのですが… 新しくテーブルを定義しても自動で出てきてくれません。 人から受け継いだファイルには1つづつあったもので
430 :
NAME IS NULL :05/01/14 01:40:26 ID:36mDG7eH
>>429 あれはテーブルを定義しただけではでてきません。
インポート/エクスポート定義は、それ単体で独立しているので、
テーブルとは別に定義のみ作成する必要があります。
作成方法は、
1.手動でインポートウィザードを出す。
2.左下に「設定」のボタンがあるので、これを押す、
3.次のダイアログで保存のボタンを押すと、作成できます。
ここでいぢることもできますが、まぁそこはフィーリングで。
431 :
423 :05/01/14 02:23:00 ID:???
インポートウィザード ってどうやって出すんですか?
432 :
NAME IS NULL :05/01/14 02:41:00 ID:36mDG7eH
メニュー>ファイル>外部データの取り込み>インポート
433 :
423 :05/01/14 03:08:10 ID:???
なるほど。出来た。ありがとうございます。
>>432
>416 SR1 -> SP3 に更新しる
最近必要に迫られて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 (呼び方を間違って記述している所があるかも知れません。その際は御指摘下さい。)
>>435 SQL文の"SELECT"句の"AND"と"OR"を勉強して下さい。あと、テーブルの設計に
ついても勉強して下さい。急がば回れです。がんばって!
437 :
NAME IS NULL :05/01/17 01:24:55 ID:d2Hp/Lvv
ACCESSからEXCELにデーターを取り込んでいます。 SQL文のSELECTの次に来るフィールド2つを変数化してVBA でループさせることは可能でしょうか? たくさんの項目から2つづとりだし、それぞれの組み合わせで他の項目 がどうなるか分析したいもので。
438 :
NAME IS NULL :05/01/17 02:49:50 ID:6bIxb6Go
for i=1 to 10 db.fields.item(i) next i みたいなのでいいのか?
439 :
437 :05/01/17 09:59:23 ID:d2Hp/Lvv
>>438 ありがとうございます。初心者(あるいはAFO)なんで直接
テキストとして代入を試みてうまくいってませんでした。
438と手元の本、HELPなどで夜にでも再挑戦してみます。
フィールドを定義して呼び出し、変数としてループさせる
ということですよね?
440 :
NAME 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や それを呼び出している環境について詳しくないのでこの演算の 実現方法については、他の方のサポートを待ちたいと思います。
441 :
NAME 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 ---以下略--- さて、これでどうか。
442 :
NAME IS NULL :05/01/17 16:38:02 ID:SRsHoSwz
初心者の質問ですが、答えてください。 オプショングループの中にオプションボタンがあるのですが、 オプショングループの使用可能を常時"いいえ"にしています。 違うところのオプションボタンを選択したときのみ"はい"になるように フォーカス取得後、喪失後のイベントプロシージャにコードを書き込んだのですが、 グレーアウトが直るだけで、中にあるオプションボタンが選択できません。 なぜですか?スレ違いかもしれませんが、お願いします。
>>442 オプショングループのフレームに対し行う
Private Sub 違うところのオプションボタン名_AfterUpdate()
If Me. 違うところのオプションボタン名9 = True Then
Me.オプショングループのフレーム名.Enabled = True
Else
Me.オプショングループのフレーム名.Enabled = False
End If
End Sub
な感じ...
444 :
NAME IS NULL :05/01/17 17:10:29 ID:SRsHoSwz
>443 ありがとうございます 早速やってみます。
>>440-441 SQL文の"CREAT VIEW"と"INNER JOIN"を勉強して下さい。
もう一息です。がんばって!
446 :
435 :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
VBAのエディタってどうしてあんなに使いにくいのでしょうか? タブが半角スペース4つに強制的に直されてしまうのですが、どうにかなりませんか? 簡単な代入式が続く場合に、イコールの桁位置を統一させたいのですけど、 これも強制的に直ってしまうので、何か良い方法はないですか?
>>447 自分の心を入れ替える。これが一番。
あれに身をゆだねてしまえばそれなりに快適だよ。
プログラマたるもの、それぐらいの柔軟性がないと。
俺も最初はやだったけど、今は慣れた。
450 :
435 :05/01/19 00:39:45 ID:???
>436さん、440-441さん、445さん 事後報告です おかげさまで、とりあえず、ちゃんと検索出来るようになりました。ありがとうございます。 リレーションちゃんと設定してテーブル作り直したら、クエリー操作だけでおっけですね。 SQL表示させると、INNER JOINも・・・。的確な助言のおかげで、自分の勉強にもなりました。 これでACCESSの使い方の概念が見えてきたかなと言う気がいたします。 後は、未入力の項目があった時の処理くらいですか・・・。Nz関数使うのかな?いや、それ よりも・・まず、現存する既に作成されたテーブルを、分ける作業ですか。(笑)早速、EXCELに エクスポートして、元素テーブルを作成するVBA作って変換作業していました。 また、お世話になる事もあるかと思いますが、今後とも宜しくお願いします。m(__)m
>>447 ツール>オプション>タブ間隔を変更するのではダメなの?
452 :
437 :05/01/19 17:17:07 ID:HqQNoClg
>>438 オソレスですが、事後報告です。
フィールドの取得もできましたが、SQL文にVBAの変数を入れる形で
なんとかやりたいことはできました。ありがとうございます。
Dim Koumoku1 as String
途中略
.CommandText = Array( _
"SELECT TableA.`" & Koumoku1 & "`, 以降略
この``がAFOの混乱をまねいたようです。
453 :
NAME IS NULL :05/01/21 11:24:22 ID:QYqmjmPH
データシートで右クリックで「昇順で並び替え」をしたとき レコードソースのORDER BY句が無視されてしまうのですが 何か対処法ないですか?
454 :
NAME IS NULL :05/01/21 11:32:58 ID:QAlrrp5B
Access で文字列型のフィールドにデータを手入力した時に、二文字目を自動的に 小文字する機能を無効にするには、どうすればよいのでしょうか。
>>451 半角スペースに置き換わることがイヤなのですよ。
>>453 あれはORDER BY句を変更する機能だからそれが普通なんだが...。
クエリで別に作ったら?
>>454 CapsLockをオンにすれ。
>>455 いや、二文字目までを大文字にしたいのに、勝手に小文字にされるのが
イヤなんです。
全角文字も使いたくないんです。
>456 他のバージョンは知らんが2003だと、 ツール→オプションでスペルチェックのタブを選択。 「オートコレクトオプション」ボタンをクリック。 あとは自分で見てみ。
>>455 データソースをクエリで
ORDER BY フィールド1 にしています。
フィールド2順に右クリックで「昇順で並び替え」をしたとき
ORDER BY フィールド2 になってしまうが、
これを
ORDER BY フィールド2, フィールド1
にしたいのですが無理ですか?
460 :
33 :05/01/21 16:05:17 ID:Slcbaq0V
クエリでは、2つ以上の項目を指定してけんさくすることはできるんですか?
初めてAccess触ったんですが、外部参照使い難すぎ。 ORACLEの(+)が使えたらめちゃめちゃ簡単なのに・・・。
>>458 テーブルデザインでフィールドの順番を入れ替えれば、
範囲選択で複数フィールドで主キーを設定できるが、
フィールドの順番そのままというのはわからん。
パススルークエリでSQL書くとかいう方法もないわけではない。
>>460 できるよ。基本すぎて本買えといいたくなるが...。
>>460 よおーし決まった。
今日からお前のニックネームはけんさくだ!
ACCESS2000のDBにテキストデータをインポートして、処理をしようとしています。 どうしても分からない部分あるので質問させて下さい。 |19|590607| |20|030607| 上記のように日付項目が本来は1959/06/07というように一項目で表示させたいのです、 しかし、元のテキストではセパレータ"|"で分けられ、ACCESSにインポート後、 項目が二つに別れてしまいます。 考えた方法として、それぞれを文字型に変換して文字列として付加させた後に 日付型に変換する方法を考えたのですけど、ACCESSでどのように処理するのか 分かりません。 ACCESSにインポート後に日付型項目として一項目にまとめる方法があれば それを教えていただきたいです。 よろしくお願いします。
>>465 フィールド1:1959
フィールド2:06
フィールド3:07
DateSerial([A]![フィールド1],[A]![フィールド2],[A]![フィールド3])
467 :
465 :05/01/25 11:21:23 ID:???
ちなみに フィールド1は数値型で西暦の上2ケタのみ 例) 19 20 フィールド2:はテキスト型で西暦の下2ケタと月、日 例) 590607 030607 です。 質問する前にも、DateSerialまでにもっていく方法が分からないという事で質問させていただきました。 すみません、よろしくお願いします。
>>467 |19|590607|
|20|030607|
でなく
|1959|06|07|
|2003|06|07|
こう切れませんか?
>>467 あるいは
フィールド1 & フィールド2でどうにでもなろうかと...
470 :
465 :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型に変換してくれるという訳ではないのでしょうか?
471 :
465 :05/01/25 13:47:30 ID:???
自己レスです。 strAの西暦の上二桁の先頭にブランクがあり、文字列をうまく取得できなかったようです。 LTrimでうまく処理できました。 お騒がせしました。 ありがとうございます。
472 :
NAME IS NULL :05/01/25 22:08:59 ID:0tu8LxKt
アクセスを初めて2日目の者です。 入力フォームに10個フィールドがあって、どんどんDBに格納して行くとします。 その中を編集したいときに、主キーをある場所に入力したら、そのレコードの 内容を入力フォームの初期値をして入れる事は可能でしょうか?
もちろん、可能。 VBAでゴリゴリコピーするべし。 速度を気にしないならDLookupを使うと簡単。
474 :
472 :05/01/25 23:23:27 ID:0tu8LxKt
>>473 ありがとうございます。
VBAの本を明日買って勉強します。(いいサイトがあったら教えてください。)
Java,C,Perl,Oracle の基礎は分かるので、VBAも何とか出来そうです。
今回、友達のお店(個人マッサージ店)の予約システムを作ろうと思っています。
(もちろんスタンドアロン)
予約は1日2件位、年700〜800位なので、Accessで作ろうと思ったのですが、
このスレを見ると、「業務システムをAccessで作る奴は氏んでくれ」と
書いてるようですが、小さいお店なので十分と思いますが、プロの方の
ご意見聞かせてください
>>474 >1日2件位、年700〜800位
手書きで十分。
476 :
472 :05/01/26 00:28:15 ID:YtsR0etB
>>475 って、元も子もないじゃないすか〜!!
でも、確かに手書きで十分かもしれません。
只、お客様の住所録管理もしたいし、やっぱAccessで作ります
元も子もないじゃない→みもふたもない 技術的なことや安全性についてほぼ無問題として >>友達のお店 ってのがたぶん一番の問題 義理人情の格安または無料サービスだとしたらもっと問題 「お、こんなこともできるんかい、だったら・・・」 な感じで泥沼にはまること確実
だがそれがいい
>>476 マジレスしていいですか?
Excelでよかんべ。
けど株式会社と名がつくところでも 結構ACCESSってとこ多いべ
481 :
NAME IS NULL :05/01/28 21:32:45 ID:6UZy3LdI
入力フォームで '移動ボタンとレコード番号ボックスの表示制御 Me.NavigationButtons = False はできたのですが、 マウスホイールでレコードが変わる、EnterでDBにInsertする。 の2つを無効に出来ません。 ご教授お願いいたします。
非連結ホームにしれば?
483 :
NAME IS NULL :05/01/28 23:25:48 ID:6UZy3LdI
>>483 非連結ホームの仕方がよく分かりません。
486 :
NAME IS NULL :05/01/30 09:49:15 ID:FwOOJB5w
すれ違いかもしれんが テーブル作成クエリで作られたテーブル、データ型が全部テキスト型になってるわけだが このデータ型って事前に変えておくことは出来ませんか?ルックアップ使いたいんですが・・・
>>481 EnterでDBにInsertするは、"AllowAdditions/追加の許可" プロパティ でどうにかならないか。
マウスホイールでレコードが変わるは少し自信ない。
"ScrollBars/スクロールバー" プロパティでもいぢってみれ。
今日のaccess フォームにコントロールいっぱいはりつけてたら、 タブオーダーが212までしか設定できないとか言われた。 せめて255くらいまではできてもいいだろ...。タブ移動自前でとりつけました。 public a(10) as new class1 エラー。配列・自前クラスはpublicにできません。 工エェ・ェエ工 コントロール配列作ったはいいが、イベントプロシージャを実行してくれない。 他のSubプロシージャやFunctionはVBAからアクセスできるのに、なんやねん。
489 :
NAME IS NULL :05/01/31 04:39:57 ID:5vUT1RK2
山田君 たこ 田中君 うに 山田君 うに 竹下君 さば 吉田君 いか 山田君 ざぶとん となってるのを、 山田君 たこ うに ざぶとん 吉田君 いか 田中君 うに ・・・ とするには、どうしたらいいですか?
>山田君 たこ うに ざぶとん >吉田君 いか >田中君 うに という形で欲しいのは選択クエリなのかフォームなのかレポートなのか
クエリでおねがいします。。。
もちろん出来なくはない ただ人によっては道はかなり険しいかも ところで、たこうにざぶとんは一つのフィールドにまとめてぶち込んでしまうのか それともひとつにつき1フィールド用意するのか 後者の場合フィールド数はいくつぐらい想定しているのか(フィールド数には限界があるわけで)
493 :
NAME IS NULL :05/01/31 12:26:05 ID:cP8oOxbe
すいませんもちょっと質問させてください。 Access2003,WinXP あるフィールド[備考](テキスト形式)にある文字列の中に、 あるフィールド[整理番号](テキスト形式)が含まれるものを抜き出す クエリかSQLでの指定の仕方ってどうやるんでしょうか? つまり、like "*1234*"とか実値ではなく、like "*"&[整理番号]&"*"みたいな感じがしたいんです。 ↑ このフィールドにある文字列で ちなみにこの指定では出来ないみたい おながいします。
494 :
493 :05/01/31 12:32:54 ID:cP8oOxbe
げげっ like "*"&[整理番号]&"*" で出来ました。 どうやらリレーションの設定に問題があったようでした。 すいません。
495 :
NAME 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
はじめまして。質問させてください。 特定業務用のアクセスで作成されたソフトを使っています。 この度パソコンの不調に伴い買い替えを検討しているのですが、そのソフトの元データ(インストールディスク)を 紛失してしまった事に気づきました。さらにそのソフトを購入した会社もつぶれているようで、会社名やソフト名で検索しても でてきませんでした。ソフトは99年購入です。 このデータが無いと仕事ができませんので、なんとかできないものかとインストールフォルダを見るとアクセスのマークが あったので、ものは試しとそのフォルダごと別のパソコン(アクセス2000インストール済み)にコピーしてみたのですが案の定ダメでした。 顧客の住所録はなんとかCSVで抽出できたのですが、肝心の仕入れ取引データがどうしてもできないので困っています。 以上のような状況なのですが私が試した丸ごとコピーの様な方法でなんとか新しいパソコンにデータを移行する方法は 無いものでしょうか?専門知識の要る様な方法でも頑張りますのでどうかよろしくお願いします。
>コピーしてみたのですが案の定ダメでした。 エラーメッセージ等を詳しく。 そのフォルダ内にあった別のファイルは晒せる? せめて拡張子とサイズだけでも。
498 :
NAME IS NULL :05/01/31 13:50:55 ID:cP8oOxbe
また一つ質問させてください。 テーブルのデザインビューをプリントする事って出来ないのでしょうか? てっとりばやくテーブルのフィールド構造をプリントアウトして検討会なんかでつかいたいんですが、 今のトコ手写しか、データシードビューのフィールド幅を詰めて印刷してます。 ども出来そうになくて困っているんですが、知ってたら教えてください。 機能としてなくても、こんな事でリストをつくってるってのもあれば教えてください。 よろしくお願いします
500 :
NAME 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で出来る用に作れとのご命令で…
単発クエリでもサブクエリ方式でも構いません。
501 :
495 :05/01/31 14:45:38 ID:JQ7c6wwT
>498 ツール>解析>データベース構造の解析で出来るのでは? >500 オートナンバーは最適化しなければ初期化されないはず 100件あるテーブルを全レコード削除しても1件目は101からになってしまいます プログラムでやるしかないと思いますよ
>>497 不十分な文章ですいません。以下がフォルダの中身です。
Mscreate.dir 0kb
system.mdw 92kb
system1x.mdw 68kb
tgmapl.mde 23.672kb
tgmdata.mdb 6.08kb
tgmaplを開くと「データベース変換」画面が出てきて変換orそのまま開くを聞いてくるのですが
どちらを選んでも「MDFファイルを変換するか使用できません」と表示されます。
tgmdataを開くと「データベースtgmdataのオブジェクトの設定を変換出来ません」と表示されます。
ツールのデータベースの変換を使って顧客データは取り出せました。
よろしくお願いします。
なんで突然こんなに質問きてるの? いつものマターリとしたふいんきはドコにいったんだyo!
>>501 最適化はマクロでできないんだっけ?
>>498 MS-SQLServerがあればそっちにインポートしてやると全部テキストの命令文に直すことができる。
オラクルでもできるんかなぁ。
アクセスも全部テキスト文に直すことができればメンテしやすいんだけどねー。
SaveAsText, LoadFromTextがテーブルでもできればいいんだけどね
>504 DoMenuItem辺りのマクロで最適化も出来ると思います。 Access95/97での記憶なので、2000以降で出来るかどうかは 分かりませんが。
VBAでTableDefオブジェクトを操作するとテーブルのフィールドや型、その他プロパティ類の 一覧表を取得できます。 TableDefsコレクションを併用すれば、一気に全てのテーブルの情報を取得することも 可能です。(システムテーブルまで取得されるので注意)
すまん、507に補足。 VBAで使う際に「DAO3.6」の参照を行う必要があります。 (TableDefsコレクション、TableDefオブジェクトはDAOのコレクション/オブジェクトの為)
>>506 97でメニューバーが表示されているならばマクロで最適化できるよ。
アクション キー送信
キー操作 %TDC
キー操作を代えれば2000でも動くと思われ
>>507 readするだけかぁ。書き換えることができるとメンテに使えるのになあ。
>510 書き換えも追加も削除も出来ますよ。 慣れればテーブル作成クエリを使うよりも細かい事が出来ますし、 Access独自のプロパティをフィールドに追加することも。
512 :
NAME 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"が含まれる梱包番号を出して、それらの梱包に含まれる全ての製品名を出すとか。
そもそもサブクエリがいらない。 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'
514 :
512 :05/02/02 09:11:36 ID:dhhRXb6W
>>513 とりあえずありがd
サブクエリでなくとも出来るんだけど、聞きたいのが
値を複数返すサブクエリを指定する事が出来るのかどうかなもんで。
515 :
513 :05/02/02 09:57:01 ID:???
イコールのかわりにinを使えば可。
516 :
512 :05/02/02 14:38:40 ID:dhhRXb6W
in … さっそく調べてみます!
ぶっちゃけ機械とかの世代管理ってどうすればいいんだ? 機器のナンバーが変更掛かったりしてマジうぜぇ。
518 :
NAME IS NULL :05/02/03 08:48:02 ID:SrVkfqtp
質問させてください。 AccessのSQLでテーブルの行を指定する事って出来るんでしょうか? もし出来るのなら、指定の仕方を教えてください。 ↑ テーブルのエクスポートエラーで、[エラーの内容]と[フィールド]とそれがある[行]が 出て来るんですが、出来ればこれらの行に相当する元テーブルのレコードのみを抜き出したいんです。
519 :
NAME 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の構造概念から出来なさそうな気もします。 ちなみに整理番号とは説明の便宜上付けたものです。 よろしくお願いします。
SELECT * FROM 以下のテーブル x INNER JOIN 以下のテーブル y ON x.変更元会員番号 = y.変更前会員番号
521 :
519 :05/02/03 22:00:51 ID:Fjk1+cnX
>>520 調べてみたました。
テーブルにラベルみたいなのをつけて指定することが出きるみたいですね。
意図した結果が得られました。ありがとうございます。
ところで、関数の説明やSQLの構文や基本的な使い方などの解説書はいろいろ出てんですが、
質問したような、構造的な概念みたい(基本知識…というかそれとは違う次元の)なのが説明されている
ものって何かいいのないんでしょうか?
うまく説明できませんが、Wordで文章作れても、Windowsを知らなければパソコンのエラーに対処できないみたいな。
access2003を使ってて思うのですが、 式ビルダのリストボックスでホイールを 回してスクロールさせたときの動きがどうにも気持ち悪いです。 何というか、原点を基準とせずに、スクロール後のイメージが上から降ってくる感じ。 たしかmac osの標準コントロールでもそんなスクロールしてました。 視線の移動位置が読めないので、使う度にイライラします。 これ普通のリストボックスに出来ないでしょうか?
>523 確かに気持ち悪いねw スライダクリックするしかないのでは? まぁ、漏れは式ビルだ使わないから関係ない(ォ
全くの初心者でこれからAccessを勉強しようと思うのですがオススメの書籍とかってありますか?
作業用PC;ソフトAccess2002SP3 OSwindowsXPPro メモリ128MB CPU1133MHz サーバー;ソフトSQLバージョン8.0 OS;windowsserver2000 この環境で鯖のSQLから引っ張ってきたデータを作業用PCのAccessでレポートとして抽出し、 そのレポートをSnapShot形式でエクスポートすると9割の確立でAccessが応答なしになってしまいます。 違う作業用PCでも確認したんですが同じようにとまってしまいました。 作業毎に応答なしになってしまい作業効率が非常に悪いです。 よい改善方法はないでしょうか?
529 :
NAME IS NULL :05/02/12 19:57:37 ID:vrWiMy+n
フォームにクエリには含んでないが、クエリ内のデータとリレーションシップはつけているテーブルのデータはテキストに 連結データとして参照できませんか?
530 :
NAME 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文で取得できましたが、これをリストボックス に表示しようとしたところ、行き詰ってしまいました。ご教授よろしくお願いします。
531 :
NAME IS NULL :05/02/14 19:01:02 ID:suYW2SF/
Access初心者です。ストアドプロシージャについて調べましたが、 よく掴めません。 Aテーブルのレコードを削除すると、 それに対応する、Bテーブルのレコードが削除されるように するにはどうしたらいいでしょうか? クエリを使うといいようなのですが、引数の渡し方が分かりません。
532 :
NAME IS NULL :05/02/15 09:21:10 ID:vmY+cp7a
533 :
NAME 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]とそれぞれのテーブルに“参照整合性”を有効にしようとすると 出来ないってエラーが出ます。 なんでなんですか? 整合性は取れてると思ってるんですが、なんかトンデモない勘違いしてるんでしょうか? …てかいまいちこの参照整合性って理解しきれてないかも
535 :
533 :05/02/15 16:15:31 ID:9s6FnqA2
あ、ちなみに図にある全てのフィールドに主キー設定してます。
536 :
533 :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____ ずれたので、図のみ修正'_'はスペースとして。
537 :
534 :05/02/16 01:44:24 ID:???
まてよAccessでいう連鎖削除のことかもしれない。 だったらDBサーバのテーブルに参照整合性制約を作る。
538 :
NAME 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枚、配送伝票が出力されてしまいます。 クエリで過去の実績のフィールドに対してどういう数式で絞込みを したらよいのでしょうか?
>538 下のように二段階で取得すると良いと思う。 1. 販売実績Tから、その顧客の「最大」の販売日付を取得する。 2. 1で取得した日付の販売実績を取得する。
540 :
538 :05/02/17 23:49:31 ID:LphK6wFP
なるほどー おとついから始めたもので、思いつきませんでした。 ありがとう と言って無事終わりたい所なんですけど、1の関数(恐らくMAX?)と 2のやり方がピンときません。 度々すいませんが、更にヒントを!
教えてください君です。 訳あって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
542 :
NAME IS NULL :05/02/18 00:33:21 ID:SJEL00ob
>>538 SELECT TOP 1 単価 FROM 販売実績T WHERE 顧客=取得したい顧客 ORDER BY 販売日付 DESC
というのはどう?
543 :
NAME IS NULL :05/02/18 04:47:18 ID:vwBFQCuY
教えてください Win NT+ Access + IIS + ASP でデータベースを使っておりますが 作り直したい・・そこで WinXP(Pro) + Access + IIS + ASP での同一システム構築は可能でしょうか? 本屋の立ち読み知識ではこの組み合わせ自体が可能か否か良く分かりませんもんで (300ギガ)なんて作った当時無かったもんでHDエリア拡張が目的です
544 :
NAME IS NULL :05/02/18 18:25:28 ID:usCCHSXH
mdbデータをアップサイジングし、SQL server + ADP 環境へ移行したのですが、 mdb環境では問題なく動いていた、モジュールがエラーが出て動かなくなりました。 モジュールは別ウィンドのフォームのボタンのクリック時イベントに DoCmd.ApplyFilter "フォーム名", " 受注番号= " & Forms!フォーム名]![受注番号検索] と記述してあるのですが、ADPに変換後SQL接続環境で ”ApplyFilte/フィルタの実行”アクションに、実行できないフィルタ名が含まれています とエラーが出ます。 単純に" 受注番号= 2222”と記述しても同じです。 ApplyFilterは使えないのでしょうか?
545 :
NAME IS NULL :05/02/19 17:48:10 ID:jn/21WFB
よろしくお願いいたします。 Accessにストアドファンクションはないみたいですが、 かわりになるものはありますか?
546 :
545 :05/02/19 17:51:03 ID:jn/21WFB
続きです。 select 前月未請求額,今月発生額,今月入金額,今月請求額 from **** みたいなクエリを作りたいのですが、 各カラムは、全てWHERE句以下が違うものなのです。 どうしても、ストアドファンクションを使いたいのです。
>>547 ありがとうございます。VBAはまだ初心者です。
上記のクエリ結果をレポートで表示したいのですが、
VBAで処理をする、という事は
RecordSetをループでまわして、1カラムづつ処理をして、
新テーブルに書き込んで、
それをレポートにして、新テーブルを消すということになるのでしょうか?
ちょっと回りくどい方法しか思いつきません。
>>548 Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "select * from .... "
End Sub
>>548 >>547 は、ネタだろ。
まずどんな処理したいか書かないでストアドとか言ってるから馬鹿にされてると思うよ。
>>546 > 各カラムは、全てWHERE句以下が違うものなのです。
マジで質問してるつもりなら、テーブル構造と where の条件句を晒せ。
話はそれからだ。
レコードソースのWhere句をVBAでその都度変えればいいだけでしょ
Where句をダイナミックに変えるファンクション作って
>>549 みたいにしたらええんちゃうん?
どんなツールもそうだけど、こういうマッピングがめんどくさいし、メンテも大変だな。
552 :
NAME IS NULL :05/02/21 19:18:34 ID:TS7q3RdF
Access2003使ってて思ったんですけど、 数値型のフィールド一列だけ作ってテキトーに、3,2,6,5,1…といっていきますよね。で一度保存で閉じる。 次に開いた時、当然順番でない入力数字が見えますよね。 で、ソートして数字を順番に並べ替えます。 ところが、閉じる時保存せずにおくと、次開いた時またもや入力順のばらばらな数字列です。 ここで、 ・データ内容、ソートしたかどうかなど関係なく、テーブルが作られた時の順番をテーブルの各行が持っている のでないかと… とすれば、これをVBAで扱うにはどういう方法があるんでしょうか? サンプルコードとか教えて貰えれば助かります。 絶対出来ると思うんですけど…
553 :
NAME IS NULL :05/02/21 22:59:44 ID:ii4DfBEB
SNとかいう円山の馬鹿会社の人間がいるようだな。
>>552 Open "TEST.MDB" For Binary As #1
Do While Not EOF(1)
Input #1, buffer
' ToDo
Loop
Close #1
555 :
552 :05/02/22 10:48:38 ID:j0GOjt4s
>>554 サンクス
ちなみにそのテーブルに存在するレコード数とか、直接10レコード目を指定する
といった事は可能なんでしょか?
556 :
NAME IS NULL :05/02/22 16:06:12 ID:xBCtWIX1
ACCESS97を使用していて、自分自身の存在するディレクトリのパスを知りたいのですが、 VB での App.Path や ACCESS2000 での Application.CurrentProject.Path などに相当するプロパティはないんでしょうか? ご存知の方いましたら回答よろしくお願いします。
>>552 > 作られた時の順番をテーブルの各行が持っているのでないかと…
もちろん俺は中身を知らんけど、多分違う。
558 :
NAME IS NULL :05/02/22 22:33:53 ID:WmubF3m/
>>556 CurrentDb.Nameの最後の\の前までを見ればいいと思う。
>>552 意味わからん。
保存しなかったんだから
並び順が元のままなのは当然だろ。
Accessは何もかもお見通しなんだぞ あとからデータ改竄しても、すぐにバレちゃうんだぞ
561 :
552 :05/02/23 08:12:36 ID:cFlvfH1x
>>559 分かりませんか?
フィールドなどこちらが見る・弄る事が出来るもの意外の物理的なレコード番号みたいなのが
あると思う(あるハズ)ので、それの参照と操作の仕方が知りたいのです。
いろいろ書籍ほふってみましたが、そういう事に触れている本がなかなかないもので
562 :
NAME IS NULL :05/02/23 11:47:10 ID:e6b7dA+N
>>558 ご回答ありがとうございました。
パス取得できました。
>>561 挿入順序を格納するフィールドを作って自分で管理しな
565 :
561 :05/02/24 21:51:33 ID:ct1AqQa6
>>563 インポートエラーやエクスポートエラーで、エラーが発生した「行番号」しかでないじゃないすか
だから、レコード内の各フィールド値に依存しない、物理的なレコード(行)指定の方法も知って
おきたくて…ですよ。
リンク先のサポート読ませていただきました。
内容自体は可能とも不可能とも触れておらず、追加順を示すデータを明示もしてないので???ですが、
だったら上記のようなエラーレポートは関連性のないものなのかな?
ただ、自分があのエラーレポートのエラー箇所行から、該当テーブルのエラー行を抜き出す方法を知らないだけか…
でも、やっぱりどこにもないし(見つけ出せない?)…
>>565 並び順を指定してインポートやエクスポートしてください。
DLast関数で、「最後に入力された」レコード取れるよね こいつでそれを突き止め、Delete またDLastで、こんどは最後から2番目に入力されたデータ取って ・・・ レコードがなくなるまでLoop
568 :
NAME IS NULL :05/02/25 02:06:47 ID:AqKmYAT8
Accessでクエリ結果をテーブルにするボタンがあるって聞いたんですが どれのことでしょうか? ご存知の方がいましたらご教示ください。
>>568 ボタンつーか、クエリの種類だな。
「テーブル作成クエリ」
>>552 一つの手としてなのだが
>テーブルが作られた時の順番をテーブルの各行
はオートナンバー型のフィールドを追加することで表面化する(と思う)
ので
一時的にテーブルに対して
ALTER TABLE テーブル2 ADD COLUMN ID COUNTER;
※IDフィールドをオートナンバー型として追加
利用後に
ALTER TABLE テーブル2 DROP COLUMN ID;
でIDフィールドを削除
で何とか出来ないか?
571 :
552 :05/02/25 15:33:25 ID:ORoi14cu
>>570 打開策を提示してくれているのですね
ありがとうデス
自分で追加順のフィールドを作って管理するのはやり方はいろいろあると思います
何をしたいからそれが知りたいか…は特にありませんが、ACCESSのアーキテクチャとして
・物理的な行(レコード)指定の仕方{中身関係ない、その時点でのテーブルのn行目を指定したりする為}
・追加した順番を持つ内部物理データがあるハズ{前カキコでいった現象}→が知りたい、でもどこにもない
です。
あと、インポート&エクスポートで、エラーの内容とそのエラーがあるフィールド、行がテーブルとしてはじき出されるので、
エラーテーブルの各行の[エラー行]の値で、対象となるテーブルの行を抜き出すクエリなりSQLなり方法がないものか?…
(VBAでやれば可能なのは創造できるけど、そんな技術が求められるようなエラーテーブルなのか?)
依然、書店や知人、ググリでリサーチ中…いまだ分からず… orz
>>571 > 自分で追加順のフィールドを作って管理するのはやり方はいろいろあると思います
いやいや...追加順のフィールドを作るのでなく
出来上がったテーブルに「オートナンバー型」のフィールドがなくても
後からALTER TABLE(SQL)で「オートナンバー型」のフィールドを追加してやると
入力(現在並んでる)順のナンバー振られると思うのだが...
追伸 インポートされたテーブル名: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 こんな感じか?
574 :
552 :05/02/25 19:02:12 ID:ORoi14cu
>>572-573 おぉっ
やはりVBAしかないんでしょうね
SQLやクエリで出来ればてっとり早いと思ったんですが…
建設的なレスありがとうございます。
コードはVBAで処理タスク作る時試用させて頂きます。
>>574 >やはりVBAしかないんでしょうね
>SQLやクエリで出来ればてっとり早いと思ったんですが…
はにゃ?
ただクエリを実行させてるだけだよ?
strSQL(0)とstrSQL(2)はデータ定義クエリ
strSQL(1)は単なるテーブル作成クエリ
はにゃ?
>>571 > ・追加した順番を持つ内部物理データがあるハズ
何をもってそう信じているか知らんけど、そんなものはない。
そういうのが欲しければ、自分でそういうフィールドを持て。
>>578 > ここでもそれらしき事は書いてあるし...
| オートナンバー型フィールドの存在しない既存のテーブルに後から
| オートナンバー型フィールドを追加した場合、データの格納順にカウ
| ントアップされていくものと考えられる。
^^^^^^^^^^^^^^^
まあ、信じるも信じないも君次第なんだけど...。
少なくとも俺なら信じない。
もし、上の記述が正しいとしても MS がいつそういう仕様を変更する
かわかったもんじゃないし、そもそもそういうこと (=登録順序を管理)
したければ自分でやればいいだけだから。
追加順と格納順ってのはたぶん意味が違うと思う。 追加した順番と格納されている順番ってことね。 んでいつ変わるかもしれない格納順にこだわっても意味ないと思う。
サブフォームのレコード数を制限したいのですか・・ サブフォームを帳票フォームにしていて、7個以上は追加出来ないようしたいのですが・・
>>581 BeforeInsertでレコード数を確認しるかAfterUpdateで7件入力されたならば
AllowAdditionsを変更するでどう。
AllowAddtionsをいじるときは削除されたら元に戻すことも忘れずに。
>>582 ありがとうございました。
If CurrentRecord >= 8 Then
MsgBox "7個以上の注文は入力できません。", 48
AllowAdditions = False
End If
でいけました。
584 :
NAME IS NULL :05/03/01 20:25:44 ID:9ArRh4Zt
マクロを組んでてSQLの実行とかすると、『2件のデータが追加されます、てでつか?』 などと確認ダイアログがいちいち出てくるんだけど、これを前部自動で「はい」を押したことにする 設定ってどうするんでしょうか?
>>584 普通は確認ダイアログを無効にすることを先に考えないか?
586 :
NAME IS NULL :05/03/01 22:48:26 ID:X+S0zsCJ
>>585 DoCmd.SetWarnings False とかな
587 :
NAME IS NULL :05/03/01 23:08:26 ID:d25DDS8t
>>584 >マクロを組んでてSQLの実行とかすると・・・
恐ろしいことしてるな。
>>584 1.マクロのアクション「メッセージの設定」を「いいえ」に
2.ツール>オプション>編集/検索>確認のチェックを外す
のいずれか
589 :
NAME IS NULL :05/03/03 09:02:04 ID:3fVA1RLD
g\
590 :
NAME IS NULL :05/03/03 09:04:00 ID:3fVA1RLD
>>584 マクロのアクションに『キー送信』があるから、それを該当する「SQLの実行」の前に必要数入れて
「y」を設定しておけば、キー入力があったということで処理できる
591 :
NAME IS NULL :05/03/04 19:48:09 ID:dkcRg06F
>>590 キー送信(SendKeys)は不安定ないのでなるべく使わないほうがいい。
98SEでは動くが(Win)2000ではダメという事例がイパーイあるから
592 :
NAME IS NULL :05/03/04 19:49:05 ID:dkcRg06F
ないので・・・× なので・・・○
593 :
NAME IS NULL :05/03/05 17:54:32 ID:3r2dBU/R
質問です。 value1, valueA value2, valueB value3, valueC のようなテーブルから、 ある条件で、 2番目のレコードを選んだときに、 クエリ結果を value2 valueB のように、別行として結果を出すには どうすればよいのでしょう? 何かヒントがあればお願いします。
>594 ありがとう。 そうか、UNIONならできそう。
596 :
NAME IS NULL :05/03/07 08:18:16 ID:hgAoJulF
便乗ですが、unionでつなげたビューを実テーブルとして吐き出すのはどうしたらいいのですか?
598 :
596 :05/03/07 13:21:05 ID:hgAoJulF
>>
599 :
596 :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 が消える。
出来るとしたら、やり方教えてー
>>599 SELECT * INTO [作成したいテーブル] FROM [ユニオンクエリ]
601 :
596 :05/03/07 13:41:26 ID:hgAoJulF
>>600 なるへそ
出来た
[ユニオンクエリ]の箇所を()で囲まなければならないのね
ありがさう
>>601 SQLをそのまま書くならね。
別クエリにしてクエリ名を書く方が便利っぽいけど
まあ好きずき。
603 :
NAME IS NULL :05/03/09 23:33:32 ID:AcZJqars
フィールドの値によって、レポート上の出力を 変えたいのですが、クエリでできますか? たとえば、性別で、 値が "M"だったら、レポート上で「男」 NULLだったら、レポート上で「不明」 とかです。
>>603 iif とかは?
クエリじゃなくてもレポートでやればいいような気がするけど・・・
>604 すみません。もう少し具体的にお願い。 レポートの該当フィールドで式ビルダで書くということ?
フィールドのところに =Iif(IsNull([性別])=True,"不明",Iif([性別]="M","男","女かオカマ")) と書く。
なるへそ感謝です。
608 :
NAME 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件のレコードで入力規則違反 が発生したため、レコードを追加できませんでした。 アクションクエリの実行を続行しますか? このエラーを無視し、クエリの実行を続行するときは【はい】を クリックしてください。 これらのエラーが発生する原因については、【ヘルプ】をクリックし、 表示されるヘルプ トピックを参照してください。 」 という、システムエラーが発生しました。 ググっても、解決できません。助けてください。
610 :
NAME IS NULL :05/03/10 14:09:55 ID:pU7VGCAf
日付型のフィールドを、 レポートで和暦にして出すのはどーするの? フォームでは、書式で指定すればいいけど、、、
>>610 いろいろ方法はあるが、例えばテキストのところに
=Format([フィールド],"フォーマット")
と書くのはどうだ?
612 :
NAME 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)でロックされてしまいます。 何か良い対処方法は無いでしょうか。
>611 トンクス。 和暦のフォーマットで、 "gggeemmdd"はいいけど、 "gggemd"だと区切りがヘンになるぅ〜。
614 :
608 :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実行
前に値を見ても、ちゃんと入っています。
よろしくお願いいたします。
615 :
608 :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実行
前に値を見ても、ちゃんと入っています。
よろしくお願いいたします。
>>615 詳しく見てないから原因はわからないけど、なんか
RecordsetをAddNewしてUpdateする方が楽っぽい。
617 :
615 :05/03/10 21:09:24 ID:W2+eHHUk
ありがとうございます。 素朴な疑問です。 VBA初心者で、AddNewというものを初めて知ったのですが、 一行のInsert文なので、処理速度も問題ないと思いますが、 DBに書き込むときに、普通は「Insert」、「Addnew」どっちを 使うのでしょうか?
>615 「"'#" & 支払日.Value & "#',"」っておい。 これだと、シングルクォーテーションで囲んでいるから、 日付型ではなく「#2005/03/10#」と言う文字列になるよ。 エラーの原因はこれだね。
>617 Accessだったら基本は連結フォーム。 非連結フォームを使う必然性がある場合は、Vsiual Basic(NOT VBA)を 使った方が生産性が高い事の方が多い。 SQLで処理するか、Recordsetで処理するかは好みの問題だが、 Recordsetの方が見易いし、更新と新規登録とで処理を変更すべき部分が 少なくて済む。
620 :
615 :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にすればよいだけ、と言う事にやっと気づきました。
気持ちを切り替えて、連結フォームでトライしてみます。
>>619 615は1件処理するだけなので直接関係はないけど
複数レコードの更新ならばSQLを使う方いい
只今レコードのあるフィールドをゼロにするだけの処理を
レコードセットで8万回ループさせているmdbの修正中。
>>621 逆にINSERT INTOを複数回やるよりは、AddNew/Updateのループの方が速いね。
623 :
NAME IS NULL :05/03/11 14:03:13 ID:An3+OxFu
SQLで得られた結果をそのまま、 あるテーブルに新しいフィールドとして追加するには どうすればよいですか? そもそも可能?
625 :
NAME IS NULL :05/03/11 14:37:44 ID:An3+OxFu
では、手動で新フィールドを追加しておいて、 SQL結果を流し込むことは可能でつか?
>>625 フィールドの追加されたクエリを新しいテーブルとして保存なら簡単だが。
INSERT INTO tbl1 SELECT * FROM tbl2 [WHERE]; って構文はAccessでは使えなかったっけ?
>>627 使えるけど、それはレコード追加。
この人はフィールド追加がしたいらしい。
うーんそういう需要がないのですね。 SELECT で抽出したデータの値で あるフィールドの値をいっせいに書き換えたいのです。 SELECT WHERE した値を UPDATE SET すればいいのでしょうか? >626 それもSELECT INTO〜 ですか? WHERE句書けます?
>>629 > うーんそういう需要がないのですね。
需要っつーか、どういう書き方をしたいのかもよくわかんないんだけど。
> SELECT で抽出したデータの値で
> あるフィールドの値をいっせいに書き換えたいのです。
いっせいにって、1個の値を複数レコードに割り当てるってことか?
それなら可能性あるかもな。
> それもSELECT INTO〜 ですか?
Yes.
> WHERE句書けます?
Yes.
>>629 UPDATE T1 SET F2 = (SELECT F2 FROM T2)
ってやってみたがダメだな。
「SELECT F2 FROM T2」が1行しか返さなければ可能性あるかと思ったが。
>631 UPDATE T1 SET F2 = (SELECT MIN(F2) FROM T2 WHERE ...) だとどうでしょう?
UPDATE (select * from table1 JOIN table2 ON …) SET xxx=yyy
636 :
NAME IS NULL :05/03/12 01:50:25 ID:TwGeNgaB
質問です。 オラクルで作成したDBのテーブルを読み込み、 アクセスのテーブルに取り込む処理をアクセスVBAで作成したいのですが、 インポートではなく、オラクルにアタッチして読み込む手順を教えてください。 本屋で連日探しているのですがみつかりません・・・orz そもそも可能なのでしょうか?
>>636 ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース
639 :
NAME IS NULL :05/03/12 21:39:21 ID:TwGeNgaB
>>637 >>638 レスありがとうございました。
>ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース
VBAで行いたい(フォームのボタンを押したらオラクルのテーブルをアクセスに取り込む、とか)のですが、
その場合はどうすればよいのでしょうか?
>ファイル→外部データの取り込み→テーブルのリンク→ファイルの種類→ODBCデータベース を試した上で質問しているとは思えない
>>640 639じゃないけど、他形式のDBでもアクセスからの
リンクテーブルみたく扱えるのですか?
>>639 取り込むテーブルはあらかじめ決まってるはずだから、最初にリンクしておけばよい。
VBAで取り込む作業は不要。
>>642 ありがとう。またひとつ利口になりました。
645 :
NAME 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”を抜き出すことから 分かりません(いろいろやってはいるのですが)
>>645 まず、日本語でいいから切り出す条件(どこで切るのか)をきちんと定義する。
それがちゃんとしてれば、道はあるはずだぞ。
>>647 「以下に記載が無い場合」攻撃を食らえ!
質問です。 テーブルAとテーブルBがあって、 テーブルAには元データが、テーブルBにはテーブルAから取り除きたいデータが入っています。 そこで、不一致ウィザードを使ってテーブルAからテーブルBに該当するデータを取り除いたのですが、 さらにワイルドカードを使ってデータを取り除いたのです。 例えば、テーブルBに「*cd*」というデータがあれば、これを使って テーブルAの「abcd」や「cdef」も取り除いたのです。 そこで、「not like」文を使ってみたのですが、テーブルBのデータが多すぎて not like文が長くなりすぎ、SQLではねられてしまいました。 何かよいアイデアはありませんでしょうか? Access2002使用。
651 :
NAME 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= "代入するデータ" と入れたのですがそもそも考え方が違うのでしょうか・・。 宜しくアドバイスお願い致します。
>>652 何だかよく分からんが
SourceObject
なのか。
RecordSourceとは違うのか。
だったらデータ入れちゃダメだろ
テーブル名とかクエリ名とかSQL文とかじゃないか
>645 住所をBNFで表してすべてのパターンが網羅できるかどうか 小一時間問い詰めたい。 BNFの意味はぐぐれ。
>649 exists述語と副問い合わせを研究しる。 delete * from TBLA where exists (select * from TBLB where TBLA.F1 like ('*'+TBLB.F1+'*'))
>例えば、テーブルBに「*cd*」というデータがあれば、これを使って >テーブルAの「abcd」や「cdef」も取り除いたのです。 テーブルBに「cd」というデータがあれば、ではなく「*cd*」というデータがあれば、でいいのか?
658 :
645 :05/03/15 12:47:20 ID:dUgl0bu7
面倒なんで住所文字列の先頭から最初に出てきた全角数字から拾い始め、 数字とハイフン以外のものが出てきた段階で切って番地のみを出す関数作って 対処しました。
659 :
NAME IS NULL :05/03/15 23:27:33 ID:ODuvRlx2
フィールドが多すぎるテーブルを分割して、 1対1のリレーションにしようと思ってます。 (といっても、フィールド数は50〜100ぐらいです) これは邪道? テーブル作成の実際を知らないので悩んでます。 そもそも1対1のテーブル関係はどんな時に使うのでしょう?
目標が1対1というのが良くわからん。 正規化をがんばってみたら。
たとえば店舗マスタと担当スタッフマスタなんかは1対1になるな (ならない運用もあるだろうけど) で、50〜100ぐらいなら無理に分けなくてもいいんでは。 255を超えるようであれば分けたほうがいろんな人が幸せになれると思うけど accessってたしか255までだっけ。
素人だけど いまそれに近いことやってる(近くないかな) 商品コード : 主キー(もちろんNullなんてことはありえない) 商品名 : これも値は絶対に入る 小売値 : これも 仕入価 : これも ここまでが先週まで使って商品マスター(約12000レコード) これに来週から以下が加わることになった 商品解説1 : 空っぽのものが多い 商品解説2 : とにかく空っぽのものが多い 商品解説3 : 空っぽばっかりだっつの ... とにかくメチャ多い商品解説フィールド こぢんまりとチャーミングにまとまった商品マスターにこの凶悪なフィールド群を加えるのは 気持ちが悪かったので、別テーブルとした。 商品コード 商品解説1 商品解説2 ・・・・ もちろんこいつと元マスターのレコード件数は一致していない。 商品コード以外全フィールド空っぽのレコードなんてあっても意味ないと思ったから。 で、必要に応じて元マスターとレフトジョイン
システムがその修正にかかる労力に見合うならばしたほうがいいのかな。 俺は専門職じゃないからその辺はいい加減にしているけどね。 客から投げられたデータを整形させる実行時間を考えると、 とてもじゃないけどやってられません。 それにテーブルの設計を変更したら各所に問題が発生しそうで、 怖くてとてもできません。 新規に作るのだったらその辺は考えるけど。
664 :
NAME 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で教えてください。
>>664 IifやDateAddを駆使して集計専用の計算フィールドを作る。
>>659 それは垂直分割という技法である。あとはググれ。
667 :
664 :05/03/16 15:29:03 ID:z3SOFake
もいっこいいですか? クエリで新規テーブルを作るとき、データが存在する列はいいとして、あとからデータを入れたい時のために Null 列を作るんですが、これにデータ型を指定する方法ってあるんでしょうか? 例) select [氏名] as name, [住所] as add, Null as ふりがな, … into 詳細名簿 from 名簿; で、"Null as ふりがな" で列を作っておく。あとから自分でふりがなを埋めていくorクエる。 上記SQLだと、出来た「詳細名簿」の[ふりがな]がバイナリ型とかになってるんです。 これをテキスト型で作ってくれとか長整数型で、とかの指定が出来たらいいなぁと
669 :
667 :05/03/17 13:12:04 ID:fUFB04lR
"SELECT INTO "では無理でも他の表記SQLでは可能なんですか? それともSQLで行うこと自体無理なんでしょうか?
>>669 CREATE TABLE
ALTER TABLE
ならできる。
671 :
NAME IS NULL :05/03/17 14:35:59 ID:kiGqwfxi
>659 です。 レスくれた人ども。 テーブルの分割といっても、新しいフィールド、データを追加するのに 新しいテーブルをつくるか、既存テーブルにフィール度を作るか ということに近いので、>662 さんのやり方なのかなー。 ただ、別の新規テーブルにすると、>667の問題があるかも。 Null やめて、""を入れられないのかな。
672 :
667 :05/03/18 14:46:54 ID:Eh07hio+
>>670 あ、そーか
…でも、それは最初から決まったテーブルに決まったことを吐き出すといった
全体的な設計をたてておかないと辛いですね。
スパイラルのような開発には向いてないのかな、漏れのやり方が悪いのか…
>>672 SQLを動的生成すりゃいいだろ。
念じるだけじゃシステムはできないんだからどこかには記述しなきゃ。
なんかワロタ
>>662 それはさすがに正規化したほうがいいのでは。
商品コード, 解説No, 解説文
1, 1, 新製品
1, 2, 軽くて丈夫
3, 1, ロングラン製品
4, 1, 新製品
4, 2, 超小型
4, 3, 大売出し中
こんな感じで。
>>675 (・∀・)イイネー、イイネー、キレイダネー
そうですよね、こっちのテーブルもちゃんと形にしてやるべきですよね。
何かこの作業、初めから気持ちの中でテーブルに優劣つけてたようなところがありまして。
ああ、商品マスタが汚染されちゃう、みたいな感じで。
思いっきり手のばして生ゴミ鋏でつまみあげるような扱い方してました。
反省です。いまからでも手遅れじゃないんで直します
Oracleに対してODBC経由でOpenDatabase()すると、 Database.TableDefsの件数が354件しか入りません。 実際は1700以上あり、手動でODBCのリンクテーブルの作成を行う際には きちんと全てのテーブルが表示されています。 Access2003を使っています。 同じMDBをAccess2000で試したところ期待通りに動いているようです。 何か新しい制限でも加わったのでしょうか? どの辺から調べていったらいいのかヒントだけでも思いつく方 いらっしゃらないでしょうか。 よろしくお願いします。
678 :
NAME IS NULL :2005/04/04(月) 01:35:13 ID:K1ILMTjG
Accessってインデックスのアルゴリズムに何使っているのだ? やっぱりBtree?
679 :
NAME IS NULL :2005/04/07(木) 23:47:32 ID:iJRWnZzR
MDBファイルをVisualBaicをユーザーインタフェースにして複数(5,6台)のPCからADOやDAOで参照や書き込みを したいです。VisualBaicの経験は数年ありますが、データベースを扱ったことがなく、全くの初心者です。 質問なのですが、偶然複数のPCから同じデータに対して更新を行った場合が当然想定されますが、 この場合は排他的にDBアクセスをするようにして、後からアクセスしようとした人には一瞬待たせるように すればよいのでしょうか。 この際、排他的アクセス設定ってありますか。 後からアクセスした人は今ビジー中っていう戻り値を得られるのしょうか。 あと、ADOとDAOって簡単にいうとどう違うのでしょうか。 文章の意味不明かもしれませんがよろしくご教授願います。
>>679 MSDEというものがあります。
Accessからでもある程度の管理はできます。
>>679 DAO は Jetエンジン(MDB) 用に開発されたインタフェース
ADO はもっと汎用的なインターフェース
MDBで運用するならDAOがおすすめ。
MSDE等へ移行するならADOがおすすめ。
MDBというかJetの仕組み上、厳密な排他制御は難しいよ。
MSDE等のデータベースサーバへ移行すれば
排他制御はサーバ側に一任できる。
682 :
NAME IS NULL :2005/04/08(金) 20:07:38 ID:2SnNUHgS
ODBCDirectフフフ…
683 :
NAME IS NULL :2005/04/09(土) 00:09:20 ID:7RqO7iNX
>>680 >>681 貴重な回答どうもありがとうございます。
今日さっそくMSDEの調査を行い、MSDEの入手とインストール、あとサーバーの起動まで行いました。
その後、ACCESSを使ってADPファイルを作成せよということで、簡単なテーブルを作成するところまでできました。
明日、休日出勤して先に進めようと思いますが、再度質問があります。
このADPファイルを作成後、ADOオブジェクトを使って、このデータベースにSQLでアクセスすれば良いのでしょうか?
あと、顧客からは扱う情報が稼動後増えるかもしれないので、列情報を追加できると嬉しいとのことですが、
VBから既存のデータベースに列(要素)を追加することってできるのでしょうか?あと、データベース名だけ分かっていて
全ての列情報を取得するようなSQLってあるんですか?
今月いっぱいでデバッグまで完了させねばならず焦りと不安でいっぱいです。
>>683 おいおい、一人でシステム構築やってんの?
2chに頼りながら使ったことのないDBMSで
一ヶ月でシステム完成なんて不可能だよ。
さっさと上司に相談して応援頼め。
685 :
NAME IS NULL :2005/04/09(土) 08:19:58 ID:7RqO7iNX
>>684 そうなんです。
検査場で検査状況を参照、格納するDBです。(5〜6台のPCで)
もともとExcelの表で管理していたのを、DB化するもので、扱うテーブルはリレーショナルとか必要なく、
複雑なものでないです。指定したフィールドによる検索と、レコードの書き込みができれば良いです。
VBは結構経験有るので、今月中にサクっとできそうにも思えるのですが、どうでしょうか?
>>685 > VBは結構経験有るので、今月中にサクっとできそうにも思えるのですが、どうでしょうか?
そう思うなら、2chなんか覗いてないでさっさと手を動かすことだ。
687 :
681 :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のウイザードで大まかな雛型を作って、それに
手を加えていく形で進めるのが早いと思うよ。
689 :
NAME IS NULL :2005/04/10(日) 00:47:23 ID:yLBu8JJ+
>>687 ありがとうございます。
クエリとかまだ勉強不足で知りませんでしたので、ネットに載っていたのをサンプルにして、
VBからADOとADOXを使って、テーブル名やフィールド名、フィールドのデータを取得することができました。
ただ、レコードの追加書き込みができませんでした。
これもネットのサンプルを見て、ADOのレコードセットを使って書き込みしたところ、処理はエラーが出ずに完了
するのですが、その後、ACCESSでADPプロジェクトを開いて、レコードが書き込まれているかを確認した
ところ書かれていませんでした。
ADPを開くと更新内容が見れないんでしょうか。それとも何らかの設定が足りなくて書き込まれないのでしょうか。
それからACCESSからクエリを投げるとのことですが、ACCESS側ではテーブルを作成するだけで、コードは
VB側で記述するものだと認識しているのですが、ACCESS側でもコードを記述する必要があるのでしょうか?
パフォーマンスを上げるのが目的ですか?素人過ぎて申し訳ありません。
そもそも運用中にポコポコ列が増えるってどんな設計なんだ?4月分, 5月分とか増えていくとか?まさかね… 横じゃなくて縦に伸ばせるように仕様詰められないの?横に伸ばしたら最悪アプリの根っこから 作り直しになって( xДx)ウボァーナリヨ。
テーブルだけ項目増やしてもどうにもならんと思うけど。 項目増やした後はデータを手メンテするの?
テーブルAにa1、テーブルBに b1というフィールドがあるとします。 b1内のどの値とも一致しないa1を持つレコードを テーブルAから抽出するにはどうすればいいでしょうか。 ただいま入門書を見て考えていますが、頭が爆発しそうです。
>>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
SELECT * FROM テーブルA WHERE a1 NOT IN ( SELECT Distinct(b1) FROM テーブルB );
695 :
NAME IS NULL :2005/04/11(月) 23:31:28 ID:H2OCR0rb
SQL文で文字列フィールドにおける、重複を無くした全データ を取得(Excelでいうとオートフィルタ)する記述が分かりません。 どなたか教えていただけないでしょうか。
distinct でも group by でも好きにしたら良かろう
えぇけっしとるのぉ(*´Д`)ハァハァ うはっwwwおkwwwうえっwww??
ええけつしとるのぉ(*´Д`)ハァハァ うはっwwwおkwww??
ええけつしとるのぉ(*´Д`)ハァハァ うはっwwwおkwww??
700 :
NAME IS NULL :2005/04/13(水) 16:36:04 ID:RJ6cm4WZ
Access2000を使っています。 テーブルのデータを元に、「単票フォーム」で 売上明細を出しているのですが。 例えば「得意先」「日付」をグループ化して、 フォームを下のようにレイアウトした場合、 売 上 プラス マイナス 合計 振込料 プラス マイナス 合計 手数料 プラス マイナス 合計 運送料 プラス マイナス 合計 値 引 プラス マイナス 合計 返 品 プラス マイナス 合計 と項目が続くとして、合計を出す時は「合計」欄に =[売 上プラス]-[売 上マイナス] =[振込料プラス]-[振込料マイナス] =[手数料プラス]-[手数料マイナス] =[運送料プラス]-[運送料マイナス] =[値 引プラス]-[値 引マイナス] =[返 品プラス]-[返 品マイナス] というように、それぞれ数式を手動で入れています。 これをエクセルの「形式を選択して貼り付け」のように 一括して数式を入れる方法はないでしょうか? クエリを先に作る方法でも同じようにひとつひとつ 数式を入れていますが、この場合でも、計算が多いと 数式を入れるのがとても大変なので。 VBAを使うとか、そもそもが何か間違えているのでしょうか? ちなみに、帳票フォームだと項目が多くて入りきりませんでした。
ええけつしとるのぉ(*´Д`)ハァハァ うはっwwwおkwww??
えぇけっしとるのぉ(*´Д`)ハァハァ うはっwwwおkwwwうえっwww??
ひょっとして「売上プラス」と「売上マイナス」は別の項目なのか?
704 :
700 :2005/04/13(水) 22:28:58 ID:Vnbo6rp/
>>703 別の項目で、それぞれに入力されたデータがあります。
普通はプラスマイナスはいらないんでしょうが、業種が特別だからか、
元々入る予定の金額「プラス」に、日割等で減った場合の「マイナス」を
引いた金額を出す必要があるもので。
例)売上・・・基本9000円 日割-900円 合計8100円 =本日の売上
この基本の「プラス」から「マイナス」を引く計算式を、項目ごとの
日ごと、月ごと、年ごと・・・とくり返し作るのも大変なので、
エクセルの貼り付けのように簡単に出来ないものかと思ったわけです。
705 :
NAME IS NULL :2005/04/14(木) 19:23:08 ID:k9RzpyUm
PHP から下記のinsertを行おうとすると構文エラーになってしまう。なんで? INSERT INTO Note(Note1) VALUES('アメリカ') Note は実在するテーブルで、データベースへの接続は事前にできている。 Note1 はメモ型
>>705 予約語ってやつ。
NOTE ってのは JETエンジンに於いてはMEMO(LONGTEXT)型の別名だから、
テーブル名に使っちゃいけないんだと思うよ。
707 :
705 :2005/04/15(金) 11:54:38 ID:zPmPcQUp
え っ る ハ ぇ し の ァ ハ け と ぉ ァ うはっwww夢がひろがりんぐwwwwww
え っ る ハ ぇ し の ァ ハ け と ぉ ァ うはっwww夢がひろがりんぐwwwwww
Accessに詳しい方が大勢いらっしゃるようなので、質問させていた だきます〜! ご存知でしたらレスお願いします!(^0^) いまAccessにOracleのテーブルをリンクさせています。 OracleではCHAR(1)のデータ型になっていて、1又は半角スペース のデータが入っているのですが、AccessにリンクさせたOracleテー ブルを開くと1はそのままで、半角スペースの入っているハズのとこ ろがNULL値(?)になってしまいます。 これはAccessの仕様によるものなのでしょうか? OracleのCHAR(1)の半角スペースはなくなっちゃうんでしょうか??
>>710 リンクをやめてインポートしてみたら?
オラクルはさわったこともないから想像で書いているが・・
>>711 ありがトン!
試してみる!!(^0^)
AccessdeでのクエリはオラクルでいうView(仮想表)に相当するのでしょうか?
トリガーの場合もある
715 :
NAME IS NULL :2005/04/19(火) 15:33:21 ID:A7BzLndY
トリガーの例くあしく Accessクエリは基本的にSelectしか出来ないと思ったけど
アクションクエリのことじゃないか?
>716 それもトリガーじゃないが。 >715 INSERTやDELETEは?
710ですが...
OracleのCHAR(1)の半角スペースはAccessにリンクしても、残ってた。
NULL値になったというのはモレの勘違い。
>>711 アドバイスくれたのにゴメン。煎ってくる。
>>718 試しにリンクしたテーブルにACCESSから半角スペースを入れてみろ
720 :
710 :2005/04/21(木) 22:01:19 ID:???
>>719 設定でACCESSからORACLEにデータを追加できない
ようにしてるから、半角スペース入れてみれないんだ。
(・ω・)
721 :
NAME IS NULL :2005/04/23(土) 23:56:09 ID:37o/jpJa
ACCESSは、ストアドプロシージャー使えますか?
使えますよ?
723 :
NAME IS NULL :2005/04/24(日) 01:04:06 ID:9bSnXZZL
>>722 どうすればSPが使えるのでしょうか?
ご教示ください。
アクションクエリとVBA
adpでいいじゃん
そう思う
入力規則について皆さんのご意見を。 ヘルプでは、Is Nullを追加しないとNullはNGのような記載があります。例えば、テーブルのある 数値フィールドに既定値0, 入力規則 Between 0 And 9 とした場合、入力時に既定値の0をDEL してNullにするとエラーですよね? 95, 97とそうだったし2000もそのはずなのですが、最近のAccess2000ではNullにしてもエラーに ならないんです。MDBが壊れてるわけではありません。新規MDBでテストしても同様の結果です。 フォームのコントロールに同様の入力規則をセットした場合は、Nullでエラーになってくれるので 今はその対応で回避しています。 皆さんの場合はどうですか(2002, 2003の話でもいいです)? スレ違いなら誘導を、またMSの技術情報があればそのURLを教えて下さい(結構、検索しました)。
>>727 2003でもNull入力でエラーにならないYO
エンジンの挙動が変わったのかもしれないね。
というかJETに限らずnullが入る必要のないフィールドには
nullを許さない設定をすべきだと思うよ。
明示的に設定しておけばバージョンアップに伴う挙動の
変化に悩まなくて済むんじゃね?
729 :
727 :2005/04/25(月) 23:35:31 ID:???
>>728 そうですか。2003でも。
「nullを許さない設定」:確かにそれもそうなのですが、入力規則に反してますよ
のエラーで統一したい場合もあるんで・・・特に95から2000へシステムを移行し
たユーザーなんかは、何でメッセージが違うんだとこだわる場合もあるので。
MSのアナウンスはないんですかね。
>>729 2003のヘルプにも入力規則のあるフィールドにnullはNGって記述があるね。
実際は入力出来るけども。
入力規則も、それに伴うエラーメッセージの統一もプレゼンテーション層で行うべきだと思うよ。
フォームの段階でエラーをハンドリングすれば「入力規則に反してますよのエラーで統一」が
実現可能なんじゃないの。
DB層に入力規則の考えを持ち込むと設計がややこしくなると思うけど。俺だけかもw
731 :
727 :2005/04/26(火) 15:55:04 ID:???
>>730 その何とか層ってちょっと敬遠。ネットワークの時だけにしてくれ〜みたいな。
今のところは、フォームのコントロールに入力規則をセットすることでNullをはじい
てくれるので、「フォームの段階でエラーをハンドリング」とほぼ同様っすね。
エラーのハンドリングとその後のメッセージ表示は、関数を作ってるので一般的な
エラーはユーザーにわかりやすいメッセージ表示にしてます。
これ以外で、特定のエラー番号を判断してロジックを増やしたりしたくないというの
もあります。たかが数行って思ってるとそれがドンドン増えますし、バグの元なので。
なので、極力プログラミングしないで済む設定は利用したい、だけどヘルプと異な
る動作なのにMSには何の情報も無し、ってことで書き込みしてみました。
検索が下手で見つけられないとしたら、どなたか知ってる方がいるのかなと。
DB に制約をつけないと AP 拡張時に無効な値をはじく処理をいれ忘れ、 ほどよく取り返しが付かなくなった頃に問題が表面化して 「仕様に書いた」 - 「なぜ制約で予防しなかった」と不毛な言い合いに なって雰囲気が悪くなり、顧客も技術者も去っていくバッドエンドに
733 :
730 :2005/04/26(火) 22:24:03 ID:???
735 :
731 :2005/04/27(水) 12:25:32 ID:MJ6t39XR
>>733 ほどよくインシデントの有効期限切れ。今まで.Net C#のWEB開発やってて、このおまけで
MSDNに入ったもので。零細企業の開発なめてる社長が、Accessごときにサポートの金が
必要かぁってなると思うので、インシデントは手に入らないっすね。
737 :
NAME IS NULL :2005/04/28(木) 13:32:56 ID:/B8UlL+2
質問です!どなたかご教授お願いします! 因みに初心者です。 ACCESSでODBCの呼び出しに失敗しました。 と出て一向に進みません。 タイムアウトかな?と思い、600秒にしたのですが、 どうやら関係ないようです。 どうしたらよいのでしょうか・・・。 テーブルのリンクもきちんとやっているつもりなのですが。 他に何が考えられますか??
739 :
710 :2005/04/28(木) 22:55:54 ID:???
>>737 ODBCタイムアウトを0にしてみては?
740 :
NAME 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 とアクセスに格納したいのですが、やり方がさっぱりわからず困っています。 ほんとに初心者の初心者ですみません! 聞き方もわからないので、こういう質問しかできませんが、 どなたかご親切な方、ご教授お願いします!
>>740 VBAでプログラムを組むのが簡単だね。初心者というのは免罪符にはならない。
表だったら項目がどうなってるか(セルの区切りとか)を含め、もう少し表現方法を
考えて質問してよ。
元表(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"
743 :
NAME 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 :
>>743 Select 日付, 気温 From T_Master Where 場所 = [何処なの?]
>>743 SELECT DISTINCT 場所 FROM T_Master
で出てくるレコードを上から順に舐めながらその場所の内容を使ったテーブルを作っていく
作成テーブル名="T_" & [場所]
SELECT 日付, 気温 INTO 作成テーブル名 FROM T_Master WHERE 場所 = [場所]
これを1つ目のレコード数分ループさせればいいだけでは?
746 :
NAME IS NULL :2005/05/01(日) 23:19:19 ID:yd6yI+wg
>>743 入力の仕方や、後からの参照の仕方は別に考えるとして
データのため方はそのまんまの方がいいんじゃないかと
たとえば「場所」が100000ヶ所ぐらいあるとしても、そのままで
まったく無問題のはず
後からの参照の仕方については
>>744 の形でOKと思う。
入力の仕方については、やり方いっぱいありすぎ面白すぎで、
一口では語れない。ある意味腕のみせどころ
ごめん、あげちゃって
748 :
NAME IS NULL :2005/05/02(月) 01:19:55 ID:CCd6APdi
高校1、2年てアクセスやってたけどさっっぱりだった。全然わからん。クソ。しね。全然わからんしね。クソ
>>748 わからないということは
今の君にはAccessは必要じゃないということさ。
人間、必要に迫られれば何でもやるもんさ。
むしろ>748がAccessに必要とされていない
752 :
743 :2005/05/04(水) 18:29:54 ID:???
>744-746 ありがとうございます。 テーブルをバラすことばかり考えてました。 これからいろいろ試してみます。
>>751 どのウィザードかわからないと何とも言えないが、MSが
信用ならんのは確かだ。それにしても、そのスレはレベ
ルが低いのぉ。
>>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自体が異常終了する。
割と有名な話だと思うけど
basicて初期化いるの?
756 :
753 :2005/05/05(木) 21:31:07 ID:???
>>754 へぇ〜、知らなかった。ウィザードは一切使用しないもんで。
>>755 basicでもCでも暗黙に初期化はされてるが、明示的に初期
化処理をした方がプログラムが見やすいと思うが、好みの
問題でもあるよね。
staticなときだけでしょ。>>初期化 局所変数(Accessでいうプロシージャ変数)はプロシージャ(関数) にエントリーするときにスタック上に領域をとる。 実際にはスタックポインタを変数のサイズ分だけ調整するだけなんで プロシージャ変数は初期化されていないと見るのが妥当だと思う。
759 :
756 :2005/05/07(土) 01:42:53 ID:???
>>758 あ〜ごめんなさい。全くの説明不足を補って頂いてありがとう。
ちなみにAccessの場合は、プロシージャレベルの変数でも初
期化されてます。自分は、こういうのって嫌いですけど。
C++/C#ではどうだったっけと余計なことまで気になってしまっ
たが、調べるのもメンドイ。目の前のマシンにはインストールし
てないし。
>>759 > C++/C#ではどうだったっけと余計なことまで気になってしまっ
> たが、調べるのもメンドイ。
知らないんだったら書かなきゃいいのに…。
761 :
759 :2005/05/07(土) 23:35:56 ID:???
知らないんじゃなくて、忘れたというか気にして使ってないから どうだったろうと気になっただけだよ。 いちいち絡むなオタク!!
>>761 ずいぶん偉そうだな。
>>756 で「Cでも暗黙に初期化はされてるが」と恥さらしたこと忘れたのか ? (ププッ
たぶん、アンタよりは偉い人なんじゃないの。
764 :
NAME IS NULL :2005/05/11(水) 11:17:09 ID:Fc6Gv+7F
クエリでカラム名からテーブル名の修飾をはずすには別名つければいいはず。 でも、あるカラムだけ別名つけると値が表示されなくなり、 フォームからも参照できなくなってます。 元々、同じクエリ内の他のカラムにはテーブル名の修飾はないんだよね。 でも、このカラムだけ修飾があって、しかも取れない。 なんで?
>>764 そのクエリをここに書かないと話が進まんと思うが
766 :
764 :2005/05/11(水) 11:38:48 ID:Fc6Gv+7F
いや、そうは思ったんだけどUNIONを2回使ったりしていて、 ここに正確に書くのはちょっと難しいんだよね。 今、試しに元のカラム名と違う別名つけたらテーブル名の修飾は外せた。 でも、プログラムの都合でできれば元のカラム名と同じにしたいんだけどなぁ。 これと同じような現象って遭遇した人います?
767 :
NAME IS NULL :2005/05/11(水) 15:29:00 ID:Pb6wdUxV
>>766 テーブル名の修飾を外すって、 SELECT T_A.F1 FROM T_A の T_A.F1 → F1 にしたいって
こと? オレ、何か変な解釈してるかな・・・。
FROM で結合してテーブルがあるなら、その全てのテーブルのフィールドで重複してなけれ
ば、単に修飾部分を削除するだけじゃないの?
何故おかしいのかってのは同じ経験者がいない限り、SQLをカキコしてくれないことには見当
がつかんですよ。
>>766 結合してる他のテーブルに同じフィールド名が存在するから。
サブクエリでそっちのテーブルからそのフィールドを隠せば解決。
だとしたら、UNIONに更にサブクエリってデータ量やインデックスにも左右されるだろうけど、 処理速度への影響を考慮して素直に別名を変えた方が良くないかなぁ。
770 :
NAME IS NULL :2005/05/14(土) 15:00:07 ID:foJtGv0G
グラフの機能について教えていただきたいです。 ピボットグラフで棒グラフを作成しましたが、 グラフにマーカーを表示させられません。 どうやったらいいんでしょうか?? 「できる」には判例のだし方とかは載ってるんですが マーカーについては触れられてませんでした。。。
771 :
NAME 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を入れられない理由は何?
773 :
771 :2005/05/16(月) 00:48:16 ID:MrYz/AtZ
>>772 さん
早々とレスThxです。
IISを入れられないのではなく、すでにAccessで膨大なシステム
(規模は大きいけど同時利用者数はすくないのでAccessにしたみたい)が構築されてて、
その膨大なAccess資産を捨てられないのです。
Soapを使用するのはホンの一部であり、そのためにAccess→.NETで作り直し、なんて
とても出来ません。(開発費が100倍くらいに跳ね上がる)
で、Access2003に何かアドインすれば、Soap通信できるものなのか
(もっとありていにいえばAccess2003のプロシジャで直接Soap通信&XML解析するには
如何にすればいいか)を調べておるのです
>>773 BASP21のソケットオブジェクトは?
776 :
773 :2005/05/16(月) 23:10:02 ID:INfAfmB9
>>774-775 ども、ありがとうございます!
教えていただいたキーワードを基に、色々調べてみますm(_ _)m ペコ
777 :
NAME IS NULL :2005/05/18(水) 12:33:11 ID:RgsqjMIN
マクロさえわかんね・・・ まず、どこからどうやって勉強するか教えてください。
ぐぐることから覚えれ
779 :
NAME IS NULL :2005/05/18(水) 21:16:00 ID:gEJnbWTP
MDEからMDB作った人いませんか?
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 できません
以上
782 :
NAME IS NULL :2005/05/19(木) 11:56:12 ID:nYUwVr4E
フォームで、レコードセレクタの位置を示す関数は何ですか? またその値は何をつかえばいいのか。。。 (カレントレコードorアクティブレコードを指す関数が分かればいいのかも) 同じフォームに戻ってきたとき、また同じ位置にあるようにしたいのですが。
主キーでfindかけるのが一番確実かも。
「主キーに設定しますか?」 「しゅきにして」
フォームを閉じたりするとBookmarkは変わるので使えません。 となると、主キーかそれにかわる一意なデータでFindだね。
788 :
782 :2005/05/19(木) 21:07:00 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日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
792 :
NAME IS NULL :2005/05/22(日) 00:47:50 ID:iYdOfrno
ACCESS2003で、ODBCを介して、SYBASEのテーブルにリンクを張ろうとしています。 テーブルのリンクを張る際、USERIDとパスワードの入力を求められますが、 パスワードを保存する、というチェックをしておかないと、次回以降、 テーブルオープン時(VBA上でselect時)に毎回パスワードを聞かれてしまいます。 このパスワード入力をVBA上で埋め込む実装はどのようにすればよいですか。 プロパティの変更ではなく、テーブル接続時のパラメータのような感じで 実装したく思っています。
>>792 VBAでデータベースOPEN時のDSN文字列にPASSWORD書く欄あるから、そこに書いておけば
以降はテーブル開ける度に必要になる事は無いハズ。
794 :
NAME IS NULL :2005/05/22(日) 13:37:44 ID:9+eG6gvI
OracleとODBC接続すると、テーブルのデータが全部#Deletedとなるんですが、、、 Access2003使ってます。 何かの参考書に、「主キーがNumberだとそうなる」とあったんですが varcharにしてもなるんですが、、 AccessからODBC接続すること自体が間違いなんでしょうか?
エクセルソフトという会社のAccess converterというソフトがあるんですが、 内容はAccessをJavaへ変換するというものです。 興味があるんですが、使ってみた方はいらっしゃいませんか。 レポートお願いします。
>>795 体験版がDLできるはず。自分で使って皆歳
>>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
これでうまくいきました。ただ、ディレクトリを読み取り専用にしたら
やっぱりうまくいきません。プロパティの変更を伴わず、パスワードを
渡せる方法はありますでしょうか。
>>797 接続時のパラメータ、これ=プロパティなので変更無しでという要望は無理でしょう。
ディレクトリを読み取り専用って、どこのディレクトリの話? ldbファイルを作成する
関係上読み取り専用はあまりよくないぞ。
それと、VBAで埋め込み実装するくらいなら最初のリンク時にパスワードの保存をし
た方が楽じゃないか?
結局そのテーブルにアクセスする時に誰彼構わずOKなんだから。
799 :
NAME IS NULL :2005/05/27(金) 09:39:35 ID:gkDE1xQN
教えて下さい 受注テーブルを作りました クエリーで《今日から八日後迄の受注データを抜き出しなさい》 というクエリーはどうしたらいいのでしょう?初心者ですいません。
>>799 DATEADD関数で○日後(前)の日付を取得できる。
んでも8日「後」までの受注データってあるのか?
先取りで受注日を入れるシステムなのか?
>>801 あらかじめ内示オーダー情報があって、
客先へ出荷する○日前に
確定オーダー情報に変更するとかってシステムでは?
内示オーダーが確定オーダーに変更される日 = 受注日みたいな。
まあ、799さんの言う8日後ってのが
受注日だとは限らないわけですけど。
803 :
NAME IS NULL :2005/05/28(土) 01:13:14 ID:A/wqnLTQ
>>800 ,801,802さん ありがとうございます。
すみません説明が足りませんでした。正確には
“配送指定日の日付が本日から8日後迄のデータを抜き出しなさい”です。
申し訳ないです。宜しくお願いします。
>>803 DATE関数で本日の日付を取得できる
DATEADD関数で○日後(前)の日付を取得できる。
806 :
NAME IS NULL :2005/05/28(土) 21:03:39 ID:A/wqnLTQ
807 :
NAME IS NULL :2005/06/03(金) 13:17:55 ID:dup57AmK
>>805 さん すみません
実際の式を教えてください
808 :
805 :2005/06/03(金) 14:11:57 ID:???
809 :
807 :2005/06/03(金) 20:51:00 ID:CmRNI67d
810 :
805 :2005/06/03(金) 21:25:37 ID:1DstjNva
マジで調べることをしないのなら、Access使うのやめな。
きっと携帯で2ch見てるオフラインユーザーなんだろう。そうに違いない。それ以外ありえない。
選択クエリファイル(?)のSQL文をフォーム上のVBAで作成したSQL文と丸々置き換えしたいんですが、 良い方法はないでしょうか? 理由は、クエリAを元にして作ったクエリBを使っているフォームがあるのですが、 抽出条件を多様にしたいため変数を使ってクエリAのSQL文を作ろうと思っています。 しかし、問題になるのがそのクエリAを元にしているクエリBで、 SELECT クエリA.* FRM クエリA LEFT JOIN 〜 となっているため、VBで作ったSQL文を元にクエリBのようなSQL文をどのように書けばいいのか分かりません。 そこで元々のクエリAのSQL文を丸々置き換えすればいいじゃないかと思ったのですが、 ……もっとスマートなやり方があればそちらを教えてくださいorz
>>813 From にクエリAのSELECTを埋め込んで別名をつけ・・・という方法もある。
とりあえずは今のままで割と簡単に対応するとしたら、クエリAのSQLをVBA
で作成し、クエリAのSQLを書き換えてしまえばいい。QueryDefとSQLプロパ
ティを使えばできるだろ。
リンクテーブルのとあるフィールドに、こちらのAccess側でだけインデックスをもたせることはできないでしょうか? むこうのデータを使用して集計しようとすると遅くて遅くて困ってます。
>>816 リンクしたテーブルをデザインで見るとわかるが、インデックスの部分は
保存不可なので無理です。JETで外部インデックスってなかったと思うし。
集計するためのSQLが複雑だったり、クエリのクエリや外部結合などボト
ルネックになる部分を徹底的に削るしかないんじゃない。
そのためには、ダミーのMDBやテーブルを使ってこれに必要なデータを
追加して。で、これはAccessだからインデックスつけられるっしょ。
そこまでする必要性がない集計で遅いのであれば、お手上げですが。
>>816 間違えたこっちだった。
"create unique index <インデックス名> on <テーブル名(フィールド名)>"
>>819 >リンクテーブルにはインデックスは設定できません。
>但し、ODBC リンクテーブルには 「擬似インデックス」 を設定できます。
>擬似インデックスは元のテーブルには影響を与えません。
リンクテーブルだから意味ないんでね?
821 :
NAME 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 とかでやりたいんです。 どなたか教えてください。
>>821 頭の悪い回答で良ければ一つ思い付いた。
とにかく七日後の日付が分かれば良いんだよね?
だったら、
SELECT T_出勤日.年月日, T_出勤日.出勤日, DSum("年月日","このクエリ名","年月日 <= #" & [年月日] & "#") AS 作業日カウント
FROM T_出勤日
WHERE (((T_出勤日.年月日)>=[forms]![フォーム名]![作業日]) AND ((T_出勤日.出勤日)=1));
てな感じの、出勤日の値(幸いにも出勤が1なので)の累計を出すクエリを作ってしまって
フォーム上でDLookUp("年月日","クエリ名","[作業日カウント]=7")で呼び出してしまえば
出勤日のみの七日後分かるけど、どうだろう?
>>818 やはり一旦ローカルにテーブルコピーするしかないようです。
既存のレコードもちょくちょくデータが変わるようなので、その都度テーブル削除して
コピーし直す時間を考えると集計速度犠牲にした方がいいのかもしれないですね。
>>821 累計で出す必要なかった(重いし)。こっちで良いみたい。
select *
from T_出勤日
where 年月日=(select max(年月日) from (select top 7 年月日 from T_出勤日 where 年月日>forms!フォーム名!作業日 and 出勤日=1))
825 :
NAME IS NULL :2005/06/11(土) 00:16:32 ID:QZdqXtV2
クエリーで 連番を入れる方法を教えてください。 可能であれば初期値の設定も。
>>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つということで。
827 :
825 :2005/06/11(土) 13:26:31 ID:QZdqXtV2
>>826 ありがとうございます。
あなたは神様です。
828 :
825 :2005/06/11(土) 13:38:08 ID:QZdqXtV2
なんで、dmyが必要なんですかね? 確かにないと、うまくいかない・・・ クエリー実行前にRenban変数を↓のようにしても0にならないのは なんでなんですか? Public Sub() Renban = 0 End Sub
829 :
826 :2005/06/11(土) 16:06:14 ID:???
>>828 dmyが必要な理由は、うまく説明できないなぁ。クエリからコールされる時にフィールドを
渡してやると、このレコードもしくはフィールドの処理ってことで毎回毎回1レコード毎に
コールされるようになる。この引数がないとその必要がないと見なされる。
もっと詳細に知りたい場合は、ぐぐるなりMSやMSDNの資料を漁るなりしてくれ。
そのSubをどこからコールしてるんだ?Subとして定義しただけでは意味はないぞ。
つうか、ちゃんと関数定義しろよ。関数名Subはやめろ。転記ミスなら気付け。
で、そもそもクエリをどうやって実行するのか知らないのだが、VBAでDoCmdするなら
その関数でDoCmdの直前に Renban = 0 とすればよいだけ。
830 :
825 :2005/06/12(日) 08:49:18 ID:KoTmaxZI
>>829 調子こいてタメ口きいてんじゃねーよ!>アフォ
なんでヒーローの変身中に攻撃しないんだ的なツッコミですね
832 :
829 :2005/06/12(日) 21:09:42 ID:???
>>830 仮に825本人としたら、この程度の事もAccessでできないクセにツッコミ
入れてんじゃねぇよ!!
>>832 仮に829本人としたら、うんこ釣りに反応するなよw
834 :
825 :2005/06/12(日) 22:20:56 ID:???
>>832 たかだか、グローバル変数ごときで神になったつもりかよっ!!!( ゚,_ゝ゚)バカジャネーノ
自分はできると思い込んでる人も含め、やっぱりAccessやってる人って レベル低い人が多いんですね。
どんなレベル求めてるんだよw
837 :
NAME IS NULL :2005/06/14(火) 16:02:22 ID:PY+Y24XS
>>835 は、技術的なことは推し量れないから、せめて人間としての常識レベル
を求めてるのではないかと思う。
825は、最低のクソだな。初歩的な事がわからず、それを教えてもらったのに。
Accessも人間もやめた方がいいぞ。
839 :
825 :2005/06/15(水) 00:46:48 ID:???
うんこのエサにも食いつくアフォな
>>837 がいるスレはここでつか?
>>837 教えてもらった本人825がうんこ釣りしてもかい?
いや、なりすましなのかな?
>>840 こういう時は825も829もなりすましということにしておくのがベターだ。流せ。
843 :
840 :2005/06/15(水) 12:00:14 ID:???
>>842 2chでの対応が1つわかった。ありがと。
流すことにするよ。
つーか教えてもらったら金を
Access2000で作成したDBをそのままAccess2003で運用していたら 日に日にファイルサイズが肥大していく・・・ 2003導入当時65MBほどだったのが2週間で144MB。 2000で運用時はこんなことなかったのに。 どなたか原因わかりませんかorz
>>845 データの最適化は定期的にやってますか?
>>845 2002だと
ツール → オプション → 全般タブ
『 閉じる時に最適化する 』 にチェックを入れるんだけど
2003にはないでしょうか?
エスパーな俺が
>>845 の質問の意図を読み取るに、2000で運用していた時よりもファイルサイズの
増え方が大きくて異常なんだがこれどういうことよ、ではないかと思うダニ。最適化どうこうじゃなく。
>>845 ツール→オプション→詳細
『レコードレベルでロックして開く』にチェックがついているとMDBが異常に
でかくなるそうです。
2000がチェックなしで2003がチェックされているとか?
850 :
846 :2005/06/15(水) 23:50:57 ID:???
>>849 そうなの?
オレの場合、2000でチェック入れてるけど開発環境でも複数のユーザー先でも異常な
増え方はないよ。何か環境とかバージョンとか関係するんかなぁ。その話の出所も教え
てあげた方が良くないか?
>>847 それ、うっとおしい。
852 :
845 :2005/06/16(木) 09:24:10 ID:???
みなさんありがd とりあえずレコードレベルでロックして開くをオフにしてやってみます。
853 :
850 :2005/06/16(木) 10:44:46 ID:???
>>851 ありがとう!!
参考にさせてもらいます。
854 :
NAME IS NULL :2005/06/17(金) 10:07:03 ID:3Jh7Qxk4
☆ 教えてください ☆ 慣れ親しんだLANで共有されている アクセスDBをまだ使いたいのですが、 エクセルでネットワークリンクされたアクセスDBですが、 アクセスを開くと排他となり、エクセルが開かないのですが、 初心者的な質問ですが、どなたかご回答お願いいたします。
☆ 管理者にお聞きください ☆
最近2003導入したんですけど、 オートコレクトの性能が思いっきり下がってるような・・・。 コンボボックスのリスト行数が増えると、ある程度以降のデータをコレクトしてくれない・・・。 以前のバージョンのような挙動に直したりできないですか?
メインフォームのイベントで、サブフォームのテキストボックスにSetFocusしたり、 サブフォームの最終レコードに移動したりしたいんですが、どうすれば可能ですか?
>>857 VBAで処理すれば可能。・・・この程度は本来、自分で調べて悩んで会得するものだが。
メインフォームのプロシージャとしよう。エラー処理は考えてない。
Me![サブフォームコントロール名].Form![サブフォーム上のテキストボックス名].SetFocus
最終レコードはいろんなやり方があるが、メインフォームから処理する場合の一例。
Dim SubRs As Recordset
Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone
SubRs.MoveLast
Me![サブフォームコントロール名].Form.Bookmark = SubRs.Bookmark
>>858 >Dim SubRs As Recordset
>
>Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone
>SubRs.MoveLast
>Me![サブフォームコントロール名].Form.Bookmark = SubRs.Bookmark
式で型が一致しませんと出てダメぽです
式では不要でした。 Set SubRs = Me![サブフォームコントロール名].Form.RecordSetClone の時点でダメっぽいです
DAO.Recordsetで自己解決しました。
862 :
825 :2005/06/17(金) 21:46:27 ID:???
取り乱してしまいました(^_^;)
↑何を取り乱したのさ?
865 :
825 :2005/06/18(土) 13:29:00 ID:???
>>864 人がカレー食ってる時に、連呼をうんこするなよ!
866 :
825 :2005/06/18(土) 13:31:00 ID:???
おっと間違えた・・・・(^_^;)
>>864 人がうんこ食ってる時に、カレーを連呼するなよ!
867 :
864 :2005/06/18(土) 13:36:03 ID:???
人がうんこ食ってる時に、うんこをうんこするなよ!
868 :
825 :2005/06/18(土) 16:34:44 ID:???
うんこが人食ってる時に、うんこをカレーするなよ!
869 :
825 :2005/06/18(土) 16:44:53 ID:???
カレー食った後の、レイコのうんこ食いたいよ! ※レイコ=葉山レイコ
↑アンタ、それなりの歳でしょ。
871 :
NAME IS NULL :2005/06/19(日) 01:19:49 ID:n9q/trAx
Accessで遅いクエリの解析しようと思っても、クエリの実行計画を知る術が無いんですね。 さすが安いだけのことはある
>>871 たかがデスクトップデータベースに何を望む。
使い物になるかどうかは知らんが、パフォーマンスの最適化ってのはあるぞ。
874 :
NAME IS NULL :2005/06/19(日) 11:31:56 ID:n9q/trAx
>>873 Explainでクエリ分析くらい、できたっていーじゃんと思ったのよ
まあいいよ
もうテストデータ作成用ツールとしか見ないから
それがいいなw
876 :
825 :2005/06/19(日) 12:59:51 ID:???
>>874 馬鹿に限ってこうやって開き直る( ´,_ゝ`)プッ
>>874 > もうテストデータ作成用ツールとしか見ないから
これは、社内システムの全てをAccessで構築している
俺の会社に対する挑戦と受け取っていいんだな?
GUIでクエリをサクっと造れるのがAccessの売りなわけだ。 それ以外は、、 おもちゃ
>>877 Accessは手軽でいいと思うが
>社内システムの全てをAccessで構築している
これはちょっと問題あるな。GUIだけならまだ救いはあるが。
ネタだと思う
だよな。安心した。
>>880 ネタじゃないって。
ログイン管理システムから始まり
メール・スケジュール管理・掲示板システム、
メインフレームとのデータ送受信システム、
数百万レコードのバッチ更新システムなどもある。
もちろん人事・経費管理などはバリバリ。
しかもAccess95だ。
今はデータウェアハウス(もどき)を作ろうという
計画が進行中だが、レコード数が軽く億を越える
非常にチャレンジングなものだ。
883 :
NAME IS NULL :2005/06/19(日) 15:49:18 ID:n9q/trAx
ネタじゃなかったとしても、データ件数、使う人数が限られてんのかなあ、とか思ってたんだけど、、 そんだけのデータ扱うなら今すぐAccessなんて止めたほうがいーんじゃないすか? なんでまともなDBMS使わないんですか?
別に驚かない 俺も一部上場企業の人事システムをAccessのみで組んでる案件に参加した事あるし
驚けよ 異常だと思えよ
せめてMSDE
MSDNの会員(正式名称忘れた)になれば、SQL Serverも含め
いろいろ手に入って製品購入するより安いぞ。
名目は、開発・評価用だがな。
>>882 それはチャレンジとは言わない。無謀。
見た目は、動くものができるけどな。
マジレス。
>>884 と同じことした。
一部上場の中でも超一流の企業の人事をAccessで開発した。
当初、パッケージ選定を行ったが、頭の硬い人事は納得できず、
カスタムメイド。数千人規模の会社だから異動履歴とかのデータ
件数を考慮してもAccessで十分。しかも安上がり。
逆に、
>>885 に異常である具体的な根拠を聞きたい。
>>885 はもの凄いITエンジニアか、単なる馬鹿のどちらかだとw
>>887 おっと、こいつも業務知らないヴァカだった。
数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り
作業(人事異動)でせいぜい2〜3名が行う。
トランザクションのために高価なDBサーバ&開発費をかけるくらいなら
・・・
書き始めたけど、消した。これ以上は企業秘密ってことでwww
>>877 うちの会社はmdbファイルに別のプログラムからアクセスして更新する方法を
とっていたが最近SQLに変更し始めた
>>889 馬鹿はお前だろ
>>882 の時点で↓という業務要件である、なんて一切書いてないやん。
>数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り
>作業(人事異動)でせいぜい2〜3名が行う。
>>891 はぁ?
馬鹿はオマエだろ?!
論拠書いてないし・・・・( ゚,_ゝ゚)バカジャネーノ
人事システムなんて濃度は濃いが・・・おっとまた書きそうにwwww
887は >数万人規模の会社でも、個別の人事情報の更新作業は年に2回のお祭り >作業(人事異動)でせいぜい2〜3名が行う。 の事実を知らない段階での意見なわけだが、、 >書き始めたけど、消した。これ以上は企業秘密ってことでwww >人事システムなんて濃度は濃いが・・・おっとまた書きそうにwwww ↑聞いてもないこと自分からベラベラ喋るおっさん、キモイですよー
( ゚,_ゝ゚)バカジャネーノを使ってる奴はバカに見える
>>889 > 業務知らない
アナタの決めつけの業務なんて知らないのは当たり前、というか
井の中の蛙ってやつだね。
いろんな企業の人事関係のシステムを開発したけど・・・おっと
これ以上は企業秘密ってことで。ぷっ。
つ〜か、アンタ程度のところの企業秘密ってのは、みんなが当然
の知識としていることじゃねぇの。
異動が頻繁な会社もあるしなぁ。
トランザクションどうこうの問題もあると思いますが、MSの技術資料にも あるし自分が経験してることでもあるが、MDBって壊れやすいでしょ。 安上がりなのも確かなんだけど、MDBが壊れた際にSEや開発者の手を 煩わせる必要なく、迅速にユーザーだけで復旧させることができる手段 を用意してるの? 処理速度は、いらつくことなく一連の作業が終了するようになってる? そういうのがクリアされてれば別にAccessでもいいと思うが。 オレは、Access嫌いだけど会社とユーザーの方針だから諦めてAccess で開発してる。
SQL Enterprisemanager のジョブにて定期的に差分バックアップを 取りたいのですが、バックアップファイルに作成日時を入れることは 可能でしょうか? データベース保守計画にて作成したフルデータベースバックアップ ファイルには日付が付くのですが、保守計画では差分バックアップ が作れないらしく困っています。 どなたかご存知の方がいらっしゃったら、教えてください。 お願いします。
フォームにMicrosoft graphを配置して、フォームを開くと同時にグラフ展開。 グラフをエクスポート。 ここまでの流れを一回の動作でやりたいんだけど、MS graphはグラフの描画を他の命令の最後にやるので まだ描画されてないグラフ(真っ白)がエクスポートされる。 なんとかグラフ描画を、エクスポートの命令の前にさせたい。 repaintやrequeryやっても駄目だったんだが、他になんか手無い?
新入社員がDMBSを理解するための教材みたいなもんでしょ Oracle :********************************* SQLServer:************************* MySQL :*************************** Access :***
フォームのどこにフォーカスがあっても、「↓」キーを押せば特定のフィールドに移動させたいのですが どんなコードを書けば良いのでしょうか?
>>902 (1) FormのKeyPreviewをTrueにする。
(2) Formのキーダウンイベントで↓キーの打鍵をチェックする。
(3) ↓キーが押されたならばフォーカスを移動し、↓キーが処理された
ことにするため、KeyCodeをゼロにする。
できると思うけど、実際に実装すると移動する前のフィールドが編集中か
どうかのチェックなども必要だからかなり面倒だと思う。
>>903 If keycode = 40 thenでできました。ありがとうございます。
一応これで満足しているのですが、後学のために
>移動する前のフィールドが編集中かどうかのチェック
をどんな手段で行うのか教えて貰えませんか?
>>904 903ではありませんが。と、試したわけではなく頭で考えた段階で即RESしてる
ことに注意。
編集中の↓キーが考えられるパターンは、漢字変換中と複数行のテキストボッ
クス。漢字変換中の↓キーがKeyDownイベント発生してプロシージャに渡るか
どうかまでは試していないけど。
複数行のテキストボックスを考えただけでも、行を移動してるだけなのにフォー
カス移動はマズい。
その他に編集中の↓キーってのは、オレは思いつかなかった。903本人の意見
待ちだね。
変換中の↓はイベント発生しないような?
コンボボックス、リストボックスやリストビューとかも ↓キーは考えないとな
908 :
905 :2005/06/22(水) 13:51:18 ID:???
909 :
NAME IS NULL :2005/06/22(水) 22:34:57 ID:cHoWp5Em
「データテーブル」に「ID」、「国ID」。 「国テーブル」に「ID」、「国ID」、「国名」と言うフィールドが それぞれあります。 レコードソースが「データテーブル」のフォームの上に コンボボックスがあって、コントロールソースを「国ID」としています。 が、ここにはむしろ「国テーブル」の「国名」を表示させたいのですが、 どうしたらよいでしょう。 もう一つ、このコンボボックスから「国名」を選んで「データテーブル」の 「国ID」を正しく入力したいのですが、こちらの方もお願いします。 「国名」を表示させるのはできました。ただ入力時に型が違う旨の エラーが出ます。
>>909 プロパティーの「列幅」を0cm;0cm;xxxcmにしてみたら?
>>909 コンボボックスの基礎なので丁寧な解説にチャレンジしてみるか。
コンボボックスのプロパティ→データタブの値集合ソースにカーソルを合わせて「…」を押すと
クエリ作成画面が出てくるので、いつもクエリを作っている要領で「国テーブル」を選択して
列に「国名」「国ID」の順番で挿入。んで、×ボタン押して閉じようとするとメッセージが出るので
ok押してプロパティ画面に戻る。
そのあと、列連結を2にする。
こうすると、画面上には国名しか表示されないけど、データ上では国IDが保存されることになる。
[▼]を押したときに国IDも表示させたいなら、書式タブの列数も2にしておく。
オレも結構知ってる範囲でレスしてるのだが、そのコンボの質問は釣りかと 思うぐらいアホくさいっすよ。ヘルプや解説本見て勉強しろと言いたい。
ヘルプの存在知らなくて解説本買う金もなくて身近に質問できる友人もいないんだろう。
2chやってるんだからネットで検索ぐらいできるだろうに。 まず初めに他人に聞くって根性が気に入らん。
>>914 i-modeで2chなんだろ。そして本買う金もないのでパケット代も払えない、と。
ハハハ。みんな優しいな。立ち読みしろ。
917 :
NAME IS NULL :2005/06/23(木) 19:02:42 ID:J/XMKbhY
すみません質問させてください。 access2000でレポートにjpgなどの画像を張り付けることってできますか? 知ってる方いましたらお願いします。
>>918 おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおい!!!!!!!
できるに決まってるだろおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!!!!!!!!
さすがにそれくらい自分で調べようぜええええええええええええええええええええええええ!!!!!!!!!
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
googleに質問者を奪われたのでGoogleを訴えようと思います。
少々マニアックな質問ですがよろしいでしょうか? 社内で軽いDB的なものを作って、共有させていたのですが、 プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。 そうしたら、そいつがローカルに落としていろいろやろうとして、 あげく、上書きまでしようとするので、手を焼いております・・・ 実行PCの制限とか、外部ファイルが無ければ起動しないとか、なにかいい知恵は ございませんでしょうか・・ 所詮いたちごっこなんですけどね・・・
>>922 ここで聞く前に、そいつに直接文句なり言ったほうが早いでしょ。
>>923 会話したくもないっす・・
やっぱ
>>7 が書いてくれてるとおりSアロンが基本ですね・・・
>>924 上司に相談しなよ仕事だろ……。会話もしたくないって子供かよ。
>>922 MDEにはできないのか?
MDBは、アンタが管理すればいい。それ以外では、MDBにパスワードを
つける。他の人の起動はショートカットを作成してコマンドラインにパス
ワード指定すればいい。で、Shift押しながらの起動を無効化すればオブ
ジェクト編集できなくなる。以上の措置を施す前のMDBを残しておくこと
も忘れずに。
>>925 いや、こんなんで上の者の手を煩わせたくは・・・
>>926 ありがとうございます。その処理は済ませております。
私の説明がまずかったと思うのですが、問題は、ローカルに落として作業・・のほうです
>々マニアックな質問ですがよろしいでしょうか?
>社内で軽いDB的なものを作って、共有させていたのですが、
>プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。
ここまで愚痴。
>そうしたら、そいつがローカルに落としていろいろやろうとして、
>あげく、上書きまでしようとするので、手を焼いております・・・
問題はここ
ローカルに落として作業>戻して上書き・・これを防ぎたく・・・
928 :
926 :2005/06/27(月) 20:07:43 ID:???
>>927 突っ込んで申し訳ないが、コントロールボックスにPASS制限ってのが意味が通じないのだ。
更に、
> その処理は済ませております。
というが、どっちの話なのさ。MDEに変換かMDBにパスワードか???
どちらにせよ、これをローカルに落としたとしても、MDEならオブジェクトを見れないしパス
ワードの方はパスワード自体漏らさなきゃMDBを開けない。金出してパスワード解析ツール
を買って持ってるなら別だが。
MDEの変換前・パスワードかける前の元になるMDBをネット上に置いて、プチパワーユー
ザーに晒してるんじゃないのか?
どうも話がわからん。上書きを防ぎたいならアクセス権限をReadOnlyにすればいいんだし、
内容の変更されてないファイルなら仮に上書きされてもちっともこまらんだろうに。
なんで、安易な道に走るんだろう。 922はACCESSの技術力より、人間関係の構築に 力を注いだ方がいいような気がする。 俺だったら 「あ、君がやってくれるんだ。じゃあ、頼んだよ」 てな具合に、諸手を挙げて大喜びなんだけどね。
その同僚ってのが大音量で音楽流して引っ越し引っ越し叫ぶような奴だからだろう。そうに違いない。
922本人に落ち度なり弱みなりあるんじゃね?
だから内々に解決させてもみ消したい、と。
漏れも
>>929 に全面同意。
プチパワーユーザーが社員で922が派遣に1票
本当は 922 が上司でプチパワーユーザーが部下。
だったら普通に注意すりゃやめるだろ……。弱みでも握られたか。可哀想に。
936 :
NAME IS NULL :2005/06/29(水) 00:00:30 ID:JiJb7D9H
>922 926が言うとおりMDEにするかランタイム版を配布すればよいと思われ。 もしくは、これも926が言っているが、読み取り専用ユーザーを指定すれば いいんでは。 元MDBは本人しか開けないローカルもしくはサーバのフォルダに保存しとく。 まぁ、922のマシンのログオンパスばれたら終わりだけど。
922は色白でかわいい男の子タイプ。 プチパワーユーザーはロリ系巨乳ガングロ。
>>922 MDBのままで制限を加えたいのならばセキュリティ設定をすればいい。
自分専用のワークグループファイル(system.mdw)を作り、新しいスーパー
ユーザーを登録し、そのスーパーユーザーでログインして、管理者を管理者
グループから削除する。
管理者の所属グループはユーザーグループだけになるから、ユーザー
グループから構造の変更と管理者の権限を剥奪すれば、通常の使用は
できるが、書き換えのできないクエリーやデザインモードで開けない
フォームやレポートができる。
設定が済んだらワークグループファイルの設定を標準に戻せばいい。
939 :
NAME IS NULL :2005/06/29(水) 16:33:48 ID:QC2EZRZr
ここの住人は、暑さで湧いて出たウジ虫しかいねーな 脳みそはゾーリ虫なみ ま、リストラされて淘汰されて死んじゃってくれw
まあ俺から見たらここはDB覚えようとしたが挫折したウジ虫の集まりだな 頭の軽い香具師ばかりで笑えるな (^∀^)ゲラゲラ シネヤカスドモ (^∀^)ゲラゲラ シネヤカスドモ (^∀^)ゲラゲラ シネヤカスドモ (^∀^)ゲラゲラ シネヤカスドモ
構成展開する、生産管理系のプログラムのサンプルってどこかにありますか?
942 :
NAME IS NULL :2005/06/30(木) 08:31:20 ID:a9IzzHYE
教えて下さい。 30名程のバイトさんのシフト管理をしたいのですが,次の月の日付と曜日をあらかじめ出す事はできますか? イメージですが,担当者コードを入力したら七月分の日付と曜日が表示され,出勤時間と退勤時間を入力出来る様にしたいです。 初心者ですいません。
途中で送信しちゃった。 できるけど、そのシフト管理のテーブル構成が分からない限りこれ以上答えようがない。
Accessでシリアルポートを利用して外部機器(キャッシュドロア)を操作したいんですが 良い方法はないでしょうか?
946 :
NAME IS NULL :2005/06/30(木) 18:25:08 ID:Xy62p/jN
>>943 さん ありがとうございます。
テーブル1 名前 電話 担当コード
テーブル2 担当コード 名前 出勤時間 退勤時間
これ以外に必要な物ありますでしょうか?
>>946 テーブル2に日付フィールドなくていいの?
そして2に名前はいらなくない?
948 :
NAME IS NULL :2005/06/30(木) 19:14:44 ID:Xy62p/jN
>>946 さん ありがとうございます。
そうですね。 以下に変更しました。
テーブル1 名前 電話 担当コード
テーブル2 担当コード 年月日 出勤時間 退勤時間
>>948 次の月の日付が出てくるようにということだけど、常に次の月しか表示されないと後で
修正したい時とか困るだろうから、次の月は規定値ということにして他の月も選べるようにした方が良いと思う。
で、フォーム上で月と担当者を選択して適当なコマンドボタンを押すと、
その月と担当者のレコードがあるか判定して、なければその月の1日から月末までレコード追加。
あとはその月と担当者のレコードのみ抽出して表示するようにすればお望みの物はできるんでない?
950 :
949 :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:???
とりあえずお前ら 初心者と名乗るのやめようぜ……それだけで答える気力なくなる
>>951 どんなデザインなのかは知らないけど、単純に在庫テーブル(があるかどうか知らないけど)に
出庫先入れるフィールド作るんじゃダメなの?
954 :
NAME IS NULL :2005/07/02(土) 02:21:57 ID:FeUGEv4T
>>949 950さん 遅くなりましてすいません。ありがとうございます。
私にはちょっと難しいですが,調べて頑張ります。
955 :
954 :2005/07/03(日) 08:14:24 ID:4JsxXgUv
やっぱり難しいです。もっと易しいレベルはないですか?
>>955 Excelで管理する。日付も曜日もマウスでドラッグすれば、いっぺんに設定で
きるしな。テンプレートとして合計出したりなどの計算式埋め込んでおけば
それなりに管理できるぞ。
今まで教えてもらったレベルが難しいなら、現時点ではAccessは諦めること。
だって、基本に近いのに難しいっていわれたら、アドバイスしようがないぞ。
958 :
NAME IS NULL :2005/07/03(日) 14:53:00 ID:tJaBCq+U
すいません質問させてください。式ビルダってフォームじゃないと使えないんですか? テーブルでフィールドaとフィールドbに数値を入力したら自動的にその和がフィールドcに表示されるみたいなことをやりたいんですが
>>958 無理。テーブルはそういうのは想定していない。
他のフィールドへ自動で値を入力するなんてのは、必ずフォームを使う。
見た目をテーブルっぽくしたいなら、既定のビューをデータシートにした
フォームを使えばよいと思うが、どうだろうか?
>>958 テーブルで直接入力するってのは愚の骨頂。Excelじゃないんだから。
DAOとかで取得したレコードセットを一覧表示って出来ないんですか?
>>961 すまんが、意味がちょいわからん。
取得したレコードセット・・・それって結果的にクエリのことじゃないの?
もしくは、ダミーテーブルとか。いずれにしても、帳票形式のフォーム
でレコードソースプロパティにそのレコードセットに該当するものをセット
すれば一覧表示可能だが、詳細は割愛。
966 :
NAME IS NULL :2005/07/04(月) 20:14:33 ID:fz2JqpF5
>>964 話はそれるが、仕入先が2社の部品は部品IDを分けているのか?
>>964 細かい話は抜きにして、修理と販売でテーブルを分けずに1つに
する。ID(コード)がどうなってるのか知らないけどね。
あとは、修理用と販売用のコードのためにフィールドを2つ設ける。
こっちの方法なら修正は少ないと思う。が、Goodな方法かどうか
までは不明。
個人情報保護法とかで、上司からコピペでデータを持って行かれないように リスト選択後のCtrl+Cを無効にしてくれと言われたがやり方がわからん やさしい方教えてください・・・orz
レコードセレクタださなきゃ大丈夫だ・・と思ったら Ctrl+A Ctrl+Cで全部のレコードがコピーできちまった・・・('A`;)
970 :
951 :2005/07/05(火) 16:32:05 ID:???
返事ありがとうございます。
>>967 修理と販売を纏めたテーブルには出庫用法ID設けるのはどうなんでしょうか?
>修理用と販売用のコードのためにフィールドを2つ設ける。
えっと、これは何のためでしょうか?(クエリで必要に?)
>>969 AutoKeysにctrl+Cを登録すれば無効になるけど根本的な解決になっているかどうかは不明。
>>970 なんというか、全く基礎がなってないようだから、いきなり全業務カバーするようなものはやめて
段階的に作っていった方がいいんでない?
質問の内容も曖昧でこれから無数に沸いてきそうだしキリがないよ。
と思ったけど、テーブル構成みたら大したことないな。
>>951 には難しそうだけど。
>>971 レスありがとん、AutoKeys早速やってみました。
しかし、作ってあるアプリがユーザごとにフォームのプロパティの
更新、削除、追加が可変になっている作りなので、、AutoKeysを利用すると
編集をするユーザまでコピペができなくなってしまうようです・・・(;´Д`)
AutoKeysって可変にできないのかな・・・とりあえずやってきます
>>969 です、とりあえず自己解決しました。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
Shift = 0
End Sub
このソースで上司は満足でした、日記みたいなカキコスマソ
976 :
967 :2005/07/05(火) 21:32:16 ID:???
>>970 今のまま(修理用と販売用と分けてる)のテーブル構成でリレーションをとるため。
1つの出庫用法IDで修理用と販売用の2つにリレーションってのは無理でしょ。
出庫用法IDというのが、修理用と販売用でどういうコードつけになっているかわか
らないから的確なアドバイスはできません。
修理用と販売用でIDが重複することがないなら、テーブルを2つに分けてる方が
おかしいので1つにする。
>>975 それではユーザー毎の可変ができないだけではなく、入力キー全てが無効にな
るが。編集はオールマウス操作なのか?
977 :
971 :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
多分こっち
If KeyCode = 67 And Shift = 2 Then 67, 2 ではなく、vbKey〜のConstを使いましょうよ。
2003だとヘルプでキーコードの定数見れないんだけどこれはゲイツの嫌がらせなのかな?
>>976-978 >>969 です、みなさん、レスありがとん
実際にはKeyCodeとShiftに値を代入する前に
ユーザ権限チェックの分岐が入っています。
それにしても、うちの会社は基幹系以外のデータベースは
Accessで作っているものが多くて個人情報保護法なんたらに
早く対応しろやゴラァと上司にどやされており大変です・・・('A`)
んなもん、Windowsのパスワードと本体つなぐ鎖で十分だろうと(ry
あと社員に誓約書書かせれば大体okだよ
>>982 更に社員に一方的に不利な内容にしておけば完璧。
>>983 誓約書なんていうのは自分(企業)が責任逃れするためのものだから、
概してそういうものでしょ。