【まだまだ】Microsoft Access クエリ3【使える】
前スレDAT落ちしたようなので新スレです。
即死しそう
4 :
NAME IS NULL:2005/07/08(金) 16:40:51 ID:exfG4oee
保守
5 :
NAME IS NULL:2005/07/08(金) 19:47:45 ID:xeo2tRn4
【まだまだ】【使える】
という事は、
【そろそろ】【使えない】
という理解でよいか?
7 :
NAME IS NULL:2005/07/08(金) 20:44:18 ID:xeo2tRn4
>つーか、このスレ自体、イタ違いなんじゃないか?
ここを純情ハードゲイ板と勘違いしているようだな
>ここを純情ハードゲイ板と勘違いしているようだな
そんな板があったなんて、大笑い
>8の常駐先かな。
スレ立て乙でした。
うっかりしてる間に落ちてました。
>>5 スレタイの由来は、
多くの人がもう終わってると思ってるが、使いどころによっては実は
「まだまだ」「使える」
です。
うちは今でもOracleやSQL ServerとAccessを組み合わせて使うとき
あります。
11 :
NAME IS NULL:2005/07/10(日) 15:03:26 ID:TPUvY9yH
クエリでbegin transaction と書いたら
SQL ステートメントが正しくありません。 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または 'UPDATE' を使用してください。
とかかれました。
どうすれば使えるのですか?
>>11 begin transactionの続きは書いたのか?
test
17 :
NAME IS NULL:2005/07/12(火) 21:48:21 ID:yL99MjTH
別スレから誘導されて来ました
【. 目 的 】 (手形支払い先の管理と銀行当座の管理を作りたい)
【. 条 件 】 (WinXP、ACCESS-2002)
【. 概 要 】 (銀行名・支店名・口座名・残高・満期日・金額・手形番号・支払先名)
「概要」に書いたようなテーブルを作ってデータベースを作りたいのですが
肝心なテーブルの中身がさっぱり分かりません('A`)
どなたかテーブルに書くような項目教えてもらえないでしょうか?
よろしくお願いします。
18 :
NAME IS NULL:2005/07/12(火) 22:11:06 ID:bmQRX1mO
会社のネットワークで、
SQL2000サーバーに各端末から.MDBでデータ処理しています。
テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、
競合で変更が更新されないことがあります。もちろん競合はない筈でも、この
メッセージがでて変更ができないことがあります。
この不具合の原因について、分る方いっらしゃいますでしょうか。
>>17 支払手形扱ったことないから良く分かんないけど
■銀行口座テーブル
銀行コード
銀行名
支店名
口座名義
口座番号
■手形テーブル
手形No
振出日
決済日
金額
支払先コード
銀行コード
手形区分
手形番号
支払日
摘要
■支払先テーブル
支払先コード
支払先名
etc
■手形区分テーブル
区分名
こんな感じ?
銀行残高に関しては手形の支払いだけで金額が変わるわけじゃないだろうから
別のアプローチが必要だと思う。
それにしても、テーブルデザインができないってのは致命的だから入門書買うなり
なんなりしてちゃんと勉強した方が良いんじゃないだろうか。
"肝心のテーブルの中身がさっぱり"じゃ、この先の作業が続かないだろうし。
20 :
17:2005/07/12(火) 22:34:16 ID:???
>>19 ありがとうございます。実は本は用意してあるのですがデータベースの内容については自分で
考えてという内容だったのでこちらで聞かせてもらいました。
また何か分からないことがありましたらよろしくお願いします。
>>20 >データベースの内容については自分で考えてという内容だったので
著者は今頃泣いてるな……。
848 名前:NAME IS NULL[] 投稿日:2005/07/13(水) 10:31:59 ID:cwIOx3kC
会社のネットワークで、
SQL2000サーバーに各端末から.MDBでデータ処理しています。
テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、
競合で変更が更新されないことがあります。もちろん競合はない筈でも、この
メッセージがでて変更ができないことがあります。
この不具合の原因について、教えていただけないでしょうか。
937 名前:NAME IS NULL[sage] 投稿日:2005/07/13(水) 10:33:46 ID:???
会社のネットワークで、
SQL2000サーバーに各端末から.MDBでデータ処理しています。
テーブルのレコードを変更したとき、他ユーザーが開いていますなどと称して、
競合で変更が更新されないことがあります。もちろん競合はない筈でも、この
メッセージがでて変更ができないことがあります。
この不具合の原因について、教えていただけないでしょうか。
∧ ∧ ┌─────────
( ´ー`) < シラネーヨ
\ < └───/|────
\.\______//
\ /
∪∪ ̄∪∪
24 :
NAME IS NULL:2005/07/22(金) 21:45:36 ID:f4befPrB
教えてください。
クエリーでシフト管理しようとしています。
フィールドには氏名/予定出勤時間/退勤時間/実働出勤時間/実働退勤時間を作りました。
@9時前にタイムカード押した場合,9時からの時間計算となる。
A15分単位で時間計算。(例)9:37→9:45からの計算となる。
B22時以降は時給にならない。
というのはクエリーで可能ですか?
>>24 クエリだけでなんとかしたいならIIF関数やらswitch関数やら使って
丸め込めば良いんでね?
例:
丸め込みした出勤時間:
Switch([実働出勤時間]<#9:00:00#,#9:00:00#,
Minute([実働出勤時間]) Between 1 And 15,TimeSerial(Hour([実働出勤時間]),15,0),
Minute([実働出勤時間]) Between 16 And 30,TimeSerial(Hour([実働出勤時間]),30,0),
Minute([実働出勤時間]) Between 31 And 45,TimeSerial(Hour([実働出勤時間]),45,0),
Minute([実働出勤時間]) Between 46 And 0,TimeSerial(Hour([実働出勤時間])+1,0,0))
長すぎたんで複数行に分けた。
厳密なルールは分からないからけっこう適当。
あとはこれの退勤時間verも作ればいけるんじゃないかな。
26 :
25:2005/07/22(金) 22:44:39 ID:???
0分ちょうどの時だとこれじゃおかしくなるな。
他にも変なところありそうだけど微調整して使ってください。
つ〜か、VBA使えよって思わないですか?みなさん。
外注する予算も削られるご時世だし
ユーザーサイドの担当者が頑張ってVBAを使っても、
その人が異動になるとメンテできないからねえ。
VBAはできる限り使わず、関数とクエリと手操作、
あとExcelをからめてなんとかやっていくしかないっしょ。
29 :
NAME IS NULL:2005/07/23(土) 02:00:15 ID:wufMo1Pt
(´-`).。oO(会社のパソが新しくなるんです…
で、Accessを新しい方に移したいんですよ。でもねアホゥなことにCDが無いのです…
データベースを作るというわけではないのでランタイムがあればいいのですが
いかんせんAccess97…どなたかご存知ないでしょうか…orz
>>27 クエリだけでやりたい→×
クエリしか使えない→○
以前質問の回答にVBAのコード書かれて困った初心者さんでは?
>>27 その前に日付フィールドいらないのかと突っ込んであげてください。
それとも時間に年月日も含まれているんだろうか。
32 :
27:2005/07/23(土) 07:44:23 ID:???
>>30 そう思うけど、やりたいことをクエリで実現するのにIIfとか関数使うなら
VBAでも変わりないのにと思ったので。
複雑怪奇なロジック作成する訳じゃないので、仮に引き継ぐ際でも支
障はないでしょうに。
33 :
27:2005/07/23(土) 07:46:08 ID:???
>>31 すまんすまん。そこまで詳しく読んでなかった。
>>32 その意見には激しく同意なんだけど、初心者にはVBAが異世界の物に見えるんだよ。
実際はちょっと勉強すりゃすぐ使えるようになるのにね。
もしかしたら
>>24はフォーム作成する気すらないのかもしれない。
35 :
NAME IS NULL:2005/07/23(土) 12:02:30 ID:t3PLbHk8
>>25 27 28 30 31 34 さん
ご意見ありがとうございます。
30さんのとおり今はクエリしか使えませんが,VBAについても勉強しようと考えてます。
遅くなりましてすいませんでした。
DB初心者にはVBAよりSQLのほうが異世界のものに見えないかい?
>>36 Access初心者はAccessをExcelと同じようなものと考えているよ
どなたか、
functionプロシージャとsubプロシージャとPropertyプロシージャのちがいをわかりやすく、かつそこそこ踏み込んで教えてください。
ヘルプを呼んでもあまり違いがわかりません。
ので、ほとんどをfunctionで書いています。
じゃあそれでいいじゃん
40 :
NAME IS NULL:2005/07/25(月) 00:06:18 ID:6tmogycy
(´-`).。oO(落としたランタイムをまったく関係ないデータベースを開くのにつかうのは駄目なんですよね…そうですよね?
(´-`).。oO(過疎ってるなぁ、誰もいないのだろうか…
>>40 ランタイムは機能限定のMSACCESS.EXEですから、これを利用して開くデータベースは
何でもOKだけど。
アクセスのSQL画面で、
行を残したまま無効にするREMARK # や /* */など
使えないの?
すみません。少しスレ違いかもしれませんが
複数のエクセルファイルをドラッグアンドドロップして
いずれのファイルからも特定のセル
(例えば5枚目のシートのE12みたいに)
からデータを拾ってきて、1つのエクセルファイルに
出力するようなツールを作りたいのですが
そういうのってAccessで実現できるのでしょうか?
また、出来るとしたらどうすればいいのでしょうか?
よろしくおながいします。
>>45 マルチ乙
342 名前:NAME IS NULL[] 投稿日:2005/07/25(月) 21:08:33 ID:7/LueBL9
すみません。少しスレ違いかもしれませんが
複数のエクセルファイルをドラッグアンドドロップして
いずれのファイルからも特定のセル
(例えば5枚目のシートのE12みたいに)
からデータを拾ってきて、1つのエクセルファイルに
出力するようなツールを作りたいのですが
そういうのってAccessで実現できるのでしょうか?
また、出来るとしたらどうすればいいのでしょうか?
よろしくおながいします。
489 名前:NAME IS NULL[] 投稿日:2005/07/25(月) 21:52:52 ID:s+YT1a81
すみません。他スレでスレ違いと言われたので
こちらに書き込みします。
複数のエクセルファイルをドラッグアンドドロップして
いずれのファイルからも特定のセル
(例えば5枚目のシートのE12みたいに)
からデータを拾ってきて、1つのエクセルファイルに
出力するようなツールを作りたいのですが
そういうのってAccessで実現できるのでしょうか?
また、出来るとしたらどうすればいいのでしょうか?
よろしくおながいします。
49 :
NAME IS NULL:2005/07/31(日) 15:50:07 ID:MX1zwxcZ
誘導されて来ました。
つまらない質問で申し訳ありません。
アクセスの宛名ラベルで、一件の住所を複数印刷したいのですが、どういう方法があるのでしょうか?
出来ればストックとして、専用のラベルシート一枚に丸ごと同じ一件のラベルを印刷したいのですが。
どうか教えてください。
>>49 言いたいことは分かるけど情報不足で正確な回答はできない。
仮に一つのレコードを10回繰り返して印刷したいなら、
Dim i As Integer
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
i = i + 1
If i Mod 10 = 0 Then
Me.NextRecord = True
Else
Me.NextRecord = False
End If
End Sub
でいけるはず。
詳細フォーマット時、行数が10で割り切れる時のみ、次のレコードに移動させる。
>>49 そーいうラベル印刷については一太郎の方が上手じゃ。
VBAからオートメーションで一太郎操作しようぜ。
自分のやりたいことも相手にわかるように説明できない香具師には、
VBAなんて高度なことを説明しちゃいけないよ。w
Wordの差込機能を説明すべし。
>>50が理解できないとなると、印刷テーブル作ってそれでレポート作成するしかないな。
[ID](主キー・オートナンバー),[宛名テーブルの主キー]
でテーブル作って
1 1
2 1
3 1
4 1
5 1
6 1
7 1
と、印刷したい数だけ入れて宛名テーブルと連結させればいいじゃん。
>>50が理解できないとなると、この板にはこない方がよいと思う。
Wordだよ。Word。w
ツール/はがきと差し込み印刷/差し込み印刷ウィザード
せっかく誘導されて来たってのにこの酷い仕打ちは流石ですね
誘導したのは向こうの勝手だからなあ
こっちはこっちの基準で捌くだけのこと
1.何をどうしたいのか具体的で分かりやすい説明がない。
2.回答があったのに理解できないと述べ、何が分からないのか書かない。
3.別スレで再度質問するときに、情報不足とすでに指摘されているにもかかわらず質問がコピペ。
ここの住民は妥当な対応をしていると思います。
十分親切な回答をあげてると思うが・・
>>49にはそれもわからんのか
ところで誘導元のスレってどこ?
>>49 先に確認したいんだけど、
・1ラベルに1つの住所を印刷するのはできている。
・1ページ(上の複数ラベル全て)に1つの住所を印刷したいけどできない。
ということでいい?
61 :
NAME IS NULL:2005/08/01(月) 14:06:17 ID:zZlhZlUl
アクセスをつかってデータベースを作る、練習本のようなものはありませんか?
一応操作方法や、仕組みは分かったつもりなのですが、実際にやってみたいのです。
本屋さんではテクニックや機能の解説本ばかり目立つのですが。
63 :
61:2005/08/01(月) 14:14:10 ID:zZlhZlUl
>>62 おおっ、これはよさそうですね。早速のアドバイスありがとうございます。
2003を使ってますけど、似たようなもんですよね。
>>63 2003のもあるぞ。
でも無駄に分厚いだけって印象だったな(読んでないので分からない)。
正直、自分がほしいもの作った方が身に付くと思うんだけどなぁ。
65 :
NAME IS NULL:2005/08/01(月) 15:22:31 ID:PZzSeLmD
>>60 その通りです。
>>53の方法は思いつきましたが、それではない方法が知りたいのです。
>>50の式は、どこで使えばいいのかが解りません。
初心者が詰まらない質問をして申し訳ありません。
これはもう、どんな回答をしたところで
「その方法は思いつきましたが、それではない方法が知りたいのです。」
で返されそうなヨカソ・・・
>>65 >
>>50の式は、どこで使えばいいのかが解りません。
今後質問するときは「VBAはさっぱりわかりません」と書こう。
> 初心者が詰まらない質問をして申し訳ありません。
どんな質問をするのも自由だけど、
>
>>53の方法は思いつきましたが、それではない方法が知りたいのです。
みたいなのを先に書かないと嫌われる。
別の方法としては、レポート全体を1ページ1レコードで
デザインし直す方法があるけど。
何故
>>53の方法が採用できないのかその辺の動機が
わからないと、それがベストまたはベターな方法なのかは
さっぱりわからないけどな。
>>50の書き方は非常に親切でVBA何も分からない人でもレポートデザイン画面から
VBエディタ開いて行末にコピペするだけで動く素敵コード
書籍のほうも、「買ってみたけどこんなものではない書籍が
欲しいのです。もっと独学向けみたいな。」という書き込みが
くるんだろうな・・・
勉強しようという意思が足りなさ杉。
70 :
NAME IS NULL:2005/08/01(月) 22:50:26 ID:bL6QjO98
だから、何でWordやExcelでは駄目なんだよ?w
一太郎だってば!ヽ(`Д´)ノ
72 :
NAME IS NULL:2005/08/01(月) 22:54:19 ID:DvU03ZQZ
DBサーバにMDBを置いて共有するのと、クライアントにMDB置くのと
ではレスポンスって違うのですか?
サーバに置いて共有にした場合はテーブル作成クエリとかでワーク
テーブル作成する場合に、ユーザ毎に名前をユニークにする必要が
あるので面倒なんですが。
どこかで
>>72の質問読んだことあるなぁ。
特に下の3行はコピペの予感。
>>72 サーバーに置いたら遅い。Accessは、エンジンがクライアント
で動作するのが原因。詳細は、MSの技術情報なりググるなりし
て下さい。厳密に正確な説明ができないので。
テーブル作成クエリというのを考えているなら、システムMDBと
データMDBをわけてシステムMDBをクライアントに配布すればい
い。ついでにいえば、テーブル作成クエリよりは前もってダミー
テーブルを用意しておいて追加クエリ・削除クエリを使った方
が良いような・・・更についでにダミーのMDBを用意したりして。
本社のDBサーバに、FLET'S光のVPNで繋がっている支店の
クライアントPCのMDBからODBCで繋ぐのって危険ですか?
サーバはWin2000&MySQLを使ってるのですが、DBはMS-SQLにした
方が良いですか?
複数ユーザーが更新するクラサバでDBをACCESSにするのは危険っすか?
MS-SQLは高すぎるし・・・MySQLやポスグレってのも考えてます。
危険です
81 :
77:2005/08/02(火) 00:01:16 ID:???
やはりMS-SQLを購入してADPにしろってことですねw
82 :
77:2005/08/02(火) 00:04:43 ID:???
SQL Server 2005 Express Edition + MS-ACCESSにしますw
「H15.11.11(ge.mm.dd)」や、「平成15.11.11(ggge.mm.dd)」といったテキストにIsDateを使うとFalseが返ってくるんですが
これを日付型に変換できるようにする方法はないでしょうか?
今は、↑の文字列日付の文字数と、二つの[.]の位置を調べて日付パターンを判断して、
それぞれに適した値でmidやrightを使って数字取り出した後
再結合して平成15年11月11日とIsDateでTrueになる書式に変換しているんですが、
もっと確実で簡単な方法があったら教えてください。
>>83 Replaceを利用して、 . を / に変更すれば。
>>84 [.]を[/]にするだけで日付として認識してくれるんですね。
今日作業していたかなりの時間は無駄だったようです(ノA`)アリガトウ
勤務日報を作成しているんですが、縦に対象月の日と曜日を日曜・祭日も
含めて出力したいのですが、カレンダーテーブルを作成しないで表示させる
方法があったら教えて下さい。<(_ _)>
>>86 祝祭日は日が毎年変わるものがあるので(春分の日とかね)、
マスター化しないと厳しい。
88 :
NAME IS NULL:2005/08/10(水) 15:33:54 ID:0GFXLu5y
>>87 つ計算式
int ( 20.8431 + 0.242194 * ( $year - 1980 ) - int ( ( $year - 1980 ) / 4 ) )
int ( 23.2488 + 0.242194 * ( $year - 1980 ) - int ( ( $year - 1980 ) / 4 ) )
計算で出せる
成人の日
海の日
,敬老の日
体育の日
後は確定日
ますたはいらん。
>>88 春分・秋分の日に、こんな計算式があったとは・・・
国民の祝日に関する法律(祝日法)は過去に何度も改正されてるから
自動計算なんて意味がないものと最初から決めつけて
調べてもいなかった。
勉強になったよ、ありがd。
あーダメダメ。
春分・秋分の日は、国立天文台の
天体観測によって翌年分が決まるから
計算とは微妙にずれる可能性がある。
マスター化して毎年チェックするのが一番。
そのズレは過去どれくらい起きたんだ?
92 :
86:2005/08/11(木) 08:31:05 ID:???
みなさん有り難うございます。
やはり
>>88さんの計算式を下にテーブル(マスタ)を作成するのが
無難なんですかね。
つーか、年末年始や夏期休暇、場合によっては創立記念日などのローカルな休業日もあるだろう。
定型的なシステムとして使うならマスタ化必須。一時的なデータ分析ならどっちでも良い。
要は、どのように使うかだ。
94 :
NAME IS NULL:2005/08/11(木) 14:50:41 ID:lL0oEPW+
教えてください。
印刷クエリーをマクロ登録して、メニュー画面にも登録しました。
メニューから印刷プログラム選択すると、メニュー画面も印刷されてしまうのは何故なんでしょうか?
印刷クエリって初めて聞いた。最近はクエリで印刷もできるんだな。PRINT SELECT〜って感じか。すごいなぁ。
96 :
NAME IS NULL:2005/08/11(木) 15:54:07 ID:lL0oEPW+
>>95さんすいません。
クエリで作ったものを印刷する様にするです。
>>96 それでもさっぱり意味が分からない。ちゃんとレポート呼び出してる?
test
よし、規制解除。頼むからオレと同じISP経由の奴、規制される
書き込みはやめてくれ。
>>96 オレも <<97 同様、その説明ではさっぱりわからん。どういう設
定をしてるのか中身がまるでつかめんし、マクロ使ってる時点
でちょっとな。
>>99 お前のISPがどこだか分からないのに気をつけようがないよw
いやぁ、晒してもそういう輩には意味がないでしょうが、ぷららっすよ。
ぷららじゃ仕方ないよ……
test
>>104 処理を分けるくらいなら、素直にマスターがいいと思います。
106 :
NAME IS NULL:2005/08/16(火) 13:23:00 ID:gXAPHmHc
>>105 漏れの場合、日付マスタは作るが、
自作関数に期間やパラメータ渡して追加SQLを
発行し自動生成している。
結局のところ、チェックは必須だから、全自動はできんが、
大幅な省力化は可能だ。
分ける云々の話じゃないんだよ。
108 :
NAME IS NULL:2005/08/17(水) 02:34:48 ID:apoSnIV+
教えてください
テーブルで
ID 数値型
氏名 テキスト型
チェック1 数値型
チェック2 数値型
チェック3 数値型
チェック4 数値型
チェック5 数値型
を作って、チェックの件数を知りたいんですが
クエリ上でcount([チェック1]&[チェック2]&[チェック3]&[チェック4]&[チェック5])とするとエラーになってしまいます
なにか集計を取る方法は無いでしょか?
その説明じゃチェック状態と未チェック状態で収められているデータの違いが
サッパリ分からないので的確な答えを出しようがないんだけど
チェック状態→Null値以外の色んな数値
未チェック状態→Null値
だとするなら、
5+IsNull([チェック1])+IsNull([チェック2])+IsNull([チェック3])+IsNull([チェック4])+IsNull([チェック5])
もしくは一個ずつIIF使ってチェック状態→1、未チェック→0に変えて全部足しちゃえば?
110 :
108:2005/08/17(水) 21:03:59 ID:apoSnIV+
>>109 すいません説明不足で
チェック状態の数値は1〜20になります
未チェックは0です
とりあえず
5+IsNull([チェック1])+IsNull([チェック2])+IsNull([チェック3])+IsNull([チェック4])+IsNull([チェック5])
でやってみます
おおおおおおおおおおおおおおおおおおおおおいいいいいいいいいいいいいいいいいい
未チェックがNull値じゃなきゃ意味ないだROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
何考えているんだあああああああああああああああああああああああああああ
ということは未チェックはゼロで、チェック状態は正なんだな。
SELECT ID, 氏名,
(Sgn(チェック1)+Sgn(チェック2)+Sgn(チェック3)+Sgn(チェック4)+Sgn(チェック5)) AS チェック件数
FROM テーブル
113 :
108:2005/08/17(水) 21:27:14 ID:apoSnIV+
ごめんなさい
未チェックはnullでした
んでうまくいきました
すんませんありがとうございます!
むしろ
チェック件数:Sgn(チェック1)+Sgn(チェック2)+Sgn(チェック3)+Sgn(チェック4)+Sgn(チェック5)
と書いてあげないと理解できないと思う
っておい!wwwwwwwwwww
116 :
溺れかけ:2005/08/19(金) 01:33:25 ID:9+QGIz/A
スレ違いだったらごめんなさい。お力を。
個人情報のDBをつくってまして、ベータ版に入力した情報を新しいリリース版に移項したいと思っています。
テーブルの項目が若干違うのでそのままではインポートできません。
それともうまいインポートの仕方があるのでしょうか?
・エクセルでの書き出し・インポート
・ベータ版のファイルのフォームを現在のものと一致させる
・エクセルに書き出した情報をメールに切り分ける
(タブ区切りのメール読み込み機能があります)
この辺でしょうか?
118 :
?M?e^?(C)? ̄:2005/08/19(金) 02:29:05 ID:9+QGIz/A
貴重なご意見ありがとうございます。サイトを拝見してみますね。
119 :
NAME IS NULL:2005/08/19(金) 04:50:01 ID:8shkx4iU
>>117 よく、こんな意味不明なもんにレスできたな。。。
エスパーか(w
テーブルの項目が若干違うだけで他人に質問かよ。しかも、MDB→MDB
だろ。どちらかのテーブルをリンクするとかIN "別のMDBのフルパス"を
使うとか・・・。これらを利用した上で、ちょっこちょこっとVBA組むとかでき
そうなもんでしょうに。
>>116 120氏が書いているように、若干違う程度だったら
単純に追加クエリで十分と思うが…
フィールド型が違ったり置換等が必要でクエリ内で関数が使えないなら
VBAでやる。
122 :
ゆか:2005/08/22(月) 21:30:17 ID:???
超絶初心者ですいません。
質問ですが、フォームのなかにサブフォームをつくった場合、
サブフォームのコンボボックスは連動できないのですか?
何の値とどう連動させたいのかが分からないので答えません
123さん。
人がいたんですね。。。
えっと、納品書をフォームでつくって、そのなかにサブフォームで
商品明細を入れたいんです。
で、その商品のコンボボックスを商品一覧のテーブルと連動させたいんですが・・・
明細のフォーム単独だと出来るんですが、納品書のフォームに埋め込むと
出来なくなります。
なんか、
125 :
ゆか:2005/08/22(月) 22:11:07 ID:???
>>123さん
名前を入れようとして送信してしまいました。。。
なんか"式が複雑すぎます”みたいなのが出るんですが…
もし良かったら教えてください。
単票形式の納品書フォームの中に
帳票形式の明細がサブフォームとしてあって
その中のコンボボックスが明細の商品名だか商品IDと連結してあって
それの値集合ソースが商品一覧(商品マスタ?)のテーブルってこと?
いやでもこれじゃ何とも連動してないよな。
良く分からないけど、その問題の値集合ソースコピペしてみて。
127 :
ゆか:2005/08/22(月) 22:31:29 ID:???
コンボボックスが複数あって、
”商品分類”コンボがいかの通りです。
SELECT 商品台帳.商品分類 FROM 商品台帳 GROUP BY 商品台帳.商品分類;
で、”商品分類”で抽出されて連動する”商品名”コンボが以下の通りです。
SELECT 商品台帳.商品名 FROM 商品台帳 GROUP BY 商品台帳.商品名, 商品台帳.商品分類 HAVING (((商品台帳.商品分類)=Forms!インボイス![売り上げ明細 サブフォーム]!商品分類));
コピペしたら、なんか複雑ですね。
ようやく理解した。
最初に分類を選択させて次のコンボボックスで出てくる候補を絞らせたいのか。
サブフォームで読み込まれると、クエリで参照する位置が変わるのが原因でね?
Forms![メインフォーム名]![サブフォーム名].Form![絞り込み用コンボボックス名]
とすれば解決するはずだけど「式が複雑」のエラーが解消されるかどうかは不明。
129 :
ゆか:2005/08/22(月) 23:05:25 ID:???
>>128 [Forms]![インボイス]![売り上げ明細 サブフォーム]![商品分類]
になってるんですが”式が複雑”が出てきます。
ちなみに[インボイス]![売り上げ明細 サブフォーム]!のところをいろいろいじってみましたが、
この形式意外だとコンボボックスが空白になってしまいます。
ところで、値集合ソースコピペしただけで、なんかズバリしようとしていることがわかって
びっくりしてます。
びkkるい。
絞り込み用
SELECT DISTINCT 商品台帳.商品分類 FROM 商品台帳
商品選択用
SELECT 商品台帳.商品名
FROM 商品台帳
WHERE (((商品台帳.商品分類)=Forms!インボイス![売り上げ明細 サブフォーム]!商品分類))
GROUP BY 商品台帳.商品名
にしてみたら?
というか、商品選択用で商品名グループ化する必要性あるの?
商品マスタの中で重複の可能性があるものを明細に入れるのは設計上問題あると思うんだけど。
なぜ、分類コード・商品コードがないんだろうって素朴な疑問と、
そのような使い方を考慮したDB設計をするなら、分類マスタも
作成して絞り込みようのグループ化もしくはDISTINCTも使わな
くていいようにって考えるが。
商品なんて複雑なテーブルになる訳ないんだから、できる限り
単純なSELECTにしたいよな。
自分で全部やってるなら問題有りだが、テーブル設計は別の人がやってるのかもしれないしなぁ。
市販のソフトのデータに無理矢理接続とか。んなわけないか。
133 :
NAME IS NULL:2005/08/23(火) 17:11:15 ID:EVxI1KRA
>>130 テーブル設計のしょぼさはおいといて・・・
SQL文がわかりにくい。
後でパニックにならないようにこうゆう風に書いとくもんだ
dim sSQL as string
dim lngCategory as long ’商品カテゴリ番号
lngCategory=Forms!インボイス![売り上げ明細 サブフォーム]!商品分類))
sSQL="SELECT 商品分類 FROM 商品台帳"
sSQL="SELECT 商品台帳.商品名"
sSQL=sSQL &" FROM 商品台帳 "
sSQL=sSQL &" WHERE 商品分類=" & lngCategory
sSQL=sSQL &" GROUP BY 商品台帳.商品名 "
このままコントロールソース等に放り込めばいい。
>>133 VBAでRowSource書き替えるとは書いてないぞ。
コンボボックスのプロパティで値集合ソースに入れてるんだろ。
>>133 いつの間に商品分類がLongになったのだぁ。それは揚げ足取りなのでおいといて
ですね、見易いっていってもそこまで細かく分ける必要ないんじゃないの。
この程度の長さのSQLでパニックになるなら、手を引いた方が良いと思われるし。
というかちょっと待て。
値集合ソースに変数って使えるのか? 今まで知らなかった('A`;)
137 :
135:2005/08/23(火) 21:24:18 ID:???
>>133 の
> このままコントロールソース等に放り込めばいい。
というのは、良い方向に解釈してあげて、
Me![コンボ].RowSource = sSQL
ってしろって意味ではないかと。プロパティですから、直接変数とか
VBAのロジックは使えないよ。=関数名がいいところだよね。
だよな。焦った。
どうせVBA使うんだったら分類の更新後処理で直接WHERE条件指定しちゃえばいいのに。
139 :
135:2005/08/24(水) 06:22:03 ID:???
>>138 オレの場合で申し訳ないが、この程度ならなるべくVBAは使わな
い。更新後処理で、分類を抽出条件にしてるコンボのRequeryは
するけど。
抽出条件に関しては、Forms〜とフルで指定しないよな。しかもだ、
メイン/サブなんてまるで関係ないだろうに。商品分類も商品名も
サブフォームにあるコントロールだろ。
クエリの抽出条件で、Form![商品分類]とすればいいだけじゃねぇ
のか。
>>139 適当なこと書くなって。forms!いらん。
141 :
139:2005/08/24(水) 10:40:53 ID:???
>>140 だから、Forms!〜っては書かないっていってるだろう。
Form![商品分類]だってば。んで、これはVBAで組むんじゃなくて
クエリの抽出条件に設定。
VBAでやるなら、Forms!〜なんて文字列を抽出条件に設定せず
に、Me!〜で値をWHEREに設定するよ。
>>141 だから、コンボボックスの時はforms!あると動作しないんだよ。
forms![商品分類]で動くのはレコードソース。
[商品分類]だけで動くのはコンボボックスの値集合ソース。
143 :
142:2005/08/24(水) 11:01:18 ID:???
ああ、ごめん。思い切り勘違い。
VBAでテキストボックスのDefaultValueを変更しようとしているんですが、
その中の候補の一つに「規定値を設定しない」設定を組み込みたいと思っています。
しかし、Me.txtBox.DefaltValue = Nullではエラーが発生してしまってうまくいきません。
= ""だと、Null値ではなく、""が規定値となってしまうため、望み通りの形になりません。
この場合はどう設定するのが正しいのでしょうか?
145 :
144:2005/08/24(水) 14:08:10 ID:???
DefaltValue = "Null"でいけたっぽいです('A`)
・・・・
それはそれですごい。
DefaltValueの値になるのは"Null"ではなくて""の中身のNullだから別に凄いことじゃない。
文字列を設定したい場合は
"""設定したい規定値"""
もしくは
"'設定したい規定値'"
でやらないとダメ。
148 :
ゆか:2005/08/24(水) 23:16:28 ID:???
昨日の夜は居酒屋さんで女子バナに興じてしまい、
気持ちよくアクセスのことを忘れていました・・・
ちょっと皆さんのレスの内容についてけません・・・
とりあえず、ひとつひとつ実際にやってみます。
サブフォームつきの納品書作るのは百年早いのかなあって気がしてきました・・・
インヴォイスのフォームから、明細のフォームに移動するトグル?をつくって
それぞれ入力するようにしようかと考え中です。
それでクエリで何とかするような・・・
アクセスってむずい。
>>148 アクセスは簡単です。アナタの脳みその方がむずいです。
何か見当違いなことをしてるように思える。
150 :
NAME IS NULL:2005/08/27(土) 17:06:42 ID:sRWjFOQG
まいったよ
前任者は技術者の派遣だったらしいんだがテーブルに全然主キーが付いてねぇー
製品の管理履歴を取りたいんだが、会社も会社で統一的な商品コードがそもそも無く・・・
おまけに取引先からの商品データで商品型番とかがコロコロ変わる
こんなんでどうやって差分取れって言うんだよw
152 :
NAME IS NULL:2005/08/27(土) 18:29:04 ID:b5dDYpGB
教えて下さい。
登録されているお客様の住所を一気に変更(更新)すること出来ますか?
例えば、引越し等で住所が変わったお客様の住所を自動的に変更したいです。
主キーは電話番号にしています。
データには電話番号/住所/名前などが送信されてきます。
>>152 ちょっとエスパー。
送られてくるデータがCSV形式等、読み込みやすい形ならVBAでも使ってできるよ。
Excelで開いて、パーソナルなマクロからADO使ってAccess叩くあたりがありがちな実装かと。
ただ、旧電話番号と新電話番号が載ってないとキー引けないから辛いね。
>>153 MDBが対象なのに、何故わざわざ処理が遅いADOにするのさ。
DAOで充分でしょ。将来的にMDBではなくなるかもってのなら
別だが。
DAOはのうち無くなりそうな予感がなぁ……。
速さはピカイチだから俺はDAO使い続けてるけど。
アクセスって単独でファイルメーカーみたく社内LANで共有とかって出来ます?
できるよ。壊れやすいけど。Accessはスタンドアロン以外オススメできない。
158 :
NAME IS NULL:2005/09/01(木) 19:28:38 ID:LqWzcuP0
エクセルファイルからAccessテーブルにインポートしようとしたんですが、
セル中の文言の「改行」がレコードに全く反映されません。
改行をレコードの中に反映させるにはどのようにすればいいのでしょうか?
もしかして、Accessのデータベースって文章をデータとして入れることを
前提としていない(改行自体が無理ということ?)のでしょうか?
よろしくおねがいしますです。
Excelのセル内改行はLFで、CR+LFじゃないんだよね
Accessのフィールド内での改行はCR+LF
>>158 エクセルのセル内改行はコードが違うよ。確かLF。
REPLACEか何かでLF→CRLFな変換をせにゃならん。
ただ、Accessでは改行を含むレコードがあってもテーブル等の表示高さは一行分が基本だから、
変なところでドツボに嵌るよ。
162 :
161:2005/09/02(金) 00:54:09 ID:???
この過疎板で被るかっ?! スマソ
163 :
158:2005/09/02(金) 09:26:31 ID:EYKu1/Ic
エクセルの情報の中に文章(改行)となっているものがあって、
その情報をDBに入れた後、元のエクセルファイルの情報のまま、
別のエクセルファイルにエクスポートしたい、という目的で
質問しました。
>Excelのセル内改行はLFで、CR+LFじゃないんだよね
>Accessのフィールド内での改行はCR+LF
これは上記のエクセルファイルの情報(改行のある文章)を
改行したままDBに取り込む処理のことでしょうか?
ちなみに私はAccess初心者なので
「CR+LF」というのが何のことだがよく分からないです。
AccessVBAかマクロかなんかの処理でしょうか?
>>163 一旦Accessにインポートしたものをそのままエクスポートしたものを
Excelで見ると改行が落ちてるのか?
今やってるインポート/エクスポートの具体的な手順は?
それ以前に、Access経由する必要あるのか?
167 :
158:2005/09/02(金) 10:56:25 ID:Jv/kFWlg
>>165 申し訳ないです。エクスポートしたらちゃんと反映されていました。
ご迷惑おかけしました。
>>164 昨晩から一昼夜本を見ていろいろ考えてたんですが
万策尽きてあきらめモードに入ってしまってました。
根性が足りないですね、出直してきます。
そんなとこで恐縮なのですが、
リンク機能について質問です。
あるエクセルシートの内容をAccessテーブルにリンクさせたいです。で、
そのエクセルシートの「一部」の内容をテーブルの「一部」に
反映させたいのですがうまくいきません。
あくまでエクセルシートの構成のまましか反映させられないのでしょうか。
しかもデータ型が変に設定されてしまい、変更することもできないです。
どうすればいいのでしょうか。
>>167 「A1のセルの内容をB1のセルに反映させたいのです。」
こう聞かれても、A1の値をB1にコピぺしたいのか
B1の計算式に「=A1なんたら〜」と入れたいのか
どっちなのか判別つかない。
もうちょっと具体的に。
>>167 お前はどうしてそんなに説明下手なんだ? 病気?
170 :
158:2005/09/02(金) 13:16:32 ID:LeLo58NJ
>>169 すいません。
リンク使うのはあきらめます。
今仕事中でまわりに聞く人(Accessに精通してる人)がいないので
誠に恐縮ながら質問してます。
ここに書き込んでるの周囲にばれると気まずいので
急いで打っているのでどうしても説明が足りなくなりがちで
申し訳ないです。
>>168-169 は、ちょっと厳しい意見かなと思ったが、
>>170 で納得したよ。
Editorで疑問点をまとめる作業をすればよい。
2chには、それをコピペすればいいだけで、少し頭使え。
>>167 え、Excelにエクスポートしてセル内改行されてたらオッケーなの?
いやオッケーならいいけど。
(CR+LFになってるとエクスポートしたときにゴミが入ることになっちゃうしね)
あとリンクはシートそのまましかダメだったと思う。
173 :
NAME IS NULL:2005/09/04(日) 23:48:02 ID:r/HUsqS0
単純なクエリの抽出なのですが・・・。
区フィールド、町フィールドをクエリで作成して
そのクエリを元に抽出フォームを作成しました。
そして、クエリの抽出条件に以下の式を入力しました。
Like "*" & [Forms]![F_抽出]![区] & "*"
Like "*" & [Forms]![F_抽出]![町] & "*"
しかし、大本のデータに
[区]フィールド→品川区
[町]フィールド→空白
・・・と、どちらかが空白の場合、そのレコード
を抽出してくれません。
このように、空白フィールドを持つレコードをも
抽出するにはどのようにしたらようですか?
初歩的な質問で申し訳ありませんがよろしくお願いいたします。
697 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2005/09/04(日) 23:48:37
単純なクエリの抽出なのですが・・・。
区フィールド、町フィールドをクエリで作成して
そのクエリを元に抽出フォームを作成しました。
そして、クエリの抽出条件に以下の式を入力しました。
Like "*" & [Forms]![F_抽出]![区] & "*"
Like "*" & [Forms]![F_抽出]![町] & "*"
しかし、大本のデータに
[区]フィールド→品川区
[町]フィールド→空白
・・・と、どちらかが空白の場合、そのレコード
を抽出してくれません。
このように、空白フィールドを持つレコードをも
抽出するにはどのようにしたらようですか?
初歩的な質問で申し訳ありませんがよろしくお願いいたします。
基本的な質問ですんません
Accessで作ったファイルを、Accessの入ってないPCで使うには、
元のファイルを、開発者用の高価なAccessで作る必要がある
みたいな事を昔聞いたのですが、調べても情報出てきません
私の勘違いなのか、それとも他に方法はあるのか教えて下さい
180 :
NAME IS NULL:2005/09/10(土) 01:40:16 ID:33HAPUa/
質問です。
アクセスで、「次の誕生日までの日数」を計算したいんですが、
どなたかその方法をご存じの方、教えてください。お願いします。
エクセルでは =DATEDIF(TODAY(),DATE(YEAR(TODAY())+400,MONTH(G2),DAY(G2)),"YD")
で出来たんですけど。
クエリでやるなら
IIf(dateserial(year(date()),month([誕生日]),day([誕生日]))>date(),
dateserial(year(date()),month([誕生日]),day([誕生日]))-date(),
dateserial(year(date())+1,month([誕生日]),day([誕生日]))-date())
長いな
あ、先越された。
VBA版。
Sub Test()
MsgBox GetDaysUntilNextBirthday("1969/9/8")
End Sub
Function GetDaysUntilNextBirthday(a_dBirthday As Date) As Long
Dim l_dToday As Date
Dim l_dNextBirthday As Date
l_dToday = Date
l_dNextBirthday = DateSerial(Year(l_dToday), Month(a_dBirthday), Day(a_dBirthday))
If l_dToday > l_dNextBirthday Then
l_dNextBirthday = DateAdd("yyyy", 1, l_dNextBirthday)
End If
GetDaysUntilNextBirthday = DateDiff("d", l_dToday, l_dNextBirthday)
End Function
183 :
33HAPUa/:2005/09/10(土) 08:40:05 ID:33HAPUa/
181さん、182さん、早速ありがとうございました。
まだ初心者でVBAは敷居が高いため、クエリを使ってみました。
成功しました。ありがとうございます。
これからも頑張ってみます。
>>183 クエリでっていってるけど、それもVBAだぜ。
185 :
NAME IS NULL:2005/09/10(土) 10:09:14 ID:h/H18cOA
■■■■■■■■■■■■■■■■
■ ■ 違う板にコピペすると、四角の枠の中に
■ ■ メッセージとURLが現れる不思議な絵。
■ ■
■ ■ (その仕組みがリンク先に書いてある)
■ ■
■ ■ この原理を応用すると、まったく新しい
■ ■ コピペが作れる予感。
■■■■■■■■■■■■■■■■
187 :
33HAPUa/:2005/09/10(土) 19:30:52 ID:33HAPUa/
>>184 え゛ッ!? そうなんですか?
>>181さん、もう一つだけ助けていただけますか?
誕生日が空欄の場合、次の誕生日までの日数が「♯Error」となりますが、
これを回避して例えば空欄を返させることは出来るんでしょうか?
初心者なりに、冒頭に IIf([誕生日]="","", なんて入れてみましたが、
そしたら計算結果が全て「♯Error」になってしまいましたA^^;
188 :
182:2005/09/10(土) 19:45:32 ID:???
まだまだ使えるにも聞いてやれよ……。
空欄ってのが普通にNull値なのか""をわざわざ入れているのか分からないけど、
Null値だったら↓でいけるんでね? 更に長くなるけど。
IIf(IsNull[誕生日],null,
IIf(dateserial(year(date()),month([誕生日]),day([誕生日]))>date(),
dateserial(year(date()),month([誕生日]),day([誕生日]))-date(),
dateserial(year(date())+1,month([誕生日]),day([誕生日]))-date())
)
それはともかく A^^; が (^A^;) に見えた
189 :
33HAPUa/:2005/09/10(土) 20:48:58 ID:33HAPUa/
ありがとうございます! 大成功しました。
一つだけ、頑張って問題解決しました。
最初の行の[誕生日]の前後を括弧で囲わなきゃいけないんですね。
いやいや勉強になります。
ありがとうございました!
>>189 もうVBAを使ってるんだってわかったでしょ???
IIfとかDateSerialとか、いろいろと用意されてる関数を組み合わせて使って
るだけだよ。・・・日付型のフィールドなんだから、"" はないっしょ。
せっかく教えてもらったんだから、関数の仕様ぐらいヘルプで見て覚えれば。
初めまして。
Paradox使用でのSQLについての初歩的な質問です。
他サイトでの説明が理解できないぐらいのレベルなのですが
どうか御教授よろしくお願いいたします。
select A.管理番号,A.設置年度,B.布設年度
from A,B,C
where (B.作業番号 = C.作業番号 and B.手順番号 = C.起点番号)
and (A.作業番号 = C.作業番号 and A.起点番号 = C管路.起点番号)
and (B.布設年度 like '%S%')
B.布設年度は「S58、H08」などで書かれています。
A.設置年度は「1999」などの西暦で入力されています。
B.布設年度を西暦に変換し、尚且つA.設置年度と合っているかどうかを調べたいのです。
以下の文はAccessでのSQLの文です。
and (substring (B.布設年度,2,1) <> '0')
and ((A.設置年度)<>(substring(B.布設年度,2)+1925))
上記2行のAccessの文はそのままParadoxに持っていく事が出来ません。
どのように変更したらよいでしょうか?
皆様よろしくお願いいたします!
>>191 ここはAccessのスレであってParadoxのことを教えるところではない。
> 以下の文はAccessでのSQLの文です。
WHEREを抜粋したんだろうが、1925を加算してるということは昭和しか
考慮してないぞ。平成はどうした?
substringがAccessで使用できるSQLの関数(VBAではなかったはず)
であって、これに変わるParadox用の関数を探せばいいだけだろ。
でもよ、文字列と数値とごちゃ混ぜにするなよ。
Accessでは(回答は一つではない)オレの場合、文字列でNullはない
としたら、A.設置年度 <> Format(CDate(B.布設年度 & '/01/01'), 'yyyy')
数値で比較する場合なら、Yearとか使えるな。
194 :
192:2005/09/13(火) 00:36:26 ID:???
>>193 たまたま、暇だったので。やぁ、マルチとは気が付かなかった。
195 :
ビギナ:2005/09/14(水) 00:44:35 ID:LEHKDPdA
フォームの [レコードセット] プロパティを [ダイナセット (矛盾を許す)] に
設定する方法を教えてください。
簡単すぎる質問でスミマセン。アクセスを使える友達が皆無なので。
197 :
NAME IS NULL:2005/09/14(水) 13:19:30 ID:rn335wAJ
select (case 年 when 1999 then 売上 end),
(case 年 when 2000 then 売上 end),
(case 年 when 2001 then 売上 end)
from 年間売上
というように、
行方向のデータを列方向に入れ替えたいのですが、
"1999" "2000" "2001" の値を動的に変えたい場合は
どのように書いたら?
クロス集計
ってマルチかよ。答えて損した。
【帰ってきた】SQL質疑応答スレ
http://pc8.2ch.net/test/read.cgi/db/1124178925/18 18 名前:NAME IS NULL[] 投稿日:2005/09/14(水) 13:22:31 ID:rn335wAJ
select
(case 年 when 1999 then 売上 end),
(case 年 when 2000 then 売上 end),
(case 年 when 2001 then 売上 end)
from 年間売上
というように、
行方向のデータを列方向に入れ替えたいのですが、
"1999" "2000" "2001" の値を動的に変えたい場合は
どのように書いたら?
おそらく次は
「2000年の売上がないと2000年の列が抜けてしまうのでどのように書いたら?」
とかいう質問で攻めてくるはずなんで、華麗にスルーよろ。
202 :
ビギナ:2005/09/14(水) 22:18:36 ID:LEHKDPdA
>>196 ありがとうです。フォームのデザインでプロパティを開くんですね。
やっと分かり、データ更新が出来るようになりました。感謝です。
Form で、
Me.Filter = "なんとか"
Me.FilterOn = True
した直後に、Me.Recordset.RecordCount (見つかったレコード数)を見たら、
1件だった。でも何秒かたつと、11件とかになってる。
恐らく、探してる最中だからだと思うので、Filterし終わったかどうか解るプロパテ
ィを探したんだけど無さそうだ。
見つかったレコード数をうまく取得出来る方法わかりますか?
Recordset.MoveLast
した後
Recordset.RecordCount
を取得。
205 :
203:2005/09/16(金) 17:04:13 ID:???
おお!出来た。
さんきゅー!
>>205 いいのか???カレントレコードが最終レコードになってしまわんか?
MoveFirstして戻せばいいのだが、それでは美しくない。
Recordset ではなく RecordsetClone を使えばいいぞ。
まだまだ使える は、まだまだダメだな。
207 :
203:2005/09/20(火) 11:48:47 ID:???
ほうクローンはその為にあったのか。
さんきゅー
208 :
ビギナ:2005/09/20(火) 23:39:24 ID:lMXR0Sjb
リレーションシップを組んだ二つ以上のテーブルで、リレーションシップを
維持したままサブテーブルの主キーを書き換える方法はありますか?
エクセルから読み込んだサブテーブルなのですが、このテーブルの主キーを
オートナンバー型にしたいので。
209 :
ビギナ:2005/09/21(水) 00:49:43 ID:uBWJug7c
手作業で何とかなりました。お騒がせしてスミマセン。
Accessのどのバージョンでも良いんだけど、cmからtwip計算する関数って標準で提供されてない?
自分で作れば良いんだろうけどすでにあるならそっち使おうと思ったもんで。適当にぐぐった限りじゃなさそうだな。
VBAでも構造体使えたんだな。知らなかったorz
212 :
NAME IS NULL:2005/09/22(木) 15:11:57 ID:iJwi4c/i
超初心者です。
在庫管理のためのデータベースを作ってます。
レポートを印刷させられるところまで辿り着きました。
在庫がゼロの場合だけ、印刷させないようにするには、
クエリをいじればよいのですか?それともレポートをいじれば
よいのでしょうか?
また、何か式を入れなければならない場合の対処方法も教えて
いただければ幸いです。
よろしくお願いします。
>>212 オープン時に
if 在庫がゼロ then
cancel = true
上司がわからないのにAccess使いはじめて
むちゃくちゃな記述するんだが
>>214 勝手に修正してコメントいっぱい入れてやれ
例えばこんな感じです。
もしこの記述が正しいのなら・・・教えてくださいΣ
DoCmd.RunCommand acCmdSelectRecord = Me.NewRecord
(゚∀゚≡゚∀゚) ネ申キター !
219 :
超初心者:2005/09/22(木) 19:05:22 ID:F5FWZ4Zn
教えてください。フォームのプロパテイのコントロールソースで造った値ってテーブル等に反映されないんでしょうか?
>>219 なにその最高に何も理解してない質問。ふざけてるの?
221 :
NAME IS NULL:2005/09/22(木) 19:59:06 ID:vrbfqQj3
>フォームのプロパテイのコントロールソースで造った値
SQLの事かい?
>造った値
ってところでもうワカンネ
>>212 >>213 データが無い時のイベントがあるだろう。
そこで、メッセージでも出して終われや。
223 :
超初心者:2005/09/23(金) 09:10:03 ID:R/KvhLLe
213さん、ありがとうございました。
実はもうひとつ壁があります。期間をフォームに入力して
期間内の入荷出荷のレポートを作成したいのです。
フォーム内に期間を入力するテキストボックスを作り
ボタンを押すと印刷プレビューが出るところまではできました。
が、印刷内容の中に入力した期間が入ってませんでした。
レポートデザインでフォーム内のテキストボックスと同じ
名前をつけたら、印刷できるようなのですが、
フォーム内のテキストボックスが使用できなくなってしまいました。
このふたつを両立させるためにはどうしたら良いのでしょうか?
ご存知のかたいらっしゃいましたら、ご教授願います。
>>222 在庫がない状態=レコードなしであるとは書いてないからそんな早漏判断できません
>レポートデザインでフォーム内のテキストボックスと同じ
>名前をつけたら、印刷できるようなのですが、
>フォーム内のテキストボックスが使用できなくなってしまいました。
そんな機能があるなんて全く知らないのでこれの対処方法については答えられないけど
フォーム上のテキストボックスと「同じ名前」とか関係なく、
抽出期間表示させたいレポート上のテキストボックスのコントロールソースに、
=[Forms].[フォーム名].[フォームのテキストボックス名]
と入れて参照させれば良いだけなんじゃないの?
227 :
NAME IS NULL:2005/09/23(金) 14:17:43 ID:OrHaLcln
質問です宜しくお願い致します。
9月から1日の売り上げをつけているのですが、親フォーム[会社登録]・サブフォーム[売上げ管理]で入力時に、カーソルを当日に
あわせること出来ますか?毎日9月1日にカーソルがいってしまうのでよい方法ありましたら教えてください。
日付をどんな形で収めているか不明
当日のレコードがいつ発生しているか不明
入力する時に当日で新規レコード作られるってんなら、
とりあえずlラストレコードに移動しとけば良いじゃん。
もしくはフォームをデータ入力用にするとか。
229 :
NAME IS NULL:2005/09/23(金) 17:09:56 ID:OrHaLcln
>228さんありがとうございます。
先に一ヶ月分の日付をインポートしておいて金額と件数を入力しています。
訳あって先に日付だけ登録しておかないとダメなんです。
>>229 その日付が普通に2005/09/01と入っているならば
Private Sub Form_Open(Cancel As Integer)
Me.Recordset.FindFirst "日付 =#" & Date & "#"
End Sub
でいけるんでね?
型を意識しないVBAな人たち。
233 :
NAME IS NULL:2005/09/24(土) 09:56:38 ID:4Mmv3jCs
質問しっぱなしで消えるの多すぎだな。解決したのかしないのか。
∧ ∧ ┌─────────
( ´ー`) < シラネーヨ
\ < └───/|────
\.\______//
\ /
∪∪ ̄∪∪
>>233 俺は「解決しました」とか「ありがとう」とかの
レスは書かないことにしてる。スレの無駄遣い。
あと解決しなくて追加質問をくり返すと
ウザいといわれるからそれもしない。
一問一答形式の掲示板というのは有用そうで
あまり有用ではない。
>>235 お礼レスはいらんが、回答が正しかったのか欲しいな。
過去ログ検索した時に投げっぱなしジャーマンだと本当に有用だったのか分からんし。
>>235 人に質問する駆け出し小僧が何偉そうなゴタクを並べてる。
>>236 のような考え方を持て。
>>237 報告しないというのも人の勝手だし
報告が欲しいというのも人の勝手。
勝手がぶつかれば自分を優先するのは当たり前。
ちなみに俺は報告しないというだけであり、
君のように人に考えを押しつけたりはしないからな。
>>238 まぁ、答えてやるのもそいつの勝手だしな。
回答が役立ったのか分からないのが連続して回答者がやる気失うのもそいつの勝手でどうしようもない。
答えたがりのバカは無限に沸いてくるから大丈夫
どんな状況になってもまだまだ使えるだけは答えにやってくるさ
>>238 考えを押しつけてるんじゃなくて、当然の事じゃないの?
ありがとうのお礼とは違うが、礼儀だろ。
バカにバカで無い様に振舞えというのは無茶というもの。
>>244 それを礼儀と考えるのは君の勝手だ。
自分はそれは礼儀でも何でもなく、スレの無駄遣いと考える。
スレは質問・回答の当事者間だけのものではなく、
たくさんの第三者が利用する共同の場である。
必要最小限の発言のみで効率的に使うことが重要だ。
当事者間の儀礼的な発言などは、他者にとってスレを見にくくし
スレ消費を早めるだけだ。
>>247のレス→無駄
回答が有効だったかのレス→必要
249 :
ビギナ:2005/09/26(月) 00:15:52 ID:bj/4xseD
>>247 おまえが存在してること自体、スレの無駄使いだ。
この板で助けてもらったことのある人間の一人として、
真摯に答えてくれる方々に対して申し訳が立たない。
二度と書き込むな、このアホ!
250 :
NAME IS NULL:2005/09/26(月) 02:27:42 ID:KK8fXz6Q
|・ω・`)あの・・・初心者で恥ずかしいんですけど、
クエリをHTMLにエクスポートしたときに、列幅がコントロールできなくて、
URLの入った列だけ、URLの長さの最長のセル幅になってしまうでつ(つДT)
どなたか方法教えてください_ト ̄|○
252 :
NAME IS NULL:2005/10/03(月) 20:41:50 ID:11vY/JMK
質問です。
ACCESSの機能に「フォームフィルタ」なるものが
ありますが、これを使うとフォーム上に作った
コマンドボタンが使えなくなります。
フォームフィルタボタンを押し、現在フォーム上でアクティブになっているフィールド(テキストボックス)の
内容一覧を一覧フォーム(別途作成済みで、GROUP BY でまとめるつもり)に一覧として出し、
その別途作成したフォームのListBoxを選択すると、
その内容が元のフォームのアクティブだったテキストボックスに反映される。
これをいくつかのテキストボックスで繰り返して、最後にフィルタの実行をしたいのです。
ご指導お願いします。
トリプルマルチ乙
757 名前:NAME IS NULL[] 投稿日:2005/10/03(月) 20:30:39 ID:11vY/JMK
作って欲しいというか、質問です。
ACCESSの機能に「フォームフィルタ」なるものが
ありますが、これを使うとフォーム上に作った
コマンドボタンが使えなくなります。
フォームフィルタボタンを押し、現在フォーム上でアクティブになっているフィールド(テキストボックス)の
内容一覧を一覧フォーム(別途作成済みで、GROUP BY でまとめるつもり)に一覧として出し、
その別途作成したフォームのListBoxを選択すると、
その内容が元のフォームのアクティブだったテキストボックスに反映される。
これをいくつかのテキストボックスで繰り返して、最後にフィルタの実行をしたいのです。
ご指導お願いします。
757 名前:NAME IS NULL[] 投稿日:2005/10/03(月) 20:30:39 ID:11vY/JMK
作って欲しいというか、質問です。
ACCESSの機能に「フォームフィルタ」なるものが
ありますが、これを使うとフォーム上に作った
コマンドボタンが使えなくなります。
フォームフィルタボタンを押し、現在フォーム上でアクティブになっているフィールド(テキストボックス)の
内容一覧を一覧フォーム(別途作成済みで、GROUP BY でまとめるつもり)に一覧として出し、
その別途作成したフォームのListBoxを選択すると、
その内容が元のフォームのアクティブだったテキストボックスに反映される。
これをいくつかのテキストボックスで繰り返して、最後にフィルタの実行をしたいのです。
ご指導お願いします。
254 :
NAME IS NULL:2005/10/05(水) 13:53:19 ID:au6xLt0Y
相談が・・・・。
ユニオンクエリを使うと処理重くなる?
使わないほうがいいでしょうか・・・_no
使うな
256 :
NAME IS NULL:2005/10/05(水) 14:11:55 ID:au6xLt0Y
ユニオンクエリを使うことは危険ですか?
別に使っても怪我したりしないよ
データ量やインデックス、マシンスペックにもよるから一概に
ユニオンがどうこうは言えないけど、そこまで気にするなら
Accessは使うなと言いたい。
259 :
NAME IS NULL:2005/10/11(火) 13:25:26 ID:eY3QPgeO
∧ ∧ ┌─────────
( ´ー`) < 質問ばっか支店じゃねーよ
\ < └───/|────
\.\______//
\ /
∪∪ ̄∪∪
260 :
NAME IS NULL:2005/10/14(金) 10:14:32 ID:7b+y5+h/
ACCESS + SQLサーバー ODBC接続でテーブルをリンクしています
クエリはMDB側に置いて、パススルークエリを作ると参照専用になるのですが、
新規登録やデータ追加用のフォームのレコードソースにしたい場合どうしたらいいのでしょうか?
262 :
260:2005/10/17(月) 08:24:49 ID:StB3CPrN
>>261 ADPで作ってみた。
今度はテーブル自体が書き込みできない・・・ なぜ
エンタープライズマネージャーで直接テーブルを開くと新規入力できるのに。
263 :
NAME IS NULL:2005/10/17(月) 09:22:19 ID:Ao7nfUPa
>>262 ∧ ∧ ┌────────────────────────
( ´ー`) < 主キーのねーテーブルなんか作ってんじゃねーよ
\ < └───/|───────────────────
\.\______//
\ /
∪∪ ̄∪∪
264 :
NAME IS NULL:2005/10/17(月) 15:06:51 ID:RkdijXIe
すいません質問です。
工事ごとに、必要な商品を登録していくフォームを作成してます。
商品マスタから、価格等のデータを引っ張ってくるクエリを作成して、それを元に入力フォームを作成
したのですが、そこで引っ張ってきた、価格等のデータを、データを収めたいテーブルに保存するのには
どうしたらいいのでしょうか?
もちろん、データを収めらいテーブルにも、価格フィールドが存在します。
すいません、ご指導のほどを
マスタの金額と保存先テーブルの金額が違わないんだったら保存する意味すらないと思うが、そこはさておき
そのコピーをいつしたいのかが問題。
ついでにフォームが単票なのか帳票なのかでベストなやり方も違ってくるんじゃなかろうか。
266 :
260:2005/10/18(火) 02:45:31 ID:???
>>263 ADPでもう一回主キー新ためて設定しなおしたら、入力可能になった
感謝!
シラネーヨに感謝するのは俺ぐらいか?
267 :
260:2005/10/18(火) 03:29:41 ID:???
>>263 ネーヨもう一つ教えてくれ
ADPのストアドフプロシージャで、MDBでいう削除・追加クエリを実行した時に、
「ストアドプロシージャは実行されましたが、レコードは返されませんでした」
のメッセージが出ないようにするにはどうすればいいの?
268 :
NAME IS NULL:2005/10/18(火) 08:54:21 ID:GuM56ZBK
∧ ∧ ┌────────────────────────
( ´ー`) < CurrentProject.Connection.Executeも調べねーで聞いてんじゃねーよ
\ < └───/|───────────────────
\.\______//
\ /
∪∪ ̄∪∪
269 :
260:2005/10/18(火) 13:05:27 ID:???
>>268 できた またまた ネーヨ サンクス
DoCmd.OpenStoredProcedure
↓
db.Open Source:=
でいけたよ
270 :
NAME IS NULL:2005/10/20(木) 10:09:46 ID:uWpKh7qa
Access 2002 更新プログラム (KB904018)を充てると
Excel ブックへリンクされるテーブルのデータの編集追加、または削除できなくなるよ。
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
代替できる DoCmd は使わない
273 :
NAME IS NULL:2005/10/25(火) 21:27:32 ID:ZyNwGVC1
A | B | C | D |最大 |最小
10 | 15 | 13 | 18 | 18 | 10
30 | 45 | 28 | 40 | 45 | 28
Access2002のクエリで同一レコードの最大・最小を出したいのですが、
どのような式を書けばいいのですか?
IIFでチマチマ判定してけば?
A,B,C,Dで最大最小の値が必要になるようなデータ構造だったら
primarykey class value
---------------------
1 A 10
1 B 15
1 C 13
1 D 18
2 A 30
2 B 45
2
途中で送信しちゃった。
……と、一概には言えないけど↑のような設計にした方が良い
277 :
んんんん:2005/10/28(金) 09:53:18 ID:8DhZasaS
すいませんが生年月日から年齢をだす式教えてください
>>277 DateDiff("yyyy",#生まれた日付#,#今日の日付#)
279 :
んんんん:2005/10/28(金) 11:32:37 ID:wdx+uFOp
ありがとうございます。もうひとつよいですか?
3.5>で0.8
2.8〜3.4で0.9
2.7<で1.2
と出したいのですが?
IIF
281 :
NAME IS NULL:2005/10/29(土) 00:13:29 ID:PK+fR/O+
すんませんが、
ACCESSってーのはネットワーク共有はできるんですかね?
181 名前:デフォルトの名無しさん[] 投稿日:2005/10/28(金) 01:40:44
accessってネットワーク共有できますか?
283 :
NAME IS NULL:2005/10/29(土) 02:45:26 ID:PK+fR/O+
??
>>282 あーそれもオレオレだw
聞いてみたが
この板に行ったほうがいいじゃねと書かれてたんで来たんだが・・・
ここでも無理か・・・
できるよ
Accessといっても所詮はファイルだ。共有設定さえすれば
いいわけだが、データのWriteに関する処理は要注意ぐら
いだろう。
MSDE+ADP使え
287 :
NAME IS NULL:2005/11/04(金) 11:13:05 ID:cqr8DVee
仕様書でAccessで数値型(整数型)で長さが6と2に設定しないといけない
場所がありますが、数値型だと設定ができませんよね。
なにか方法あります。
求めていることが理解できない
000001と01と"表示"したいのか?
それともテーブルに000001と"格納"したいのか?
289 :
NAME IS NULL:2005/11/04(金) 11:34:15 ID:cqr8DVee
>>288様
テーブルに000001と"格納"したいのです
説明下手ですみません。
何のためにそんなことする必要があるのか分からないので
テキスト型にしる
としか言えない。
289は
数値型で1としてテーブルに格納し、
テーブル・クエリ・フォーム・レポート等で「000001」と表示させる術を知らないらしい。
>>291 いやいや、そんな単純な理由であるはずがない!
俺らには想像も出来ないくらい高度なことをやろうとしているんだよ多分。
「お題」
1
01
001
0001
00001
000001
以上をすべて異なる値として区別する必要があり
なおかつ数値型でなくてはならない。
294 :
NAME IS NULL:2005/11/04(金) 19:00:38 ID:iezdmujP
俺の回答
数値型の意味がわかってないボケナスをクビにする
>>279 引っ掛かんなよ。
12/31 に生まれて翌日の 1/1 に 1 歳になるのがお前の求めている年齢か?
>>293 > 以上をすべて異なる値として区別する必要があり
既に答えは出ている。区別するためのフィールドを作れよ。
馬鹿にかまうな
299 :
NAME IS NULL:2005/11/05(土) 10:52:14 ID:eo1C/tlq
287の仕様書にはカラムの属性に
PIC 9(6).
と書いてあると勝手に推測してみる
Access2003で、二つのコンボボックスを連動させたいと思っています。
コンボボックス1において、あるテーブルの値A、B、Cを選択できるようにし、
例えばそこからAを選択するとコンボボックス2で、あるテーブルの値D、E、Fを、
Bを選択すると別のテーブルの値G、H、Iを選択できるようになる。
このように連動させるやり方があれば、教えていただけたら幸いです。
色々本を漁って組んではみたものの、バグが発生して…orz
>>300 えーと、バグが発生しちゃうやり方書いてみて
つ
1.コンボ2のデータソースは空白
2.コンボ1の更新後afterupdateのイベントに
1)データソースの書き換え
2)コンボ2のデータソースの再クエリを記述
マクロでは無理っぽいかな? っていうか
無用にテーブルを分けるよりも、テーブルを同じにして
区分フィールド持たせるなら、マクロでいける
マクロで、とは書いてないし問題なかろう
305 :
300:2005/11/10(木) 12:57:59 ID:???
>>301 すみません、バグは何とか自己解決しました。
クエリビルダを使って、抽出条件として
[forms]![フォーム名]![テーブル名]
を入力し、試験してみたら、パラメータ云々と出てうまく動かなかったので…
恐らく、テーブル名を間違ってたんだと思います。
んで、コンボ1にAに対してコンボ2にD、E、Fを表示する所まではできたんですが、
Aに対してD〜F、Bに対してG〜Iと、多対多の連動はまだうまくいってない現状でして…
>>303 多対多の連動は無理なんでしょうか…?クエリを使えばいけそうな気がするんですが、
いかんせん方法が良く分からない無知な者でして…もし無理でしたら、
>無用にテーブルを分けるよりも、テーブルを同じにして
>区分フィールド持たせるなら、マクロでいける
これについて詳しく教えていただけると幸いです
>>305 [forms]![フォーム名]![テーブル名]って何だよ!!テーブルじゃなくて、コント
ロール(フィールド)だろ。で、オマエが言ってるのが本当に多対多なのかわか
らん。言葉を理解してないようだし。横着しないで、基礎をちゃんと勉強しろよ。
Forms.Form.Controlって参照の仕組みを理解するのはけっこうハードル高いけどな
>Forms.Form.Controlって参照の仕組みを理解するのはけっこうハードル高いけどな
北風商事のアレが判り易かった気ガス・・・
って優香、今のAccEssって紙のマニアル付いて無いの?
インストール方法ぐらいじゃね?
「画面の指示に従ってください。」って書いてあるやつ。
Office 2003 Pro を買ったんだけど、「スタートガイド」という名の
薄いマニュアルが1冊のみ。
内容はセットアップ手順とかセキュリティの設定だけ。
アプリの使い方ならオンラインヘルプで十分だろ、ということか。
昔みたいなリファレンスが付いてたとしても今さら見ないけど、本当に
初心者だと紙媒体で欲しくはなるかもね。
プログラムのインストールにガイドブックが必要な香具師に
Access売りつけるところが、マイ糞ソフトのニクイとこだね
Accessの最近のVerってサンプルプログラム無いの?
>>305 >無用にテーブルを分けるよりも、テーブルを同じにして
>区分フィールド持たせるなら、マクロでいける
同じ構造のテーブルを分けて作っている場合は1つにしましょうってこと。
e.g.
(社員テーブル)社員コード、名称
(役員テーブル)役員コード、名称
とかいうテーブルが2つあったとすると、
(社員テーブル)社員コード、名称、役職
と1つにして、役職をコンボ2の抽出条件に役職を入れてあげれば、
参照時にテーブルを切り替えるのと同じ結果にできるってことです。
っていうか、具体的なテーブル構造とかが分からないと答えようも
ないような・・・
遅レスですが
以前どこかのサイトで拾って、シンプルでいいなと思った年齢計算関数
Public Function Nenrei(ItsuUmare As Variant) As Variant
On Error GoTo KeisanDekine
Dim Tanjoubi As Date
If IsNull(ItsuUmare) = True Then
Nenrei = "" 'Nullでもいいかも
Exit Function
End If
Tanjoubi = DateSerial(Year(Date), Month(ItsuUmare), Day(ItsuUmare))
If Tanjoubi <= Date Then
Nenrei = Year(Date) - Year(ItsuUmare)
Else
Nenrei = Year(Date) - Year(ItsuUmare) - 1
End If
Exit Function
KeisanDekine:
Nenrei = "" 'Nullでもいいかも
End Function
正直どこがいいのか分からない。
識別子の名前も適当だし、Variant を多用する必要性もよく分からない。
特に閏年の補正をしていないのは、年齢計算としては致命傷だと思う。
あ、別にケチを付けているわけではないです。
これがいいと思う、という掛け方は建設的で嬉しいんですが、どこが
いいのか具体的に説明してもらわないと、良さが伝わってこないという
ことで。
>シンプルでいいなと思った
年齢が 1 歳くらいズレても構わん、コードさえ短けりゃいい、という
意味か?
なら
>>278 で十分だと思うが。
その手の何ちゃって年齢関数でよいのなら、もっと短いのがある。
有名なのが「Int((Date() - BirthDate) / 365.25)」。
でも漏れの感覚だと、「シンプルでいい」というのは、仕様を十分に
満たした上での話で、年齢を求める仕様でズレが発生するなら、
ロジックがいい悪い以前に、そもそも論外という気がするが。
319 :
317:2005/11/12(土) 17:15:45 ID:???
>>318 スマン。
空気が読めずにマジツッコミした漏れが間違ってた。
逝ってくる。
320 :
NAME IS NULL:2005/11/13(日) 10:44:32 ID:7Ouhsiyq
教えて下さい。
商品お届け日付より3週間〜5週間後のデータを抜き出す事は可能ですか?
宜しくお願いします。
>>320 お届け日時に+3週間+5週間した日付でbetween
AccessVBAはバグが多いって聞きますがどうなのでしょうか?
実際にVBAでプログラムを作っているのですが、予期せぬエラーが多発しています。
ステップ実行だとうまくいき、そのまま実行させるとうまくいかないなどの現象があります。
VBAは使わず、VBでやったほうがいいとも聞きましたがいかがでしょうか?
323 :
NAME IS NULL:2005/11/13(日) 15:28:55 ID:7Ouhsiyq
>>321さん ありがとうございます。
説明不足ですいません。お届け日時がバラバラにたくさんあり、
その中から(本日(任意)時点で)商品お届け後3週間以上〜たっているデータを
抽出したいのですが、出来ますか?
フィールド | Int([お届け日時])
表示 | □
抽出条件 | >=Date()-21
325 :
324:2005/11/13(日) 15:40:23 ID:???
○ <=Date()-21
× >=Date()-21
>>326 VBAにはバグが多いのか、ある程度回避できるものばかりかを
聞いてるだけのようにみえますが。横レス
VB でやる
↓
同期実行を理解していないので、同じところで引っかかる
↓
言語のせいと脳内結論を出す
↓
「VBは使わず、Java でやったほうがいいとも聞きましたがいかがでしょうか?」
という質問を VB 板でして、「じゃ Java でやれば?」と言われる
以下、言語を取っ替え引っ替えしつつ永久ループ
予期せぬエラーねぇ……w
バグは通常、ソースコードに含まれている
カニチャーハン・リッチー
でも、エラー番号2401(?)だっけかな、訳わからんエラーが発生する事が
あるぞ。MSでは、サポートしないとか公言してるエラー番号です。
どんなとき発生するんだ?
たまにはいいじゃん
データぶっ壊すようなエラーじゃなければさ
自分の書いたコードが原因で出たエラーをバグのせいにして
製品を乗り換えるスレはここですか?
トヨタ カローラは事故が多いって聞きますがどうなのでしょうか?
実際にカローラで通勤をしているのですが、予期せぬ事故が多発しています。
赤信号で停止するとうまくいき、そのまま突っ込むとうまくいかないなどの現象があります。
カローラに乗らず、ホンダ アコードに乗ったほうがいいとも聞きましたがいかがでしょうか?
コンパイラーの返すErrorNumberなんて
所詮、おみくじみたいなモンでしょ
ランタイムエラージャネ?
>>336 本人はうまい例え話だと思ってるのかもしれないが、
何誤爆してるんだろ、こいつって思った・・・
もうちっと練り直して来い
340 :
NAME IS NULL:2005/11/16(水) 12:27:36 ID:ymkmr5gQ
ACCESS2003からOracleにODBC接続でリンクテーブル貼ってるんですけど
なんか上手い行ロック方法ってあるんでしょうか??
自前で作らなきゃ駄目?
341 :
NAME IS NULL:2005/11/27(日) 10:07:43 ID:OFfwtD3X
Outlook の予定表などのアイテムを C# や VB で
いじっているんですが、Outlook の pdb ファイルって
mdb ファイルと何か関係があるモノなんでしょうか?
Access でのプログラミングと同じような感覚で
扱えるので、実は中身はほとんど同じ?などと
ちょっと疑問に思ってました。
342 :
NAME IS NULL:2005/11/28(月) 11:38:45 ID:6oTI9b/Z
EMPLOYEEというテーブルの
FirstNameが'Franklin'でLastNameが'Wong'という奴が
管理している社員の名前を全員出す、というのをやりたいんです。
EMPLOYEEには
FirstName
LastName
SSN(社会保障番号)
SUPERSSN(管理「している」奴(つまりボスの)の社会保障番号)
という属性があります。
Relational Algebraでは
R1 = π SSN (σ FName='Franklin' LName='Wong'(EMPLOYEE))
と一旦結果を抽出してから
π FName, LName(σ SUPERSSN=SSN(EMPLOYEE * R1))
とやるんでしょうが、最初の抽出結果のSUPERSSNと元のEMPLOYEEのSSNとを
アクセスで比較する方法が分かりません。
R1のクエリーを作ってからそのクエリーをまるでテーブルのように
追加するまではやったんですが、「=R1.SSN」なんて打っても
「=[R1][SSN]」と勝手に修正されてパラメーターを打てと言われますし、
どうすればいいのか分かりません。
もう後一歩ですよね?ね?どうか教えて下さい。m(__)m
343 :
NAME IS NULL:2005/11/28(月) 11:47:05 ID:6oTI9b/Z
訂正:
最初の抽出結果のSUPERSSNと元のEMPLOYEEのSSNとを比較
↓
最初の抽出結果のSSNと元のEMPLOYEEのSUPERSSNとを比較
878 名前:873[] 投稿日:2005/11/22(火) 07:18:59 ID:/nExEZZR
じゃ、頼まねぇよ、ばーーか。( ´,_ゝ`)プッ
ここって質問OKですか?
Access2000を使ってプロジェクト管理システムを作ってます。
レポートに各社員の工数集計を出したいのです。
一応出すことは出来るのですが、一列にしか出てきません。
今はこんな感じで出力されてます。
aaa 2.35
bbb 13.6
ccc 0.47
これを次の様に表示するにはどうすればいいのですか?
aaa 2.35 bbb 13.6
ccc 0.47
347 :
345:2005/11/28(月) 23:45:36 ID:???
即レスありがとうございます。
書きそびれてしまってたのですが、その社員表を出力するセクションは詳細のところなんです。
ページ設定で変更した場合、ヘッダーまで2列になったりしないのでしょうか
試してから書き込めよカス
>>342-343 SELECT *
FROM EMPLOYEE
WHERE SUPERSSN=
(SELECT SSN FROM EMPLOYEE WHERE FirstName="Franklin" And LastName="Wong");
とか
SELECT *
FROM EMPLOYEE
WHERE SUPERSSN=
DLookup("SSN", "EMPLOYEE", "FirstName='Franklin' And LastName='Wong'");
とか
SELECT *
FROM EMPLOYEE
INNER JOIN
(SELECT SSN FROM EMPLOYEE WHERE FirstName='Franklin' AND LastName='Wong')
AS T
ON EMPLOYEE.SUPERSSN = T.SSN;
とか、好きに組み合わせればよいのでは。
講義で概念は取ったけど、触ったことはあまりないのかもね。
最初のうちは、クエリのデザインビューと SQL ビューを切り替えながら
見比べると、それなりに理解の助けになると思うよ。
帳票形式でフォームを表示し、テーブルの一覧を出しています。
新規レコードを追加するフィールドがありますが、一覧の一番下に表示されますよね。
あれを一覧の一番上に表示させるにはどうしたらいいんでしょう
354 :
NAME IS NULL:2005/11/29(火) 19:23:21 ID:IUhAO6Ov
ACCESS2000 で、ACCESS の currentproject.connection に対して
BEGINtrans してもトランザクションを開始できません。
例えば、以下のように
currentproject.connection.Begintrans
currentproject.connection.Rollbacktrans
とすると、1行目でトランザクションを開始しているにも関わらず2行目の実行時に
Committrans または Rollbacktrans するには Begintrans が必要です。
というエラーが発生してしまいます。
Begintrans または別の方法でトランザクションを行う方法を、どなたか
ご存じありませんでしょうか。
トランザクションを開始したコネクションを、どこにも保持してないやん。
変数に保持しとき。
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.BeginTrans
cnn.RollbackTrans
356 :
354:2005/11/30(水) 15:06:24 ID:???
>355
ありがとうございました。その通りの方法で解決出来ました。
ヘルプをよく読みなおしたら、currentproject.connection で指定したconnectionは
常に本来のcurrentproject.connection のコピーなのですね…てっきり代入しなければ
参照になるものだと勘違いしていました。
レコードを削除したために、オートナンバーが飛んでしまうことがあります。
参考書を頼りに、元テーブルのコピーを作って作成し直しました。
確かにオートナンバーは調ったのですが、ひとつ困ったことがおきました。
元テーブルにYes/No型のフィールドがあり、テーブルのデザインビューで見るとチェックボックスコントロールになっています。
ところがオートナンバーを振り直したテーブルはテキストボックスコントロールになってしまいます。
データ自体にはなんら影響がないので、このままでもいいといえばいいのですが、
見栄え的にもチェックボックスのほうがいいのです。
これをVBAから自動で変更するにはどうすればいいのですか?
番号振り直しても問題ないオートナンバーフィールドって存在意義薄いな
>>357 そのテーブルをデザインビューで開いて、Yes/No型の列のルックアップの
表示コントロールをチェックボックスに直せばおけ。
VBAでの変更は、テーブルの公開されているプロパティにそれらしいのが
ないのでわからん。
削除して欠番がでるのがまずいのならば、その列にオートナンバーを
使わないほうがいいと思う。
追加入力を途中でキャンセルしても欠番になるから。
オートナンバーは『値はなんでもいいから一意な値がほしい』列に使う
のがいちばん。
361 :
NAME IS NULL:2005/12/01(木) 23:38:56 ID:hJnU0wPw
レポート内にグラフ表示をさせています。
例えば、円グラフの場合、それぞれの項目に対して、色が自動で配されますが、
指定することは、出来ますか?また、どのようにすればよいのでしょうか?
362 :
361:2005/12/01(木) 23:50:32 ID:hJnU0wPw
補足です。
手動で色を変更するのではなく、
テーブル内に、色データが入ったフィールドがありますので、
その色を動的に割り当てたいということです。
1,aaa,#cccccc
2,bbb,#33ddff
3,ccc,#aa3322
・
・
・
とこのような感じのテーブルがあり、自動で、色を割り当てたいのですが・・・。
質問の意図を勘違いしているかもしれないが、「自動で、色を割り当て」
たいなら、自力でそういうコードを書くしかないと思う。
MS Graph の話になるので、Access はほとんど関係ない。
>>363 レスありがとうございます。
自力でコード書きたいのですが、どのようにすればヒント
頂ければ、うれしいのですが。
Excel で似たようなグラフを作って、手動で色を設定する作業を
マクロの自動記録で録れば、コードの雛形が手に入ります。
MS Graph と Excel.Chart は似て非なるものなので、そのままでは
動きませんが、共通点も多いので、ゼロから組むよりは何がしかの
叩き台にはなるでしょう。
あとはそれを MS Graph 用に改変して移植すると、多少は効率が
上がるかもしれません。
ただ、オートメーションと Excel VBA に慣れていれば楽勝ですが、
VBA 初心者とかだと、ちょっと厳しそうですが。
あ、一応追記しておきますが、私はやったことありません。
なので、本質的に VBA で操作可能なのかどうか自体も、
分からないです。
上は、色関連のプロパティが VBA から操作可能であれば、
という前提になります。
>>365 > Excel で似たようなグラフを作って、手動で色を設定する作業を
> マクロの自動記録で録れば、コードの雛形が手に入ります。
なるほど!
> MS Graph と Excel.Chart は似て非なるものなので、そのままでは
> 動きませんが、共通点も多いので、ゼロから組むよりは何がしかの
> 叩き台にはなるでしょう。
> あとはそれを MS Graph 用に改変して移植すると、多少は効率が
> 上がるかもしれません。
> ただ、オートメーションと Excel VBA に慣れていれば楽勝ですが、
> VBA 初心者とかだと、ちょっと厳しそうですが。
VBA 初心者ですがorz、やってみます。
ありがとうございました。
368 :
363:2005/12/03(土) 03:37:00 ID:???
元々出来ない話だったりすると甲斐がないので、ちょっと試してみた。
フォームに円グラフを挿入して、コマンドボタンに以下のコードを貼ります。
' 円グラフの要素色を動的に入れ替えるデモ
Private Sub コマンドボタン_Click()
Dim ps As Object ' Graph.Points コレクション
Dim i As Long ' カウンタ
Dim j As Long ' 要素数
Dim c As Long ' 色
Set ps = Me!グラフ1.Object.SeriesCollection(1).Points
j = ps.Count
c = ps(1).Interior.Color
For i = 1 To j
If i = j Then
ps(i).Interior.Color = c
Else
ps(i).Interior.Color = ps(i + 1).Interior.Color
End If
Next
End Sub
コマンドボタンをクリックするたびに、円グラフの要素色がズレていくのが
確認できるので、出来そう。
ただ、描画の更新に若干タイムラグがあるのが気になる。
レポートだと、切り替え処理がレポートのフォーマットに間に合わないかも。
駄目な場合の代案を用意しておいたほうがベター。
369 :
361:2005/12/03(土) 08:22:25 ID:???
>>368 > 元々出来ない話だったりすると甲斐がないので、ちょっと試してみた。
うぉ。ヒント頂いただけでもかなり感謝しているのに・・・。
> コマンドボタンをクリックするたびに、円グラフの要素色がズレていくのが
> 確認できるので、出来そう。
> ただ、描画の更新に若干タイムラグがあるのが気になる。
> レポートだと、切り替え処理がレポートのフォーマットに間に合わないかも。
> 駄目な場合の代案を用意しておいたほうがベター。
コード頂きました。
動作の方も、確認しました。本当に感謝感激です。
タイムラグに関しては、私の環境では、気になりませんでした。
(レポートでは試していませんが)また、実装段階でも、待ち時間に関しては、
問題にならないと思います。
P.S.
最初、レスも入らなかったし、
google等検索かけても、手動設定の手順は引っかかるものの、
ヒントに繋がるような情報も引けず、
紀伊国屋で、専門書をあさるも時間だけがすきていきました。
(前レスでご指摘頂きましたとうりaccess関連側から調べていたので余計に見つからなかったのかも)
なかば、あきらめぎみでした。
本当にありがとうございます。
370 :
361:2005/12/03(土) 17:50:42 ID:???
>>369 自己レス
> タイムラグに関しては、私の環境では、気になりませんでした。
> (レポートでは試していませんが)また、実装段階でも、待ち時間に関しては、
> 問題にならないと思います。
まったく・・・。とんちんかんなこと書いてますな。
落ち着いてみると意味がわかりました。
レポートで表示のタイミングで、グラフがあがってこないと、
その辺りのタイミングで問題でるかもということなんですね。ふー。
しかし、やはり、VBA初心者はつらい。もすこし時間かけることになりそ。
16進から10進への変換にもなやんでるし・・・。
コード内から、レコードの呼び出しもわからんし。
向上心持つことは良いことなんだろうけど初心者がこだわりすぎてもきついだけだぜ
372 :
363:2005/12/03(土) 21:15:42 ID:???
>>371 同意。
ただし本人にそれが出来るかどうかと、それをネタに周りが遊ぶか
どうかは関係ないので、ネタがそこそこ面白そうで周りがヒマなら、
本人を置き去りにして勝手に遊ぶのもアリか。
>>370 > 16進から10進への変換にもなやんでるし・・・。
変換というほど大げさなものではない。
文字列なら、頭に "&H" を付ければ終わり。
代入先が数値型なら、勝手に型変換してくれる。
もっとも
>>362 を見ると「#33ddff」のようになっているので、
16 進は 16 進でも、HTML カラー形式か?
だとすると、VB/VBA のカラー形式とはバイトオーダーが逆転する。
HTML カラー形式と VB/VBA のカラー形式の仕様について知らないと
違う色になるよ。
> コード内から、レコードの呼び出しもわからんし。
こちらは Access VBA 入門書に必ず載っている基本中の基本なので、
資料に困ることはないと思う。
前にも書いたけど、VBA 初心者にはかなり厳しい内容であることは
間違いないし、処理自体は実装できても、レポートのフォーマット
とのタイムラグが懸念されるので、色変更が画面描画に間に合うか
どうかの保障もない。
VBA に慣れている人間が小一時間でテストするんだったら、処理を
実装してもダメだったわ残念、で済むけど、VBA 初心者が一週間も
かけたら、ダメだったときのダメージが大きすぎてトライアルコスト
に見合わないのではないかという気もする。
繰り返しになるけど、ダメだったときの代案は用意しておいたほうが
いいと思うよ。
373 :
nz(NAME, NULL):2005/12/15(木) 10:32:11 ID:wGga6Jr3
Accessでスーパーテーブルとサブテーブルを実装するのに、うまい方法はないでしょうか。
たとえば、
顧客テーブル(顧客ID, 登録年月日 PK(顧客ID))
個人顧客テーブル(顧客ID, 氏名, 生年月日, 性別, PK(顧客ID),
FK(顧客ID) REF 顧客テーブル(顧客ID))
法人顧客テーブル(顧客ID, 法人名, 代表者氏名, PK(顧客ID),
FK(顧客ID) REF 顧客テーブル(顧客ID))
※PK:主キー制約 FK 〜 REF 〜: 外部キー制約
といったテーブルで、単純にデータを追加すると個人と法人両方に値を持つ
矛盾した顧客が出来上がる可能性がありますが、これを回避することは
できないでしょうか。
または、顧客テーブルを
顧客テーブル(人格, 顧客ID, 登録年月日 PK(人格, 顧客ID))
という風にして、顧客IDは個人法人それぞれで重複することを前提にして
親テーブルの「人格」列でそれぞれを見分ける方法も思いつきましたが、
外部キー制約をつけるために子テーブルにも常に同じ値が入る「人格」列を
つけないといけなくなるなど、どうもスマートでない気がします…。
>といったテーブルで、単純にデータを追加すると個人と法人両方に値を持つ
>矛盾した顧客が出来上がる可能性があります
できないようにコード書けば良いだけじゃないの?
375 :
373:2005/12/15(木) 12:31:33 ID:???
>374
確かにそうすればよいのですが…。今後に渡って誤って矛盾のあるレコードが
登録されていないかを定期的にチェックして、見つかった場合はどちらに
該当するかを調査する、という手間が発生しないようできるだけDBの制約を
使って予防しておきたいのです。
>>373 継承を実現するためのメジャーな方法はこのあたりかな。
1. 親テーブルの列を子テーブルに含めてしまい、独立した2テーブルにする。
T_個人顧客(顧客固有の列、個人顧客固有の列)
T_法人顧客(顧客固有の列、法人顧客固有の列)
2. 全てを含むような1テーブルにする。
T_顧客(顧客固有の列、個人顧客固有の列、法人顧客固有の列、弁別子)
3. 固有の情報のみもち、外部キーでつなぐ(
>>373の方式)
T_顧客(顧客固有の列)
T_個人顧客(個人顧客固有の列、外部キー)
T_法人顧客(法人顧客固有の列、外部キー)
子テーブル固有列数が少なければ2が重複を気にしないでもよいかも。
もちろんあまりスマートな方法とは言えませんが。
377 :
NAME IS NULL:2005/12/16(金) 11:03:45 ID:9U+gidyi
宜しくお願いします
テーブルの中で隣のフィールド同士を比較したいのですが可能ですか?
(例)フィールド1とフィールド2・・この二つが同じならOK、違うならNGを
フィールド3へ表示。ExcelだとEXACTがありますがクエリで同様の事が出来ますか?
>>377 IIF関数
判定結果をわざわざフィールドに収納したいなら更新クエリ
379 :
373:2005/12/16(金) 22:22:43 ID:???
>376
ありがとうございました。とりあえず、1,2の折衷のような形にしました。
顧客テーブル(弁別子, 顧客ID, 登録年月日 PK(弁別子, 顧客ID) CHECK(弁別子 IN ('個人', '法人')))
個人顧客テーブル(弁別子, 顧客ID, 氏名, 生年月日, 性別, PK(弁別子, 顧客ID),
FK(弁別子, 顧客ID) REF 顧客テーブル(弁別子, 顧客ID) CHECK(弁別子='個人'))
法人顧客テーブル(弁別子, 顧客ID, 法人名, 代表者氏名, PK(弁別子, 顧客ID),
FK(弁別子, 顧客ID) REF 顧客テーブル(弁別子, 顧客ID) CHECK(弁別子='法人'))
SQL99 ではオブジェクト指向なテーブルが規定されているようなので、
きちんとした継承をサポートしたDBが作れる94年後を楽しみに待つこととします。
質問失礼致します。
エラー処理のことで入金額という欄に入力規則を設けてそこで規則違反が起きると
エラーメッセージを表示して再入力させるようにしています。
それで、そのフォームを閉じるときにもそのエラーが起きるとエラーメッセージが出てから閉じる状態になってしまいます
フォームを閉じるときはそのエラーを無視してもらいたいんですが(エラーメッセージが出なくていい)どうしたらいいでしょうか?
>>380 Unloadの前に入力チェック発生するみたいだし、閉じるボタン作ってundoさせれば?
ただ、正常に入力している場合でもカレントレコード移動させて更新確定しないと消えるが。
age
ユニオンクエリを使うと時々データが欠損することがあるんですが
これは仕様?
なったことない。
386 :
NAME IS NULL:2006/01/12(木) 18:59:41 ID:fRE+Pk92
97で WHERE ### = null でnull項目を抽出出来たのが
2003では WHERE ### is null じゃないと駄目になったんですかね?
>386
x=NULL が通るほうが例外的な気がするが…97はできるのか。初めて知った。
>>384 ちなみにUNIONとUNION ALLの違いは分かってるか?
389 :
384:2006/01/17(火) 01:07:35 ID:???
>>388 分かってたら質問するわけねえだろ、このハゲ。
マジかよw
391 :
NAME IS NULL:2006/01/17(火) 13:08:47 ID:W1SvMsnS
現在仕事でXP上でAccess2kを使用しております。
で、このmdbを英語( XP & Access)で使用することになったのですが、
英語版を購入する前に質問をと書き込みました。
1.英語版と日本語版のAccessに差異or相違はあるのでしょうか?
2.日本語版を英語版に移植するにあたって、気をつけなければならないことは?
3.英語版での制約事項。
移植されたことのある方、教えてください〜
開発環境はボーランド C++ビルダー6.0です。
いるといいね……
クエリのネタじゃないんだけど、他にAccessのスレ見つからなくて・・・
誰かお知恵を。
Access2000でフォームを帳票形式で表示している時、
カーソルのある行か否かを識別する方法ってない?
カーソルのある行だけ色を変えたりしたいんだけど、
例えば単純に
lblName.BackColor = RGB(255,0,0)
みたくすると、全行に反映されてしまうので。
行インデックスとか指定してやる方法とかないのかな?
良くあるネタだが、帳票形式で特定レコードのみ色を変えるのは無理。
擬似的にそれっぽく見せる方法は無くはないが。
ちなみにこのスレはクエリの質問専用じゃない。
クエリ3ってのは3スレ目ってだけの意味なんだけど誤解を生みやすいよなぁ。
395 :
NAME IS NULL:2006/01/18(水) 22:58:12 ID:WK8T+z2K
win98にaccess2000をインストールしています。そのwin98と同一ネットワーク内にあるwinXPに
TOMCATをインストールしてそこからJDBCを使ってwin98のaccess2000のデータベースに
接続するにはどうしたらいいのでしょうか?
396 :
393:2006/01/19(木) 08:56:24 ID:???
>394
レスdクス
擬似的にって、例えばどんな方法・・・?
普通に [コントロール名].プロパティ を設定すれば全行に反映されるしw
あ、“クエリ3”ってそゆ意味だったんねw
397 :
NAME IS NULL:2006/01/19(木) 18:54:53 ID:OK8xAwYb
アクセスのことあまりわかんないのですが今日バイトで販売履歴のところを右クリックで削除しちゃいました。
そしたら金額がでなくなっちゃったんです。。。
顧客台帳を消さずに元にもどす方法おしえてください。
土下座だな
システム担当者に土下座すれば、あるいは元に戻るやも知れん
削除したものが戻るなんて本気で思っているのか?
adpファイルの接続情報(データリンクプロパティ)を外部(VBとか)から
取得や変更するにはどのような方法がありますでしょうか?
401 :
400:2006/01/19(木) 20:37:31 ID:???
402 :
400:2006/01/20(金) 10:14:36 ID:???
で、できない。。。
接続情報を取得はできても更新ができない。
“特定できないエラーです。”と出ます。
更新時に他のアプリで開いているわけでもありません。
タスクマネージャでプロセスの確認もしています。
原因には何が考えられるでしょうか?
403 :
NAME IS NULL:2006/01/20(金) 11:27:11 ID:xMHEu8kM
ACCESSの上級者用のオススメ本を教えてください。
404 :
400:2006/01/20(金) 12:18:06 ID:???
自己解決。
サーバとDB名をテレコにしてたw
>>403の上級者のイメージってどんなのかまず書かないと
>>391 BuilderってことはAccessはあくまでデータの保存としてのDBと
して使うんでしょ?
英語版に移植する必要性がわからないんだけど。
407 :
:2006/01/27(金) 15:20:29 ID:PEWtajmR
よくオートナンバー型が嫌いで、DMax+1 で連番振るサンプルを見るんですが、
これだと消去したレコードの番号は使われない可能性がありますよね?
そこで、「空き番号の中で最小の整数を振る、空き番号がなければDMax+1」
という関数を組もうとしたら、どういうふうにすればよいでしょうか?
408 :
NAME IS NULL:2006/01/27(金) 15:28:38 ID:wLYQfH91
クエリではないんですが・・・。 2000を使っています
フォームで商品CDを打つと商品名、単価が出て数量を入力できるようにしています
そのつど単価が変更になるときもあるため商品CDを打つと単価の所に変更可能な形で
取得することができるようにするにはどうしたらいいのでしょうか?
よろしくお願いします
>>407 IDで並べ替えたレコードを一つずつ見ていってi=i+1と違う数字になったらiの値を返すコード書けばいいじゃない。
>>408 商品マスタと入出庫テーブルみたいなものがあるんだろうけど、
入出記録する方に単価フィールド追加して、商品CD更新後イベントで
マスタ側の単価を入出庫側の単価フィールドと連結したテキストボックスにコピー。
411 :
408:2006/01/27(金) 16:52:20 ID:wLYQfH91
412 :
408:2006/01/27(金) 17:36:23 ID:wLYQfH91
>>410 すいません。
入力テーブル、請求先別単価テーブル、商品テーブルの三種類のテーブルがあります
入力Tと商品Tをクエリで商品名など参照して商品CDと数量のみを今まで入力してました
これを入力Tへ商品CDを入力すると単価Tから入力Tへ単価をコピーする方法も
上のやり方でよろしいのでしょうか?
コピーをする式?も教えていただけませんか
お願いいたします
日本語が理解できない
>>408 その説明じゃよく解らないけど、フォームは非連結なの。
それとも連結?
言いたいことは、商品CDと請求先によって商品単価を
変えるってことでいいの?
そうじゃなきゃ、請求先別単価テーブルなんて必要ないはずだよね。
415 :
408:2006/01/28(土) 17:18:49 ID:GEN2EUR3
>>414 フォームは連結でやっています
一応請求先で単価が違います
通常時は登録してある単価でいいんですが
今回だけこの単価とかいうのがあってそのつど単価マスタのほうを
変えて入力後再び戻すっていう作業が発生してしまうので
売上入力時にマスタの単価が出てそのつど変更は出来るけど
マスタには通常の単価のままでみたいなのが理想です
どうしたら出来ますでしょうか?
宜しくお願いいたします
>>408 ほぼ410氏の言っている通り。
請求先別単価テーブルから単価を引っ張ってくる。
商品CDの更新後処理で単価のテキストボックスの
値を変えてやればいい。
Me!txt単価 = DLookup("単価フィールド", "請求先別単価テーブル", "抽出条件")
抽出条件には「請求先」と「商品CD」を使用することになるのかな。
そんなに難しい事じゃないと思うんだが、基本すら理解できていないようだから
解説しても無駄のように思えるが
入力テーブルに、商品CDと請求先CDがあると仮定して、
更に請求先別単価テーブルに商品CDと請求先CDと単価があると仮定する。
まず、フォームのレコードセットを
SELECT *
FROM (
入力テーブル
LEFT JOIN
請求先別単価テーブル
ON
(入力テーブル.請求先=請求先別単価テーブル.請求先CD)
AND
(入力テーブル.商品CD=請求先別単価テーブル.商品CD)
)
LEFT JOIN
商品テーブル ON 入力テーブル.商品CD=商品テーブル.商品CD
にする。
んで、商品CD入れる連結テキストボックスをtxt商品CD、
請求先CDを入れる連結テキストボックスをtxt請求先CD、
単価を入れる連結テキストボックスをtxt単価で、
請求先別単価テーブル.単価に連結されたテキストボックスをtxt参照用単価と仮定する。
で、
Private Sub 単価を入れるよ()
If IsNull(txt商品CD) Then Exit Sub
If IsNull(txt請求先CD) Then Exit Sub
txt単価 = txt参照用単価
End Sub
こんなコードを適当に書いて
txt商品CDとtxt請求先CDの更新後イベント時にコールすれば良い。
別にレコードソースいじらなくてもDlookupなりDfirstでもいいんだろうけど。
418 :
408:2006/01/29(日) 13:15:20 ID:XxgOry42
>>416.417
できましたありがとうございます
もっと勉強していきます
419 :
NAME IS NULL:2006/01/30(月) 21:44:16 ID:75FBYrqn
顧客IDをオートでふっているんですけど
たまに番号がとんでしまいます。
どうすれば直るんでしょうか?
直りません
421 :
NAME IS NULL:2006/01/30(月) 23:34:33 ID:gBGX4UUl
>>419 同じ構造の別テーブル(オートナンバー型は長整数型で)を使っていいなら
直せる。
>>419 欠番があっちゃまずいわけでもあるのか?
それにmdbを最適化すると勝手に詰められちゃうAutoNumberなんか
使わなくちゃいけないわけももあるのか?
「Microsoft Access クエリ」の3スレ目かと思ったが、スレッド数を表しているだけなんだな。
クエリの質問専用スレだとばかり思ってたよこんちくしょう。
「支払方法」等の、整数型のIDとテキスト型の名称しか無くて、レコード数も10以下の
簡単なマスタが増えてきて、クエリが複雑になってきたんだけど、
こういうのって一つずつテーブルを作るよりもEnum+そのindexに対応したテキストを返す関数を
作って管理した方がスッキリするんじゃないかと思えてきた。
お前らはこういう細々したマスタの扱いはどうしてますか?
IDで管理せずにそのまんまテキストで項目保存しちゃうってのもアリだが。
>>424 ■支払い方法
支払い方法ID (主キー 重複なし)
名称
てことだよね?
私は、そういう細かいマスタは作らないようにしてるなぁ。。
単なる入力制限なら、テーブル化のメリットはないと思うし。。。。
クエリが大変なことに、ていうのであれば、
連携をとろうとしているテーブルと、支払方法テーブルとの
関係を設定するテーブルをひとつ作ればいいんじゃないのかなぁ?
もしくは、テーブル設計の見直しとか。
例えば
■取引先
取引先ID (主キー 重複なし)
取引先会社名
取引先住所
……
備考
というテーブルがあって、「ここの取引先の支払ってどんなのだったっけ?」と
見たい場合、いったん、ほかの伝票テーブルとかを経由するから
クエリがややこしくなるんでしょ。
だから、
その1.
■取引先別支払方法
取引先ID (主キー 重複あり)
支払方法ID (主キー 重複あり)
みたいなテーブルを作っちゃうか、
その2.
■支払い方法
取引先ID (主キー 重複あり)
支払方法ID (主キー 重複あり)
名称
みたいにテーブルの状態を変えちゃうと、クエリはすっきりするんじゃない?
状況がわかんないから、的をはずしたレスになっているのかもしれないけど、
ややこしいクエリをたくさん書く必要がある、てことは
リレーションを見直したほうがいいのかな、と思ったよ。
ま、一番重要なのは、楽が出来ることだと思うよ。
ややこしいというか、ただ名称を参照するためだけにleftjoin書くのがめんどいな、ってだけなんだけどね。
コードや名称が変わる・データが増減するなどのメンテが発生しないなら
テーブルは作らない。
>>425 取引先で支払方法が1つに決まるなら、取引先テーブルに支払方法を入れ
てしまうだろ。伝票ごとに支払方法が変わるなら、伝票経由も仕方がない。
と考えると、その1・その2の考えはどういうパターンで使えるのかわからん
のだが。
>>427 あんまり考えなしに書いた&初級者さんなんで。。。
その1はすでにあるテーブルのデザイン変更をしないで、
連結用テーブルを新しく作成。
その2は既存のテーブルのデザインを変更(項目追加)。
ていう感じで書いた。。。。
単純に、新しい連結方法を作ればいいじゃない!と思っただけなんだ。
どっちでもいいと思うけど、どっちの方法が適切なのかなぁ?
それともほかによい方法がある?
話題がややこしくなっているな。
曜日で喩えると、「日曜日」「月曜日」「火曜日」と、毎回テキスト型で収めるのは
嫌なので整数型で0,1,2と入れているんだけど、その数字とテキストの照合をどう
やるのが良いかな、ってだけなんだけど。
>>429 ああ、ごめん。
やっとわかった。。。。
話をややこしくしてスマソ('д`)
ルックアップウィザードを使っちゃう、ていうのはダメなのかなぁ?
>> 427がいってるようにメンテがあるかないかで決まるだろ。
それにクエリを極力避けスピードアップを狙うなら、テキスト
型でおさめたっていいだろうに。所詮、Accessだし。
キー1つ名称1つの構成で毎回毎回LeftJoinが面倒、でももしかしたら将来的にはメンテ発生の可能性もあり。
こういったケースならとりあえず俺は関数化しとくが・・・
433 :
NAME IS NULL:2006/02/07(火) 19:03:24 ID:KrWY1q0P
クロス集計クエリの結果、最大で何個のフィールドが出てくるかわかっているとして、
それ以下しか出ない場合でも、最大のフィールド個数で結果が出るようなクエリってどう書くの?
子供の数は10人までと決めて、
姓_ 順番_ 名前
−− −−− −−
山田 第一子 一郎
鈴木 第一子 和子
山田 第二子 次郎
山田 第三子 三輔
鈴木 第二子 二美
山田 第四子 志穂
みたいなテーブルを、姓が行見出しでクロス集計して、列見出しに「第十子」まで出てきて欲しいの。
元のテーブルにダミーのデータを入れれば出るけど、他の方法はないでしょうか?
>>433 PIVOT Field IN(hoge1,hoge2,hoge3)
435 :
NAME IS NULL:2006/02/07(火) 19:54:10 ID:KrWY1q0P
>>434 わーい。できたぁ。ありがとぉございますた。
436 :
NAME IS NULL:2006/02/07(火) 20:22:02 ID:IEf9ilRM
エクセルならばRANK関数があり出来るのですが、アクセスではどうすれば出来るんでしょうか?
エクセルの関数を使えるように設定するとか、Dcount関数でも可能と言われたのですが、方法と関数の書き方がわかりません。
どなたか教えてください。
438 :
NAME IS NULL:2006/02/11(土) 18:05:12 ID:Ox335p9O
テーブル名: ソング
曲: テキスト型
仮の入力データ
曲: あいうえお
曲: かきくけこ
曲: さしすせそ
曲: たちつてと
曲: なにぬねの
・
・
・
曲: らりるれろ
テーブル名: セットリスト
整理番号:数値型
曲順: 数値型
曲: テキスト型
「仮の入力データ」
整理番号: 1 曲順: 1 曲: あいうえお
整理番号: 1 曲順: 2 曲: かきくけこ
整理番号: 1 曲順: 3 曲: さしすせそ
整理番号: 2 曲順: 1 曲: あいうえお
整理番号: 2 曲順: 2 曲: はひふへほ
整理番号: 2 曲順: 3 曲: かきくけこ
整理番号: 3 曲順: 1 曲: らりるれろ
整理番号: 3 曲順: 2 曲: まみむめも
整理番号: 3 曲順: 3 曲: あいうえお
・
・
・
整理番号: 10 曲順: 1 曲: たちつてと
整理番号: 10 曲順: 2 曲: あいうえお
整理番号: 10 曲順: 3 曲: さしすせそ
439 :
NAME IS NULL:2006/02/11(土) 18:06:55 ID:Ox335p9O
上記にあるように二つの内容のテーブルがあります。
「テーブル名:ソング」には簡略してありますが、曲の詳細(リリース日等々)を入力し、
「テーブル名: セットリスト」にはコンサートで演奏された曲を入力してあります。
「テーブル名:ソング」を基に「フォーム」を作成し、コンサートで演奏された回数を
[=DCount("[曲]","[セットリスト]","[曲] =Form![曲] ")]という式をコントロールソースに
入力して数値を求めています。その演奏回数の順位(どの曲が一番多く演奏されているのか?)を
別フィールドを作成し、求めようとしているのですが、DCount関数などを使ってみても、どうしても出来ません。
どうか、解決法を教えてください。
>>439 > [=DCount("[曲]","[セットリスト]","[曲] =Form![曲] ")]という式をコントロールソースに
× "[曲] = Form![曲] "
○ "[曲] = '"& Forms![フォーム名]![コントロール名] & "'"
それ以前に、ふつう集計関数使うと思うんだが、、、
441 :
439:2006/02/12(日) 16:37:37 ID:REWCUU4+
サンクス
442 :
NAME IS NULL:2006/02/13(月) 13:16:38 ID:TGE6p0Qw
コンボボックスヴィザードで
「コンボボックスで選択した値に対応するレコードをフォームで検索する」
ボタンが表示されず、
「テーブルまたはクエリの値をコンボボックスに表示する」
「表示する値をここで指定する」
しか表示されないのはなぜ?
いくらハンドブック見ても分からない。教えて下さい。
443 :
NAME IS NULL:2006/02/13(月) 22:40:26 ID:sQPDD166
>>442 それができないならこの先は無理だ。
そのくらい自己解決できんならあきらめろ。
444 :
NAME IS NULL:2006/02/14(火) 11:31:20 ID:sUa9mtX4
初心者です。教えてください。
クエリ式'Format([日付]"0000")'コンパイルのエラーが発生しました。
とエラーが出るのですが、何を意味するエラーなのですか?
Access2000でParadoxのDBをリンクして内容を取り出そうとしてるんですが、
どうにもうまくいきません。(OS: Win2000 SP4 + SP4対応ロールアップ1)
ParadoxのDBは言語がJapanで作られてるようでそのままでは「照合順序が
正しくありません」と言われてリンクすらできなかったので、
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP418596 のJet4.0のレジストリを変更するほうで、なんとかリンクできるようにはしました。
(元のParadoxのDBは、他システムに組み込まれてるので変更できない)
で、それでリンクできたのですが、今度はデータ内容がうまく表示できません。
具体的には、項目数や属性は合っているようですが、項目名(日本語)の取得
ができていません(NoName、列0、列1、、、となる)
また、表示される値は先頭項目の値のみで残りの項目にはそれと同じものが
並んでいる状態です(先頭の項目値が123の場合、その行の残りの項目も123)
他には正常にリンクできているテーブルもあるのですが…
なにかご存知の方、よろしくお願いします
447 :
NAME IS NULL:2006/02/14(火) 13:34:23 ID:sUa9mtX4
クエリ式'Format([日付]"0000")'コンパイルのエラーが発生しました。
どうしてもエラーが消えないのですがどうしたらいいのか教えてください
本当の初心者ですいません
449 :
447:2006/02/14(火) 15:42:44 ID:sUa9mtX4
なんかよくわからんだけどエラーが消えた(゜д゜;)
パラメータクエリで日付を入力させ、
それが日付形式でなかった場合に
警告を出してもう一度入力窓を開かせたいっていう
欲張りなことしたいんですが…
クエリだけでできる方法があれば教えてください。
>>451 クエリだけでは無くなるけど、
Do
str = InputBox("条件を入力してください")
Loop While Not IsDate(str)
てな感じのファンクション作ればクエリでも使えるべ。
>>452 間違えてそのクエリを動かしてしまった場合、Accessそのものを強制終了しない限り
永遠に「条件を入力してください」とINPUTBOXが表示されるんだが・・・・
>>453 だったら入力回数カウントさせれば良いだけだろ
>>451 PARAMETERS [日付を入力] DateTime;
SELECT ・・・;
456 :
NAME IS NULL:2006/02/15(水) 09:17:36 ID:65UexEcb
このリレーションシップを作成して、参照整合成を設定できません。
と表示されるのですが、Excelからインポートしたのが原因ですか?
それだけじゃなんとも言えない。データ型違うとかでね?
458 :
NAME IS NULL:2006/02/15(水) 09:42:31 ID:65UexEcb
457 ありうがとうございます。
データ型もフィールドプロパティも同じにしてあるのですが、
自分には何いがいけなくてどうしたらいいのか分かりません
俺にも分かりません。
>>458 1対多の「1側のデータがないか重複している」というのはチェック済みか?
461 :
458:2006/02/15(水) 13:51:19 ID:65UexEcb
[在庫テーブル]
No. 数値型 長整数型
主キー 商品番号 テキスト型 既定値:1
日付 日付/時刻型
数量 数値型 フィールドサイズ:倍精度浮動小数点型
[出庫テーブル]
主キー No. 数値型 数値型 長整数型
商品番号 テキスト型 既定値:1
店名 テキスト型
日付 日付/時刻型
数量 数値型 フィールドサイズ:倍精度浮動小数点型
こんな感じで在庫テーブルの商品番号と出庫テーブルの商品番号を
リレーションシップで参照整合性したいのですが
設定できません
と表示されるのです。
出庫テーブルのデータはExcelでインポートしたものなので
それがいけないんでしょうか?
単純に、マスタ兼在庫テーブルにない商品番号が出庫テーブルにあるんでね?
在庫テーブルのNo.フィールドはいらないよな。
主キーに固定の規定値与えてたら重複警告出てウザそうだな。
ついでに在庫は出庫と入庫から計算して出した方が良いな。出庫の意味なさげ。
464 :
461:2006/02/15(水) 15:56:09 ID:65UexEcb
レスありがとうございます。
在庫から出庫のデータが引かれるようにしたいんですが
。
入庫テーブルは作って(主キーはNo.ですが)在庫とリレーションできました。
どうあっても出庫と在庫がリレーションできないです。
出庫データは問題ないはずなんですが・・・。
同じ出庫データを別のPCで作成した時は同じデータで作成できたのに・・・。
とりあえず、データ全部消してリレーション作れるかやってみれば?
466 :
461:2006/02/15(水) 16:22:08 ID:65UexEcb
465さんの言うとおりデータを全部消してリレーションやってみたら
ちゃんとできました。
やはりデータに問題があるのですね。
しかしどこに問題があるのかがわからないです。
問題を見つける方法とかはありますか?
出庫テーブルは商品が出庫する都度、データがつくられるのか?
だとすると、商品番号どうしで結合すると1対1結合になるから商品番号での参照整合性は無理。
(商品1件につき出庫テーブルも1つしか商品番号を持てないことになる)
入庫テーブルはたまたま同じ商品番号のデータがなかっただけだと思う。
解決方法はNOがユニークになるのならば、主キーを商品番号+NOにして1対多の結合にしてみる。
と、ここまで推測だけで書いてみた。
エスパーの集うスレにようこそ
>>466 これで参照性合成の違反レコード見つからないかな?
エスパーでない俺にはそろそろ限界だ、、、
SELECT 多側テーブル.商品番号
FROM (
SELECT 出庫テーブル.商品番号
FROM 出庫テーブル
GROUP BY 出庫テーブル.商品番号
) AS 多側テーブル
LEFT JOIN 在庫テーブル ON 多側テーブル.商品番号 = 在庫テーブル.商品番号
WHERE 在庫テーブル.商品番号 Is Null;
471 :
NAME IS NULL:2006/02/15(水) 20:05:24 ID:KVHlvHKR
すんません。<とりあえず>というかたちでデーターベースの勉強したいだけならAccess 97でもいけますかね?
(当方XP環境)
つかいこなせそうならのちのち2003とかの購入とか考えてはみたいのですが、まともに買うとわりと高い買い物になってしまうので、まずは昔のバージョンをオークションかなんかで購入して試してみたくて、と思っているのですが・・・。
どーなんでしょう?
AccessでDBの勉強になるかはさておき、97でも良いと思う。
473 :
NAME IS NULL:2006/02/15(水) 21:51:12 ID:nmm6kUhg
>>471 漏れは、未だにAccess97をメインで使用してる。
2000以降じゃないと困るような場面って何にもないからなぁ。
SQLServer2005Expressという選択肢はダメなのかねぇ?
自分の場合はアカデミックパックという強い味方を使えるので、
それで買っちゃったけどなぁ。。。
>>471 勉強するのならば97がいいかも。
2000以降はHELPがわかりずらいが97のHELPはよくできている。
わかりずらい→×
わかりづらい→○
>>471 データベースの勉強をお金かけずにやるなら、PostgreとかMy SQLとか。
Accessはちょっと違うと思う。フォームだ何だとややこしいし。初心者に
はね。
>>473 困ることはないが、2000以降の機能で便利なものもあるぞ。
>>475 そうそう。変にこりすぎてて、見つけたいヘルプがなかなか表示されない。
2003触って懲りた。
478 :
NAME IS NULL:2006/02/16(木) 01:44:11 ID:7U8Zop/v
>>477 ac97でツールや自前のライブラリがあるから何にもほしいとも思わない。
枯れてるから安心だし、OSが変わっても後10年は使いつづけそうだ(w
2000以降じゃなければならんような便利な機能ってなにかある?
479 :
461:2006/02/16(木) 11:02:24 ID:1xQdvZ7e
なんとかなりました!!
ありがとうございました
開発上必須というわけでもないけど、条件付書式とかPrintersコレクションの操作とかは
2000以降の嬉しい機能。
481 :
NAME IS NULL:2006/02/16(木) 11:51:26 ID:1xQdvZ7e
在庫を更新するクエリでRoundを使ってるんですが
結果がどうしても-が付くのはなぜですか?
更新結果を整数でだすにはどのようにしたら良いのか
教えてください。
>>481 例によってお前の使い方が悪いだけだろ。
実際の使用例を晒せ。
483 :
481:2006/02/16(木) 12:00:04 ID:1xQdvZ7e
[在庫数]-Round([数量]/0.89,1)
これでマイナス表示が出るんです・・・
>>483 実際使った在庫数と数量晒せよ
Round([数量]/0.89,1)だけでやって試せよ
,1じゃ小数点第二位で四捨五入するに決まってるだろ
ヘルプ読むかクビ吊れ
だったら先に想定書いておけよ……
487 :
481:2006/02/16(木) 13:34:58 ID:1xQdvZ7e
クロス集計クエリを読み取り専用でなくすにはどうしたらいいですか?
困った
>>487 君は集計したデータを元のレコードにどうやって戻すのかね?
>>487 んー……
君の場合、Accessとかデータベースとか以前の問題だと思うな
紙と鉛筆持って、「物事を筋道立てて考える」ところからやり直してみた方がいいと思うよ。
491 :
471:2006/02/16(木) 21:11:24 ID:VUslBaKQ
>>472>>473>>474>>475>>477>>
ありがとうございます。
ええっとですね。
仕事で一日50人×約一件×365日のデータを蓄積しようとおもいたったはいいものの、これをエクセルでつくることを考えたら目眩がしたので、じゃあAccessかな? と。
(職場にはAccess2000だか2003だかは入っている。ただし自宅にはない)
職場で練習する時間がとれないんで、自宅で作って職場にもちこむことを考えたんですが、使いこなせるかどうかもわからないものに最新バージョンはきついなと思って。
ほんの初歩的なもので十分なんですね。
どうやらみなさんの意見を聞いてると97でも大丈夫そうなんで、97で試してみたいとおもいます。ありがとうございました。
「test001」というフィールドがあると仮定して、
「Debug.Print Rs!test001」にて表示させることはできます。
この「001」部分を引数にして同じことはできないでしょうか?
イメージとしては下のような感じです。
i = "001"
Debug.Print Rs!test & i
>>492 Debug.Print Rs.Fields("test" & i)
かな?
494 :
NAME IS NULL:2006/02/17(金) 20:34:40 ID:+3pSS7dH
みなさん、こんばんは。です。
accessのVBAでINSERT文のSQLを作成し、
Executeで実行させようとしたところ、
「システムで予約されているエラー(−3025)です。
このエラーに対するメッセージはありません。」
というメッセージが出てしまいます。
DebugでSQLをクエリーのSQLに貼り付けて実行しても
同じエラーが出てしまいます。
いろいろ検索したところ、
「3025 これ以上ファイルを開くことはできません。 」
というのは見つかったのですが、とてもこれが原因とは思えず、対応に苦慮しています。
原因として考えられるヒントはありますでしょうか?
WinXPでACCESS2000を使用しております。
皆様のお知恵を拝借できれば幸いです。
iなのにstringとはこれ如何に
>>494 で、その問題が出たSQLはいつ晒してくれるんだ?
>>496 エラー番号だけでわかるかなと思ったのですが、
SQLは項目数が多すぎて。。。
230ぐらい項目があります。
伝票の行を横に持っているテーブルなので、
作るほうも大変です。私の設計ならこんなことテーブルは作らないのですが・・・。
ヘッダ、明細行1、行2、行3・・・・行6 が1レコードになっているのです><
晒す必要があるなら晒しますが、もう、自宅なので、昼ぐらいになってしまいます。
>>497 その項目数が多いのが問題。
まずは、クエリの仕様・制限をヘルプで確認してみ。
499 :
NAME IS NULL:2006/02/18(土) 11:25:34 ID:cUmZjjDt
>>497 そうゆうやつは、一旦ワークテーブルに変換してからsql作れ。。。
>>496,498,,499さん
いろいろありがとうございました。
232項目をばらして実行させたところ、
VALUESにSELECTSQL文を組み込んでいたところで
エラーメッセージがでました。
その文を外に出したところ、属性エラーはでますが
-3025はでなくなりました。
属性エラーはテーブル定義書と実際のMDBにある
テーブル定義の属性が違うので、設計者に聞かなくては・・・・。
本当にありがとうございます。
501 :
NAME IS NULL:2006/02/20(月) 21:15:26 ID:QcBILdfF
画面にリンクしたテーブルをdeleteして
すぐにinsertでキーだけのデータを作成して
画面をクリアさせようとしたのですが、
#DELETEが出てinsertしたレコードの内容が反映されません。
Me.Repaint でフォームの再描画しても上手く反映しません。
なぜでしょうか?
Repaint メソッド
このメソッドはデータベースの再クエリを行いません。
また、変更されたレコードや、テーブルに追加されたり、
テーブルから削除されたレコードに関する表示の更新も行いません。
フォームやフォームに含まれるコントロールのデータソースに対して
再クエリを行うには、Requery メソッドを使います。
>>502 フォームを再クエリする為には、
サブフォームにしておかないとダメという事でしょうか?
クエリ開いてて、リクエリーするのにショートカットキーってないのでしょうか?
いちいちマウス持ち替えて!を押すのが面倒くさくて・・・
>>503 そんなことはない。もう少し勉強が必要だと思う。Me.Requeryって教えて
くれてるのに・・・マジでテーブル削除するのか?・・・レコードだろ。
>>504 ある。ヘルプを良く見なされ。F9が関係してるぞ。
Me.Requeryだと、実行時エラーが発生。
>>506 Meの代わりに直接コントロールソース名を指定してみたらどう?
508 :
501:2006/02/21(火) 11:19:49 ID:Qa9d8pwS
>>503,505,507 さんレスありがとうございます。
Private sub クリア()
Dim rs As Recordset
Dim db As Database
Dim SQL As String
Set db = CurrentDb
SQL = "delete * from 明細行テーブル"
db.Execute SQL, dbFailOnError
SQL = "insert into 明細行テーブル ( id,行NO) values (1,1)"
db.Execute SQL, dbFailOnError
SQL = "insert into 明細行テーブル ( id,行NO) values (2,2)"
db.Execute SQL, dbFailOnError
db.Close
’ Me.Requery
end sub
Me.Requery では「実行時エラー2115 BeforeUpdate/更新前処理 プロパティまたはこのフィールドの
ValidationRule/入力規則プロパティに設定したマクロまたは関数のため、このフィールドのデータを
保存できません。」
というエラーになります。
他に方法が見当たらないですね。
ヘルプには、Requeryについて
・フォームの "Filter/フィルタ" プロパティへの変更に応じて、レコードの表示を更新します。
・テーブルやクエリに基づくコントロールには次のようなものがあります。
・リスト ボックスやコンボ ボックス。
・サブフォーム/サブレポート コントロール。
・グラフ コントロールなどの OLE オブジェクト。
と記載されていたので、サブフォームで明細を指定しないといけないのかと思ったわけです。
VBだったら簡単な処理なんだけど。
Private sub クリア()はBeforeUpdateイベントから呼んでいるのか?
だったら先にそう書けよ。
このsubをAfterUpdateで呼ぶってのはだめなの?
510 :
NAME IS NULL:2006/02/21(火) 12:10:45 ID:Qa9d8pwS
>>509 ありがとうございます。出来ました。
処理的に他の問題がでますが、
作りこみの問題であると思いますので
解決はできそうです。
>>510 イベントによってやれる・やれないがわかってないようなので、
エラーが出る=自分が悪いと思った方がよい。嫌みではなく。
Access97が出てから、もはや9年か・・・・漏れもいい年になってしまった・・・・
基本的にあまり変わってないが、
Access2007はどうなるんだろ?
宇宙に行くよ
514 :
NAME IS NULL:2006/02/23(木) 18:45:33 ID:HIymWhhs
メニューのフォームを作り、
ボタンで他のフォームに移る場合
Me.Visible = False
DoCmd.OpenForm ("他の処理1")
という、方法を行ったのですが、
他の処理のフォームのform_loadを通りません。
ブレイクポイントを一番上においても通らないのです。
その代わり、他の処理にあるコントロールをクリックすると
FORM_loadを通ります。
プロパティの読込時は[イベント プロシージャ]の指定になっています。
他の処理2というのもあるのですが、そちらは通ります。
両方のフォームのプロパティを見てもまったく同一です。
>>514 2002では大丈夫のようです。
ちなみに、
DoCmd.Close
DoCmd.OpenForm ("他の処理1")
としたらどうなりますか?
516 :
514:2006/02/24(金) 11:21:27 ID:???
>>515 同じでした。
通る処理と通らない処理があります。
再現性ないなぁ……。
518 :
NAME IS NULL:2006/02/24(金) 11:59:17 ID:3WkN0h5Q
97を2000で開いています。
MDB内にある全クエリ及びビューのSQL文をコマンド一発でテキストに落とすことは可能ですか?
>>514 詳細がわからないとどうにもならんよ
2002でいくつかプロパティいじってみたけど再現なし
>>518 コマンド一発は無理。自分でコード書くならquerydefで可。
521 :
NAME IS NULL:2006/02/24(金) 12:11:31 ID:3WkN0h5Q
>>520 コード書かないと無理ですか。。。
クエリ・リストを作って一個一個querydefをかます方法でやってみます。
ありがとうございました。
522 :
520:2006/02/24(金) 12:22:51 ID:???
>>521 こんな感じになる
Sub OUTPUT_ALLQUERY()
Const sFileName = "\コマンド一発でテキストに落とすことは可能.txt"
Dim db As DAO.Database
Dim qrys As QueryDefs
Dim qry As QueryDef
Dim sPath As String
Dim iFno As Integer
sPath = CurrentProject.Path & sFileName
Set db = CurrentDb
Set qrys = db.QueryDefs
iFno = FreeFile
Open sPath For Output As #iFno
For Each qry In qrys
Print #iFno, "■" & qry.name & "■"
Print #iFno, qry.sql
Next
Close #iFno
Set qrys = Nothing
db.Close: Set db = Nothing
End Sub
523 :
NAME IS NULL:2006/02/24(金) 13:19:00 ID:3WkN0h5Q
>>522 わっすごい!
一発ででましたw
コードまで、ありがとうございます。
助かりました。
524 :
514:2006/02/24(金) 13:19:08 ID:???
>>515 さん
>>517 さん
>>519 さん
また、原因を探っていただいた皆さんいろいろお手数おかけしました。
原因が判明しました。
画面に表示するレコードソースのテーブルが内容が
0件の時、発生していました。1件でもあればform_Loadを通るのです。
ヘッダで条件を入力して、その条件に合ったレコードを
抽出し、表示用のテーブルに入れ
(単純な表示ではないのでクエリは使えない、行の特定項目の入力もあるので)
その結果を画面に表示させるとき、前回終了時に抽出後のテーブルを
0件にするとform_loadを通らないようです。(プロパティは更新の許可のみ「はい」)
ですので、前回終了時には1件のダミーデータを残すようにしました。
そして、LOAD時に0件になるように対応しました。(追加の許可を「はい」にすると
無条件で1件入力行が出来てしまうので「はい」では都合が悪いのです。)
単純にForm_Loadは通るとおもっていました。
Form_Openでいいじゃん……
単純な質問ですいません。
アクセスのファイルを使うとき、Shift+Enterで内容見れたはずなんですけど、
見れなくなりました。
どうすれば、見れますか?
>>526 もっと詳しく。
見たいMDBをちゃんと選んでする状態で、Accessが入ってて(関連づけはされ
てるはずという前提)という状態なら、Shift+EnterでAutoexecマクロや起動時の
設定をスキップして開くことが出来ます。
アナタの状況で、どこかひとつでも抜けてるところはないか?
X-Finderのようなファイラで開こうとしてるってオチじゃないだろうな
ファイラーは関係ないんじゃない?
起動中にずっとShift押しっぱなしにしとけばいいだけでしょ。
ちょっと質問させてくださいまし。
今仕事で事務処理のオートメーション化をやってます。
accessの集計クエリが数個あり、それをExcelにエクスポートしています。
あらかじめExcelのマクロの記録で作った表(集計クエリの出力結果に合わせてある)
のVBAコードをaccess側の標準モジュールに貼り付けて、Callで呼び出して、エクスポートから表作成まで
オートメーションするようにしているのですが、レコード数がまれに増減するときがあり、
そのときは表が当然ずれるのですが、この表を動的に作成させるにはどうしたらよいでしょうか?
ちなみにOSはXP
Access2000をしようしております。
エクスポートさせるのはaccessのマクロをDoCmd.でやらせています。
良い知恵があればお貸しください。
あと良いサイト等あれば誘導お願いします。
VBAできるのか書け
ちょっと質問させてくださいまし。
今仕事で事務処理のオートメーション化をやってます。
accessの集計クエリが数個あり、それをExcelにエクスポートしています。
あらかじめExcelのマクロの記録で作った表(集計クエリの出力結果に合わせてある)
のVBAコードをaccess側の標準モジュールに貼り付けて、Callで呼び出して、エクスポートから表作成まで
オートメーションするようにしているのですが、レコード数がまれに増減するときがあり、
そのときは表が当然ずれるのですが、この表を動的に作成させるにはどうしたらよいでしょうか?
ちなみにOSはXP
Access2000をしようしております。
エクスポートさせるのはaccessのマクロをDoCmd.でやらせています。
良い知恵があればお貸しください。
あと良いサイト等あれば誘導お願いします。
>>532 ゴメ
戻る押しちまった・・・
VBAは多少わかります
>>533 んじゃ、DAO or ADOでその集計クエリ読み込んで、ActiveXでExcel操作しる。以上。
>>534 レスありです。
DAOやADOは試行錯誤中に試したりしたんですが、
結局Excelで操作ってのがよくわかりません。
マクロの記録で作ったコードを貼り付けるような単純なものではなく、
複雑のコードを書かないといけないということなんでしょうかねぇ・・。
あともう一つ質問なんですが、
accessの「ワークシート変換」みたいに、フィールド名も一緒にエクスポート
させつつ、更にセルを指定するには、どういったコードを書いたらいいんでしょうか?
セルを指定して、同じシート内に複数の集計クエリをエクスポート出来れば
、なんとか動的になりそうなんですけど・・・。
どうか宜しくお願いします。
>>535 スキルが足りてないのに面倒なことしようってのがそものもの間違いでね?
>>536 自分でもそう思うんだけど
なんか成り行きでw
実務をわかってない営業に言われるがまま
客先に出向したら、業務が聞いてた話しと違った・・・
試練だと思ってやってる感じ。
元々ネットワークやってたから、今必死でDBとVBA覚えてる
>>537 確かにそういうことは多々あるな。全く知識ないのにperl書かされたり。
とりあえずコマンド使わない方向で
rs!(index).nameでフィールド名取得
Excelシートオブジェクトのcellやrangeでセル指定
あとはfor eachでぐるぐる回せばなんとかなるだろ。
でもこんな調子じゃキリがないな。
!いらないな……
540 :
537:2006/02/26(日) 23:49:39 ID:???
あげ
>>537 Accessで難しいことしないでさ、Accessからテキスト(カンマ or タブ区切り)に
落として、AccessからExcelを起動してExcelのVBAをRun。
オートメーションにするかShellにするかでその後の処理が違うけど。
それ以上は、説明するのが面倒なので、こんな感じでやりたいって時は他の
人どうぞアドバイスしてやって。気が向けば、オレも書き込むけど。
Excel操作はExcelスレでな
544 :
NAME IS NULL:2006/03/02(木) 16:37:17 ID:kfbPLJ8I
Access VBA で Excel VBAのモジュールを起動する方法を教えて下さい。
あと、Access VBA で既に存在する空のExcelファイルにクエリを出力することはできますか?
(行いたい作業:クエリの情報をExcelファイルにエクスポートした上で
Excelファイルを編集する作業をExcel VBAで行いたい)
>>544 例によってActiveXでExcel操作しる。それプラスDAO or ADOでレコードセット操作。
出力したいExcelファイルがmdbと同じディレクトリにあると仮定して以下サンプル。
Excel 10.0 Object Library
DAO 3.6 Object Library
Sub Exceに出力してマクロも実行するよ()
Const tblName As String = "テーブル名"
Const SheetName As String = "出力したいシート名"
Const xlFileName As String = "出力したいExcelファイル.xls"
Const MacroName As String = "マクロ名"
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlPath As String
Dim iRow As Integer
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb
Set rs = db.OpenRecordset(tblName, dbOpenSnapshot)
xlPath = CurrentProject.Path & "\" & xlFileName
Set xlBook = GetObject(xlPath)
Set xlApp = xlBook.Application
Set xlSheet = xlBook.Worksheets(SheetName)
xlBook.Windows(xlBook.Name).Visible = True
xlApp.Visible = False
Do While Not rs.EOF
iRow = iRow + 1
xlSheet.Cells(iRow, 1) = rs!フィールド名
rs.MoveNext
Loop
xlApp.Run xlFileName & "!" & MacroName
xlBook.Save
If xlApp.Workbooks.Count > 1 Then
xlBook.Close
xlApp.Visible = True
Else
xlApp.Quit
End If
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
MsgBox "終わり"
End Sub
546 :
メガ初心者です。:2006/03/04(土) 01:58:46 ID:/BP0CPB6
メガトン級の初心者です。腹がたったら殴ってください。
フォームに検索ボタンを作りたいのですが、どうやればいいですか?
普通のctrl+Fの検索を、ボタンをクリックする事で表示させたいだけです。
殴ってもいいです。
>>546 コントロールを追加する時にウィザードが自動で起動するように
設定。ボタンつける→ウィザード→検索を選ぶ。
548 :
NAME IS NULL:2006/03/04(土) 09:11:30 ID:tKBiCBtC
教えてください
VBAの変数の値からクエリの抽出条件に入れこみ
選択する方法がありますか?
>>548 qry.Parameters(PrmName) = i
551 :
NAME IS NULL:2006/03/05(日) 23:48:32 ID:Yy1VCbcb
Accessで薬剤の在庫管理作ってもらうとしたら
いくらぐらいだろうか?
入/出庫、在庫の確認/レポート、繰越なんかができればいいんですが
五万〜十五万
>>552 社内SEだからよくわからんけど、そんな簡単に即答していいもんなのか?
会社の総務部(救急箱の管理)なのか、町の薬局なのか、病院内薬局なのか、医薬品卸業なのか、とか
つまり在庫の量とか点数とか入出庫先がどんななのかとか
それを使うPCは一台だけなのか同じ事務所内で2、3台なのか全国に支店があるのか
下手したら他社のフランチャイズの店鋪の在庫まで管理するのかとか
いろいろなケースがあるような気がするんだけど
>>553 要望が適当だったら値段も適当になるしかあるまい
せめて初期設定くらいはしてやろうぜw
>>553 簡単に額出すやつって、知ったかな奴か自分がやったことあるぞの
範囲内だから。Accessだって、UIを使いやすいようにって考えながら
作ると、ちょっとしたものだって結構複雑なのに気軽に作ってる奴が
多い。そういう奴らが、低額提示するからな。
>>551 AccessのVer.1.?ぐらいから10年以上やってる経験者だ。だからって
できる奴って証明にはならんが、ヘタレではないと思う。
最近は、制御系に戻ってC系やってるけど、マジでいいの欲しかった
ら捨てアドにメールしてみそ。
なるべく安く、いいもの作ってあげる。冷やかしじゃないけど、メアドは
怖くて捨てアドしか公表できん。
で、いくら?
↑詳しい要望も聞いてないのに金額は出せねぇだろ。
>>547 有難うございました。
何とか出来ました。
>>550 好きにしてください。
∧_∧
( ; )
( ̄ ̄ ̄ ̄┴-
| ( * )
/ / ∧ \
/ / / U\ \
/ / ( ̄) | |\ ( ̄)
/ ( ノ ( | | \ ノ (
⊂- ┘( ) └--┘ ( )
UUUU UUUU
562 :
NAME IS NULL:2006/03/07(火) 23:44:34 ID:OclRE+xF
ACCESS+SQL ServerでADO開発を行うのですが、お勧め本とか
あったら教えて下さい。
特に、排他制御等のトランザクション制御に関して、詳しい情報を
探しています。
向こうのスレの質問取り下げなきゃただのマルチだ
と思ったら他のスレでも更に
>>562を見つけた。
どう見てもただのマルチです。本当にありがとうございました。
565 :
NAME IS NULL:2006/03/08(水) 11:25:08 ID:HHnhJJK4
商品データベースを作ろうとしています。
商品には商品コードがあり、いくつかの意味を持った文字列が連結し、ユニークとなっています。
例えばP51360Aという商品コードは、「P」がカテゴリ、「51360」がカテゴリ内の商品IDで、カテゴリをまたぐと重複します。
「A」は商品のバリエーションIDで、無い場合もあります。商品コードを構成するパーツは個別に、別のテーブルとリレーショナル
にしたいと思っていますので、下記のように商品コードを分離して設計してみました。
> カテゴリID, 商品ID, バリエーションID, 商品名, 価格, 〜
カテゴリID〜バリエーションIDまでの組み合わせに主キーを設定し、各フィールド単体では重複ありとしました。バリエーションIDは
ない場合があるものの、主キーとして値要求されるため、空文字許可のうえ、規定値""として誤魔化しました。しかし、
バリエーションIDを一旦登録してから削除する場合、作業者が""と入力しなければならなくなりました。なにか対策ないでしょうか?
別の方法として、商品コードをまとめて1フィールドにし、後から分離して処理、とか、主キーを新たな連番型で設定する、
などを考えて見ましたが、それぞれで行き詰まりました。
上記のようなデータベースを作る際のセオリーなどありましたら教えて頂けないでしょうか。
行き詰まる理由が分からない
↑オレもそう思う。
>>565 まさか、作業者って直接テーブル開いてデータ操作してないよな?
フォームだったら、更新前にバリエーションIDがNullだったら""に
するVBAにするだけだろ。
>>565 余計なお世話かもしれないが、運用中何かの拍子で商品テーブルのバリエーションIDに
""(空文字列)じゃなくて"□"(全角スペース)などを入力されると
見かけ上は""(空文字列)で登録されてるように見えて、しかし伝票テーブルなどから
商品テーブルにJOINしてもレコードが見つからないなど、そういう困った事態に陥る可能性大だぞ、それ。
""(空文字列)の代わりに"-"とか、目に見える文字で代用する仕様を激しく推奨。
>>565 自分が設計者なら'P51360A'を数値化する
P51360A=Pのコード*100000*X+51360*X+Aのコード (X=バリエーションIDの個数)
Win2000Pro 上で Access2003+SQL Server2000 Dev. を使っています。
本番環境は NT4SVR 上で MSDE2000 を使用します。以下の操作は、
全て前者の開発環境にて行いました。
既存のテーブル db.dbo.hoge に、docmd.TransferSpreadsheet を使って Excel の
データを取り込もうとしています。とりあえず
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "db.dbo.hoge", "c:\test.xls", true
と実行したら、なんと"db_dbo_hoge"というテーブルを新規に作成してしまいました。
テーブル名を "hoge" だけにすると、dbo でログインして実行するときちんと既存の
テーブルにinsertしました。
しかし、別のユーザ(例えば usr) で入って実行すると、今度は usr.hoge というテーブルを
新規作成してしまうのです。
dbo 以外のユーザが既存のテーブルに Excel のデータをインポートするのに、
良い方法はありませんでしょうか。
みなさま、ありがとうございます。
行き詰まった、というのは考えに行き詰まったということでした。
根本的な設計に問題がないのかという点でつっこみを入れてもらえればと思ったわけです。
VBAで解決する他なければVBAにしようと思います。
全角スペースの件、なるほどです。ハイフンを入れるのには少し抵抗があります。
ただ、幸いこのIDは、A-Zという単純な仕様ですので、それ以外を排除する仕組みは
テーブル定義のレベルで解決できるのではないでしょうか(まだその方法は知りませんが)。
数値化の件、大変失礼ですが、ネタですか?ちょっと考えただけではネタかどうかも判断できませんでした。
572 :
NullBrain:2006/03/09(木) 12:35:47 ID:vEkg7hwP
現在クエリを使って新旧の住所データマッチングを行っています。
色々調べてみたのですが、以下のマッチング方法が解りません。
識者の皆様ご教授ください。
【DB1】
〒 | 都道府県 | 住所1 | 住所2 | 住所3
【DB2】 ↓
〒 | 都道府県 | 住所
という形でDB1.[住所1]とDB2[住所]のマッチングを行いたいと考えています。
DB2[住所]は、DB1.[住所1]の内容を含んだ内容です。
FROM DB1 RIGHT JOIN DB2 ON (DB1.[住所1] = Like DB2.[住所]) AND (DB1.[住所1]&"*" LIKE DB2.[住所]);
を試してみましたが、肝心な新住所は表示されません。
どなたか、良い方法をご存知でしたら教えてください。
ON (DB2.[住所] LIKE "*"&DB1.[住所1]&"*" );
こうじゃねぇか??
うまくいくかは試してくれ。
わざわざFROMにそれを書かなくても良いような気がする。
Oracleなんかだと、Fromにテーブルを羅列して条件はWHEREにまとめたり
とか。条件は、573 が正しい。
575 :
NullBrain:2006/03/10(金) 15:51:11 ID:p2TFlY+C
>>573 >>574 レスおそくなってすいません。
お二人ともありがとうございます。
ご指摘どおり変更し、無事に解決しました。
今後はもうちょっと勉強して、ソースをきれいにかけるようにしてみたいと思います。
本当に助かりました。
ありがとうございます。
FROM句に文字列結合とか使えると初めて知った
FROM で絞らないと、直積した表ができてメモリがパンクしたり…しないか。
テーブルの羅列だけで終わっちゃうと、全組合せだからなぁ。
FROMは、普通の=(LIKEとかじゃなくて)だけにした方が、いいかと。
Accessの場合はだけど。
579 :
NAME IS NULL:2006/03/14(火) 16:41:58 ID:bxZB0Zql
【. 目 的 】 クエリーの結果が莫大なので先頭50件のみ表示とかやりたい
【. 条 件 】 Access2000 WindowsXP DAO3.6
【. 概 要 】 OracleのノリでRowID > 50 とかやったけど怒られますた
581 :
579:2006/03/14(火) 16:48:11 ID:???
582 :
570:2006/03/14(火) 18:46:52 ID:???
質問させてください。
VB.NETからACCESSのデータを取得するには以下のコードでできたのですが、
このとき対象となるテーブルに排他ロックをかけたいのですが、
可能なのでしょうか?
SQLSERVERであれば、
select * from テーブル名 with(tablockx,holdlock)
で可能ということはわかりました。
ご教授よろしくお願いします。
Dim oleConn As System.Data.OleDb.OleDbConnection
Dim retTb As New DataTable
Try
'DataBaseに接続する
oleConn = New System.Data.OleDb.OleDbConnection
oleConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
+ "Data Source=" + "@データベースのパス"
oleConn.Open()
'Select文を発行する
Dim selectCommand As System.Data.OleDb.OleDbCommand
selectCommand = New System.Data.OleDb.OleDbCommand
selectCommand.CommandText = "SELECT * FROM " + "テーブル名"
selectCommand.Connection = oleConn
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
da.SelectCommand = selectCommand
da.Fill(retTb)
584 :
☆質問☆:2006/03/17(金) 15:21:14 ID:9gNDMn+X
AccessのDBからExcelファイルに出力する際、
セルの中にかなりの長文があると、出力後に途中で文字が切れてしまいます。
このような長い文章も最後まで表示させる為にはどうすればよろしいでしょうか。
(ついでに・・・Accessの"テーブル"に長文が入っていて、
"クエリ"を編集する時に、クエリプロパティの「固有の値」が「はい」とすると、
これまた文字が切れてしまいます。固有の値がいいえの時はフルに表示されますが、
これもできれば全部表示させたいのでご存知の方、ご教授願います。)
SQLコマンドで規定値を設定する方法ってありますでしょうか?
KITEI TEXT(100) DEFAULT '規定値'
とやってもDEFAULTが構文エラーと出てしまいます。
587 :
586:2006/03/22(水) 02:36:03 ID:???
自己解決しました。
CREATE TABLEで規定値設定は出来ないようなので
テーブルを作ってからALTERで規定値の設定を行うようにしました。
>587
CREATE TABLE A
(
B NVARCHAR(20) CONSTRAINT NULLPO DEFAULT('NULLPO')
)
>>588 Access2000のヘルプでは、CONSTRAINT句にDEFAULTってないんだけど。
ALTERにも既定値の設定はないのだが・・・。何を見ればわかりますか?
自分がやるとしたらSQLじゃなくて、tabledef/Fielddefを使ってやっちゃいま
すが。
accessって便利なのかそうでないのか良くわからんな(1年程度しか使ってないけど)
ファイルメーカーとか桐とか併用しているひと居る?
作業効率とか知りたいな・・・なんて
591 :
NAME IS NULL:2006/03/27(月) 01:17:44 ID:JJCCFccY
ADO使ってフィールドが空のレコードを抽出したいんですが
SQLどう書けばいいですか? フィールドは日付型です。
Set rs = New ADODB.Recordset
rs.Open "SELECT 日付 FROM テーブル WHERE ???"
593 :
NAME IS NULL:2006/03/27(月) 02:39:31 ID:JJCCFccY
>>592 ありがとうございました。
WHERE 日付 = Nullでやってだめだったんで試してなかったです。
何が違うのかなぁ。
594 :
NAME IS NULL:2006/03/27(月) 08:21:00 ID:PpwYy0Q6
さぁー回ってきましたっ!
この文を3〜10ヵ所に貼り付け、回してくださいw
これをやった貴方は絶対に夢や学校一のモテ仔に
なりますw
やんなかったら不幸が突撃します
もうココまで読んでしまった人は最低3ヵ所は回さないと絶対不幸が100%突撃して死亡するでしょう
この画像は最低3ヵ所回してから見てください
こちら
3〜10ヵ所って事は3箇所以上だったらなんでもいんですよっ!
やればやるほどし・あ・わ・せ!
これやった人は実際に
両思いになれたり、
学校一のモテ仔になれたり、
夢が叶ったり
欲しい物が手に入ったり。
一気に幸せが手に入ります
だから移せば移すほどお得!
成功した人の名前↓
山田三春
中野 純
その他にもたっくさん叶った人が居ます
だから回してね失敗した人なんて居ません
595 :
592:2006/03/27(月) 08:58:57 ID:???
>>593 試す試さないの範疇ではないっすよ。そういう決まり事なので、
よくヘルプを読みましょう。
596 :
NAME IS NULL:2006/03/27(月) 13:33:42 ID:JJCCFccY
>>595 WHERE 日付 = #3/27#とか書いてもOKなのでいいのかなと...
これからはきちんと Is使います。ありがとうございました。
WHERE 日付 Is #3/27#
>586
クエリを使うとヘルプにあるものしか使えないけど、ADO を使って流し込むと
DEFAULT だろうと ON UPDATE/DELETE CASCADE/SET NULL だろうと流し込める。
600 :
NAME IS NULL:2006/03/29(水) 22:00:17 ID:dUAdN6tL
CygwinのperlでWin32::ODBCを通してmdbファイルへアクセスしているのですが、
中身がsjisらしく use encoding 'cp932' しないと文字が化けてしまいます。
検索すると、SQLで set character set を使うと正しく読み込めるとあるのですが、
直りそうにありません。
どうすればよいのでしょうか?。
LDAPを併用したいので、use encoding 'utf8' で通るのが、望ましいと思っております。
現在は use encoding を使わずに、LDAPのデータに Encode::decode('utf8',ほげ)、
ODBCのデータに Encode::decode('cp932',ほげほげ) としております。
601 :
NAME IS NULL:2006/04/03(月) 22:17:38 ID:Ebobik3g
Win4.0NT上で、Access97で作成したんですが
フォームの追加や編集をWinXP上のAccess97でやってると
(多分20回ぐらい、日付にして2日間くらい)
そのデーターベースの起動時にエラーで開けなくなってしまいます。(NT・XPとも)
修復を実行してもなおらず、調べていくと開けなくなったフォームがありました。
そのフォームの編集・削除もエラーではじかれます。
仕方ないので、エラーになった後は、そこから必要なテーブルを動いているデーターベースに
コピpして逃げていますが。。。原因って何?
602 :
601:2006/04/03(月) 22:24:39 ID:???
間違い フォームの追加
正しくは フィールドの追加
>>601 コピペってオブジェクトをコピペしてるのか?・・・なぜインポートじゃないの?
壊れてるフォームもか?・・・その場合は、壊れてるフォームはコピペせずに
新しく作る。まっさらなフォームにコントロール類をコピペでいいと思うが、そ
れでも壊れてしまうなら0から作り直しだな。
原因は、他の人が説明してくれるのを待つか自分でMSの技術情報を調べな
さい。壊れる要因は、これだけあるよってのは見つけられても、アナタのMDB
がどの原因で壊れたのかは断定できんぞ。たぶん。推測なら可能だが。
チャチなCPUしかもたないPCとリッチなPCで編集合戦をすると、
チャチなPCのldb生成が間に合わずリッチなPCがチャチなPCを無視する形で
ガンガントランザクションを走らせてmdbを壊すことがあるらしいぞ。
605 :
601:2006/04/05(水) 20:36:41 ID:???
ども。
エクセルで契約書のテンプレを作って、
アクセスのDBから契約者の名前や住所を取ってきて印刷したいんですが
(ワードの差込印刷みたいなことがやりたい)
できますか?
データ - 外部データの取り込み
もしくはAccessからExcel操作してセルの値変更。
そしてどちらもExcelスレで聞くべき領域。
全部Accessのレポートでやってしまおうとは思いませんかそんなにExcelがつかいたいですかそうですか本当にありがとうございました
>>610 そりゃExcelのほうが35倍ぐらい楽だ。
個別のファイルとして保存したいとか先方に送付したいとか
いろいろあるんじゃないの?
ユーザーがテンプレいじれるって利点もあるお
>613
弄った結果ぐだぐだになって後始末をさせられる事もあるんだよな。
テンプレいじらすのはマズイだろう……
ユーザーの意向を元に開発側で変更かけるべきかと
レポート作るの面倒なとき、エクセルとかで作ったものを貼り付けて
必要なところだけテキストボックスを配置するって言うのは邪道?
うん
618 :
Nz(NAME,'名無し'):2006/04/09(日) 12:29:20 ID:Ox/++nFx
昔作った自作の顧客管理を変更してみてるんですけどイマイチ操作とか忘れぎみで困ってますw
まあ、ボチボチ思い出しながらやってて行き詰った部分が
CSVでデータ出力する為にエクスポートの定義ファイルを使って吐いている部分で
変更に伴ってエクスポートの定義ファイルも変更したいのですが
以前保存してあるエクスポートの書式って変更できないのでしたっけ??
CSV側はいいとして固定長のも1本あるので面倒すぎます
また最初から作り直すしかないのでしょうか?
うろ覚えだと、なにかテーブル定義みたいな画面で直せた記憶があるのですが
見当たらないので質問させて頂きました、ご存知の方よろしくお願い致します
619 :
618:2006/04/09(日) 12:31:47 ID:Ox/++nFx
おっと、因みに MS-Access2000 です
>>618 手動でやってみなよ。その時に定義を選択できるでしょ。
そこで追加するし、変更するし、削除もするし。
621 :
NAME IS NULL:2006/04/11(火) 00:02:27 ID:0yl7t/Vm
>>620 おっしゃる通り手動でやるときに保存していたものを呼び出して変更できました
ありがとうございました
622 :
NAME IS NULL:2006/04/13(木) 19:48:54 ID:Wy9PPYcg
すみませんAccess勉強中なのですがどうしてもわかりません。
クラスモジュール=何かに関連付けられた限られたモジュール
ってことはわかったのですが、、、
例えばクラスモジュール「cls例1」というものを作って
フォーム「F例1」の「開くときイベントプロシージャ」に
「Call cls例1」と書けば呼び出せるってことですか?
ためせばわかることではありませんかわかりませんかためせませんか
>>622 まぁ、VBAごときでクラスモジュールなんて使うな。
これで悩まなくて済むだろ。マジで使わなくても結構な
システム作れるって。
625 :
622:2006/04/14(金) 01:48:29 ID:???
>>623 試したらうまく動かなかったのです;;
いや読み込めてるのだと思うのですが、何かがおかしいみたいです。
なので考え方があってるのか質問してみました、ごめんなさい。
>>624 と、ある機能を実現したくて調べていたら
ぴったりのモジュールを公開していらっしゃるページがあったので
使ってみました。
でも、知識不足でうまく動きません;;
きっと基本的なことがわかってないのだと思います((。´Д⊂)
ここに、そのコード書いたらまずいですよね?やっぱり・・・。
お前の脳味噌が不味い
公開してあるページにサンプルコードはないの?
628 :
624:2006/04/14(金) 09:14:10 ID:???
>>625 単なるコピペじゃなぁ〜。で、それだって、中身が少しは理解できれば
クラス使わなくてもできるぐらいはわかると思うぞ。
オレも激しくそのサンプルに興味ある。
そのサイトのURL貼ればいいんでね?
630 :
622:2006/04/15(土) 16:33:02 ID:???
631 :
622:2006/04/15(土) 16:40:08 ID:???
上のモジュールを使ってやりたいことは
環境:Access2000
[フォームA]の中の任意の[サブフォームB]にある
非連結オブジェクトの[テキストボックスA]の値を参照して、
同じく[サブフォームB]にある[テキストボックスB]に休日名、日曜日を取得したいです。
質問です。
クエリで最頻値を集計したいのです。
テーブルT、フィールドがF1,F2で、
F1 F2
東京 A
神奈川 A
神奈川 A
というテーブルTがあるとして、グループAのF1の最頻値は神奈川ということで、
F1の最頻値 F2
神奈川 A
という結果を得たいのです。
SELECT Count(T.F1) AS F1のカウント, T.F1, T.F2 FROM T GROUP BY T.F1, T.F2;
というクエリをつくって東京Aと神奈川Aのカウントを求めても、そこから神奈川Aという結果を出せません。
どなたかいい方法をご存知のかた、お教え下さいませ。
>>632 神奈川 B ってのがあるのか?
F2の意味がわからんだろうに。それと、1件だけ取り出したいのか?
俺もF2の存在意義が分からないが、Countで並べ替えてTOP1でいいじゃん。
635 :
632:2006/04/16(日) 21:52:37 ID:???
F2はグループ化して、
神奈川 A
神奈川 B
北海道 C
というように、AについてF1の最頻値、BについてF1の最頻値、CについてF1の最頻値というように集計したいのです。
636 :
632:2006/04/16(日) 22:16:34 ID:???
SELECT Max(T.F1) AS F1の先頭, T.F2 FROM T GROUP BY T.F2
要は、上のクエリでMaxをModeで置き換えたクエリにしたいのです。
実際は、Modeがないのでできないのですが。
SELECT Q.F1, Q.F2, Max(Q.F1のカウント) AS F1のカウントの最大 FROM Q GROUP BY Q.F2
632のクエリをQとして、こんなクエリをつくってもエラーになってしまいます。
SELECT T.F1, T.F2, Count(T.F1) AS F1のカウント FROM T GROUP BY T.F1, T.F2 ORDER BY Count(T.F1) DESC
SELECT First(Q.F1) AS F1の先頭, Q.F2 FROM Q GROUP BY Q.F2
634見てこんな感じにしてみたけど、なんか違う…。
頭の悪いSQL書けて自分で大笑いしたのでお前らも見てくれ。
F1だのF2だのTだの名前付けが分かり辛すぎるので、県名,好きな動物,テーブル名に変更。
SELECT *
FROM
(
SELECT TOP 1 好きな動物,県名
FROM テーブル名
WHERE 好きな動物="ウサギさん"
GROUP BY 好きな動物,県名
ORDER BY Count(*) DESC
) AS tmpウサギ
UNION
SELECT *
FROM
(
SELECT TOP 1 好きな動物,県名
FROM テーブル名
WHERE 好きな動物="キリンさん"
GROUP BY 好きな動物,県名
ORDER BY Count(*) DESC
) AS tmpキリン
UNION
SELECT *
FROM
(
SELECT TOP 1 好きな動物,県名
FROM テーブル名
WHERE 好きな動物="パンダさん"
GROUP BY 好きな動物,県名
ORDER BY Count(*) DESC
) AS tmpパンダ
638 :
632:2006/04/16(日) 22:49:45 ID:???
636の
SELECT T.F1, T.F2, Count(T.F1) AS F1のカウント FROM T GROUP BY T.F1, T.F2 ORDER BY Count(T.F1) DESC
を、INTO文つけてテーブル作成クエリにして、そのテーブルをもとにその次のクエリを使ったらうまくいったっぽい。
当面はこれで行ってみます。
実際はこんな感じ。
SELECT T.F1, T.F2, Count(T.F1) AS F1のカウント INTO X FROM T GROUP BY T.F1, T.F2 ORDER BY Count(T.F1) DESC;
SELECT First(X.F1) AS F1の先頭, X.F2 FROM X GROUP BY X.F2;
並べ替えたクエリの先頭を集計しようとしてもうまくいかないのかな。テーブルにしないと。
ユニオンクエリは、Cまでならまだしも、Zまで増えたら苦しいかな。
あと、SELECTにTOP nなんてかけるんですね。知らなかったです。
ありがとうございました。
639 :
NAME IS NULL:2006/04/18(火) 07:49:41 ID:CO80qcqI
クエリで解決すべきことなのか不明なのですが、教えて下さい。
ID 名前 親ID
000 太郎 000
001 一郎 000
002 次郎 000
003 三郎 001
上記テーブルがあったとして、各レコード(人)は親が誰かというデータを持っています。
ここで、最初の人「000 太郎」から見ると、3人の子孫がいることが分かります。
ここで、「一郎側は1世代」「次郎側は2世代」という風に、自分の子供別に何世代まで
存在するかと調べたいのですが、こういうのは、どうやれば良いのでしょうか?
何かヒントだけでも頂けるとありがたいのですが。
>>639 世代を示すフィールドがなきゃ無理。
まさか、IDが兼用じゃないだろ。
一応、↓のような感じで無理矢理求めることは可能。
ただし、例は親が存在しない場合はID入れずにNullの場合。
SELECT tmp1st.ID,tmp1st.NAME,
IIF(IsNull(tmp2nd.ID),"第一世代のみ",
IIF(IsNull(tmp3rd.ID),"第二世代",
IIF(IsNull(tmp4th.ID),"第三世代",
IIF(IsNull(tmp5th.ID),"第四世代","第五世代")
)
)
)
FROM
(
(
(
(
tbl世代 AS tmp1st LEFT JOIN tbl世代 AS tmp2nd ON tmp1st.PARENTID=tmp2nd.ID
)
LEFT JOIN tbl世代 AS tmp3rd ON tmp2nd.PARENTID=tmp3rd.ID
)
LEFT JOIN tbl世代 AS tmp4th ON tmp3rd.PARENTID=tmp4th.ID
)
LEFT JOIN tbl世代 AS tmp5th ON tmp4th.PARENTID=tmp5th.ID
)
ただし、設計を見直した方が良いような気がしないでもない。
工程管理の為にDBを作ろうと思うのですが、
指定した期間をカレンダー表示するのにみなさんはどのようにされてますか?
また、どのようにしたら良いでしょう?
テーブル、クエリ、マクロは理解できますが、VBAはわかりません。
よろしくお願いします
まず具体的に説明する能力身につける
>>643 すみません。あまり長くなるのも如何なものかと思い。。。
今はエクセルの表で使って
1日 2日 3日 4日 5日 6日 7日 8日
← 作業A →← 作業B → ・納品
て、感じで作ってたのですが、どうしてもDB化したくなったのですが、
access上で同じように日にちの経過と作業内容を数字以外で表示したかったのです。
開始年月日と終了年月日いれて
開始日時から終了日時に「>」をいれて、それの中間に任意のテキストを代入
開始と終了が同じ場合は「・テキスト」
これを仮テーブル(?)で表示出来ないかと考えたのです。
どなたかいい知恵を下さい
>VBAはわかりません
じゃ、出来ないってことで。
>>630 同じページの上の方に、クラスモジュールじゃないふつうの
ユーザー定義関数版もあるみたいだけど。
クラスに慣れるまでは、そっちを使った方がいいんじゃない?
テキストボックスのコントロールソースに「=休日(日付式)」と
記述すれば済む。
=休日(Me![テキストボックスA])
みたいな。
質問です。
テーブル[M_Foo]
ID(String型) Name(String型) Price(通貨型)
─────────────────────
101 あああ <Null>
A01 いいい 100
201 ううう <Null>
B02 えええ 201
というテーブルがあり、それを加工したクエリ
クエリ[Q_Foo_Base]
SELECT ID, Name, Cstr(Price) AS 親ID
があります。
それらを基に新たな選択クエリを作成したいのです。
ID Name 親ID 親Name
─────────────────────
101 あああ <Null> <Null>
A01 いいい 100 あああ
201 ううう <Null> <Null>
B01 えええ 201 ううう
という結果を取得したく
クエリ[Q_Foo]
SELECT [Q_Foo_Base].[ID], [Q_Foo_Base].[Name], [Q_Foo_Base].[親ID], [M_Foo].[Name] AS 親Name
FROM Q_Foo_Base LEFT JOIN M_Foo ON [Q_Foo_Base].[ID] = [M_Foo].[ID]
とやってみても 「 [!] 結合式がサポートされていません。」という
メッセージボックスが表示されて結果を取得できません。
LEFT JOIN でなければエラーはでないのですが、本来取得されるべきレコードが
取得できません。
そもそも、通貨型のフィールドを無理やり流用しているので無茶なのかもしれませんが・・・。
業務上、新たなフィールドを作成したり、新たなテーブルを作成することはできるだけ
避けたいのです。
このような無茶な再帰はダメなのでしょうか?
とりあえずカキコの通りにやったら結合式が(ryにはならず、こうなった。
IDName親ID親Name
101あああ#エラーあああ
201ううう#エラーううう
A01いいい100いいい
B02えええ201えええ
質問の内容はID=101とPrice=100がJOINしてたり、PriceとIDではなく
IDとIDをJOINさせたりしてる部分があからさまにコピペミスっぽい。
落ち着いて再質問のこと。
649 :
647:2006/04/19(水) 17:17:38 ID:???
>>648 すみません、まちがえてました。
基になるテーブルは
テーブル[M_Foo]
ID(String型) Name(String型) Price(通貨型)
─────────────────────
101 あああ <Null>
A01 いいい 101
201 ううう <Null>
B02 えええ 201
です。
で、取得したいクエリ式は
クエリ[Q_Foo]
SELECT [Q_Foo_Base].[ID], [Q_Foo_Base].[Name], [Q_Foo_Base].[親ID], [M_Foo].[Name] AS 親Name
FROM Q_Foo_Base LEFT JOIN M_Foo ON [Q_Foo_Base].[親ID] = [M_Foo].[ID]
でした。
コピペできない、別のPCからカキコしてたので・・・
苦しい言い訳スマソ。
650 :
647:2006/04/19(水) 17:37:07 ID:???
> 基になるテーブルは
>
> テーブル[M_Foo]
>
> ID(String型) Name(String型) Price(通貨型)
> ─────────────────────
> 101 あああ <Null>
> A01 いいい 101
> 201 ううう <Null>
> B02 えええ 201
<Null>ではCstr関数でエラーになりますよねw
実データには既定値0が入っているので気づきませんでしたorz
で、
テーブル[M_Foo]
ID(String型) Name(String型) Price(通貨型)
─────────────────────
101 あああ 0
A01 いいい 101
201 ううう 0
B02 えええ 201
で試してみると
ID Name 親ID 親Name
─────────────────────
101 あああ 0 <Null>
A01 いいい 100 あああ
201 ううう 0 <Null>
B01 えええ 201 ううう
と、取得したかったデータが取得できてしまい、例のエラーが
再現しませんでした。
でも、実テーブルでやるとエラ(ry
もうちょっと自分でも調査します。
651 :
647:2006/04/19(水) 18:19:03 ID:???
連投スマソ。
例示したデータと実データで結果が異なる原因らしきものに気づきました。
Access2000を使用していますが、
・例ではmdbファイルのローカルテーブル
・実データはSQLServer2000のテーブルのODBCリンクテーブル
です。
Cstr関数を使用してデータ型の変換を行っているからなのかな・・・
SQLServerでCASTやCONVERT関数でデータ型の変換を行うのとは
少々違うからなぁ・・・
結局ここで時間を食うわけにもいかないので、フィールドを追加して
今回は回避しようと思います。
>651
一言だけ言わせてもらえば、そう言うデータ変換が必要になる
要件って何?
まぁ、設計からミスってるんだよ。
654 :
622:2006/04/20(木) 02:22:35 ID:???
>>646 ぉぉ!!アドバイスが!!!ありがとうございます。
もう誰も教えてくれないものだとあきらめておりました。
でですね、関数のほうも試してみたのですがうまく動かず「?Noname」に
なっちゃうんですよね・・・・
>>646さんの=休日(Me![テキストボックスA]) もやってみたのですが、
(新規でちょーシンプルなdb作ってやってみました)
やっぱりノーネーム・・・・、ちょっと別パソでやったので詳細は後で
ご報告します。きっと私が馬鹿なのですが・・・・あ、でもオブジェクトの
名前間違えてるとかではないですよ!
お返事ありがとうございます!!
> きっと私が馬鹿なのですが
そうだよ。
> きっと私が馬鹿なのですが
不具合起きる理由の9割がこれだよな
657 :
647:2006/04/20(木) 15:27:51 ID:???
>>653 ちげーよ!!
ウチが開発して売ってるパッケージシステムを、ある顧客が使用していないフィールドを流用したいと
言い出したんだよ。
わざわざその1顧客の為にテーブルの構造を変更するのもイヤだったんで。
ま、べつにわかってくれなくてもいいけど。
>>657 CStr() はVBAで、SQLではないことを念頭に置く。AccessというDB用クライアントUIプログラム側の付加関数。よって、ある意味、例外的存在。
で、例がMDB=クライアントDBで、
実際のDBはサーバ側のSQLServerで、
その操作やテストが実はクライアントUIのAccess+ODBC+SQLServerって、
最終目標がどれなのか全然はっきりしてねーじゃんか!
どれやねん!っとかなり激しくツッこまれると思うんだが。
この3つのパターン、それぞれで、結果もエラーも異なることが多々あるのだが、知ってるのか?
Null値を考慮するなら、VBAとしてはNz()もかますことが必須。
ODBCがエラー起こすなら、MDACのバージョンが古い可能性あり。
Jet4.0SPも最新版をあてること。
というか、ODBCを利用している理由が不明瞭。
ODBCっつーのは、もう、過去の遺物と考えるべき。
実際には非同期だし、ドライバによっては使用できないSQLステートメント多々あるし。
「CASTやCONVERT関数でデータ型の変換」が理解できるなら、
EnterpriseManagerとクエリアナライザを使用するか、
AccessをADPプロジェクトでOLEプロバイダ経由でSQLServerに接続して(これも不安定だけどODBCよりは良い)、
Viewを新規作成してしまったほうが、速攻で希望のレコードを取得できるのではないか?
View上で、STR()やRTRIM()やIsNull()を応用すれば、すぐ作れると思うが。
結局、その顧客用のViewを用意するだけだよな、SQLServer用に。
で、その顧客のDBだけにそのViewのスクリプトを流せばインプリメント終了だよな。
クライアントUIであるAccess側にQueryを必死になって例を作成している理由がわからん・・・・。
最終目標はSQLServerなのに、試作やテストがMDBって、その時点でもうね、
「きっと私が馬鹿なのですが 」に激しく同意できるよ。
最後に・・・
「ま、べつにわかってくれなくてもいいけど。 」って言うなら、
最初から質問しないほうがよいとおもうが???
「わざわざその1顧客の為にテーブルの構造を変更するのもイヤだったんで。」
普通のパッケージソフト屋なら、
そんな受注自体、受けない。受けた時点で、パッケージじゃないし。
それ受注した時点で、カスタムパッケージだし。
っつーかID値がString(Varchar???)ってだけで、
そのパッケージソフトのレベルが(ry・・・
どうぜ、Access97くらいのソフトをSQL2000にアップサイズしたんだろうな。
>>658 >オススメの近親相姦スカトロホモビデオありませんか?><
まで読んだ
660 :
647:2006/04/20(木) 18:54:51 ID:???
>>658 データ加工用サブツールをmdbで作ってあげてるだけさ。
メインがmdb + ODBC + SQLServer てなワケじゃないし。
おめーの知ってる世界がどの程度のものか知らないが、えらそうに。
世の中には色んな業種があってその業務内容に併せたシステムが必要だろーよ。
既存の業務内容と共存してシステムを導入していくにあたり、おめーでは
理解できねーよーなことも当たり前にやんなきゃなんねーこともあるんだよ。
いい加減大人げないスレ汚しは止めてくれないか?
これは酷い
ありゃま。
ごめんなさい。
おいら、ちょっと調子にのっちゃったよ。
ごめんね
>>647さん
おいら、こどもなので、647さんのようなおとなの事情は理解できませんでした・・・。
これからはもっと、ふいんき(←なぜか変換できない)を読むようにします!
しばらく、黙りますね。
ほんとにごめんなさい、みなさま。
追伸:
>>659さんへ
こどもなので、巣か吐露の魅力も快楽も理解できません。
ごめんなさい。
>>663 いい加減大人げないスレ汚しは止めてくれないか?
>>647 は、人にもの聞く態度じゃないし、どうでもいいんじゃない。
設計=DB構造だけじゃなくてさ、アンタの考え方がずれてんだって。
サブツールなんてオマケなら、テーブルやフィールド作りたくない
なんて言わんと、作りゃいいじゃん。
オレは、悪態ついてる、オメーの方がわからんし、そこまで偉そう
に突っ張るなら2chで質問なんかしないで、自分で解決しろや。
>>664 ふ〜ん、だから、>659 のような「おとなの書き込み」が許されるのか・・・・。
>>665 いい加減大人げないスレ汚しは止めてくれないか?
>しばらく、黙りますね。
白痴の王子は数時間前の自分の書き込みすら忘れる知障
いい加減大人げないスレ汚しは止めてくれないか?
671 :
646:2006/04/21(金) 21:54:33 ID:???
>>654 > 関数のほうも試してみたのですがうまく動かず「?Noname」に
「#Name?」のことかな?
じゃ、「Me!」が悪いのかもしれないので、付けずに「=休日([テキストボックスA])」
だけで試してみてください。
>>671 そこまで優しくするか。
どこが悪いのかも調べず、ただ報告しクレクレするだけ。
放置すれば。
初めてクラスモジュール作ってみたんだが、private宣言した変数や定数も
ウォッチ式で見れるんだな。プロパティに設定していないから値の取得は
できないけど、なんか恥ずかしいな。
Postgres(LINUX OS)のデータベースに、ACCSESS上のテーブルをエクスポートを使って
転送しようと考えたのですが、Public以外のスキーマにテーブルを転送することが出来ません。
つまり、テーブルのエクスポート先として、スキマー,テーブル名をAccsessが許してくれないのです。
何か、上手い回避方法は無いでしょうか?
まあ、一旦Publicに転送して、そのPublicから各スキマー転送する事は、考えられるのですが、
そのスキマーの所有者に、パブリックを覗く権限をあたえたく無いものですから。
675 :
NAME IS NULL:2006/04/27(木) 16:36:50 ID:QDBK4Lkv
質問なんですが
DBから任意の日付基準でデータを
抽出したい場合、クエリーならば日付の記入されている
データに対し、
>=[抽出範囲開始] And <[抽出範囲終了]
とすることでポップアップで範囲を聞いてきますが、
このような動作をする機能をほかの方法で作るとしたら
どのようにしますか?
この答えわかりますか?よろしくお願いします。
すきにしろ。
質問が抽象的すぎてもうね。自分でも何を求めているか分かってないじゃん。
678 :
NAME IS NULL:2006/04/28(金) 01:32:29 ID:kPwkAuXq
質問です。
上司からAccess勉強しろと言われたんですが、
Excelでもデータベース的な事は出来るみたいですし、
Accessを使う利点ってどういうものなのでしょうか?
Excelでも、VBAとかでDB出来るのでは無いでしょうか?よく分らんのですが。
本屋で教本をチラ見したら、ExcelでDBどうたら書いてあったもので。
Excelの使い方もしらねーの?
>>678 Excelのシートにゃインデックス機能ないから低速。
実装もめんどい。わざわざ苦労したい人にマジオススメな方法。
そして賢い人間はAccessではなく桐を使う。
確かに桐は使いやすいけど、今更桐って感じだな。
妥協してアクセスか、PHP+RDBでしょ。
682 :
678:2006/04/28(金) 23:56:19 ID:???
雛形とか有って便利そうだが、桐スレの方は過疎ってる様だし、
わざわざ苦労したく無いから、ACCESSを勉強するよ。
>>679,680,681 THX!
なぜ過疎っているのか
それは質問が生じないほど完成度の高いソフトだから
>>675 そういう範囲指定にはBetweenを使え(>= <= になるけどな)。
自分でポップアップのようなフォームを作る。クエリはパラメータクエリ。
後は、自分で勉強する。抽象的な質問に、抽象的な回答で。
単純に新規ユーザが居ないからでしょ。
完成度が低くても、もうそう言う物だと我慢してるユーザしか生き残ってないってことだ。
2007年問題で一気にユーザ減ると思う。
無知は語る
>>687 永久機関がないと_
とマジレスしてみる
相手にするな猿
690 :
NAME IS NULL:2006/05/04(木) 10:59:39 ID:KYeXRuFv
>>690 「LAN 経由」の指すところがイマイチ不明瞭だが、とりあえず Terminal Server と
仮定して。
ダメ。
クライアント数分ライセンスが必要です。
Terminal Server はクライアントのリソースが浮くだけで、ライセンスは浮きません。
もし Terminal Server じゃなく単なるネットワーククライアント PC を指しているなら、
そもそも無理では。
使い勝手を度外視すれば、リモートデスクトップかなんかで「複数の人たちがつか」
いまわすのは出来るだろうけど、「複数の人たちが同時につかう」のは無理っしょ。
素直に Developer 買ってランタイムをインスコして回ったほうが良いと思われ。
ま、なんか漏れの知らない裏技があるかもしれないので、話半分で聞いといてや。
692 :
>>690:2006/05/04(木) 11:39:11 ID:KYeXRuFv
>>691 すばやいご回答、どうもありがとうございました。
おかげで助かりました。
[data1]
0 1
─────
A 1,2,3
B 1
C 3
D 1
[data2]
0 1 2 3
─────
A ○ ○ ○
B ○ × ×
C × × ○
D × × ○
Accessの質問です。
[data1]のA行は1と2と3が○
B行は1が○C行は3が○
と、1件ずつデーターを調べるにはどうしたらいいでしょうか?
この場合Dが間違ってるのでヒットさせるようにしたい。
>>693 DAO or ADO
もしくは設計見直す
>>694 DAO or ADO ですか。
使い方がよくわからない。
もちっと勉強してきます。
data1のテーブル読むクエリ作ってなんか文字列操作の関数使ってField1からカンマ抜いとく
data2のテーブル読むクエリ作って iif([1]="○","1",null)&iif([2]="○","2",null)&iif([3]="○","3",null)
みたいに関数使って数字の並びに変えとく
で両者比較
でどうよ
正に蛇足。
TCPとUDPの違いぐらい覚えような。
パケットロスより、ローカルのハードディスクでもファイル開いたまま強制終了してファイル壊してしまう危険のほうが高いよ。
吹っ飛んで困るなら日頃からバックアップ取っとけ。
699 :
NAME IS NULL:2006/05/06(土) 22:49:56 ID:mia8uBaC
すみません、低次元な質問なんですけど教えてください。
たとえば購買履歴のようなテーブルから[顧客番号]等のユニオンキーで重複クエリを作成。
その後テーブル作成クエリで重複するテーブルを作成したあと重複のあるものから
[購入日付]の最新のデータだけにする方法はどうすればよいのでしょうか、お願いします。
重複クエリである必然性が無いように見えるんだが、どういった状況なんだろう?
顧客番号でグループ化して購入日付をMAX値取得してHAVINGで顧客番号のカウントが2以上の
ものだけ抽出すればテーブル作る必要もなくクエリ一つで済みそうなんだが。
それを元にして、顧客番号と購入日付で繋いで購買履歴から全フィールドを
selectすれば目的は達するはず。
仮にテーブル作成クエリは使うとしても、できれば予めテーブルを作ってお
いてデータ追加クエリを利用した方がいいような気がする。
702 :
NAME IS NULL:2006/05/07(日) 09:13:48 ID:66YJ+i7E
>>700,701
ありがとうございます。SQLは全然わからないのでもうすこしSQLを勉強
します。またSQLなしでは不可能でしょうか、教えてください。
お前の言うSQLがどんなものかは知らないが、クエリデザイナだけでできる。直書きの必要はない。
ただし、その書き込みを見る限り、SQLの知識というよりもAccess自体の知識が全くないようだから
苦労はするだろうね。でも分からない単語はぐぐればすぐ理解できるよ。
>>702 可能かどうかの2者択一でいうなら可能。しかし、非現実的なVBA(DAO or ADO)と
なるだろうな。703 のいう通り難しいことではないが、本当Accessの語句を理解して
ないような気がするし、そんな人がクエリ飛び越してVBA(DAO or ADO)なんて超
無理だべ。
目的のための手段を間違えていて無駄に難解になってそうだな。
元になるテーブルの構造と欲しいデータの形だけ書いた方が
分かりやすい回答得られるだろうね。
706 :
NAME IS NULL:2006/05/07(日) 20:09:57 ID:qppF9dMf
ありがとうございます。
Access地道に勉強します。
Access はPC情報を Microsoft に送ったりするスパイウェアみたなことしてるんですか?
課長がなぜか気にして聞いてくるんですよ、うちの会社やましいことしてんのかな
割れ物か
「ソフトのシリアルとPCの製造番号を送信して顧客リストと照合してるらしいですよ。
違法コピーしてる奴を見つけて片っ端から訴訟起こしてるとか……アメ公の会社はえげつないっすねー」
とかなんとか適当な事言ってビビらしとけ。
まず間違いなく「課長が」てのは作り話で
不正コピーをびびりながら使っている
>>707自身が聞きたいんだろうな。
711 :
NAME IS NULL:2006/05/12(金) 00:47:30 ID:iCiEscdk
アクチのことが聞きたいんだろ?
システム管理かライセンス管理でも任されてるんだろうな。
ACCSから通報来たら首切り覚悟だな。
今時は、ISPの簡単に顧客情報の開示に応じちゃうからねえ。通信の秘密が失われつつ有る。
713 :
NAME IS NULL:2006/05/14(日) 21:44:00 ID:h+kbaaD4
AccessからExcelにリンクしているテーブルは変更できないらしいんですが本当ですか?
715 :
>>713:2006/05/14(日) 22:06:25 ID:h+kbaaD4
>>714 さっそくのご返事ありがとうございます。
でも、KB904018の意味がわかりません・・・・
ググれカス
717 :
>>713:2006/05/14(日) 22:22:48 ID:h+kbaaD4
正規ユーザならマイクロソフトに訊いても教えてくれるよ。
ライセンス無いなら買いに逝け。
719 :
>>713:2006/05/14(日) 22:57:38 ID:h+kbaaD4
>>718 ご返事いただきまして、どうもありがとうございました。
ライセンスはあります。こんどマイクロソフトに聞いてみます。
ビルによろしくな
「ご返事」ってのは、わざとやってるのか?
丁寧にしてるつもりの「ご教授」も気になるオッサンです。
724 :
NAME IS NULL:2006/05/15(月) 17:33:00 ID:sMRQmQTu
INSERT INTO 文で複数行テーブルに追加するにはどうすればいいですか?
値指定なら不可
SELECT結果としてなら複数行可能
家庭内に不和があるとついつい
言葉が荒くなるもんなんです。
でも子供は親を選べないからね。
「ご教示」が合っていると思うが、人それぞれの受け取り方だな。
意味には明確な違いがあるけど。はい、「スレ違い」ですね。
731 :
NAME IS NULL:2006/05/16(火) 16:46:22 ID:nU2/fnpC
Oracleのテーブルからからアクセスのワークテーブルに
データをコピーする様な処理を書いてるのですが
OraDynasetから値をSELECTしてちまちまループしてると
大変時間がかかるので困ってます。
テーブル丸ごとコピーするような方法ないでしょうか?
ネットワークに全データが流れるから遅いのは当然。
733 :
NAME IS NULL:2006/05/16(火) 23:50:18 ID:MzpGrxT+
アクセスのGUIで作ったテーブルのCREATE文を
SQL Serverみたいにクエリ作成する機能はないですか?
ない
ぶっちゃけSQL Serverとの抱き合わせのためのアクセスだからねえ。
>>731 OracleのテーブルをAccessにリンクして、Accessのクエリで
Insertってやって一気にワークテーブルに入れてしまえ。
737 :
NAME IS NULL:2006/05/17(水) 10:07:20 ID:vnvv4gY+
Accessをフロントにして、テーブルはOracleに持たせるようなシステムを作っています。
データのバックアップ機能を実装しようと思いデータパンプを使ったのですが
バックアップ処理中Accessの画面が固まってしまいます。
うまく回避する方法はないでしょうか?
そりゃ固まるだろうなあ。仕様。
アクセスは一生懸命処理してるんだけどね。
>737
とりあえず DoEvents
740 :
NAME IS NULL:2006/05/18(木) 11:16:37 ID:AthwfC0x
>>733 やっとことないけど、
AccessでDB作る>アップグレード・ウィザードでSQL serverに移行>SQL serverからテーブル作成文書き出し
とかは?
741 :
NAME IS NULL :2006/05/18(木) 21:11:08 ID:vqbQvzC7
CSVの出力で、テーブルの中にあった日付型や数値型のデータをテキスト
型に変換したいのですが、もとのテーブルのデータ型は運用上必要です。
CSVの出力をするにはみなさんだったらどう解決されますか?
何を言っているのか分からない。テキストに出力する時点で勝手にキャスト行われるし、
意図的に行いたいならcstrでもformatでも使えば良い話じゃないのか?
それとも俺には理解できない高度な次元の問題なんだろうか。
>>741 CSVを諦めるか、または型指定用の行を用意するぐらいかな。
>>741 CSV = TEXT よって、データに型は存在しない。全部文字列じゃん。
例えば、""付きは文字列で無しは文字列以外ってのもあるが。
>>743 のようにするかXMLとか。
でも、出力形式のことを言ってるような気がするけど、矛盾のある
質問文なのでわかりません。
ああ、CSVのくせに元のデータ型の情報をどこかに残したいってことか。
ありえねーからXMLでスキーマ使いやがれです。
1\tint,2006/05/19\tdatetime,hogehoge\tnvarchar
2\tint,2006/05/20\tdatetime,foobar\tnvarchar
とかいう風にエクスポートしてあげればいいと思うよ。\t はタブ。
ここはAccessVBAの質問もOK?
レポートを作成する時、10個の枠を表示してだしたい。
しかしデータは3件とか12件とまちまち。
1つのページに10件(10件より少ない場合は空行)を出力したいのです。
いろんなサンプルを調べてみた結果、レポートのNextRecordプロパティを使えばできる、みたいなことが書いてありました。
ためしに組んでみたところ、5件や3件など、10件に満たない場合の時はきちんと表示されました。
しかし13件など10件を超えるデータに対しては、
1ページ目は10件表示されるのに、2ページ目が2件しか表示されず(最後のデータが出てこない)、
あげくにはページいっぱいまで空行が出力されてしまいました。
最後の行がでなかったので、データ件数を+1してみたところ、
今度は10件以上のデータはちゃんと表示されるのですが、
10件に満たないデータが空行を出力しなくなりました。
なにが原因なんでしょう。
PGはサンプルをコピーしたので間違いはないと思うのですが・・・
レポート自体のプロパティをなにか変えないといけないんでしょうか?
100%そのコードおかしいだけだからイベント込みで全部晒せ
749 :
747:2006/05/21(日) 01:11:44 ID:???
>>748 月曜まで待ってもらってもいいですか?
コードは家にはないんで・・・・
どうせ魔法使いだろ?
>>747 表示用の作業テーブルを用意して、レコードカウントし、ちょうど10件で表示できるようにダミーデータを作成すれば幸せになれる
>>747 Pageイベントで枠や罫線を書けばいい
751の手段はよく使う
>>750 魔法使いの該当コードってまともに動かないの?
俺もそこを参考にして747と同様の処理をしているよ。
まぁ、参考にしたのは考え方のみだけど。
>>754 使う人しだいだろ。例えに出したのは、見る側に素人が多いからだろ。
756 :
747:2006/05/22(月) 11:10:55 ID:???
747です。
「魔法使い」ってのが分からなかったのですが、どうやらサンプルサイトのようですね。
自分はそこではないサイトを参考にしましたが、行っている処理は同じみたいです。
とりあえずコードを置いておきます。
http://www.uploda.org/uporg397333.txt.html 受信パスがかけてあるので、747を入力してください。
サンプルと何が違うのかさっぱり分かりません。
どなたか教えてください。お願いします。
何が原因だったのかどうやって解決したのかスッパリ忘れたが
グループヘッダ・フッタでやった時に俺も似たようなこと起きたな。
なんだったかなぁ。
758 :
747:2006/05/22(月) 17:03:34 ID:???
747です。
例の件ですが、空データを挿入するかたちに収まりました。
結局何が原因だったのか分からずじまいですが・・・・
ひとまず期待する動作になったのでよしとします。
お騒がせしました。
お〜い。こうしたら、なんかできたんで、じゃなくて少しは
理解しろ。
あ、ちょっとスマソ
テーブルのプロパティから「隠しオブジェクト」にチェック入れた後、
後日再びそのテーブル見えるように(隠しオブジェクトじゃないようにする)
するのってどうやるの?
ざっと見回したが、見当つかない…
おまえの「ざっと」の中にはオプションは入ってないんだな。
ODBC(Oracle)経由のデータを扱っています。
T1.ID:char(16)と、T2.ID:char(128)のデータがあって、
それぞれ、数値が文字として入っており、
空部分が半角スペースで埋められています。
T1.ID=T2.IDを抽出したいのですが、
何か定石のような巧い方法はありませんでしょうか。
実データをインポートすれば至極簡単なのですが、
これをせずに何か巧く済ませる方法をご存じの方、
ご教示、おねがいします。
trim
ありがとうございます。
下手にmidを使おうと思っていましたが、
今回の要件ではtrimの方が断然良いですね。
先ずはtrimを使ってみます。
このような条件で、何かAccessで定石みたいな
方法があれば、また教えて下さい。
ご教示ありがとうございました。
765 :
760:2006/06/06(火) 19:03:31 ID:???
>761
あ・・・
スマソ
766 :
761:2006/06/06(火) 19:40:10 ID:???
おせーよ!!!!!!!!!!!!!!!!!!!!!!!!
クエリをデザインビューで組めないような複雑な更新クエリを
SQLビューで作ったんだけど、後から修正しようとデザインビューで
見ようとしたら「UPDATEステートメントの構文エラー」が出て、編集できない。
実行結果は正しい結果が出ます。
どうにかしてこの開けない(実行しか出来ない)クエリの編集をする方法は
ないんでしょうか?
DAO
QueryDef
SQL
で修正できるかも。
>768
え?え?
どーやって?
770 :
NAME IS NULL:2006/06/09(金) 15:01:37 ID:ypveq4T2
こんにちわ。アクセス初心者のものですが、計算をふんだんに盛り込んだものをつくるときは
やはりエクセルのほうがむいているのでしょうか?
無理してアクセスで作ろうとしてるのですがどうも無理な気がします、、、、
積算のソフトを作ろうとしています。
772 :
NAME IS NULL:2006/06/09(金) 15:20:23 ID:ypveq4T2
774 :
NAME IS NULL:2006/06/09(金) 15:21:36 ID:ypveq4T2
一発でみつかりました、ありがとうございます。
775 :
760:2006/06/09(金) 16:28:59 ID:???
またまたスマソ
起動時の設定で「すべてのニューを表示する」の
チェックをオフにしたら次から「起動時の設定」が
選べなくなってしまいました。
再度、「すべてのメニューを表示する」を有効に
したいとき、どうやるんですか?
SHIFT押しながら起動してみれ
777 :
760:2006/06/12(月) 08:03:58 ID:???
…
開けた…アリガトウ
そーいうTipsってどこに書いてあるんだろう??
ヘルプ
779 :
NAME IS NULL:2006/06/14(水) 22:05:30 ID:dwDIzj0i
VISTAにAccess2000のランタイム、インスコしようとしたが、
途中で止まった・・・・
まさかこのままリリースする気かよM$
780 :
NAME IS NULL:2006/06/19(月) 20:02:18 ID:qTgMEG/d
質問です。
インポートしたファイルに「,」が含まれているとエラーメッセージが表示される
というプログラムをつくりたいのですが。
どなたかわかりませんか?
どうすればいいか途方に暮れています。。
何をどこにどんな方法でインポートするのかサッパリですね。文字列探すだけならinstrでいいじゃん。
インポートするときですか? した後ですか?
それによってかなり違ってきます。
インポート中にならVBAで組む必要あり。
インポートした後ならVBAで組む必要あり。
なんか、カンマ区切りのcsvで、フィールドの中に入ってるカンマが悪さするから……
みたいな話なんじゃないかという気もする
それだとフィールド区切りの正当なカンマとどうやって区別するのかが難しいな
ダブルコーテーションで囲め。それすらやらないデータは弾け。
フィールド内にダブルコーテーションがあった場合は?
>>786 Excelでも使ってどうなるか実験してみ?
XMLにしろよ……
Access97だ。
じゃあ俺はAccess2002
質問です。
マクロのセキュリティレベルを中から低にして、
また中に戻した後に、フォームデザインでコマンドボタン(コントロールウィザードONの状態)
を作ろうとすると、
「コードに構文エラーがあるか、必要な Microsoft Office Access 関数が使用できません」
というエラーが出て、ボタンが作れません。わかるかたいませんか?
バージョンくらい書けよ猿
すいません、Access2003です。
知るかボケ
>>791 まずは、VBAのコンパイルをしてみよう。
セキュリティレベルは関係ない気がするけど。
796 :
NAME IS NULL:2006/07/03(月) 16:22:22 ID:lHn4U9wb
2007だとAutoexec 無効になる?
797 :
NAME IS NULL:2006/07/09(日) 21:40:02 ID:XOHzqVLK
Accessのお試し版とかDL出来ませんか?
799 :
NAME IS NULL:2006/07/10(月) 19:38:10 ID:OPzVOYfA
800 :
NAME IS NULL:2006/07/11(火) 18:44:24 ID:icRb9ruD
MS Access が使用できる無料のレンタルサーバはありますでしょうか?
有料でも無料試用期間があれば結構ですので教えてください。
ない
AccessをWebで使うのはやめておけ
理由は過去ログ嫁
Accessど素人です。ご教授願います。
フォームを使用して入力した期間と業者コードを元に
外部データ(CDにあるテキストデータをテーブルとしてリンクしてあるやつ)をクエリ(抽出条件にフォームの値を使用)で引っ張ってくる際に
vbaでクエリをopenしようとすると
「SQL ステートメントが正しくありません。 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または 'UPDATE' を使用してください。 」
と、言われます。
テキストデータのレコード数は3〜400万件あり、又、クエリで抽出後に更に再度別DBとの結合(?。言い方あってる?)をする必要があります。
どの様にすれば良いですか?
>>802 該当のクエリーは、普通に開くの?
開かなければそもそもクエリーがダメなんだろうし
そのクエリうp
805 :
802:2006/07/27(木) 21:04:07 ID:???
>>803 さん、クエリは普通に(フォームに値をセットしてあるのが前提だけど)開きます。
>>804 さん、今日は家に帰ってきてしまったので、うpはまた今度に。(ところで、どうやってうpするのかな?)
>>805 SQLビューの内容をコピペでいいんでない?
あとVBAも
パラメータクエリというオチだったりしてw
808 :
802:2006/07/31(月) 21:32:21 ID:???
>>804 さん、802です。sqlとvbaはこんな感じです
フォーム名:フォーム1
クエリ名: クエリ1
外部データ: 外部ファイル
sqlビュー
SELECT 外部ファイル.業者コード, 外部ファイル.日付, 〜
FROM 外部ファイル
WHERE (((外部ファイル.日付)>=[Forms]![フォーム1]![開始日] And (外部ファイル.日付)<=[Forms]![フォーム1]![終了日]) AND ((外部ファイル.業者コード)=[Forms]![フォーム1]![業者コード] ));
vbaでクエリをopenする所
Dim cn1 As New ADODB.Connection
Dim rs1 As New ADODB.Recordset
Set cn1 = CurrentProject.Connection
rs1.Open "クエリ1", cn1, adOpenDynamic, adLockOptimistic
↑書き方分かってないので、他のやつをコピペしてつかってます(他の時はこれで動いてるの)
なんでBETWEEN使わないんだろう?
811 :
802:2006/08/01(火) 21:15:05 ID:???
>>809 なるほど、これパラメータクエリって言うのですね。勉強不足で申し訳ない。
>>810 クエリが作成するsqlビューそのままコピペしたから、between使っていない理由はaccessに聞いて下さい。
迷惑ついでにもう一つ教えて下さい。
別件(?)で処理スピードアップのため、外部データを並び替えしようと、テーブル作成クエリで並び替えをしたら、
ちゃんと並び替わりませんでした(昇順なのに途中に値の小さなデータが入ってくる場合がある)。
データ件数・データ量の制限ってありますか?
(件数は3〜400万件で約400メガあります。)
(尚、2Gの上限は知ってます。キーを間違えたなんてぼけもありませんのであしからず)
>>811 な〜んもわかってないと思うんだが・・・WHEREのところで、>=ほにゃら AND <=ふにゃ
ってアナタがやったからBetweenになってないだけでしょ。AccessがBetweenなんて変
換してくれないよ。
並び替えもだけど、何でテーブル作成クエリが必要なのか説明がないので、それは無
視して言うと、データの型は何だ!!せめて、おかしいデータの前後を例としてカキコ
して、ほれおかしいべ〜ぐらいやってくれ。
>>811 お前がアホなWHERE条件入れたからBETWEEN出ないんだよアホ
勉強不足っていうより、基礎がわかってないのに仕様制限はわかってる
から突っ込むなぁとか、いろいろ態度でかいよな。ただのバカだな。
816 :
NAME IS NULL:2006/08/02(水) 09:50:32 ID:909jDNxC
Access2003 ADP のフォームで、データを表示するときの並べ替えを
どのようにやっていますか?
(1)レコードソースで ORDER BY a.foo, a.bar とかすると普通に開く分には
いいけれど docmd.openform の WhereCondition を指定して開いたときに実行時エラー
「列のプレフィックス 'a' テーブル名と一致しないか、クエリ内の別名と一致しません」
が出て開けません。
(2)order by を使わずに 並べ替え のプロパティを設定しても設定したとおりには
並べ替えされません。
(3)Form_Open イベントで me.orderby と me.orderbyon を設定すると
並べ替えはできるのですが、docmd.openform の WhereCondition で指定した
抽出条件が保存してもいないのにフォームに残ってしまいます。
別のフォームからフォームを開く場合にうまく並べ替える方法はありませんでしょうか…
817 :
NAME IS NULL:2006/08/02(水) 11:39:32 ID:4qox3Cow
データベースのデータを更新するするためには、更新、追加、削除の機能が
必要ですが、
ACCESSフォームのサンプル、テンプレート等のほとんどは、入力フォ
ームの作り方にしか触れていません。
レコードの追加、更新、削除が行えるフォームの作り方、テンプレート等に
ついて記述されている書籍、HP等をご存知でしたら教えて下さい。
フォームと連結させりゃどれもできるじゃん
819 :
817:2006/08/02(水) 11:50:47 ID:4qox3Cow
>>818 早速、ご回答頂き、ありがとうございます。
作成例、コーディング例が載っているものを探しているのですが…。
プログラムですから、VBAやSQLを使えば出来るのは分かって
います。
なにこのバカ
レコードの追加、更新、削除が行えないのに、あくまで入力用というフォームの作り方。
サンプル、テンプレート等のほとんどがそうらしいが、なぜか一度も見た覚えが無い。
すごく見てみたいが、どこで見れるんだろう。
>>819 VBA/SQL使うスキルが無いなら更新クエリでも使えばいいんじゃないの?
更新クエリもSQLです
いや、だからさSQL使わなくても更新クエリくらい作れるじゃん
内部的にSQLだとか、そんなのは
>>817のレベルからすればどうでもいい事。
とりあえずウイザード使って、フォームを作って動かしてみれば
気が付くかと思うのですが。
ユーザーの要望を満たそうとすると、それだけじゃダメでVBAと
かいろいろ出てきますがね。
たぶん 817=825 だよな
とても面白いやつだと俺は思うぞ
頑張れ
そう、動かしてみればきっと気付くよな
VBAとかいろいろ出てくるよな
おまえ絶対間違ってない
頑張れ
817=825だとしたら精神障害者だろ
828 :
825:2006/08/03(木) 07:39:03 ID:???
オレ、817じゃないぞ。
だよな。内容からしてあり得ない。
830 :
817:2006/08/03(木) 19:50:54 ID:4leikGuf
ACCESSって、データの
入力はフォームで、
更新、削除、追加はテーブルビューで行う事を推奨しているソフト
なのでしょうか・・・?
もし、そうだとすると、とてもマイクロソフトらしいですね。
( ゚д゚)ポカーン
>>830 普通に作れば入力更新削除全部できるんだがお前はよほどの馬鹿か凄腕の釣り師なんだな
>>817 >ACCESSフォームのサンプル、テンプレート等のほとんどは、入力フォ
>ームの作り方にしか触れていません。
この「ほとんど」とやらを全部教えろよ。
本のタイトルでもURLでも何でも良いから。
やっぱりすごく面白いやつじゃん
>>817 俺だけは応援するぞ
違う
俺は応援だけするぞ
>>817 コマンドボタン作ってみな。
ウィザードが働いていれば、あんたがやりたいことのほとんどはできるはずだよ。
VBA使うにしたって、ほとんどはウィザードで使っているコマンドの応用だったはず。
まぁ、ウィザードやマクロ使うのもいいが、たまにはその中身を見てみることを奨めるよ。
これが意外と勉強になるんだな。
初心者です。
Access2000を使用していますが、エクセルのSUBSTITUTE(文字列置換関数)に
該当する関数ってありますか?
電話番号フィールドから"-"を除きたいのです。
低レベルな質問ですいません。
>>837 ありがとう、InStrですね(・∀・)
ちょwwwwwwwwwwおまwwwwwwwwwwww
>>838 マジでいってるんか???
りぷれ〜す関数だろうに。
私はInStrでやると言っているんです
InStrだって出来るじゃないですか、プンプンッ!!
>>841 InStrだけではできない。それに、InStrはSUBSTITUTE(文字列置換関数)に
該当する関数ではない。文字列検索関数だと思うのだが。
まだreplaceが無かったAccess97とかのままの知識なんだろうか?
確かにinStrでもfor〜nextでも置き換えは出来るし、旧バージョンに対応するためそれを書いたこともあるが
そうでもなきゃ既にある物を再発明するのは無駄。 オナニーのし過ぎはバカになるから気をつけろ。
2000だったらどっちみち関数自作しないと置換できなかったような
俺がむかし作った関数
Public Function Stuff(SourceStr, Start As Integer, DelLen As Integer, InsStr As String)
Dim L As Integer
Dim R As Integer
If IsNull(SourceStr) Then Stuff = Null: Exit Function
L = Len(SourceStr)
If Start <= 0 Or DelLen < 0 Then Stuff = Null: Exit Function
R = L - Start - DelLen + 1
If R > 0 Then
Stuff = Left(SourceStr, Start - 1) + InsStr + Right(SourceStr, L - Start - DelLen + 1)
Else
Stuff = Left(SourceStr, Start - 1) + InsStr
End If
End Function
2000で既にReplace関数ありますよ。それに同様の関数がWIN32API
にもあります。自作も勉強と割り切ればいいと思うが、
>>845 のは、悪いけどお粗末だな。
Replaceもラップするだけで使えるし
849 :
846:2006/08/12(土) 07:58:46 ID:???
>>847 その情報は初めて知ったぞ。ありがとう。今の本業、Accessから
離れてUnixの方だから調べもしなかったよ。
でもな、Replaceは実際に使ってるんだよ、いっぱい。動いてるし。
んで、この技術情報がいいたいことは、プロパティやクエリなんか
で直接 =Replace(〜) という使い方はできないよってことであって、
VBAの中では使えるんだから問題なしだろ。
言い訳がましい
ここって "クエリ" スレだろ?
>>851 違うよ。1スレ、2スレ目という数え方のパターンとして"クエリ"という言葉が使われているだけ。
「Oracle 総合 Session5」とか「異種姦【触手蟲獣妖し機械人外】総合スレ63匹目」とかと一緒。
前スレからその手の勘違いはたまにあったから変えた方が良いかもね。
例にあげたスレタイはどうかと思うのだが
何だろうねこのバカ
まあ餅付け。
正直、厨が組み込み関数を再発明するかどうかなんてどうでもいい。
好きにやれ。ただし、迷惑だからオナヌーは晒すな。
Replaceネ夕糸冬了。
所詮、Accessなのであつくならないように。
858 :
NAME IS NULL:2006/08/19(土) 20:37:06 ID:rDriXfuc
Access2000を使ってマスタ作る作業をしたいんですが、全くどうすればいいのかわかりません。
Cとかみたいに初心者に解る様な解説サイトや、または皆さんのオススメの本はありますでしょうか?
宜しくお願いします。
>>858 858さんのレベルがわかりませんから参考になるかは不明ですが。
牧村あきこ著「ACCESS はじめてのデータベース」(技術評論社)は、
超初心者向けで比較的わかりやすいと思いますよ。
長年アクセスが使えなかった私でもなんとか使えるようになりました。
ファイルメーカーのほうが簡単ですね
リレーショナル型とカード型を比較しても意味が無いような
桐は何型?
リレーショナル
検索結果一覧を一行ごとに色変えしたいのですがどうしたら出来ますか?
通常は交互の色変えで特定のデータの時はハイライトしたいのですが…
条件付書式を使え
VBAでもできなくはないが(実力しだい)、ほぼ出来ないと思った方がよい。
867 :
865:2006/09/02(土) 13:57:41 ID:???
>>866 > 条件付書式を使え
> VBAでもできなくはないが(実力しだい)、ほぼ出来ないと思った方がよい。
すみません そのやり方がよくわからないので・・
教えてくださいませんか?
868 :
865:2006/09/02(土) 13:58:26 ID:???
書き忘れましたが アクセスは未だに97です
Access 97 に条件付き書式はないよ。たしか。
ありがとうございます。 97では難しいんですね。
上司がアップグレードしてくれたらいいんだけどな
871 :
NAME IS NULL:2006/09/02(土) 22:43:54 ID:VNEYaxFD
872 :
NAME IS NULL:2006/09/03(日) 11:06:44 ID:bZVHX0Ps
初心者です。クエリではなくテーブルについてですが、
どなたか教えていただけないでしょうか。
テーブルで、最終レコードの次の空行があるものと
最終レコードで行が終わっているものは、何が違うのでしょうか?
また、空行を表示させないためには、何をすればいいのでしょう?
あのさ、スレ違いかもしんないけど愚痴らせてくれい。
「Accessの使用経験3年以上」でやってきたねーちゃんだけど、
いわゆる日報の売上データを月ごとに集計してねって頼んだら、
固まっちゃった。
事前にSQL文がどーのこーの、とか言ってたんで、
こんな簡単な仕事でわりーけどと思いつつ仕事渡したんだけどさ。
データのIDとか日付フィールドを残したまま、集計クエリを作って、
「集計できないんですけど、Access97だからですか?」とか言うの。
「フォームに入力」3年だったのかな。
採用したオヤジがまるでPC使えない奴だったからな。
これに教えなきゃなんないんだよな、ワシ。泣けてきた。
874 :
872:2006/09/03(日) 13:49:40 ID:bZVHX0Ps
お恥ずかしいことに、読み取り専用でした。
>>873 そのねーちゃんは私レベルですわ。
ワシ、がんばってね。
select 将来 from 自分 where 仕事 = 現在;
ぬるぽ
インストール歴三年では
877 :
NAME IS NULL:2006/09/03(日) 17:51:01 ID:lyDiYZBB
だって「使用経験3年以上」であって「開発経験3年以上」ではないでしょう。
TV視聴歴20年以上になると思うけど、修理や改造はできない。
つか、世の中そんなヘッポコな仕事存在するんだな。
今どき高校生でも出来るぞそんなもん
881 :
NAME IS NULL:2006/09/04(月) 15:46:18 ID:Me1/srqK
>>873 そいつ派遣かな?
だったらスキルなんて過大表現当たり前。
受け入れ側は事前に面接で細かいことききつつ
実際のスキル見極めなきゃ後で泣く。
正社員なら雇ったやつがアホ。
というわけで頑張れ。
>>879 それ言い出したらきっと中学生でもできるやつはいるだろうな。
882 :
NAME IS NULL:2006/09/05(火) 23:02:25 ID:XYcfb6P7
アクセス使い始めたけど何がわかってないのかもわからない・・・
泣きそうです
リレーションを繋ぐ時は、全く同じフィールドじゃないとダメなんですか?
少なくとも型はあわせる
ACCESSってまったくの素人が使うには難しいけど
本腰入れたプロがつかうにはヌルイって感じなの?
最近覚え始めたんだけどさーどこまでスキルとして評価されるのかなーと気になって
ヌルいっつーか、限界も低いしすぐ壊れるから、小規模なDBにしか使えないだけ。
お手軽DBMSとして、基本を覚えるにはいいんじゃない?
>>884 小規模でちょっと手の込んだこと考えたら最適じゃない?
コストは安いし、VBAで組みやすいし。 スタンドアロン もしくはSOHOクラスなら
いいかも
ネットワーク前提の中規模以上なら力足らずかな?
ACCESS使うと何ができるか、じゃなくて
ACCESS使えるとどれだけ箔がつくか、ハッタリが効くかって質問?
MCPとかMicrosoft Office Specialist(旧名MOUS)とかマイクロソフト公式の資格はあるけど
頑張って合格したところで、正直どれも世間一般の評価は微妙だと思う・・・
888 :
NAME IS NULL:2006/09/06(水) 19:39:31 ID:W4VM29kN
>>883 ありがとうございます!!!!
見事にその通りでした
なんでできないのかずっとわからなかった・・・
>>884 中小が導入してるところは結構あるから、事務淫が使えると結構重宝されるよ
オラクルとかは外部の人間が使うシステム・・だと思う。たぶん
IT関連以外の中小ならアクセスでいいんじゃないかな?
普通の会社の事務職とかなら、自前開発はAccessが精一杯
それでも使いこなせれば相当幅は広がるし、十分業務に使えると思う
890 :
NAME IS NULL:2006/09/07(木) 23:58:11 ID:qqWGurEW
スレ違いならすまそ。検索しても見当たらないしスレも見当たらないので困っています。
ご存知の方居たらぜひご教授願いたい。
XPproのoutlook2000、acc97の環境下でメールの添付ファイルを開封作業等一切
することなく添付ファイル(エクセルorテキストorCSV)をaccessに取り込む方法は
ありますでしょうか?
acc2000では添付xlsを特定フォルダに保存して出来たんですが97では出来ません
でした。訳あって97で実現したいのですが・・・無理なんでしょうか。
「ココを読め」とか「こっちで聞け」でも助かります。よろしくお願いします。
891 :
NAME IS NULL:2006/09/11(月) 15:01:21 ID:Fq2I7K1d
>>890 OutLook2000(MSOUTL9.OLBだったかな)を参照設定
すりゃ、そのまま逝けるだろ。
892 :
NAME IS NULL:2006/09/16(土) 13:45:45 ID:SI7xLnIp
共有フォルダにmdbを置き、フロントにexcelを使うシステムは可能でしょうか。
ユーザは1-2名でexcelからadoなどで1つのテーブルを参照/updateしたいのですが。
もちろん可能だ。
交通事故を恐れていては車に乗れない。
すみません。初心者です。教えて。
テーブルのチェックボックスにレ点がついているやつのカウントは
どうやればできるのですか。
dcount("項目名","テーブル名","項目名=True")
896 :
894:2006/09/16(土) 21:14:43 ID:???
ありがとうございました。一応
でも、テーブルのレコードの数だけたてに並んじゃう…
一列でええっちゅうのに…。うまくいかないもんだ。先は長い。
accessって難しいんですね。
select -Sum([フィールド名]) AS カウント from [テーブル名];
898 :
Raul:2006/09/18(月) 22:26:53 ID:80DP6JBK
ACCESS初心者です。教えてください。
顧客情報を管理するのに、業務用のオラクルデータをODBCリンクテーブルして
いますが、顧客IDが0000123456という感じで10桁前ゼロ埋めになっています。
そのIDをパラメータクエリで123456のみ入力して0000123456を絞り込むには
クエリの計算式をどのようしすればいいのでしょうか?
where 顧客ID = Format$([パラメータ名], "0000000000")
よくある家計簿のように、毎回の収支ごとに小計を表示したいのですが、
どのようにクエリを組めばよいのでしょうか?
具体的には
入り 出 小計
| 3000 | | 3000 |
| | 2000 | 1000 |
| | 2000 |-1000 |
このような感じにしたいです。
よろしくしくお願いしまつ
>900
入出をExcelの外部データ取り込み機能を使って取り込ませて、Excel で
小計を計算したほうが楽な希ガス。
902 :
NAME IS NULL:2006/09/20(水) 09:36:18 ID:EaSH5T2N
>>900 それは小計とは言わない累計という
累計はレポート使えば簡単だ
言い換えると
「レポート以外では面倒だ」
「桐にしとけ」
904 :
NAME IS NULL:2006/09/20(水) 12:58:31 ID:oZNhDvku
そもそもそれをクエリでやる必要があるのか?
DMLで抽出できる範囲外のことしたけりゃ、レポートでやるなり、
VBA使ってワークテーブル作るなりすりゃいい話。
桐桐言ってんじゃねーよクソヤロー。
905 :
NAME IS NULL:2006/09/20(水) 15:02:47 ID:EaSH5T2N
>>904 いちいち反応しないように。
相手がほしいだけなんだから。
906 :
NAME IS NULL:2006/09/21(木) 02:23:11 ID:8sB1srsH
【. 目 的 】 (ある大学うを例に、所属している学生のデータを管理したい)
【. 条 件 】 (WinXP、ACCESS-2003)
【. 概 要 】 (名前、住所、学籍番号、学部、各教科テストの点数、各教科の欠席数)
「概要」に書いたようなテーブルを作ってデータベースを作りたいのですが
テーブルを自分で作成したところリレーションシップの関連付けがうまくいかずにクエリがきちんと作成できませんでした
どなたかどのようにデータをわけてテーブルを作成すればいいのか教えていただけないでしょうか?おねがいします(T_T)
学部は2つだけでテスト科目は学部ごとに違って。成績入力を個人毎や科目毎に入力できるフォームも作成したいのですが
よろしければおねがいしますm(__)m
>>906 何も難しいところはないと思うので、
参考書を買って勉強してみてください。
その上でテーブル構成などを挙げながら質問したら
レスが返ってくるかもです。
908 :
900:2006/09/21(木) 06:16:08 ID:???
遅くなりました レスありがとうございます。
ではワークテーブルを作り、データの挿入時に一行づつ計算してテーブル内に
データを格納して結果をフォームに表示する、と言う手順くらいしか思いつかないんですが
もっと簡単な方法は有りますでしょうか?
上司がなんですが、家計簿のようにリアルに入出の結果を入力時に見たいらしいので
どうしても実装しなくてはいけないみたいです。
>>906 学生の個人データと 学部学科関係なしの成績データ の二つだけでいいのでは?
リンクは個人データのIDでリンク。 クエリーで学科、学部の切り分けだけで可能だと
思いますよ
成績証明書キタコレ
911 :
NAME IS NULL:2006/09/24(日) 22:05:03 ID:hC2zfKZp
Access起動→開く→ファイルの種類「ODBCデータベース」
としたのですが、データソースの選択が出てきません
何が原因なのでしょうか?
ちなみにMicrosoft Access 2003 です。
912 :
911:2006/09/24(日) 22:51:48 ID:???
すみません、
NortonInternetSecurity2006
↓
その他
↓
Miceosoft Officeのデータを保護するにはのチェックをはずす
で解決しました
913 :
NAME IS NULL:2006/09/26(火) 10:50:30 ID:rhnADigr
暇つぶしにAccessを起動しましたが、何を作ればいいのか分かりません。
何が原因なのでしょうか。
ちなみにMicrosoft Access 2002 です。
VBAから直接SQL記述をしてデータを得るのと
クエリ経由でデータを得るのではどちらが早く効率よくデータを
得ることが出来るのでしょうか?
事前にクエリを作成してあれば、実行時に解釈する必要が無いのでSQL発行より早い。 少し。
VBAでSQL投げたりクエリ作成して実行すると、prepare->executeという動作になるが
このprepareまで終わった状態。 複数回投げる場合でもなけりゃ変わらん。
ネットワークHDDにファイル置いて4〜5人で共有しようと思ってるんだけどデータの破損って頻繁に起こる?
しょっちゅう起こる
>>917 複数人で同じmdbを開くのは猛烈にオススメしない。
少なくともファイルをデータとロジックに分けて、ロジックを全員に配布したほうがいい。
できればデータはmdbじゃなくてMSDEの方がまだいい。
テーブルのバックアップをエクセル形式でとっておきたいんですけど
保存する場所の指定は出来ないんでしょうか?
doCmdからでは場所の指定は無いようなんですが、ほかに方法有りますか?
FileCopy "元パス", "先パス"
でも出来るし
Dim f
Set f = CreateObject("Scripting.FileSystemObject")
f.CopyFile "元パス", "先パス"
Set f = Nothing
でも出来るが
>>エクセル形式でとっておきたいんですけど
というその面白すぎる発想は一体どこからでてきたのか
いや、特に知りたいわけでもないが
922 :
920:2006/09/30(土) 01:43:36 ID:???
>>921 上司の希望です。 エクセルまんせーな人なのでいざというときにエクセルで
みたいらしいんですが。
>>920 バックアップというよりも、ワークシート変換で考えてみれば。
マクロだと絶対パス、ファイル名固定だけど、
VBA解るのだったら保存先やファイル名なんてどうにでもなることだし。
仮に解らなくても、マクロをVBAに変換すれば
恐らく解読はできると思う。
924 :
NAME IS NULL:2006/10/06(金) 16:16:13 ID:eranlTGB
少々お伺いしたいのですがっ
只今、Office2003を利用しておりましてAccessで作成したmdbファイルを頂きました。(作成元もOffice2003を利用しております)
中身を見るため、Shift+Enterで立ち上げようとしたのですが普通に立ち上がってしまいます…
左右両方のShift、Control、Altそれぞれ試したのですがどうもダメでして…
何かお心当たりの方はいらっしゃいますでしょうか?
よろしくお願いいたします。
925 :
NAME IS NULL:2006/10/06(金) 16:19:15 ID:eranlTGB
すみません。
どちらかというとデータベース云々よりもアプリケーションの不都合っぽいのでビジネスソフト板のOffice2003のスレに移動します。
>>910 成績までいかなくて、単なる採点管理だろ・・・
一番簡単なものは
>>909の言ってる事で実現できる。
ただ、各教科の総コマ数とか、そのうちセメスタ区分とか必要になってくるんジャマイカ?
教科マスタとか教員マスタも分けておくべき。
>>924 解らない人は解らないままで・・・・・
屯屯
今AccessのシステムをVBでリプレースし直しているんですが、
strNameMiddleTrim(strReNameSearch([TAD_UC_010].[TQM_0011])) Like '島根県民*'
のように、AccessのSQL文中でユーザー関数を使った箇所があります。
DB自体はAccessのままでよいのですが、これをVBから発行したらエラーになります。
対処方法はなにかありますでしょうか?
VBで書き直せばいいのでは?
いや、だから、どうやって書き直すの?
データはAccessのままだし。
このままでは、SQLで処理するのをあきらめて、カーソルで処理するしか方法ない・・・・か?
とりあえず「島根県民*」を「島木艮県尻*」にしてみたらどうかな。
>>928 Access VBAを排除したいなら、SQL内のユーザー関数は諦める。
>>928 程度なら、ユーザー定義関数ではなくIIFとかMIDとか使って
実現できそうだが・・・イメージ的にね。
AccessがDBなんで、ADOとかDAOで接続しても、Jet SQLには少し
しか関数ない・・・・・。
MIDに相当する関数はあるようだけど、switch文や、iifよううな凄い関数はなさそうです。
ここで情報無ければ、明日結果セット取って、カーソールでグルグル回す文字列処理を実装します。
ユーザー関数を使った部分だけ、SQL文ではなくmdb内の作り置きクエリにして、
ADOでその作り置きクエリを開く、みたいなやり方って通用しなかったっけ
どっちにしてもあんまり長いSQL文だときびしい
>935
それは、AccessVBAのコード中でなく、VBからADOでmdbへ接続した場合も使えるとのでしょうか?
>936
それはすでに、試みたのですが(ADOとDAOで)駄目でした。
さすがにDAOで接続したら、mdb内に格納されたコードが呼び出されて動くのではと期待しましたが、
駄目のようです。
今のところ、Jet SQLの文中に使われたユーザー定義関数は、AccessVBA内で呼び出された場合
のみ機能すると言う結論で良いのでしょうか?
あと、AccessVBAで呼び出したとしても、別mdb内に格納されたユーザー定義関数が機能するかどうか
というのも興味ある所です。
>>937 > あと、AccessVBAで呼び出したとしても、別mdb内に格納されたユーザー定義関数が機能するかどうか
> というのも興味ある所です。
使いたいユーザー関数が格納してあるmdbを参照設定すれば使える。
ただ、パス指定の追従が賢くないので要注意。
939 :
935:2006/10/12(木) 13:36:07 ID:???
>>937 オレはVBは使わないけど、C++BuilderからADO利用で動いてる
から、いけそうかもって思った。ユーザー定義関数は無理だ
が、標準である関数は使える場合もあるので確認してみたら。
ac2003のヘルプではjetで100個以上のVBA関数が使えるって
書いてあるし、式作成機能もjetがVBAを利用してるんだし。
>jetで100個以上のVBA関数が使える
本当すか!!
出来れば、どのあたりのヘルプに書かれているかヒントが頂けると有難いのですが。
941 :
935:2006/10/12(木) 17:25:50 ID:???
>>940 自分で調べたか?ac2003のヘルプ検索で、sql式。
Access動かして確かめられる環境はあるみたいだから、簡単なIIfやMIDなどは
やってみれば。switchは関数じゃないから無理なはず。
942 :
NAME IS NULL:2006/10/14(土) 10:57:32 ID:3YlNhuqH
accessって集計やるとなんか何度も合計して凄い結果(=ありえない数値)が出ますが、なんででしょうか。
そりゃ単にやり方を間違ってるからだろ。
エスパーの俺がテーブルの積結合の結果を集計してるからと推測してみる
945 :
NAME IS NULL:2006/10/19(木) 15:04:43 ID:Gp8Alou8
Access.Applicationオブジェクト経由でDoCmd使えば、
ユーザー定義関数を含んだアクションクエリは通る。
946 :
NAME IS NULL:2006/11/03(金) 23:17:32 ID:NKeP1VzF
外部リンクテーブルでPostgreSQLのテーブルを参照しています
この外部リンクテーブル接続先のパスをVBAで取得したいんですが
私が知っている取得方法
・システムオブジェクトのMSysObjectsから参照
・DAOでTableDefのConnect使って参照
両方とも接続先のパスが途中で途切れてしまっています。
私が考えた解決策
外部リンクテーブルをデザインビューで開いて
表示⇒プロパティで説明を見れば
途切れのない接続先パスを確認できます
こちらの項目をVBAで取得しようと思うのですが
やりかたがわかりません・・・どなたかご教授お願いいたしますー
>>946 やり方間違ってない?
ちょっとソースを晒してみるとか。
ネットワーク上のAccessファイルで、フォームから入力をしばらくしていると
「マシン**のユーザーがロックしています」
のようなメッセージが表示され、
入力しているPC以外からはファイルを開くことができなくなってしまいます。
デザインの変更等はまったくしていないのですが。
また、入力しだして少しくらいしか経っていないのなら
他のPCでも開けるのですが、
長時間(1時間くらい?)入力していると上記のようなメッセージが出て開けなくなります。
原因・解決法などお教えいただけませんでしょうか。
よろしくお願いいたします。
排他で開かない。ページやレコードのロックをしない。
以前は〜で、それから全く変更してないのですが・・・という文章じゃなく、
いきなり
> デザインの変更等はまったくしていない
と説明されても何のことやらサッパリ。
言葉足りず申し訳ありません。
「デザインの変更等はまったくしていない」
というのは、テーブル・マクロ・フォームなどのデザインの変更のことです。
排他ではなく普通に(共有状態?)でAccessを開いて、
テーブル等のデザインを変更すると
他に誰もそのAccessを開いていなければ自動的に排他になりますよね。
そのようなデザインの変更をしたりして、排他の状態にしてはいないはずなのに
他のユーザーがそのAccessを開こうとすると「マシン**のユーザーがロックしています」のような
メッセージが出るのです。
データの入力しかしていないのにもかかわらず。
ですが入力後しばらくの間は開くことができるのでますますわからないのです。
すみません、まだ日本語が不自由だとは思いますが
よろしくお願いいたします。
解読できない部分があればおっしゃってください。
>>950 Accessのオプションで、排他・共有・ロックのあたりがどういう設定になって
いるか、フォームのプロパティでも↑この辺どうなのかをまずは調べて報告
する。949の書き込みを見て、それくらいはできるでしょ。
それと、ふつ〜〜〜に考えてフォームで入力してるって話を聞いて、入力し
ながらデザイン変更してるでしょ、なんて考える奴はいない。もしくは、いて
も少数派。
>>951 ありがとうございます。
会社にインターネット環境がないので
また明日の夜に書き込みさせていただこうと思います。
記憶では、自分のPCでは
共有モード、編集済みのレコードをロックする、にしています。
レコードレベルでロックするのチェックはちょっと覚えていません。
ちなみにこのオプション設定は設定したPCだけで有効なものと思っていましたが…
他のPCでも同じ設定で開けていたのでしょうか。
>>952 Accessのオプション設定は確かにPC固有だろうなぁ。
でも、MDBで設定するものはPC固有じゃなくMDB固有だから。
「ネットワーク上のAccessファイル」ってのが、リンク元テーブ
ルのMDBなのか、システムも含めて丸ごと全部なのか不明だ
けど、ロック数が多くなったためにそのエラーになったのでは?
ご回答ありがとうございます。
>>951 既定の開くモード:共有モード
既定のレコードロック:編集済みレコード
レコードレベルでロックして開く:ON
確認した限りのPC(4台ほど)ではこの設定でした。
1台だけレコードレベルで〜のチェックがOFFのものはありましたが…
上記の設定だと、入力しているだけでもロックされてしまうのでしょうか。
>>952 >MDBで設定するものはPC固有じゃなくMDB固有だから。
すみません、うまく理解できませんでした。
MDB…Accessファイルですよね…
Accessのオプション設定は、ひとつのAccessファイルに対してだけではなく
設定したPC上で開く全てのAccessファイルに及んでしまうように感じていましたが…
また言葉足りず申し訳ありません。
「ネットワーク上のAccessファイル」は
システム含めて全て入っているファイルです。
テーブルもマクロもフォームも入っています。
ちなみに、あるAccessファイルだけで起こる現象ではないのです。
確認できた限りでは3ファイルあります。
1人しか入力していないのに、「…にロックされています…」が出ます。
そもそもどのファイルも使用する機会があるのは3〜4人なので、
そこまでの問題にはなっていないのですが…
お分かりになるようでしたら、ご助言くださいますようお願い致します。
何か相手してるのオレだけ・・・・・・???
>>954 その設定では、入力をしばらくしてるとって書いてることから、かなりの
レコード数の編集済みができてるよね。それが全てロック済みなわけで、
このロック数はレジストリの設定によって左右される。これは、以前MS
のサポートに聞いたうろ覚え情報なので、ちゃんとした見解は他の方か
MSの技術情報でも検索した方がよいと思う。
ロック数が多くなってるために、エラーが出てると思うのだが、まずは1台
だけでいいから「既定のレコードロック:ロックしない」にして、しばらく入
力をし、その後他のマシンで開いてみたら。エラー無しで開けると思う
けど。
Accessのオプション設定は、その通りそのPC上で開く全MDBに有効で
す。しかし、例えばフォームのプロパティでもレコードロックの指定が可
能です。Accessのオプション設定でロックしないになっていても、フォー
ムの設定で変更できます。まぁ、こういうのをMDB固有と考えて下され。
とりあえずはお試しを・・・キツいことを言うと、オプションやロックまで話
が出てるんだから、その設定の意味を調べたり試しに変更して実行して
みたりって出来ると思うんだけど。
それさあ、フォームのソースやコンボボックスで、共有しているデータテーブル(リンクテーブル)を直接開いてない?
それだったら根本的に作りを見直した方が良いよ。
スナップショットにするだけで解決したりしてね。
>>955が言っているのは、おそらくJETのMaxLocksPerFileのことだと思うんだけど、それを理解できるレベルまでいってないんじゃあるまいか?
957 :
955:2006/11/16(木) 19:01:26 ID:???
>>956 何か見たことあるぞ。たぶん、それです。
ご回答、本当にありがとうございます。
>>955 「編集済みレコード」というのは、今入力しているレコードではなかったのですか。
ロックまわりのヘルプはそれなりに読んだつもりなのですが、
入力が終わったレコードのことまで指すとはまったく思っていませんでした。
ありがとうございます。既定のレコードロックを「ロックしない」に変えて
様子を見てみます。
>>956 フォームのデータはテーブルそのままだったりクエリだったりします。
リンクテーブルはAccess自体に作っておりません。
スナップショットというのはちょっとわからないので調べます。
ご指摘ありがとうございました。
通りすがりの者が通りすがりますよ
ざっと読み流しただけで全容は把握しておりませんけれど
かなりスリリングなことをやっておられるわりには、そのスリルを充分に
味わい尽くしていないように感じられます
いまさらつくり変えろというのも無茶な話かもしれません
せめてまめにバックアップをとることをおすすめしつつ、やや足早に通りすがりますよ
バックアップすらまともにできない香具師が世の中にはあふれてる。
ブックマークやメールボックスすらバックアップしてない香具師ばかり。
>>958 「編集済み」の考えは、それでOKだよ。ヘルプに書いてあるじゃん。
お試しの場合だけど、レコードレベルでロックして開くも念のためにOFFだよ。
956が言ってるのは、フォームで編集対象にしてるテーブル(レコードソース
がクエリでも、その中はテーブルだしな)をコンボなんかのソースにしてない
か?ってことじゃないかと思うが。
962 :
956:2006/11/17(金) 12:28:55 ID:???
ひょっとして、データ部分とプログラム部分を一緒のまま、ネットワーク経由で複数ユーザーが同じmdbを実行してるってこと?
それだったら、その構造がそもそもの間違い。
一番不具合が出るパターンだね。
データ部分だけを共有できる場所において、プログラム部分は各クライアントにおいてテーブルのリンクでデータを参照する
さらにフォームのソースは処理にもよるが、直接テーブルではなく、一回ローカルにコピーしてそれを参照。
こうしておけば完璧だけど出来るかどうかはスキルによる
ここら辺を呼んで勉強すればできるでしょう
http://www.mahoutsukaino.com/
> 直接テーブルではなく、一回ローカル
これは、MDBを共有する意義が薄れるでしょ。確かにメチャ安全だと思うけど。
Accessごときでマルチ対応しようとする方がヤバいのは確かなんだが、銭かけ
たくない人が多いんだからしょうがないよ。その場合の対応として、リンクでの
使用は大賛成。
964 :
958:2006/11/18(土) 15:14:41 ID:???
ご返信ありがとうございます。
>>959 いきなり壊れることがあるらしいとはきいております。
日次でバックアップはとっていますが…
ご忠告ありがとうございます。
>>961 フォームの編集対象のデータをコンボのソースに…
非連結のテキストボックスに入力された値で検索した結果をコンボに表示、
ってことはやってます。
よくなかったですか。
>>962 >>963 一つだけデータベース分割をしたMDBがあるのですが
まだ発展途上なので修正することがおおいため、
フォーム等のあるMDB(テーブルはリンクしている)をネットワークに置いて
それを開いているものがあります。
あまり安全にはなってないのでしょうか…
ロックに関してはまだ経過を見ているところです。
ありがとうございました。
>964
xcopy /v \\SERVER\SHARE\hoge.mde %temp%\
start msaccess %temp%\hoge.mde
ってバッチファイルをみんなに実行させるといいよ。
こちらで質問していいのかわからないのですが教えてください。
会社内のLanのなかにいくつかワークグループがあって1つのPCから特定のワークグループの
PCにあるAccessファイルを開こうとするとファイルが開けませんとでて開くことができません。
同じファイルを違うワークグループにコピーすると開くことができます。開けないPCはその特定の
ワークグループの中にあります。開けるようにするにはどのようにすればいいのでしょうか?
968 :
967:2006/11/22(水) 15:44:04 ID:???
コピーできるみたいだからread権限はあるよなって思ったんだけど、もしかしてread権限も
なかったりして。あのぉ、同じワークグループに属してても、他のPC(同じワークグループ)
にユーザー設定されてなきゃダメじゃねぇ?
オレは気にしないが、スレ違いではあるな。
>>967,968
レスありがとうございます。wordとexcelは開けてaccessだけ開けないのでここに書きました。
read権限とwrite権限、ユーザー設定勉強してみます。
970 :
NAME IS NULL:2006/11/23(木) 00:56:26 ID:5O4HNqaR BE:84348342-BRZ(5001)
調べたけど、わからなかったので質問させていただきます
テーブル作成クエリで、新しいフィールドを付け加える時に型って指定できないですか?
今は↓でやってるのですが、これだと、実行すると新しいフィールド名がの型が、テキスト型でフィールドサイズが255になっています
新しいフィールド名: IIf([テーブル1].[test1],'1','0')
新しいフィールド名を数値型にして、フィールドサイズを1にしたい場合はどういう風に書けばいいでしょうか?
文字じゃなく数値を返せばいいだけでは?
新しいフィールド名: IIf([テーブル1].[test1],1,0)
> フィールドサイズを1にしたい
ここは意味が分からない。数値型のフィールドサイズ 1 って、いったい何?
つ:Boolean
>>969 開けるかどうかだけじゃなくて編集・保存が出来るか、も重要。
んで、Accessの場合はldbファイルを作成するから、開くという
行為だけでwrite権限が必要・・・のはず。
あとは、詳しい人、よろしく!!
>>972 byte型じゃねぇか。
でも、テーブル作成クエリって使う人いるんだねぇ。
あたしゃ初めからTempテーブル用意しちゃうほうですがね
あっちのマシンからこっちのマシンのmdbファイル開くのはやめろ
いや、お願いします
何でも言うことききますからやめてください
データ共有したいなら別なやり方いっぱいありますから
頼みますよもう
977 :
NAME IS NULL:2006/11/23(木) 08:56:02 ID:5O4HNqaR
>>971 ありがとうございます、数値型のフィールドサイズは関係ないですよね
テーブル作成クエリよくわからないんで使いたくないですが、これでやれと言われたので・・・
もう一つお聞きしたいのですが、
新しいフィールド名: IIf([テーブル1].[test1],'1','0')
こういう場合に新しいフィールド名がテキスト型になる場合、フィールドサイズの変更はできないのですか?
>>977 できません。
本来、テーブルを作成するSQLは別にあるのです。また、SQL系で
テーブルのいろいろな定義の変更をしたいなら、ALTER TABLEを
使います。VBAでTabledefなど利用してもいいでしょう。
975のように、初めから手作業でTMPテーブル作って追加クエリに
した方がキレイだと思うけど。
mdbファイルを共有してみんなで開いて使っていてファイルが開けなくなった漏れが来ましたよ。
みんなでアクセスは使えないね。orz