トップページ⇒db
984コメント405KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001104/07/07 09:45ID:???
http://www.microsoft.com/japan/Office/Access/
質問・雑談なんでもどうぞ。
0002104/07/07 09:48ID:???
前スレ

Microsoft Access
http://pc5.2ch.net/test/read.cgi/db/1056952414/
http://pc5.2ch.net/db/kako/1056/10569/1056952414.html
0003NAME IS NULL04/07/07 09:55ID:???
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
0004NAME IS NULL04/07/07 10:12ID:???
>>3
慣れれば、かなり安定して運用できるけどねぇ。
ただ、慣れるのに時間が掛かるので、いまだにJet3.51+ADOだけど。
0005NAME IS NULL04/07/07 10:47ID:???
運用期間が1年以内の使い捨てシステムになら使ってもいいかな。
0006NAME IS NULL04/07/07 10:52ID:Dh+YPpnJ
このくらいの規模で、このくらいの期間運用してるとか実例はないの?
俺の知ってる範囲だと、スタンドアロンで動いてるやつだと、ぜんぜん問題ないみたいだけど。
0007NAME IS NULL04/07/07 12:28ID:???
>スタンドアロンで
Access使用上の注意としてはこれが基本だね。
0008NAME IS NULL04/07/07 22:16ID:EHs0AWCY
インターフェイスとして使う分には、かなりいいんでないか?
0009NAME IS NULL04/07/07 23:05ID:2fatn0rv
教えてほしいのですが、数値入力フォームというのを作って、数値データを入力してクリックボタンをクリックすると
と、その数値データが、何かしらのデータフォームに登録されて、数値入力フォームはまた白紙になって違う数値を入れてクリックボタンをクリックすると
前回入力した数値にどんどん足されていくデータベースっていうのは作れるんでしょうか?
作れるとしたらクエリとか、フォームとか、テーブルとか何を作ればいいのか教えてください。
お願いします。
0010NAME IS NULL04/07/07 23:59ID:37UI6oWn
出来ますよ。
Accessだったら、更新クエリで。

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

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

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

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

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

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

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

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

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

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

今のAccessの最新版はAccess2003ですが、Access2002もまだまだ健在?
素直に2002にした方が吉でしょうか?
00363204/07/13 00:31ID:+bgP3iLc
>>33
ソースって何?
とにかく結果のリストに「どこ」と「どこ」の項目一致という列を作って
入れたいのです
起きたらおねがい
0037NAME IS NULL04/07/14 04:17ID: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
0038NAME IS NULL04/07/14 06:23ID:???
>>32
クエリ使え
0039NAME IS NULL04/07/15 01:57ID:???
「名前も住所も電話番号も一致している」クエリ1
「少なくとも名前と住所は一致している」クエリ2
「少なくとも名前と電話番号は一致している」クエリ3

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

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

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

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

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

でもその前に言っておくと
要するに不一致クエリの結果選ばれた対象を
スプレッドシートに選んで出すのではなく
もともとの表のまんまのものにもう一項目付け加えて
「不一致」とか表示したいって事なんだ
0044NAME IS NULL04/07/18 07:50ID:???
大好き元木です
http://sports8.2ch.net/test/read.cgi/base/1090045353/
http://homepage.mac.com/butinyaon/news/kiji0002.html
0045NAME IS NULL04/07/19 16:52ID:???
クエリじゃないんすけど質問いいですか?

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

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

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

>>46
45はマルチ野郎。
http://pc5.2ch.net/test/read.cgi/db/1057041973/
>962 :NAME IS NULL :04/07/19 17:00 ID:???
>ACCESSで初心者質問です
>
>IIf([在庫数]<=0,"MsgBox ("在庫がありません",0+16,"在庫不足")=1 ","")
>
>これでエラーになるんですけど・・・・
0048NAME IS NULL04/07/22 16:46ID:???
>>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通りなのか。
0049NAME IS NULL04/07/23 00:56ID:???
>>47-48 前者でした。急いでいたので、csvエクスポート→C++でSTL&boostウマー→Excelとなりました_| ̄|〇
0050NAME IS NULL04/07/23 09:52ID:???
>>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
0051NAME IS NULL04/07/27 23:28ID:2OjAMHeh
業務システムをAccessで構築してる奴は頼むから氏んでくれ。
UNIX DB使え、
0052初心者T04/07/28 00:24ID:KCb+S7h1
はじめて書き込みます。
急にMS-ACCESSで簡単なDB作れと言われてしまい、参ってます。
簡単に例を書きますと
利用しているACCESSは、
MS-ACCESS 2000です。

県名→群名→市町村名

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

0064初心者T04/08/04 00:15ID: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のレコード番号を変えれば、
  県名も郡名も一度リセットされて、
  郡名のコンボボックス内のデータも新たに選択された県名に連動すべきなのですが、
  最初に入力した県名のデータに連動された郡名が、
  いつまでも郡名コンボボックスに残り、
  正しい郡名を選択出来ないのです。

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

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

Me.郡名.Requery

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

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

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

64です。できました。ありがとうございました。
0080NAME IS NULL04/08/26 14:09ID:L70NqcYu
すいません。
名前を選ぶコンボボックスで「Aさん」を選んだ場合、自動的にクラスが「1組」に書き換わり、
その直後クラスを選ぶコンボボックスで「2組」を選んだ場合には「2組」が保存される、
というようなものを作るにはどうしたらいいのでしょうか?
0081NAME IS NULL04/08/26 16:51ID: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イベントに保存用のプロシージャが必要。
0082NAME IS NULL04/08/26 23:24ID:???
>>68
わや亀レスですが、

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

0083NAME IS NULL04/08/30 15:23ID:ko3yWlYh
はじめまして。

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

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

0084NAME IS NULL04/08/30 15:55ID:wm4+ze2v
>>83
可能です。
0085NAME IS NULL04/08/31 00:07ID:ErtCixzY
>>84
83です。
ご回答、ありがとう御座います。
続けて質問なのですが、その方法を教えて
頂けないでしょうか。
まだ、始めたばかりで詳しくないので、
よろしくお願いいたします。
0086NAME IS NULL04/08/31 00:44ID: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
0087NAME IS NULL04/08/31 00:55ID:ErtCixzY
>>86
85です。
早々にご回答頂きありがとう御座いました。
早速、これを参考にチャレンジをしたいと思います。
ありがとう御座いました。
0088NAME IS NULL04/08/31 04:03ID:???
DAOの参照設定についてもちょっとは解説してやらないと
このコードは使えない肝吸い
0089NAME IS NULL04/09/02 01:18ID:XOkoeo+v
テーブル1に「会社名」「番号1」「名前1」「番号2」「名前2」というフィールドをつくり、
テーブル2に「番号」「種類」「商品名」というフィールドをつくります。
テーブル1の「番号1」と「番号2」をテーブル2の「番号」に対応させて、
テーブル1をメインにしてテーブル2の「種類」「商品名」をそれぞれ「番号1」「番号2」
の横に表示させるようにするにはどのようにしたらよろしいでしょうか。
0090NAME IS NULL04/09/02 02:49ID:???
「番号2」「名前2」というフィールドを削除し、
フラットな構造にした方が早いと思うんだけど。
0091NAME IS NULL04/09/02 02:57ID:???
>>89
テーブル2を参照するクエリ2を作成。
あとは2つのテーブルと1つのクエリをデザインビューに配置。
2本とも結合のプロパティでテーブル1の全レコードを含めるに設定。
0092NAME IS NULL04/09/02 10:25ID:vgt66x6m
>>86
85です。
多少試行錯誤しましたが、何とか上手く出来ました。
ありがとう御座いました。
0093NAME IS NULL04/09/04 15:49ID:???
空調設備工事の会社
00949304/09/04 17:39ID:???
↑激しく誤爆。スマソ
0095NAME IS NULL04/09/05 07:14ID:RVUXCNsc
ACCESSは確か2.0の時少し触ってそれ以来インストールした事も
なかったのですが、他の板で気になる表記を見つけで、
ネットワークでの共有に関して、教えてください。

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

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

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

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

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

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

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

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

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

>ファイル共有であり、

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

・パフォーマンスが要求されるなら
DBサーバ → パススルークエリー → 連結フォーム 又は VBAでゴリゴリ
0103NAME IS NULL04/09/06 18:59ID:SInApfrv
Access2003で、レポートにImageオブジェクトを貼り付けているんですが、
環境によってPNGファイルが表示できたりできなかったりします。
どこをチェックすれば、その可否がわかるんでしょうか?
0104NAME IS NULL04/09/06 19:03ID:SInApfrv
ttp://office.microsoft.com/ja-jp/assistance/HP051890871041.aspx?Product=acc2003
自己レス、失礼スマタ
01059504/09/06 21:17ID:???
>>101-102

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

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

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

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

それともACCESSならではのクライアント機構があるとか?
実はPostgresやMySQLのクライアントにも簡単になれるとか?
それなら実にうれしい。
0106通りすがり04/09/06 22:38ID: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文法に従う必要があります。
一番早く開発できるように、上記方法を組み合わせます。
01079504/09/06 22:46ID:???
>>106
>「1」のリンクテーブル利用は、パフォーマンスが悪いですが・・・
>「2」は、ACCESSのテーブルと同じコーディングですから理解しやすいです。
>「3」は、SQLが直接サーバDBで実行されるので速いです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

うまく伝えられなくてすいません。
0133NAME IS NULL04/09/21 22:55:29ID:???
>132
(゚Д゚#ええーいデータシートビューで見ているのはテーブルだ!!概念スキーマだ!!
それをユーザに触らせるなんて言語道断!!そういう「見た目を扱う部分」「ユーザが触る部分」は
外部スキーマの「選択クエリ」や「フォーム」、「レポート」で表現しる!!
そしてテーブルには冗長性を排除した本当のデータのみを格納すべきなのです!!
013412904/09/21 23:35:43ID:???
>>133
       ∧_∧
      ゜(。∩∩)゜。。
    もう変なこと考えません
0135NAME IS NULL04/09/22 12:03:48ID: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]を大・中・小分類に分解した
内容を表示させるテキストボックスを用意するという方向で。
0136NAME IS NULL04/09/22 12:29:35ID:???
>>135
いい発想だが、来月に小分類あたりが100を超えて破綻。
0137NAME IS NULL04/09/22 13:43:20ID:???
>>136
分類コードのコード体系が数字なんだから仕方ないじゃん。
っつーか、小分類が100を超えるなんて分類のしかたが
悪いんだよ。
0138NAME IS NULL04/09/22 22:34:50ID:???
>137
文字型にして16進数に
0139NAME IS NULL04/09/22 22:35:50ID:???
ISBNの列だけ残して、あとは削除しちゃえ!
0140NAME IS NULL04/09/22 23:10:17ID:???
いっそmdbファイルとOffice2000ごと削除しちゃえ!!
0141NAME IS NULL04/09/22 23:28:45ID:???
いや、冗談じゃなくてさ
ISBNには出版国とか出版社、細かいジャンルも含まれてるから
ISBNと書名だけあれば十分じゃないかと。
0142NAME IS NULL04/09/22 23:36:53ID:???
ええい、もうHDDごと消去してジャストウィンドウいれちゃえ!
0143NAME IS NULL04/09/22 23:59:41ID:???
さて、様々な選択肢が示されたわけだが
>>129はどうする気だい?
0144NAME IS NULL04/09/23 00:11:53ID:QstrfqMz
アクセス2000でODBCでリンクテーブルを作って
作業してるんですけど
時々レポートが突然消えたり、開いたフォームを
閉じれなくなったりするんですけど
どんな原因が考えられますでしょーか…
0145NAME IS NULL04/09/23 01:56:08ID:???
小分類が100か〜
それってたぶんオペレータが商品登録時にその場の気分体調で判断することになるんだよね。
DBとして破綻する前に、商品登録はじめの10個あたりでデータ自体どうでもよくなっちゃうんじゃないかな。
というわけで141に一票

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

これだと二度手間なので、一度でできる方法はないでしょうか?
0182NAME IS NULL04/10/06 00:16:02ID:???
商品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
0183NAME IS NULL04/10/06 00:17:18ID:???
SELECT 得意先, SUM(送料)
FROM hoge
WHERE 日付 BETWEEN foo AND bar
GROUP BY 得意先
ORDER BY 得意先;

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

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

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

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

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

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

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

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

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

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

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

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

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


'-----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
0198NAME IS NULL04/10/19 22:37:36ID:???
Access初心者にお勧めの解説書はありますか?
あれば教えてください、お願いします。
0199NAME IS NULL04/10/19 22:57:46ID:???
>>198
http://www.amazon.co.jp/exec/obidos/ASIN/4891008407/
http://www.amazon.co.jp/exec/obidos/ASIN/4891008431/
0200NAME IS NULL04/10/19 23:34:00ID:???
>>199
ありが�d探してみます
0201NAME IS NULL04/10/20 17:58:42ID:???
>>192
$ strings a.mdb > a.txt
$ strings b.mdb > b.txt
$ diff -c a.txt b.txt
0202NAME IS NULL04/10/21 00:30:28ID:???
>>196
Access2000からでもオラクルのリンクテーブルに貼り付けるときエラー出ると思う。

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

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

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

というか、質問するときに SQL Server 2000 + Access 2003 という環境を書いていませんでした。
すみませんでした。
0205NAME IS NULL04/10/22 00:49:49ID: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を使わなくても出来る方法等、ございましたらお教えください。
0206NAME IS NULL04/10/22 22:14:45ID:???
質問させてください。

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



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

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

顧客の電話番号を入力して検索ボタンを押して待つ(十秒ぐらい)
↓
検索結果が表示されたら修正をする
↓
更新ボタンを押して待つ(十秒ぐらい)

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

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

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

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

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

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

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

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


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

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

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

間違ってるかな。
誰か詳しい人解説キボンヌ
0258NAME IS NULL04/11/24 02:07:10ID:???
>>255
mdbファイルを一旦消して作り直してる
0259NAME IS NULL04/11/24 18:29:28ID:???
>258
元MDB
↓
テンポラリMDB作成(最適化処理含む)
↓
元MDB削除
↓
テンポラリMDB名を元MDBにリネーム

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

もしくは

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

ということなのですね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#激しく重そうな悪寒
0313NAME IS NULL04/12/04 09:50:49ID:???
工場の能率集計のデータベースを作ったのですが、一年間蓄積したデータを次年度更新
出来るようにして、前年度のデータはそのままどこかにボタン1つで残せるようにって
できます?その時に更新された次年度の時には、入力フィールドには前年度分はクリア
されてるようにしたいんですが…。
マジで困ってます。
ヘルプお願いします。ファイルを渡せれば一番わかってもらいやすいのですが
ここでは無理そうだし。どうしたものですか?
0314NAME IS NULL04/12/04 10:00:40ID:???
>313
今テーブルを参照してるなら、選択クエリで今年の分だけ見せるようなクエリをつくって、それを
参照するように変えたらどうカナ?どうカナ?
SELECT * FROM hoge WHERE 日付>=dateSerial(year(date), 1, 1)
データ量が多くてあふれてしまうようなら物理的に移動する必要があるけど、そうでないなら
これで見かけ上今年の分しかないように見せられる。
0315NAME IS NULL04/12/04 10:09:37ID:???
早速の回答ありがとうございます。見かけ上だけでなく、物理的に一年分を違う
テーブルにボタン1つで移動して、それをCDに焼いて保存したいみたいなんですよ。
その作業をするのも初心者の人が扱うから、ボタン一つでファイルそのまま別で保存して、
テーブルはきれいに初期化できないのかと考え中です。
一度、どこかにファイルをアップしますので、みていただけませんか?って
どこにアップすれば見てもらえるか、わかんないですが…。(泣
0316NAME IS NULL04/12/04 10:34:22ID:???
テーブルを 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 すると。事前にテーブルを作る
手間があるけどインデックスとかちゃんと張った状態にできる。
0317NAME IS NULL04/12/04 10:40:11ID:???
ありがとうございます。がんばってみます。
0318NAME IS NULL04/12/04 12:49:12ID:???
>>312

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

文字列抽出関数( getstr("1424A1",1,3) …"1424A1"の1番目から3文字を取り出すの意)みたいなのも見当たらないし…
0324NAME IS NULL04/12/08 13:58:49ID:???
LeftなりMidなりご自由に
032532304/12/09 08:14:36ID:YLsSSe+i
そんなんあるんでしたか!?
まだまだヒヨッ子なもんで(^^;
調べてみます。
0326NAME IS NULL04/12/09 11:27:45ID:???
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フィード分する様なケースです。
0327NAME IS NULL04/12/09 11:33:54ID:???
!を使った表記はやめたほうがいいんじゃなかったっけ。
If rs1("フィールド名") <> rs2("フィールド名") Then 〜
じゃあかんの?
一歩進めてForEachでFieldsを回せば、列数がいくらあろうと数行で済む。

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

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

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

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

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

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

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

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

>353
> SQL使え。

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

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

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

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

だったら、僕にはどーしよーもないやorz
0357NAME IS NULL04/12/22 10:31:05ID: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)"構文エラー

と出た。
ただ、上記の計算式は受け売りなので、どこが構文エラーなのかワカラン・・・
0358NAME IS NULL04/12/22 10:31:46ID:NFyyyNPR
>>357は>>355宛
0359NAME IS NULL04/12/22 12:24:21ID:???
>>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;
こうしてみてどうか?
036035704/12/22 12:58:34ID:NFyyyNPR
>>359
ありがと。

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

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

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

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

>>364
そう。
前日との差を出したい。
0366357 04/12/22 15:17:09ID:???
>>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;

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

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

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

もし、同じクエリでもOK!ってな場合なら、同様の差を出すようにするのは困難?
・・・・って聞いてる時点で困難か?
036935904/12/22 17:11:28ID:???
>>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(デザインビュー)で繋げた方(結合線)がいいぞ
037035704/12/22 20:58:03ID:???
>>369
度々さんくすこ!

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

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

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

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

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

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

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

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

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


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

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

として、

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

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

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

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

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

同じ入力方式で、双方に対応させたいというなら・・・・・・・・
数字は全角で、ハイフンの代わりに「の」にするしかない・・かな。
0378NAME IS NULL04/12/25 13:29:54ID:???
>>376
ttp://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=%90%94%8E%9A%81@%8A%BF%90%94%8E%9A%81@%95%CF%8A%B7%81@ACCESS&lr=lang_ja
0379NAME IS NULL04/12/26 10:49:36ID: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 を表示できません。」

もちろんこの間にフィールド名の変更など一切行っていない。
なぜこのようなエラーが出るの?
038035704/12/26 10:53:30ID:???
>>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;

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

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

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

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

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

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

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

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

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

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

ご存知の方いましたら、ご回答よろしくお願いします。
0396NAME IS NULL04/12/28 17:42:34ID: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

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

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

のように検索結果を3つの検索結果フォームでマルチウインド表示し、3つ表示した時点で古い検索結果のものから
最新の検索結果に入れ替えるにはどのようにしたらよいのでしょうか?
どうぞよろしくお願いいたします。
0402NAME IS NULL05/01/08 08:51:21ID:???
それだけでは的確なアドバイスはえられない思うが。もっと具体的に現在の処理状態などを書かないと
「3つ表示した時点で古い検索結果のものから最新の検索結果に入れ替える」
としか言えんよ。
0403NAME IS NULL05/01/08 12:09:54ID: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
0404NAME IS NULL05/01/08 13:17:49ID:???
>>403
SELECT [No], Max(枝番) AS 式1 FROM テーブル名 GROUP BY [No];
0405NAME IS NULL05/01/08 13:19:10ID:???
SELECT No,MAX(枝番) FROM TABLE_NAME GROUP BY 枝番

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

じゃ、だめってことだ。
了解.
0422NAME IS NULL05/01/11 22:12:59ID:???
>419
フィールドのプロパティで書式設定をすれば良い話では?
0423NAME IS NULL05/01/13 03:27:57ID:uwPoRp0l
access2000で、マクロを定義するところでテキスト変換を選んでも
テーブル名のインポートがリストに出てきませんがどうすればよいですか?
0424NAME IS NULL05/01/13 09:02:59ID:???
>>423
どのプロパティのことをいってるの?
変換の種類
定義名
テーブル名
ファイル名
フィールド名の設定
HTML テーブル名
コードページ
0425yo-ko05/01/13 19:55:32ID: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 |
+-----+-----+--------+--------+
0426NAME IS NULL05/01/13 20:11:12ID:???
>425
このスレはMicrosoft Access。スレ違いだ。
0427yo-ko05/01/13 20:11:51ID:KcEKcyWW
書き込む場所を間違えちゃいました。返信頂ける方は"物凄い勢いで誰かが質問に答えるスッドレ "にお願いします。
ごめんなさい。よろしくお願いします。
0428NAME IS NULL05/01/14 00:51:50ID:36mDG7eH
質問します。
Access2000を使っていますが、クラスの継承はできますか?
例えば標準のボタンクラスを継承させて新メンバを設けたnewボタンクラスを作り、
それをフォームにペタペタ貼り付けていくとか。

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

作成方法は、
1.手動でインポートウィザードを出す。
2.左下に「設定」のボタンがあるので、これを押す、
3.次のダイアログで保存のボタンを押すと、作成できます。
ここでいぢることもできますが、まぁそこはフィーリングで。
043142305/01/14 02:23:00ID:???
インポートウィザード ってどうやって出すんですか?
0432NAME IS NULL05/01/14 02:41:00ID:36mDG7eH
メニュー>ファイル>外部データの取り込み>インポート
043342305/01/14 03:08:10ID:???
なるほど。出来た。ありがとうございます。 >>432
0434NAME IS NULL05/01/14 22:13:32ID:???
>416
SR1 -> SP3 に更新しる
0435NAME IS NULL05/01/16 22:56:21ID:???
最近必要に迫られて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
(呼び方を間違って記述している所があるかも知れません。その際は御指摘下さい。)


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

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

0438NAME IS NULL05/01/17 02:49:50ID:6bIxb6Go
for i=1 to 10
db.fields.item(i)
next i
みたいなのでいいのか?
043943705/01/17 09:59:23ID:d2Hp/Lvv
>>438
ありがとうございます。初心者(あるいはAFO)なんで直接
テキストとして代入を試みてうまくいってませんでした。
438と手元の本、HELPなどで夜にでも再挑戦してみます。
フィールドを定義して呼び出し、変数としてループさせる
ということですよね?
0440NAME IS NULL05/01/17 11:16:18ID:/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や
それを呼び出している環境について詳しくないのでこの演算の
実現方法については、他の方のサポートを待ちたいと思います。
0441NAME IS NULL05/01/17 11:34:27ID:/nf658MC
>440 思ったように表示されなかった。スペースを全角にしてみよう。
[元素構成]   [構成物]
ID| 元素    ID| 名称
--------   -------------------
1 | C     1 | プラスチック
1 | O     2 | 消しゴム
1 | Ca     3 | ステンレス
1 | Na
1 | Ba
2 | C
2 | O
---以下略---
さて、これでどうか。
0442NAME IS NULL05/01/17 16:38:02ID:SRsHoSwz
初心者の質問ですが、答えてください。
オプショングループの中にオプションボタンがあるのですが、
オプショングループの使用可能を常時"いいえ"にしています。
違うところのオプションボタンを選択したときのみ"はい"になるように
フォーカス取得後、喪失後のイベントプロシージャにコードを書き込んだのですが、
グレーアウトが直るだけで、中にあるオプションボタンが選択できません。
なぜですか?スレ違いかもしれませんが、お願いします。
0443NAME IS NULL05/01/17 16:51:26ID:???
>>442
オプショングループのフレームに対し行う

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

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

End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

|19|590607|
|20|030607|


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

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

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

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

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

例)
19
20

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

例)
590607
030607

です。

質問する前にも、DateSerialまでにもっていく方法が分からないという事で質問させていただきました。
すみません、よろしくお願いします。
0468NAME IS NULL05/01/25 12:01:48ID:???
>>467
|19|590607|
|20|030607|
でなく
|1959|06|07|
|2003|06|07|
こう切れませんか?
0469NAME IS NULL05/01/25 12:04:42ID:???
>>467
あるいは
フィールド1 & フィールド2でどうにでもなろうかと...
047046505/01/25 13:35:01ID:???
>>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型に変換してくれるという訳ではないのでしょうか?
047146505/01/25 13:47:30ID:???
自己レスです。

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

お騒がせしました。

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

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

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

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

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

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

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

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

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

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

非連結ホームの仕方がよく分かりません。
0484NAME IS NULL05/01/29 09:40:25ID:???
非連結ホーム
http://www.google.co.jp/search?hl=ja&q=%E9%9D%9E%E9%80%A3%E7%B5%90%E3%83%9B%E3%83%BC%E3%83%A0&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0485NAME IS NULL05/01/29 12:11:30ID:???
非連結ホーム
http://search.naver.co.jp/search.naver?query=%94%F1%98A%8C%8B%83z%81%5B%83%80&where=nexearch

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

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

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

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

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

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

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

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

Access2003,WinXP

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

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

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

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

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

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

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

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

ども出来そうになくて困っているんですが、知ってたら教えてください。
機能としてなくても、こんな事でリストをつくってるってのもあれば教えてください。
よろしくお願いします
0499NAME IS NULL05/01/31 14:05:44ID:???
ttp://www.vector.co.jp/soft/win95/writing/se311441.html
0500NAME IS NULL05/01/31 14:24:49ID: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で出来る用に作れとのご命令で…
単発クエリでもサブクエリ方式でも構いません。



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

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

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

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

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

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

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

キー操作を代えれば2000でも動くと思われ
0510NAME IS NULL05/02/01 22:41:59ID:???
>>507
readするだけかぁ。書き換えることができるとメンテに使えるのになあ。
0511NAME IS NULL05/02/01 23:57:30ID:???
>510
書き換えも追加も削除も出来ますよ。
慣れればテーブル作成クエリを使うよりも細かい事が出来ますし、
Access独自のプロパティをフィールドに追加することも。
0512NAME IS NULL05/02/02 01:14:07ID: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"が含まれる梱包番号を出して、それらの梱包に含まれる全ての製品名を出すとか。
0513NAME IS NULL05/02/02 04:41:46ID:???
そもそもサブクエリがいらない。

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'
051451205/02/02 09:11:36ID:dhhRXb6W
>>513
とりあえずありが�d

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

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

AccessのSQLでテーブルの行を指定する事って出来るんでしょうか?
もし出来るのなら、指定の仕方を教えてください。
↑
テーブルのエクスポートエラーで、[エラーの内容]と[フィールド]とそれがある[行]が
出て来るんですが、出来ればこれらの行に相当する元テーブルのレコードのみを抜き出したいんです。
0519NAME IS NULL05/02/03 13:13:35ID:SrVkfqtp
連続で失礼します。

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

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

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

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

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

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

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

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

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

0522NAME IS NULL05/02/09 11:43:28ID:???
>>521
http://pc5.2ch.net/test/read.cgi/db/1057509675/
http://pc5.2ch.net/test/read.cgi/db/1060690405/
のようなもの?
0523NAME IS NULL05/02/10 10:59:08ID:???
access2003を使ってて思うのですが、
式ビルダのリストボックスでホイールを
回してスクロールさせたときの動きがどうにも気持ち悪いです。
何というか、原点を基準とせずに、スクロール後のイメージが上から降ってくる感じ。
たしかmac osの標準コントロールでもそんなスクロールしてました。

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

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

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

乙、業者じゃないとすれば著者?
0529NAME IS NULL05/02/12 19:57:37ID:vrWiMy+n
フォームにクエリには含んでないが、クエリ内のデータとリレーションシップはつけているテーブルのデータはテキストに
連結データとして参照できませんか?
0530NAME IS NULL05/02/13 21:21:52ID: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文で取得できましたが、これをリストボックス
に表示しようとしたところ、行き詰ってしまいました。ご教授よろしくお願いします。
0531NAME IS NULL05/02/14 19:01:02ID:suYW2SF/
 Access初心者です。ストアドプロシージャについて調べましたが、
よく掴めません。
 Aテーブルのレコードを削除すると、
 それに対応する、Bテーブルのレコードが削除されるように
 するにはどうしたらいいでしょうか?

 クエリを使うといいようなのですが、引数の渡し方が分かりません。
0532NAME IS NULL05/02/15 09:21:10ID:vmY+cp7a
>>531
鳥蛾
0533NAME IS NULL05/02/15 15:55:49ID: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]とそれぞれのテーブルに“参照整合性”を有効にしようとすると
出来ないってエラーが出ます。
なんでなんですか?
整合性は取れてると思ってるんですが、なんかトンデモない勘違いしてるんでしょうか?

…てかいまいちこの参照整合性って理解しきれてないかも
0534NAME IS NULL05/02/15 16:14:52ID:???
>>531
http://www.microsoft.com/japan/SQL/techinfo/selfstudy/Self_doc.asp
ここの [SQL Server 2000 と Access 2000 によるアプリケーション開発] にトリガの解説がある。
053553305/02/15 16:15:31ID:9s6FnqA2
あ、ちなみに図にある全てのフィールドに主キー設定してます。
053653305/02/15 16:47:39ID: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____


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

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

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

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

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

訳あって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





0542NAME IS NULL05/02/18 00:33:21ID:SJEL00ob
>>538

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

というのはどう?


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

です。

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

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

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

インポートされたテーブル名: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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

0583NAME IS NULL05/02/28 23:12:33ID:???
>>582

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

と書くのはどうだ?
0612NAME IS NULL05/03/10 15:10:34ID: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)でロックされてしまいます。

何か良い対処方法は無いでしょうか。
0613NAME IS NULL05/03/10 16:56:44ID:???
>611
トンクス。
和暦のフォーマットで、
"gggeemmdd"はいいけど、
"gggemd"だと区切りがヘンになるぅ〜。
061460805/03/10 17:59:06ID: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実行
前に値を見ても、ちゃんと入っています。

よろしくお願いいたします。
061560805/03/10 18:00:50ID: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実行
前に値を見ても、ちゃんと入っています。

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

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

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

 SQLで処理するか、Recordsetで処理するかは好みの問題だが、
Recordsetの方が見易いし、更新と新規登録とで処理を変更すべき部分が
少なくて済む。
062061505/03/11 00:14:48ID: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にすればよいだけ、と言う事にやっと気づきました。

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

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



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

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

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

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

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

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

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

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

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

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

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

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

ありがとう。またひとつ利口になりました。
0645NAME IS NULL05/03/14 12:48:49ID: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”を抜き出すことから
分かりません(いろいろやってはいるのですが)


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

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

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

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

Access2002使用。
0650NAME IS NULL05/03/14 22:51:05ID:???
>>649
VBA
0651NAME IS NULL05/03/14 22:53:03ID:aX3g+89k
visual source safeでaccessのmdbを管理している人っている?
使い勝手とかどうよ?
0652えりか05/03/14 23:06:03ID: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= "代入するデータ"

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

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

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

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

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

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

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

商品コード
商品解説1
商品解説2
・・・・
もちろんこいつと元マスターのレコード件数は一致していない。
商品コード以外全フィールド空っぽのレコードなんてあっても意味ないと思ったから。
で、必要に応じて元マスターとレフトジョイン
0663NAME IS NULL05/03/16 01:23:17ID:???
システムがその修正にかかる労力に見合うならばしたほうがいいのかな。
俺は専門職じゃないからその辺はいい加減にしているけどね。
客から投げられたデータを整形させる実行時間を考えると、
とてもじゃないけどやってられません。
それにテーブルの設計を変更したら各所に問題が発生しそうで、
怖くてとてもできません。
新規に作るのだったらその辺は考えるけど。
0664NAME IS NULL05/03/16 09:41:30ID: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で教えてください。
0665NAME IS NULL05/03/16 10:07:29ID:???
>>664
IifやDateAddを駆使して集計専用の計算フィールドを作る。
0666NAME IS NULL05/03/16 12:22:05ID:???
>>659
それは垂直分割という技法である。あとはググれ。
066766405/03/16 15:29:03ID:z3SOFake
もいっこいいですか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0686NAME IS NULL2005/04/09(土) 10:12:24ID:???
>>685
> VBは結構経験有るので、今月中にサクっとできそうにも思えるのですが、どうでしょうか?
そう思うなら、2chなんか覗いてないでさっさと手を動かすことだ。
06876812005/04/09(土) 10:54:59ID:???
>>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のウイザードで大まかな雛型を作って、それに
手を加えていく形で進めるのが早いと思うよ。
0688NAME IS NULL2005/04/09(土) 12:56:31ID:???
ええけつしとるのぉ(*´Д`)ハァハァ
http://220.208.41.135/
http://220.208.41.135/~ss.jpg
http://seiya.bai.ne.jp/
http://seiya.bai.ne.jp/~ss.jpg
0689NAME IS NULL2005/04/10(日) 00:47:23ID:yLBu8JJ+
>>687
ありがとうございます。
クエリとかまだ勉強不足で知りませんでしたので、ネットに載っていたのをサンプルにして、
VBからADOとADOXを使って、テーブル名やフィールド名、フィールドのデータを取得することができました。
ただ、レコードの追加書き込みができませんでした。
これもネットのサンプルを見て、ADOのレコードセットを使って書き込みしたところ、処理はエラーが出ずに完了
するのですが、その後、ACCESSでADPプロジェクトを開いて、レコードが書き込まれているかを確認した
ところ書かれていませんでした。
ADPを開くと更新内容が見れないんでしょうか。それとも何らかの設定が足りなくて書き込まれないのでしょうか。
それからACCESSからクエリを投げるとのことですが、ACCESS側ではテーブルを作成するだけで、コードは
VB側で記述するものだと認識しているのですが、ACCESS側でもコードを記述する必要があるのでしょうか?
パフォーマンスを上げるのが目的ですか?素人過ぎて申し訳ありません。


0690NAME IS NULL2005/04/10(日) 02:00:08ID:???
そもそも運用中にポコポコ列が増えるってどんな設計なんだ?4月分, 5月分とか増えていくとか?まさかね…
横じゃなくて縦に伸ばせるように仕様詰められないの?横に伸ばしたら最悪アプリの根っこから
作り直しになって( xДx)ウボァーナリヨ。
0691NAME IS NULL2005/04/10(日) 02:10:47ID:???
テーブルだけ項目増やしてもどうにもならんと思うけど。
項目増やした後はデータを手メンテするの?
0692NAME IS NULL2005/04/10(日) 02:39:21ID:???
テーブルAにa1、テーブルBに b1というフィールドがあるとします。
b1内のどの値とも一致しないa1を持つレコードを
テーブルAから抽出するにはどうすればいいでしょうか。
ただいま入門書を見て考えていますが、頭が爆発しそうです。
0693NAME IS NULL2005/04/10(日) 03:38:32ID:???
>>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
0694NAME IS NULL2005/04/10(日) 04:04:55ID:???
SELECT *
FROM テーブルA
WHERE a1 NOT IN ( SELECT Distinct(b1) FROM テーブルB );
0695NAME IS NULL2005/04/11(月) 23:31:28ID:H2OCR0rb
SQL文で文字列フィールドにおける、重複を無くした全データ
を取得(Excelでいうとオートフィルタ)する記述が分かりません。
どなたか教えていただけないでしょうか。
0696NAME IS NULL2005/04/11(月) 23:49:12ID:???
distinct でも group by でも好きにしたら良かろう
0697hmmt132084.catv.ppp.infoweb.ne.jp2005/04/11(月) 23:53:19ID:???
えぇけっしとるのぉ(*´Д`)ハァハァ


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



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



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

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

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

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

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

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

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

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



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


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

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

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

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

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

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

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

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

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

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

ACCESSでODBCの呼び出しに失敗しました。
と出て一向に進みません。
タイムアウトかな?と思い、600秒にしたのですが、
どうやら関係ないようです。
どうしたらよいのでしょうか・・・。
テーブルのリンクもきちんとやっているつもりなのですが。
他に何が考えられますか??
0738NAME IS NULL2005/04/28(木) 14:31:15ID:???
>>737
リンク先の構造が変わったんだよ。
07397102005/04/28(木) 22:55:54ID:???
>>737
ODBCタイムアウトを0にしてみては?
0740NAME IS NULL2005/04/29(金) 05:51:33ID: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
とアクセスに格納したいのですが、やり方がさっぱりわからず困っています。
ほんとに初心者の初心者ですみません!
聞き方もわからないので、こういう質問しかできませんが、
どなたかご親切な方、ご教授お願いします!
0741NAME IS NULL2005/04/30(土) 10:33:36ID:???
>>740
VBAでプログラムを組むのが簡単だね。初心者というのは免罪符にはならない。
表だったら項目がどうなってるか(セルの区切りとか)を含め、もう少し表現方法を
考えて質問してよ。
0742NAME IS NULL2005/04/30(土) 16:54:18ID:???
元表(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"
0743NAME IS NULL2005/05/01(日) 00:19:22ID: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
:
0744NAME IS NULL2005/05/01(日) 01:44:50ID:???
>>743
Select 日付, 気温 From T_Master Where 場所 = [何処なの?]
0745NAME IS NULL2005/05/01(日) 15:36:46ID:???
>>743
SELECT DISTINCT 場所 FROM T_Master
で出てくるレコードを上から順に舐めながらその場所の内容を使ったテーブルを作っていく

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

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

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

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

入力の仕方については、やり方いっぱいありすぎ面白すぎで、
一口では語れない。ある意味腕のみせどころ
0747NAME IS NULL2005/05/01(日) 23:20:04ID:???
ごめん、あげちゃって
0748NAME IS NULL2005/05/02(月) 01:19:55ID:CCd6APdi
高校1、2年てアクセスやってたけどさっっぱりだった。全然わからん。クソ。しね。全然わからんしね。クソ
0749NAME IS NULL2005/05/02(月) 01:59:52ID:???
>>748
わからないということは
今の君にはAccessは必要じゃないということさ。
人間、必要に迫られれば何でもやるもんさ。
0750NAME IS NULL2005/05/02(月) 17:06:51ID:???
むしろ>748がAccessに必要とされていない
0751NAME IS NULL2005/05/03(火) 23:30:55ID:???
http://pc8.2ch.net/test/read.cgi/prog/1109981884/58

これって本当?
07527432005/05/04(水) 18:29:54ID:???
>744-746
ありがとうございます。
テーブルをバラすことばかり考えてました。
これからいろいろ試してみます。
0753NAME IS NULL2005/05/04(水) 23:39:14ID:???
>>751
どのウィザードかわからないと何とも言えないが、MSが
信用ならんのは確かだ。それにしても、そのスレはレベ
ルが低いのぉ。
0754NAME IS NULL2005/05/05(木) 12:18:45ID:???
>>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自体が異常終了する。

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

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

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

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

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

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

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

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

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

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

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

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

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

AccessからODBC接続すること自体が間違いなんでしょうか?
0795NAME IS NULL2005/05/23(月) 04:11:50ID:???
エクセルソフトという会社のAccess converterというソフトがあるんですが、
内容はAccessをJavaへ変換するというものです。
興味があるんですが、使ってみた方はいらっしゃいませんか。
レポートお願いします。
0796NAME IS NULL2005/05/23(月) 11:20:15ID:???
>>795
体験版がDLできるはず。自分で使って皆歳
0797NAME IS NULL2005/05/23(月) 22:39:26ID:???
>>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

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

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

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

>>804+between
0806NAME IS NULL2005/05/28(土) 21:03:39ID:A/wqnLTQ
>>804 >>805さん ありがとうございました
0807NAME IS NULL2005/06/03(金) 13:17:55ID:dup57AmK
>>805さん すみません
実際の式を教えてください
08088052005/06/03(金) 14:11:57ID:???
>>807
それくらい自分で調べようよ
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=between+date+DATEADD&num=50
08098072005/06/03(金) 20:51:00ID:CmRNI67d
>>808
ウルセー!>馬鹿
08108052005/06/03(金) 21:25:37ID:1DstjNva
>>809
なんだとー!>ぷんすかぽんっ!
0811NAME IS NULL2005/06/04(土) 13:31:40ID:???
マジで調べることをしないのなら、Access使うのやめな。
0812NAME IS NULL2005/06/04(土) 14:12:19ID:???
きっと携帯で2ch見てるオフラインユーザーなんだろう。そうに違いない。それ以外ありえない。
0813NAME IS NULL2005/06/06(月) 12:59:39ID:???
選択クエリファイル(?)のSQL文をフォーム上のVBAで作成したSQL文と丸々置き換えしたいんですが、
良い方法はないでしょうか?


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

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


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

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

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

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

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

0826NAME IS NULL2005/06/11(土) 01:36:39ID:???
>>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つということで。
08278252005/06/11(土) 13:26:31ID:QZdqXtV2
>>826
ありがとうございます。
あなたは神様です。
08288252005/06/11(土) 13:38:08ID:QZdqXtV2
なんで、dmyが必要なんですかね?
確かにないと、うまくいかない・・・
クエリー実行前にRenban変数を↓のようにしても0にならないのは
なんでなんですか?

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

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

>>847
それ、うっとおしい。
0851NAME IS NULL2005/06/16(木) 03:02:30ID:???
>>850
ぐぐってみたら何件かあったよ。

ttp://www.akj.co.jp/aug/qa/ans0001-0050/1284.html
ttp://www.accessclub.jp/bbs/0072/beginers27133.html
ttp://www2p.biglobe.ne.jp/~sakurait/cstrue/cl1999/cl1999c4.html
08528452005/06/16(木) 09:24:10ID:???
みなさんありが�d
とりあえずレコードレベルでロックして開くをオフにしてやってみます。
08538502005/06/16(木) 10:44:46ID:???
>>851
ありがとう!!
参考にさせてもらいます。
0854NAME IS NULL2005/06/17(金) 10:07:03ID:3Jh7Qxk4

☆ 教えてください ☆

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

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

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




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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

プロパティーの「列幅」を0cm;0cm;xxxcmにしてみたら?
0911NAME IS NULL2005/06/22(水) 23:39:40ID:???
>>909
コンボボックスの基礎なので丁寧な解説にチャレンジしてみるか。

コンボボックスのプロパティ→データタブの値集合ソースにカーソルを合わせて「…」を押すと
クエリ作成画面が出てくるので、いつもクエリを作っている要領で「国テーブル」を選択して
列に「国名」「国ID」の順番で挿入。んで、×ボタン押して閉じようとするとメッセージが出るので
ok押してプロパティ画面に戻る。
そのあと、列連結を2にする。

こうすると、画面上には国名しか表示されないけど、データ上では国IDが保存されることになる。
[▼]を押したときに国IDも表示させたいなら、書式タブの列数も2にしておく。
0912NAME IS NULL2005/06/23(木) 00:41:46ID:???
オレも結構知ってる範囲でレスしてるのだが、そのコンボの質問は釣りかと
思うぐらいアホくさいっすよ。ヘルプや解説本見て勉強しろと言いたい。
0913NAME IS NULL2005/06/23(木) 07:01:13ID:???
ヘルプの存在知らなくて解説本買う金もなくて身近に質問できる友人もいないんだろう。
0914NAME IS NULL2005/06/23(木) 10:20:28ID:???
2chやってるんだからネットで検索ぐらいできるだろうに。
まず初めに他人に聞くって根性が気に入らん。
0915NAME IS NULL2005/06/23(木) 11:35:07ID:???
>>914
i-modeで2chなんだろ。そして本買う金もないのでパケット代も払えない、と。
0916NAME IS NULL2005/06/23(木) 11:51:52ID:???
ハハハ。みんな優しいな。立ち読みしろ。
0917NAME IS NULL2005/06/23(木) 19:02:42ID:J/XMKbhY
>>910、>>911
ありがとう、ちゃんとできました。

お前ら怒らないで下さいよ。
0918NAME IS NULL2005/06/23(木) 21:49:18ID:???
すみません質問させてください。
access2000でレポートにjpgなどの画像を張り付けることってできますか?
知ってる方いましたらお願いします。
0919NAME IS NULL2005/06/23(木) 22:15:34ID:???
>>918
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおい!!!!!!!
できるに決まってるだろおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!!!!!!!!
さすがにそれくらい自分で調べようぜええええええええええええええええええええええええ!!!!!!!!!
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0920NAME IS NULL2005/06/23(木) 22:33:24ID:???
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Access+%E7%94%BB%E5%83%8F%20%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88&num=50

調べ方が分からないと書きそうだから、検索の見本を置いておこう……
0921NAME IS NULL2005/06/25(土) 10:31:08ID:???
googleに質問者を奪われたのでGoogleを訴えようと思います。
0922NAME IS NULL2005/06/27(月) 00:25:33ID:???
少々マニアックな質問ですがよろしいでしょうか?
社内で軽いDB的なものを作って、共有させていたのですが、
プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。

そうしたら、そいつがローカルに落としていろいろやろうとして、
あげく、上書きまでしようとするので、手を焼いております・・・

実行PCの制限とか、外部ファイルが無ければ起動しないとか、なにかいい知恵は
ございませんでしょうか・・

所詮いたちごっこなんですけどね・・・
0923NAME IS NULL2005/06/27(月) 01:56:20ID:???
>>922

ここで聞く前に、そいつに直接文句なり言ったほうが早いでしょ。
0924NAME IS NULL2005/06/27(月) 02:45:27ID:???
>>923
会話したくもないっす・・
やっぱ>>7が書いてくれてるとおりSアロンが基本ですね・・・

0925NAME IS NULL2005/06/27(月) 07:17:36ID:???
>>924
上司に相談しなよ仕事だろ……。会話もしたくないって子供かよ。
0926NAME IS NULL2005/06/27(月) 07:19:21ID:???
>>922
MDEにはできないのか?
MDBは、アンタが管理すればいい。それ以外では、MDBにパスワードを
つける。他の人の起動はショートカットを作成してコマンドラインにパス
ワード指定すればいい。で、Shift押しながらの起動を無効化すればオブ
ジェクト編集できなくなる。以上の措置を施す前のMDBを残しておくこと
も忘れずに。
0927NAME IS NULL2005/06/27(月) 19:43:05ID:???
>>925
いや、こんなんで上の者の手を煩わせたくは・・・

>>926
ありがとうございます。その処理は済ませております。
私の説明がまずかったと思うのですが、問題は、ローカルに落として作業・・のほうです

>々マニアックな質問ですがよろしいでしょうか?
>社内で軽いDB的なものを作って、共有させていたのですが、
>プチパワーユーザがいじくるのでコントロールボックスにPASS制限をかけました。
ここまで愚痴。

>そうしたら、そいつがローカルに落としていろいろやろうとして、
>あげく、上書きまでしようとするので、手を焼いております・・・
問題はここ
ローカルに落として作業>戻して上書き・・これを防ぎたく・・・
09289262005/06/27(月) 20:07:43ID:???
>>927
突っ込んで申し訳ないが、コントロールボックスにPASS制限ってのが意味が通じないのだ。
更に、
> その処理は済ませております。
というが、どっちの話なのさ。MDEに変換かMDBにパスワードか???
どちらにせよ、これをローカルに落としたとしても、MDEならオブジェクトを見れないしパス
ワードの方はパスワード自体漏らさなきゃMDBを開けない。金出してパスワード解析ツール
を買って持ってるなら別だが。
MDEの変換前・パスワードかける前の元になるMDBをネット上に置いて、プチパワーユー
ザーに晒してるんじゃないのか?
どうも話がわからん。上書きを防ぎたいならアクセス権限をReadOnlyにすればいいんだし、
内容の変更されてないファイルなら仮に上書きされてもちっともこまらんだろうに。
0929NAME IS NULL2005/06/28(火) 02:27:50ID:???
なんで、安易な道に走るんだろう。
922はACCESSの技術力より、人間関係の構築に
力を注いだ方がいいような気がする。
俺だったら
「あ、君がやってくれるんだ。じゃあ、頼んだよ」
てな具合に、諸手を挙げて大喜びなんだけどね。
0930NAME IS NULL2005/06/28(火) 07:15:29ID:???
その同僚ってのが大音量で音楽流して引っ越し引っ越し叫ぶような奴だからだろう。そうに違いない。
0931NAME IS NULL2005/06/28(火) 08:41:54ID:???
>>930
オマエ、朝のTV見ながら書き込みしてるだろ?

>>927
はよ出てきて書き込んでくれぇ。
>>928 が待ってるよぉ。
0932NAME IS NULL2005/06/28(火) 10:23:54ID:???
922本人に落ち度なり弱みなりあるんじゃね?
だから内々に解決させてもみ消したい、と。
漏れも>>929に全面同意。
0933NAME IS NULL2005/06/28(火) 13:00:59ID:???
プチパワーユーザーが社員で922が派遣に1票
0934NAME IS NULL2005/06/28(火) 22:45:16ID:???
本当は 922 が上司でプチパワーユーザーが部下。
0935NAME IS NULL2005/06/28(火) 22:50:00ID:???
だったら普通に注意すりゃやめるだろ……。弱みでも握られたか。可哀想に。
0936NAME IS NULL2005/06/29(水) 00:00:30ID:JiJb7D9H
>922
926が言うとおりMDEにするかランタイム版を配布すればよいと思われ。
もしくは、これも926が言っているが、読み取り専用ユーザーを指定すれば
いいんでは。
元MDBは本人しか開けないローカルもしくはサーバのフォルダに保存しとく。
まぁ、922のマシンのログオンパスばれたら終わりだけど。
0937NAME IS NULL2005/06/29(水) 00:14:35ID:???
922は色白でかわいい男の子タイプ。
プチパワーユーザーはロリ系巨乳ガングロ。
0938NAME IS NULL2005/06/29(水) 01:32:48ID:???
>>922
MDBのままで制限を加えたいのならばセキュリティ設定をすればいい。

自分専用のワークグループファイル(system.mdw)を作り、新しいスーパー
ユーザーを登録し、そのスーパーユーザーでログインして、管理者を管理者
グループから削除する。
管理者の所属グループはユーザーグループだけになるから、ユーザー
グループから構造の変更と管理者の権限を剥奪すれば、通常の使用は
できるが、書き換えのできないクエリーやデザインモードで開けない
フォームやレポートができる。
設定が済んだらワークグループファイルの設定を標準に戻せばいい。
0939NAME IS NULL2005/06/29(水) 16:33:48ID:QC2EZRZr
ここの住人は、暑さで湧いて出たウジ虫しかいねーな
脳みそはゾーリ虫なみ
ま、リストラされて淘汰されて死んじゃってくれw
0940NAME IS NULL2005/06/29(水) 16:37:05ID:???
まあ俺から見たらここはDB覚えようとしたが挫折したウジ虫の集まりだな
頭の軽い香具師ばかりで笑えるな

(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
(^∀^)ゲラゲラ シネヤカスドモ
0941NAME IS NULL2005/06/29(水) 17:35:32ID:???
構成展開する、生産管理系のプログラムのサンプルってどこかにありますか?
0942NAME IS NULL2005/06/30(木) 08:31:20ID:a9IzzHYE
教えて下さい。
30名程のバイトさんのシフト管理をしたいのですが,次の月の日付と曜日をあらかじめ出す事はできますか?
イメージですが,担当者コードを入力したら七月分の日付と曜日が表示され,出勤時間と退勤時間を入力出来る様にしたいです。
初心者ですいません。
0943NAME IS NULL2005/06/30(木) 09:15:52ID:???
>>942
できる。
0944NAME IS NULL2005/06/30(木) 09:16:40ID:???
途中で送信しちゃった。

できるけど、そのシフト管理のテーブル構成が分からない限りこれ以上答えようがない。
0945NAME IS NULL2005/06/30(木) 16:36:19ID:???
Accessでシリアルポートを利用して外部機器(キャッシュドロア)を操作したいんですが
良い方法はないでしょうか?
0946NAME IS NULL2005/06/30(木) 18:25:08ID:Xy62p/jN
>>943さん ありがとうございます。
テーブル1 名前 電話  担当コード
テーブル2 担当コード 名前 出勤時間 退勤時間 
これ以外に必要な物ありますでしょうか?
0947NAME IS NULL2005/06/30(木) 18:56:03ID:???
>>946
テーブル2に日付フィールドなくていいの?
そして2に名前はいらなくない?
0948NAME IS NULL2005/06/30(木) 19:14:44ID:Xy62p/jN
>>946さん ありがとうございます。
そうですね。 以下に変更しました。
テーブル1 名前 電話  担当コード
テーブル2 担当コード 年月日 出勤時間 退勤時間
 
0949NAME IS NULL2005/06/30(木) 22:54:46ID:???
>>948
次の月の日付が出てくるようにということだけど、常に次の月しか表示されないと後で
修正したい時とか困るだろうから、次の月は規定値ということにして他の月も選べるようにした方が良いと思う。
で、フォーム上で月と担当者を選択して適当なコマンドボタンを押すと、
その月と担当者のレコードがあるか判定して、なければその月の1日から月末までレコード追加。
あとはその月と担当者のレコードのみ抽出して表示するようにすればお望みの物はできるんでない?
09509492005/06/30(木) 22:56:24ID:???
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
0951初心者2005/07/01(金) 10:50:20ID:???
教えてください。

部品在庫管理で、出庫先が修理に使用と
オークに出品等(部品販売)になる場合は
テーブル構成はどうしたらいいのでしょうか・・?

ttp://www5d.biglobe.ne.jp/%7Eac2000/mokuzi.html
上記のサイトを参考にしたのですが、出庫のとこでつまづいてしまったので・・orz

宜しくお願いします・・。
0952NAME IS NULL2005/07/01(金) 11:08:39ID:???
とりあえずお前ら



初心者と名乗るのやめようぜ……それだけで答える気力なくなる
0953NAME IS NULL2005/07/01(金) 11:12:32ID:???
>>951
どんなデザインなのかは知らないけど、単純に在庫テーブル(があるかどうか知らないけど)に
出庫先入れるフィールド作るんじゃダメなの?
0954NAME IS NULL2005/07/02(土) 02:21:57ID:FeUGEv4T
>>949 950さん 遅くなりましてすいません。ありがとうございます。
私にはちょっと難しいですが,調べて頑張ります。
09559542005/07/03(日) 08:14:24ID:4JsxXgUv
やっぱり難しいです。もっと易しいレベルはないですか?
0956NAME IS NULL2005/07/03(日) 08:36:50ID:???
>>955
Excelで管理する。日付も曜日もマウスでドラッグすれば、いっぺんに設定で
きるしな。テンプレートとして合計出したりなどの計算式埋め込んでおけば
それなりに管理できるぞ。
今まで教えてもらったレベルが難しいなら、現時点ではAccessは諦めること。
だって、基本に近いのに難しいっていわれたら、アドバイスしようがないぞ。
0957NAME IS NULL2005/07/03(日) 12:35:32ID:???
もっと易しいレベルと言われてもなぁ。
特殊なことやろうとすると面倒になるのは必然で、これ以外の「簡単な」方法は無いと思う。


役に立つかどうか分からないけどサンプルうpってみた。
ttp://up.isp.2ch.net/up/4f67efa370bd.zip
pass:sage
0958NAME IS NULL2005/07/03(日) 14:53:00ID:tJaBCq+U
すいません質問させてください。式ビルダってフォームじゃないと使えないんですか?
テーブルでフィールドaとフィールドbに数値を入力したら自動的にその和がフィールドcに表示されるみたいなことをやりたいんですが
0959NAME IS NULL2005/07/03(日) 16:18:52ID:???
>>958
無理。テーブルはそういうのは想定していない。
他のフィールドへ自動で値を入力するなんてのは、必ずフォームを使う。
見た目をテーブルっぽくしたいなら、既定のビューをデータシートにした
フォームを使えばよいと思うが、どうだろうか?
0960NAME IS NULL2005/07/03(日) 18:58:52ID:???
>>958
テーブルで直接入力するってのは愚の骨頂。Excelじゃないんだから。
0961NAME IS NULL2005/07/03(日) 19:07:13ID:???
DAOとかで取得したレコードセットを一覧表示って出来ないんですか?
0962NAME IS NULL2005/07/03(日) 19:30:19ID:???
>>961
すまんが、意味がちょいわからん。
取得したレコードセット・・・それって結果的にクエリのことじゃないの?
もしくは、ダミーテーブルとか。いずれにしても、帳票形式のフォーム
でレコードソースプロパティにそのレコードセットに該当するものをセット
すれば一覧表示可能だが、詳細は割愛。
0963NAME IS NULL2005/07/03(日) 22:04:39ID:???
>>959-960サンクス。早速やってみます
0964NAME IS NULL2005/07/04(月) 15:24:18ID:???
951
返事ありがとうです。
文書じゃ分かりにくいので作ってるのを
テーブル構成を画像にしてみました・・。

http://v.isp.2ch.net/up/1206b5a7438b.jpg

宜しくお願いします・・。
0965NAME IS NULL2005/07/04(月) 15:57:56ID:???
>>964
もうそれで出てきてるんじゃないの?
0966NAME IS NULL2005/07/04(月) 20:14:33ID:fz2JqpF5
>>964
話はそれるが、仕入先が2社の部品は部品IDを分けているのか?
0967NAME IS NULL2005/07/05(火) 02:45:28ID:???
>>964
細かい話は抜きにして、修理と販売でテーブルを分けずに1つに
する。ID(コード)がどうなってるのか知らないけどね。
あとは、修理用と販売用のコードのためにフィールドを2つ設ける。
こっちの方法なら修正は少ないと思う。が、Goodな方法かどうか
までは不明。
0968NAME IS NULL2005/07/05(火) 16:13:00ID:???
個人情報保護法とかで、上司からコピペでデータを持って行かれないように
リスト選択後のCtrl+Cを無効にしてくれと言われたがやり方がわからん

やさしい方教えてください・・・orz
0969NAME IS NULL2005/07/05(火) 16:28:40ID:???
レコードセレクタださなきゃ大丈夫だ・・と思ったら
Ctrl+A Ctrl+Cで全部のレコードがコピーできちまった・・・('A`;)
09709512005/07/05(火) 16:32:05ID:???
返事ありがとうございます。


>>967
修理と販売を纏めたテーブルには出庫用法ID設けるのはどうなんでしょうか?
>修理用と販売用のコードのためにフィールドを2つ設ける。
えっと、これは何のためでしょうか?(クエリで必要に?)
0971NAME IS NULL2005/07/05(火) 16:33:01ID:???
>>969
AutoKeysにctrl+Cを登録すれば無効になるけど根本的な解決になっているかどうかは不明。
0972NAME IS NULL2005/07/05(火) 16:40:27ID:???
>>970
なんというか、全く基礎がなってないようだから、いきなり全業務カバーするようなものはやめて
段階的に作っていった方がいいんでない?
質問の内容も曖昧でこれから無数に沸いてきそうだしキリがないよ。
0973NAME IS NULL2005/07/05(火) 16:47:55ID:???
と思ったけど、テーブル構成みたら大したことないな。
>>951には難しそうだけど。
0974NAME IS NULL2005/07/05(火) 16:51:10ID:???
>>971
レスありがとん、AutoKeys早速やってみました。

しかし、作ってあるアプリがユーザごとにフォームのプロパティの
更新、削除、追加が可変になっている作りなので、、AutoKeysを利用すると
編集をするユーザまでコピペができなくなってしまうようです・・・(;´Д`)

AutoKeysって可変にできないのかな・・・とりあえずやってきます
0975NAME IS NULL2005/07/05(火) 17:05:54ID:???
>>969です、とりあえず自己解決しました。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
Shift = 0
End Sub

このソースで上司は満足でした、日記みたいなカキコスマソ
09769672005/07/05(火) 21:32:16ID:???
>>970
今のまま(修理用と販売用と分けてる)のテーブル構成でリレーションをとるため。
1つの出庫用法IDで修理用と販売用の2つにリレーションってのは無理でしょ。
出庫用法IDというのが、修理用と販売用でどういうコードつけになっているかわか
らないから的確なアドバイスはできません。
修理用と販売用でIDが重複することがないなら、テーブルを2つに分けてる方が
おかしいので1つにする。

>>975
それではユーザー毎の可変ができないだけではなく、入力キー全てが無効にな
るが。編集はオールマウス操作なのか?
09779712005/07/05(火) 22:05:22ID:???
>>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


多分こっち
0978NAME IS NULL2005/07/05(火) 22:23:39ID:???
If KeyCode = 67 And Shift = 2 Then

67, 2 ではなく、vbKey〜のConstを使いましょうよ。
0979NAME IS NULL2005/07/05(火) 22:43:52ID:???
2003だとヘルプでキーコードの定数見れないんだけどこれはゲイツの嫌がらせなのかな?
0980NAME IS NULL2005/07/05(火) 23:39:28ID:???
>>979
オブジェクトブラウザで代用したら。
0981NAME IS NULL2005/07/05(火) 23:47:37ID:???
>>976-978
>>969です、みなさん、レスありがとん

実際にはKeyCodeとShiftに値を代入する前に
ユーザ権限チェックの分岐が入っています。

それにしても、うちの会社は基幹系以外のデータベースは
Accessで作っているものが多くて個人情報保護法なんたらに
早く対応しろやゴラァと上司にどやされており大変です・・・('A`)

んなもん、Windowsのパスワードと本体つなぐ鎖で十分だろうと(ry
0982NAME IS NULL2005/07/05(火) 23:49:21ID:???
あと社員に誓約書書かせれば大体okだよ
0983NAME IS NULL2005/07/06(水) 11:12:11ID:???
>>982
更に社員に一方的に不利な内容にしておけば完璧。
0984NAME IS NULL2005/07/06(水) 23:30:36ID:???
>>983

誓約書なんていうのは自分(企業)が責任逃れするためのものだから、
概してそういうものでしょ。
レス数が950を超えています。1000を超えると書き込みができなくなります。