1 :
名無しさん@そうだ選挙にいこう :
04/07/14 22:39 質問される方へ
・OS、ACCESSのバージョンを明記してください
・質問内容は具体的に書いてください
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません
(聞き返さなくても詳細が把握できる質問が望ましいです)
・事前にヘルプ等で調べられる範囲は調べてください
・下記テンプレートの使用を推奨します。
---------- ここから ----------
【. 目 的 】 (何がしたいのか必ず記入。)
【. 条 件 】 (使用OS、ACCESSのバージョン など)
■試したけどうまくいかなかった処理
【. 概 要 】 (どんな処理を試したかを説明)
【駄目な理由】 (動作状況など)
■これだけはやりました
【
>>1 を読んだ】 はい・いいえ (読まない人が多いので必ず目を通してください)
【Googleで調べた】 はい・いいえ (大概の疑問は検索することで解決します)
【検索キーワードは?】 (全て列挙してください)
---------- ここまで ----------
前スレッド - ACCESS総合相談所 その10
http://pc5.2ch.net/test/read.cgi/bsoft/1075378966/ 過去スレッド/関連リンクは
>>2 以降
2 :
名無しさん@そうだ選挙にいこう :04/07/14 22:40
3 :
関連スレその1 :04/07/14 22:44
4 :
関連スレその2 :04/07/14 22:45
5 :
名無しさん@そうだ選挙にいこう :04/07/15 20:52
前スレの
>>981-983 様
お礼遅くなりましたが有難う御座いました。(アク禁で書き込めず)
無事、解決致しました。
最近ヘルプトピックが貧相になったと思ったら、
ネットで検索した方が構文なんかもちゃんと出ますね。
ふと思ったのですが・・・。 MDEファイルでデータ入力/加工/修正させてるDBの、 プールされたデータ(例えばテーブルに蓄積された)を開いたり、 インポートしたりエクスポートするには、再度MDBファイルとして開けばいいだけのことですか?
8 :
名無しさん@そうだ選挙にいこう :04/07/22 09:43
セキュリティ設定した情報を全て解除するにはどうすればいいでしょうか? セキュリティウィザードで設定した、ユーザーや権限情報を、 全く初期の状態に戻したいのですが・・・・。
9 :
名無しさん@そうだ選挙にいこう :04/07/23 01:24
新たに空DB作ってエクスポートする!
ACCESS2000を使用しています。 規格用紙以外の用紙を使用したいのですが、うまく行きません。 ファイル−ページ設定−ページ で用紙サイスを選ぶコンボボックスが できてきますが、その中で「ユーザー定義1(210X297mm)」がありますので、 これを使用して用紙サイズを変えようとしても受付ません。 この「ユーザー定義」は1から20あるのですが、これは一体なんでしょう? これが出来ないのなら他にユーザー定義が出来る方法はあるのでしょうか? 使用しているプリンターによるのでしょうか?
>10 コンパネのプリンタ側でつくるんでは?
>>9 レスありがとう御座います。そうですか、それしかないですか。
というのも、管理者/ユーザーの設定をしたところ、OSのバージョンの
異なる端末で開くと入れてもいないパスワード要求されたり、
マクロが実行できなかったりで・・・。
13 :
kokodayo :04/07/23 18:12
14 :
名無しさん@そうだ選挙にいこう :04/07/24 06:57
Ac2000を使っています 「Access ADO」でググった結果出てきたいくつかのサイトを参考に、mdbから別mdbへのADO接続を 試してみたんですが、どうも書き方が一通りではないようで迷っています。 以下の書き方はどちらも接続に成功しています。 MyCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\test.mdb';Jet OLEDB:Engine Type=5;" MyCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\test.mdb';" もしかしたら他にもまだ書き方があるのかもしれません。 本来の書き方、というか、こういう書き方をしたほうがトラブルを最小限に押さえられる というようなものがあるなら、それを知りたいと思いまして。 (ユーザーIDもパスワードもいらない接続です) AccessのVBAヘルプは、何だか表示できる項目と表示できない項目があって、肝心の部分はクリックしても 何も出てきません(もしかしたら壊れてるのかも)
>>14 どれでも良いと思う。
ちなみにConnectionStringについては自分は下派。
クラス化して色々なところで使い回しているけど、今のところトラブル無し。
ただし、以下みたいな接続をしているけどね。
With myConn
.ConnectionString = "Provider=..."
.Open
.CursorLocation = adUseClient
End With
>>15 回答感謝です
その書き方でも接続OKでした。
CursorLocation = adUseClient と、また見慣れない書き方があったので、ためしに
省略してみたら、それでもOK・・・で、またしても混乱 (;´Д`) お時間のあるときで
よろしいので、できたら何か解説ください。ずーっと気長に待ってます
モノは職場の小規模な自作システムなんですが、これまではサーバー(と呼んでいいのかな。
まあ仮サーバーです)にあるmdbから、各マシンにリンクテーブルで引っ張り、自前ロックを
つけながら読み書きさせていました。
2年ほどトラブルらしいトラブルもなくやってこれたんですが、リンクテーブルってのは
いってみれば接続しっぱなしなんですよね。
この「接続」という概念を最近知ったことで、何か急に不安になりまして。
考えてみればこの Connection てのは、VBAでレコードセットを扱うときに書いていた内容
ほぼそのまんまじゃないかと・・・何でいまごろ気づくかな。
それで、できればリンクテーブルの方法をやめ、つながっている時間を最小限にするために
読み書きの必要に応じて随時接続切断という方法を採ろうかなと思いまして。
ところで
同テーブルへの書き込みがかち合わなければ、同mdbへの接続自体はかち合っても大丈夫なんで
すよね(いままで5台のマシンから接続しっぱなし、かち合いっぱなしで大丈夫だったんです
から、まあいけるとは思うんですけど)
>>16 細かいことはヘルプを見てもらうとして、
CursorLocationを省略したら、規定値のadUseServerが使われるだけのこと。
違いは、Sortができる等。
> いってみれば接続しっぱなしなんですよね。
これについてはどうなんだろう?
自分は違うと思うんだけど・・・。
(だって接続しっぱなしならレコードセットのOpen/Closeの意味が無くなるし。)
どこかに技術的なことがあれば教えて>ALL
一応CursorLocationに関するコードね。 tblAというテーブルが存在しており、 ID(AutoNumber)、Money(Currency)のフィールドを持つとします。 Sub test() Dim strSQL As String Dim myRS As New ADODB.Recordset strSQL = "SELECT * FROM tblA ORDER BY ID" With myRS .CursorLocation = adUseClient '(1) .Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly On Error Resume Next .Sort = "Money DESC" On Error GoTo 0 Do Until .BOF Or .EOF Debug.Print .Fields(0), .Fields(1) .MoveNext Loop .Close End With Set myRS = Nothing End Sub
ありがとうございます。 >>adUseClient ちょっと納得。 レコードセットを取る時点で指定した並び順まで、必要とあらば強引に変更できるんですね。 ためしに .CursorLocation = adUseClient を省略してみたら、エラーになると思いきや、 .Sort = "〜 DESC" の強引な並べ替えが無視されただけ。 と思ったら、On Error Resume Next が入ってた。 これをとったらやっぱり怒られました。
「接続しっぱなし」については、自分のほうに勘違いがありました。 うちの職場のクライアントマシンでプログラムmdbを開くと、それだけで何もしなくてもサーバー側 mdbにldbファイルが現れていたんです。 ってことはたぶん、クライアント側のファイルを開いた瞬間に接続は確立し、閉じない限り接続は 維持され続けるんじゃないか、なんてことを想像して意味もない恐怖に駆られたわけですが。 いま、もっと単純なかたちで形で実験してみたら、リンクテーブルを含むmdbファイルを、ただ開く だけで何もしなければ、リンク元mdbにldbは現れないんですね。 リンクテーブルをダブルクリックして開くとかして初めてldbが現れ、そのテーブルを閉じれば ldbも消える。ただファイルが開かれているだけではidbは出てこない・・・ じゃあ職場のそれはどうして、と思い、よくよく記憶をたどってみたら、職場のクライアント マシンに入っているプログラムmdbは、起動時自動オープンのメインメニューフォームにあるいくつ かのテキストボックスが、サーバーからのリンクテーブル中の値を使っていたんです。決して「開いた だけで何もしていない」わけじゃなかったんですね。 リンクテーブルに何かアクションを起こさない限り接続状態にはならない、ということになると、 2年間無事に使い続けたシステムをわざわざ慣れない接続法で改造するってのも何だかなという気が してきました。 しばらく悩みながら、ADO接続で遊んでみようと思います
21 :
PENTAGON :04/07/27 01:44
ちょっとお聞きしたいのですが、 accessで、mdbファイルを開いた際にフォームを表示させるロジックって何でしたでしょうか?
22 :
名無しさん@そうだ選挙にいこう :04/07/27 14:46
SELECT [1原価合計] AS [原価] FROM [DB連結] WHERE [1オプション] = "True" で、エラーになります。 どこが間違ってますか? 因みに、1原価合計、1オプションから11原価合計、11オプションまである中の、 1(から11まで)オプションがTrueのものとそうでないものの集計を出すプロセスです。
Trueにダブルクォートいらん
>>21 ロジックって意味がわからんが、
「ツール」→「起動時の設定」→「フォーム/ページの表示」
じゃ駄目なのか?
ACCESS2000を使用しています。 フォームで、電話番号を入力するテキストボックスで、 電話番号の定型入力を使ってるのですが、 そのテキストボックスにフォーカスが移る時に、 カーソルが局外番号を入力する()の中に移るようにしたいので、 VBAで以下のようにしたのですが、 Private Sub 電話番号_GotFocus() Me!電話番号.SelLength = 0 Me!電話番号.SelStart = 1 End Sub カーソルのタイプ?が棒状ではなく反転表示?のタイプになっており 電話番号を新規で入力するとき、最初のキーが無効に なってしまいます。 この現象を回避するにはAPIを使うしかないのでしょうか?
[ツール]-[オプション]-[キーボード]-[フィールド移動時の動作]で、 [フィールドの先頭に移動]にチェックを入れておけば?
なんだかちっともわからないんだけど、 VBAを描かなくてもフォーカスを移すだけで ()の間にカーソルは入るよ???
>>26 レスありがとうございます。
そのようにすればできますね。
電話番号のテキストボックスだけをしたいので、
色々調べてみたら、
Private Sub 電話番号_GotFocus()
SendKeys "{f2}"
End Sub
にしたら、解決したみたいです。
>>27 レスありがとうございます。
私のは、[ツール]-[オプション]-[キーボード]-[フィールド移動時の動作]
で[フィールド全体を選択]になっているせいか、カーソルが入りませんでした。
というかそんなオプション設定があることすら知りませんでした。
29 :
名無しさん@そうだ選挙にいこう :04/07/30 10:17
これから勉強を始めます
30 :
名無しさん@そうだ選挙にいこう :04/07/30 16:44
SELECT [ID] AS [ID*] FROM [DB連結] UNION SELECT [ID] AS [ID*] FROM [DB連結NAK], SELECT [見積NO] AS [見積NO*] FROM [DB連結] UNION SELECT [見積NO] AS [見積NO*] FROM [DB連結NAK]; で構文エラーになります。 複数の同名、或いは違う名前のフィールドを二つのDBから連結するには どうしましたっけ?
SELECT [ID] AS [ID*], [見積NO] AS [見積NO*] FROM [DB連結] UNION SELECT [ID] AS [ID*]. [見積NO] AS [見積NO*] FROM [DB連結NAK]; でいいんじゃね? select文を", "で繋ぐなんて、Accessでできたっけ? フィールド名に"*"が使えるかどうかも試してないから シラネ
一箇所で書き間違えたのでもう一度。 SELECT [ID] AS [ID*], [見積NO] AS [見積NO*] FROM [DB連結] UNION SELECT [ID] AS [ID*], [見積NO] AS [見積NO*] FROM [DB連結NAK]; | select文を", "で繋ぐなんて、Accessでできたっけ? これは元のSQLの↓この下線部分な UNION SELECT [ID] AS [ID*] FROM [DB連結NAK], ^^^^ SELECT [見積NO] AS [見積NO*] FROM [DB連結]
33 :
名無しさん@そうだ選挙にいこう :04/07/30 17:02
>>32 ありがとうございます。
SELECT [ID] AS [ID*]
FROM [DB連結]
UNION SELECT [ID] AS [ID*]
FROM [DB連結NAK];
はOKだったんです。
で、同じように、二つのDBからフィールドを同じ名前で読み込みたいのですが、
,で続けても、;で続けても、エラーになります。
因みに「*」は問題なくフィールド名に使えました。
>>32 間違えて押しちゃった・・・。
肝心の結果ですが、うまくいきました。
サクスコです。
36 :
名無しさん@そうだ選挙にいこう :04/08/01 04:44
name | price -------------- AAAA | BBBB | AAAA | CCCC | 上記のようなテーブルがあって、AAAA は 500 円 BBBB は 200 円みたくデータを挿入したいのですが、 どんな SQL 文を書いたら良いのでしょうか? UPDATE table SET [table].[price] = 500 WHERE (([table].[name])="AAAA"); こんな感じで AAAA の時は 500 円のみの修正なら 出来たんですけど、これだったら AAAA 以外の値を 書き換える事が出来なくて・・・
37 :
名無しさん@そうだ選挙にいこう :04/08/01 05:38
数値型フィールドが連結されてるテキストボックスの書式設定で 小数点以下2桁まで表示することは出来ますが たとえば、「1」、「1.2」、「1.23」と3つの数字があったとき書式に「0.00」と設定すると、 1.00 1.20 1.23 と表示されます。また、書式に「0.##」と設定すると、 1. 1.2 1.23 と、小数点以下が0の時にも小数点が表示され、 右側にスペースが入ってしまいます。 これを、入力されたとおり表示するような設定はできませんか?
>>36 Switch関数を使うべし
SET [Price] = Switch([name]="AAAA",500,([name]="BBBB",200,([name]="CCCC",100)
WHEREはイラネ
40 :
名無しさん@そうだ選挙にいこう :04/08/01 23:52
xpでAccess2000を使っています。 すでに作成してあるレポートをコピーして 使用しようとしていますが、 そのレポートのリンク先であるクエリやテーブルを 新たに変更や設定するにはどうしたらよいですか?
41 :
名無しさん@そうだ選挙にいこう :04/08/02 17:16
フォームフィルタで、この前までは、全レコードがコンボボックス状態になって選択できたのが、 Is Nullと Is Not Nullしか選択できません。 どうしたものでしょうか?
Access2000のVBAで クエリに画面から手動で設定したフィルタの情報を取得することってできるでしょうか? フォームのフィルタなら、プロパティから取得できるのは分かるのですが テーブルとクエリのは見当たりません。
44 :
名無しさん@そうだ選挙にいこう :04/08/04 22:55
入力用のフォームを作ってデータを入力するときに、後から挿入した新しいフィールドがあった場合 そのフィールドにフォーカスが移るのが一番最後になってしまうんですが、この順番を変えることはできませんか? 氏名 住所 電話番号 携帯番号 ←このフィールドを新しく挿入 勤務先 勤務先住所 TABまたはENTERで入力フィールドを進めていくわけですが、氏名→住所→電話番号→勤務先→ 勤務先住所→携帯番号、になってしまいます。。。
[表示]-[タブオーダー]で、タブ移動の順番を変更せよ
>>45 ご回答ありがとうございました!
お早い回答助かります。
47 :
名無しさん@そうだ選挙にいこう :04/08/05 15:53
レコードに対して、納期を入力し、それをカレンダーの形にして表示するなんて、 できるんでしょうか? 日付毎に表示するのは簡単ですが、カレンダーの形(7列に並び4段或いは数段)で、 日付の下の欄に該当物件が列記されるようにです。
48 :
名無しさん@そうだ選挙にいこう :04/08/05 17:37
DoCmd.RunMacro (マクロファイル名.マクロ名) でオブジェクトがありませんとなります。 DoCmd.RunMacroのあとってどうやりましたっけ?
>>48 マクロ名を""(ダブルクォーテーション)で括る。
ちなみにモジュールにはOption Explicitつけといたほうがよいと思うよ。
>>49 レスありがとうございます。
昔と違ってヘルプトピックの情報量が少なくて・・・。
おかげで助かりました。
52 :
名無しさん@そうだ選挙にいこう :04/08/06 16:37
簡易見積書をレポートで出力していますが、 古い人が形だけでもハンコを欲しがります。 数人分のハンコのJPGを重ねて貼り付けて不可視にし、 担当者フィールドからIFで分岐させようかと思いましたが 人も入れ替わっているのでメンテが厳しくなるため Dim Tantou As String Tantou = Me![担当者名] Me!(変数:Tantou).Visible = True とやれば楽かなーと思いましたが実際やると当然エラーになります。 要するにVisible=True するオブジェクトを変数で指定したいのですが、 どうやればよいのでしょうか。
53 :
名無しさん@そうだ選挙にいこう :04/08/06 16:45
Access2003でVBAの勉強を始めたのですが、とても単純なところでひっかかっています。 とりあえず標準モジュールを作り、参考書やヘルプを見ながら MsgBox ("Hello,World.", vbCritical ) と書いたら、コンパイルエラーになってしまいました。 試行錯誤の末、カッコをなくして MsgBox "Hello,World.", vbCritical とか、パラメータを減らして MsgBox ("Hello,World." ) のように修正すると正常に実行できることがわかりました。 WEBで検索しても参考書と同じで、すべてのパラメータをカッコの中に入れる 書き方ばかり出てきます。 これはいったいどうしてなのでしょう? 教えてください。
'関数を文のように書く MsgBox "Hello,World." MsgBox "Hello,World.", vbCritical MsgBox ("Hello,World.") MsgBox (("Hello,World.")) MsgBox (((("ガクガクブルブル")))), ((vbCritical)) 'MsgBox関数の戻り値を使う a = MsgBox("やらないか?", vbYesNo) If a = vbYes Then 'うほっ End If 'Call文を使う Call MsgBox("Hello,World.", vbCritical) Call MsgBox(("Hello,World."), (vbCritical))
>>52 要するにオブジェクト名に変数を使いたいたいということなら、
Me![担当者]ではなく、Me("担当者")という呼び出し方にすればよし。
変数を入れると Me(Tantou) になる。
>>53 MsgBox ("Hello,World.", vbCritical )
上記の書き方をするのは、メッセージボックスからの返事(YesとかNoとか
Cncelとか)を受取る時です。
対して MsgBox "Hello,World.", vbCritical この書き方をするのは、
言ったら言いっぱなしの時です。
dim ret as long
ret = MsgBox ("わかりましたか?", vbYesNo )
if ret=vbNo then
msgbox "君はバカです",vbCritical
else
msgbox "寝なさい"
end if
こんな風に使い分けます。
>>56 If MsgBox ("わかりましたか?", vbInformation Or vbYesNo, "") = vbNo then
msgbox "君はバカです",vbCritical
else
msgbox "寝なさい"
end if
戻り値を = で受取るという基本を教えたかったんだよーん
>>54-58 わかりました。
カッコの中にパラメータを複数書くとFunctionの呼び出し、
パラメータが1個の時は、演算の順序を変更するためのカッコと
みなされてしまうんですね。
ありがとうございました。
60 :
名無しさん@そうだ選挙にいこう :04/08/07 17:00
Access2002を使っています。 Access2003を買うべきかどうか迷っています。 Access2004とかって、まだ発売されないのでしょうか。
61 :
名無しさん@そうだ選挙にいこう :04/08/08 11:42
Access2000で十分
63 :
名無しさん@そうだ選挙にいこう :04/08/09 00:37
初心者です Accessで作成したテーブルをPostgreSQLへ移植させることは可能でしょうか? それとPostgreSQL側のデータをAccess側で観覧・更新させることは可能でしょうか?
>>63 両方とも可能
やり方は初心者に教えるのは面倒だからしたくない。
>>52 イメージコントロールを使うのが吉!
ファイル名で簡単に画像が切り替えられるぞ
67 :
名無しさん@そうだ選挙にいこう :04/08/09 19:59
質問:両面印刷をしたい。 環境:WIN2000,AC2000,プリンタは両面対応。 1枚の紙に両面印刷をする場合,レポートをどのように設定すればうまくいくのでしょうか?
69 :
名無しさん@そうだ選挙にいこう :04/08/09 23:49
>>68 常に両面印刷をするわけじゃなくて,表面印刷をする文書様式と
両面印刷をする文書様式を混在して出力したい場合のこと。
プリンタ側で設定すれば,一律に両面印刷になってしまうと思うが。
>>67 メインじゃないほうの印刷様式をページ設定のその他プリンタで登録しておくといい。
72 :
名無しさん@そうだ選挙にいこう :04/08/10 12:23
>>71 なるほど。
それで,サブの印刷様式を印刷するときに,それを読み込むということですね。
ありがとうございました。
Access入門者です。 クエリを作ろうとして、フィールドに文字列を入力しようとするのですが、 なぜか日本語(全角ひらがな)になりません。 全角ローマ字にはなるのですが。 なぜなんでしょうか? Access2000 IME 2000
>>73 自己レス。解決しました。(^^;)
漢字キーを押していたのですが、タスクバーのアイコンから直接切り換えれば可能でした。
75 :
名無しさん@そうだ選挙にいこう :04/08/11 09:35
はじめまして。WindowsXP、Access2003です。 「社員登録」という名前のフォームを開いて社員の各データを入力し、 現在フォーム上に表示している社員データをレポートに出力したいのですが、 レポート上にテキストボックスを配置して、そのテキストボックスの コントロールソースを「=Forms![社員登録]![住所]」としても、 「#エラー」となってしまいます。 レポートのレコードソースにはテーブルとクエリしか選択できないようですが、 これはつまり、フォーム上のリアルデータをレポートに出力させるには、 フォームとレポートの間に「一時保管」的なクエリを噛ませて、 そのクエリに対するレポートを作る、という2段階方式でないといけない ということなんでしょうか? どうも根本的にフォームの挙動について解っていないようですが、 よろしくお願い致します。
>>75 エラーにはならないような気が...
レポートのレコードソースはそのままで
Docmd.OpenReport "レポート名", , , "[社員ID]=" & Me.社員ID
で開いてみれば?
VBAのフィルターについて質問です。 環境はWindows2000pro SP4、Access2003、ADOです。 以下の式で実行時エラー3001が出ます。 Recordset.Filter = "( (フィールド1 = 0) Or (フィールド2 = 1) ) And (フィールド3 = 0)" 例えば以下のように条件をバラバラに分解するとエラーは出なくなるので、 フィールド名などは間違っていないはずです。 が、これでは目的の結果が得られません。 Recordset.Filter = "(フィールド1 = 0) Or (フィールド2 = 1)" Recordset.Filter = "(フィールド2 = 1) And (フィールド3 = 0)" エラーの出る式は、どこが間違っているのか、いくら見直してもわかりません。 どうぞ助けてください。
78 :
名無しさん@そうだ選挙にいこう :04/08/11 20:12
>>75 やってみたけど、エラーは出ない。
「#Name?」じゃなくて「#エラー」というところが気になるな。
>>78 ドロップダウンカレンダーって何?
参考サイトの端から端まで見てられないよ。
検索したら見つかった。 Date/Time Pickerコントロールのことか。 自宅にはVBが無いので実験出来ないな。役に立てずゴメン。
>>77 VBAのヘルプから抜粋
AND と OR には優先順位はありません。句はかっこでグループにまとめることができます。ただし、次のように、OR で句を結合してできた句のグループを、AND を使ってさらに別の句と結合することはできません。
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
この場合は、フィルタを次のように構成します。
(LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')
>>78 OSの地域オプションに依存
日付のカレンダーを「和暦」
短い/長い形式を和暦タイプにしてください。
※元号は付かなかった...Win2000/Ac2002
84 :
名無しさん@そうだ選挙にいこう :04/08/12 15:47
マクロでフィルタの実行-フィルタ名(空)-Where条件式で [納入日]が開いているフォームのテキストボックス「開始日付」の3日後から 「終了日付」の3日後までのレコードを抽出したいのですが、 [納入日]=Between ([Forms]![納期チェック]![開始日付] +3 ) And ( [Forms]![納期チェック]![終了日付] )でエラーになります。 2つの日付のそれぞれ3日後のインターバルが[納入日]なデータを抽出するのは、 一体どうすればいいでしょうか?
DateAdd関数をVBAのヘルプで調べて
86 :
名無しさん@そうだ選挙にいこう :04/08/12 18:20
87 :
名無しさん@そうだ選挙にいこう :04/08/14 10:15
Access2000のフォームで質問させてください フォームの高さをVBAで変更することは可能でしょうか? Me.WindowHeight = 5000 のように指定しても「このプロパティは読み取り専用であるため、指定できません」 と言われてしまいます。 よろしくお願いします。
89 :
名無しさん@そうだ選挙にいこう :04/08/14 12:13
すいません。どなたか教えて下さい。 Excelのデータがあります。ここでは、"T1234"などというアルファベット+数値 が入力されています。 これらの記号を、Accessによって"1234"などという数値にしたいのですが、 どうすればよろしいのでしょうか。
90 :
名無しさん@そうだ選挙にいこう :04/08/14 13:28
【. 目 的 】レポートを2アップでプリントアウトしたい
【. 条 件 】Windows2000、ACCESS2000、DocuCentre Color 320 CP
■試したけどうまくいかなかった処理
【. 概 要 】両面印刷、2アップを指定
【 駄目 な 理由】両面印刷され、2アップされない
WORDでは2アップできました。
■これだけはやりました
【
>>1 を読んだ 】 はい
【Googleで調べた】 はい
【検索キーワードは?】 レポート 2アップ DocuCentre
>>89 先頭のアルファベットが一文字なら
Mid([フィールド名],2,99)
>>91 Mid([フィールド名],2)でよし。99は不要。
94 :
名無しさん@そうだ選挙にいこう :04/08/16 00:08
フォームにタブコントロールを作成し、タブ毎に別々のレコードソースを設定することはできないんでしょうか? 具体的には、 テーブル1 テーブル2 氏名 勤務先 住所 勤務先住所 電話 勤務先電話 携帯 勤務先FAX ・ ・ ・ ・ というテーブルがあり、タブ1にテーブル1の内容を、タブ2にテーブル2の内容を表示させたいんですが・・・ 可能なら、タブ2(テーブル2)にテーブル1の内容を一部表示させることも可能でしょうか?
>>94 各レコードに、テーブルとすべき項目があるのは何故?
>>82 さん、ありがとうございました。
ヘルプに解説があったのですね。
連休で休んでいたので、返事が遅くなってすみませんでした。
98 :
名無しさん@そうだ選挙にいこう :04/08/16 17:40
問題点:フォームのテキストにデータを入力しようとすると, 「テーブルレベル入力規制のこの関数は式では使用できません。」と 表示されてしまう。 状 況:テーブル:フィールドA(テキスト形式,入力規制なし) フォーム:テキストA"(テキスト形式,入力規制なし) AのデータをA"で表示させている。 環 境:win2K,ac2k スタンドアロン使用。 他の同一環境(osやacのこと)・同一機種で使用しても正常に動作するが,ある1 台だけエラーが表示されてしまう。 どこか問題の1台だけ,どこかアクセスの設定が変わったりしているのでしょうか? 変わっているとすればどのあたりに問題がありそうでしょうか?
99 :
名無しさん@そうだ選挙にいこう :04/08/16 20:29
winXp,Access2003 フィールドの規定値を最新の値(ひとつ前の値)を指定するにはどうすればいいんでしょう? =last([フィールド]) =count([フィールド]) とかやってみましたが上手くいきません
>>99 同じ数字が並ぶようなら、テーブルの構造を考え直した方が良いと思う。
既定値じゃなくイベントプロシージャなら、 たとえばEnter時に DLast("フィールド名","テーブル名") で行けるけど、この方法はあまりおすすめできない。 それよりは何か適当な変数用意して、更新後イベントか何かでその変数に 逐次記憶させながら、Enter時イベントで押し込んでいったほうがいいような気がする
回答ありがとうございます。
>>100 前回と同じ値になる確率が高いフィールドで、しかしテーブルを分けるほど同じ数字が出てくるわけでもなく
更新(追加)の頻度も低い、というものなんです。。。
>>102 VBAを使わなければいけませんか。。。Access VBAの入門書買ってきます。
ExcelのVBAなら多少はわかるんだが
>>99 みたいなケースってのは、商品登録なんかでよくありそうな気がするよ
同じ型のブラウスで色記号だけ違う、みたいなものを続けざまに登録するとき、
直前に入力したものが再利用できれば楽だもの
>>98 そのメッセージは正確ですか?
Accessには「入力規則」はあるけど、「入力規制」は無いよね??
揚げ足じゃなくて、手がかりが正確じゃないと、検索も出来ないので。
一般的には参照設定が疑われる症状なので、Visual Basic Editor の
[ツール] メニューの [参照設定] をクリックし、「参照不可」が表示されて
ないか確認するべし。
>>103 EXCELのオートコンプリート使ってダーっと入力してから
インポートしたら?
>>103 使うのがあなた一人なら、当該フィールドで[Ctrl]+[7]を押して
前回の入力値が引っ張ればいいんだけど。
誰にでも使えるものにするなら、VBAを使うべき処理だと思う。
>>107 自己レス
前回の入力値「を」 です。スミマセン
残念ながら、主に使用するのは自分ではなく、ワードの書式設定も知らずただ文章を打ち込めるだけ、と いうような人で、データの閲覧から印刷、抽出、検索などなど、殆どの処理はフォーム上に配置したボタン一発で 片付けねばなりません(藁 ですので、入力も極力簡略化したいところなのです。
110 :
名無しさん@そうだ選挙にいこう :04/08/17 08:07
>>105 失礼しました。正確には,
「テーブル レベル入力規則の この関数は式では使用できません。」と表示されます。
とりあえずvbeの参照設定を確認してみます。
>>99 Ctrl+7(テンキーでない方)で直前のレコードの同フィールド値は
コピーできるがそれではダメなの?
あっ...107さんがレスしてあるのね。ゴメン
>>110 >AのデータをA"で表示させている。
これが悪いのでは?
このダブルクォーテーションをはずしてみても、同じ現象が起りますか?
114 :
名無しさん@そうだ選挙にいこう :04/08/18 07:24
>>113 AとかA"は名前のたとえです。実際にはそれぞれ全く異なる名前を付けています。
>>114 ある程度情報は出してもらわないと
答えられるものも答えられないよ。
とりあえずは、設定がおかしいからエラーが出てるみたいだから
見直してみて。
>>82 ゲーこれ本当ですか。
Access97のヘルプで記述を見つけられなかったけど、どのバージョンからでしょう。
Acc97で作ったアプリでたぶん山ほどつかってるよ…バージョンアップ時は大工事か。
Kaishibi<HONJITSU and (Shuryobi is null or Shuryobi>HONJITSU)とか。
117 :
名無しさん@そうだ選挙にいこう :04/08/18 17:18
【. 目 的 】 ACCESSで作られたシステムの解析 【. 条 件 】 とくになし。 ほかの人が書いたACCESSのモジュールを解析しています。 VBAの文法の質問です。 Me.あるプロパティ と Me!あるプロパティ は同等と考えていいのでしょうか? (ぱっとみたかんじ、同じように使えているように見えるのですが) 今まで自分でVBAを書くときは[ . ]で書いていたのですが 解析しているコードは [ . ]と [ ! ]が両方使用されています。 ヘルプを見ても [ . ] と[ ! ]は演算子の項目には載ってないようです。
a
同じだよ
>>117 式で ! 演算子およびドット (.) 演算子を使用する
使い分けというより、何となく気分的にこうしてしまう Me.プロパティ Me!コントロール名 For i=〜 Me("イパーイあるコントロール" & i) Next
>>120 をHELPで検索すれば詳しく書いてあるけど、
簡単に言うと、!の直後はユーザ定義のもの
.の直後はACCESS定義のものかSQL系
要するにSQLだけならACCESSは!と等価。
その他のVBAの話になると違ってくる。
123 :
名無しさん@編集中 :04/08/19 00:10
うちの会社はoffice2000からバージョンアップして今の バージョンまで使ってます。proエディションらしいのですが、 配布用のアクセスファイルはどのようにつくればいいのでしょうか。 ランタイムがあるのでしょうか。
デベロッパーズエディションじゃないと、ランタイム配布は出来ません。
>>デベロッパーズ これって2000あたりで打ち切りじゃなかったっけ もう買えないってか どーすんだ、これから
Access2003のランタイムを作成するには Microsoft Office Access 2003 Developer Extensions が必要になります。 その為には、別途、Visual Studio Tools for Officeを 購入しなければならないんですが。。。 # OfficeXPまでは Developer Editionが用意されてたんだけどね。
質問です。 アクセス2002で売上伝票を作っています。 扱っている商品がゲームソフトの新品と中古なので、商品テーブルを同一にして、 伝票明細で新品と中古を分けました。 大雑把に書くと、 商品T(テーブル)=商品番号、商品名、価格 売上伝票T=伝票番号、売上日時 新品売上伝票明細T=伝票番号、商品番号、販売数量 中古売上伝票明細T=同上 各伝票明細クエリで、価格*数量=小計としました。 その上で、 売上伝票フォームをつくり、そこに各伝票明細の二つを埋め込み、 各小計を売上伝票Fで合算させようとしています。 (新品と中古を同時に販売することも多いので) ・売上伝票フォーム=伝票番号、売上日時、(下記の二つの小計の)合計 (サブ):新品伝票明細=伝票番号、商品番号、商品名、価格、販売数量、小計 (サブ):中古伝票明細=同上 新品と中古の二つの明細に商品が記入されると「合計」もきちんと計算されるのですが、 一方しか記入されない場合に、計算してくれません。 どうすればいいのでしょうか?
Access2003のVBAでタブ区切りCSVをインポートしてテーブルを作る方法を 教えてください。CSVファイルの1行目はフィールド名ではなくデータです。 「今までにやったこと」 以下のようなSQLを試してみたのですが、 SELECT * INTO テーブル1 FROM [Text;DATABASE=c:\tmp].[テスト.csv] これだと1行目がフィールド名と見なされてしまうのと、 区切り文字をコンマからタブに変更する方法がわかりませんでした。 また、TransferTextについても調べてみたのですが、ヘルプを見ると、 CSVと同じフォルダにインポート定義ファイルを置かないと 区切り文字をタブに変更できないらしく、 そのフォルダは書き込み禁止なのです。 何かよい解決方法を教えてください。お願いします。
>>127 金額の合計とか何か計算をする時、式の中に1つでもNullが入っていると
答えもNullになってしまいます。
Nullかどうか判定して、Nullなら足さないようにしなくてはなりません。
>>129 ありがとうございます!
Nullかどうか判定して、Nullなら計算しないようにするにはどうすれば
いいのでしょうか?
>>130 例えばこの式では、どちらかがNullだった場合、合計がNullになってしまいます。
新品!小計 + 中古!小計
小計がNullだったら0に置き換えて足す式は、こうなります。
Iif(IsNull(新品!小計), 0, 新品!小計) + Iif(IsNull(中古!小計), 0, 中古!小計)
そのままコピペせず、IifとIsNullの使い方はちゃんと調べた方がよいでしょう。
検索すれば、いくらでも出てきますので。
>>130 Nz関数という便利なものがあるから、ヘルプで調べよ。
>>128 >また、TransferTextについても調べてみたのですが、ヘルプを見ると、
>CSVと同じフォルダにインポート定義ファイルを置かないと
>区切り文字をタブに変更できないらしく、
一度ウィザードに従って手動でインポート定義を作って、その時に付けた
名前をインポート定義に指定すれば、TransferTextで逝けますよ。
docmd.TransferText acImportDelim, _
"タブ区切り インポート定義", _
"タブ区切り",
"C:\タブ区切り.txt", _
false
上記で実験済み。(「タブ区切り インポート定義」が定義名です)
Accessを使いこなすにはVBAはやはり避けては通れぬ道なのか。。。orz
>>131 出来ましたー!
本当にありがとうございます!
>>132 関数について、勉強します。
ありがとうございます。
127です。 商品の価格が頻繁に変動するため、商品Tでは あくまで「販売参考価格」とし、売上伝票明細Tで「実売価格」を入力することにしました。 そして、伝票明細Fを =伝票番号、商品番号、商品名、参考価格、実売価格、販売数量、小計(=実売価格*販売数量) としました。 商品番号を入力すると、商品名、参考価格が表示されるのですが、このときに、「実売価格」のコントロールに 参考価格を予め表示させるにはどうすればいいのでしょうか? マクロで代入とかやってみたのですが、駄目でした。 連投になってしまいますが、よろしくお願いします。
>>137 ありがとうございます。
しかし、実売価格の既定値を「=[参考価格]」としたのですが、
変化が見られません・・・
仕事で悩んでます。 1000 1001 1002 1005 1007 というふうな数字を持つレコードを集計し、 つながっている番号の固まりごとにFrom番号、To番号、番号の数 というレコードにまとめたいのです。 上の例で言うと 1000 1002 3 1005 1 1007 1 の3レコードとなります。 (連番にならないデータはToをセットせず、データ数を1とする) まだ選択クエリーもおぼつかない素人ですが 今日一日いろいろ調べてもやり方がわかりません。 アドバイス・ヒントなどお願いします。 (Windows2000、Access2000)
>>138 そりゃ、当たり前でしょ。
新しいレコードが挿入された時には、[参考価格]も未入力状態なんだから。
既定値を使うなら、リテラルをぶち込まなくちゃ。
142 :
名無しさん@そうだ選挙にいこう :04/08/22 12:05
OS:XP-home Ver:Access2003 テーブル: 事業所マスター [名称] [事業所番号] [住所] [電話] というテーブルがあり、フォーム上に配置したコンボボックス 値集合ソース (SELECT 事業所マスター.名称, 事業所マスター.事業所番号, 事業所マスター.住所, 事業所マスター.電話 FROM 医療機関マスター; ) で値(名称)を選択すると、テキストボックス1に事業所番号、2に住所、3に電話が表示されるようにしたいのですが。。。 テキストボックスのコントロールソースはどう指定すればいいのでしょう??
>>142 VBAだとこんなかんじ。VBA書かなくてできるかは、知らない。
Private Sub コンボ_Change()
On Error GoTo コンボエラー
If IsNull(Form_F_会員名簿.コンボ.Column(0)) = True Then
テキスト1.value = ""
テキスト2.value=""
テキスト3.value=""
Exit Sub
End If
テキスト1.value=コンボ.Column(0)
テキスト2.value=コンボ.Column(1)
テキスト3.value=コンボ.Column(2)
コンボ45_Change:
Exit Sub
コンボエラー:
テキスト1.value= ""
テキスト2.value=""
テキスト3.value=""
これは、テキストじゃなくてラベルにコンボボックスの内容を貼り付けてた コードだから、たとえば、テキストボックスの内容をコンボボックスの 値と違うようにした場合など、考えてないので、やっぱり不適切かも しれない。 Private Sub コンボ_Change()じゃなくてPrivate Sub コンボ_AfterUpdate() の方がいいかな?
>>139 その処理で、テーブルの内容を変更するの ?
それとも、レポートかなんかでそういう結果が欲しいの ?
まあ、ソートは DB にやらせて、後は VBA でしこしこやるしかないと思うが。
>>139 これってけっこう複雑なことやらなきゃならなそう
面白そうなパズルって感じ
時間があればやってみたいところだけど、ちょっと今は無理
クエリで並び順きっちりさせて
D関数使って(処理激遅になるかも)直前のレコードを隣に出して
直前のレコード + 1 と等しいかどうか比較させて
場合によっては、このあたりでいちど仮テーブルに吐き出して
まとめは集計クエリ
な感じになるのかな
実際にやってみないとよく分からないけど
(直前のレコードってのも何か変だな。〜未満の中で最大、みたいな感じか)
もしかしたらVBAでレコードセット開いて一つずつちまちまやったほうががいいのかも
どっちにしても仮テーブル最低1個は用意しなきゃダメでしょ
>>145 ,146
アドバイスありがとうございます。
結果は別テーブルかクエリの結果で得ることを考えています。
お二人のお話をうかがうに、かなり厄介な課題なんですね。
むしろExcelならなんとかできそうだなあ、と思うのですが
なにせ数十万レコードのデータでして。
ソート→VBAで差分計算・別テーブルに吐き出し→集計クエリなど
の線で考えてみます。
>143-144 回答ありがとうございます。 それをまんまコピペして、ヘルプを見ながら改造したら何とか望みどおりのものができました。 AccessVBAは全く知らないので、これだけでもかなり苦戦しましたが。。。
>>143 VBAを使わないやり方
テキストボックスのコントロールソースを、=コンボ.Column(1) にして、
コンボボックスの更新後イベントに、マクロで再クエリー
>>148 えーと、既定値に =1000 とか直接書いてしまえということです。
>>136 [商品番号]の更新後イベントに、こう書くべし。
Me![実売価格]=Dlookup("参考価格","商品T","商品番号=" & Me![商品番号] )
>>150 回答ありがとうございます
そのやり方もやってみたんですが、フォーム上はうまくいきましたが、
レポートにして出力しようとすると#Name?エラーがでてしまいます
テキストボックスのコントロールソースは
=Forms!フォーム!コンボ.Column(3)
=Forms!フォーム!テキストボックス にしてもやはり#Name?エラーが出て表示されません フォームでテキストボックスの値をテーブル(適当なフィールド)に保存するようにし、 それを表示させるしかないんでしょうか? それだといたずらにフィールドが増えてしまいますが、、、
>>139 面白そうなパズルどころじゃなかったわん
(もっとスマートなやり方があれば僕も知りたい)
Bangou
1000
1001
1002
1005
1007
これをTbl1としましょ
で、これをもとにクエリをつくる
SELECT Tbl1.Bangou, IIf(([Bangou]-DMax("Bangou","Tbl1","Bangou<" & [Tbl1]![Bangou])=1) Or (DMin("Bangou","Tbl1","Bangou>" & [Tbl1]![Bangou])-[Bangou]=1),1,0) AS Hantei
FROM Tbl1
ORDER BY Tbl1.Bangou;
これをQry1としましょ
で、結果を入れる仮テーブル
フィールドは
FromBangou, ToBangou, Ikutu の3つ
これをTbl2としましょ
Function BangouMatome() DoCmd.Hourglass True CurrentDb.Execute "DELETE Tbl2.* FROM Tbl2;" Dim MySuji1 As Long, MySuji2 As Long, MyCnt As Long Dim MyMDB As New ADODB.Connection Dim RstKaki As New ADODB.Recordset, RstYomi As New ADODB.Recordset Set MyMDB = CurrentProject.Connection Set RstKaki = New ADODB.Recordset Set RstYomi = New ADODB.Recordset RstKaki.Open "Tbl2", MyMDB, adOpenKeyset, adLockOptimistic RstYomi.Open "Qry1", MyMDB RstYomi.MoveFirst Do Until RstYomi.EOF If RstYomi![Hantei] = 1 Then MyCnt = 0 MySuji1 = RstYomi![Bangou] MySuji2 = RstYomi![Bangou] Do While RstYomi![Hantei] = 1 MyCnt = MyCnt + 1 MySuji2 = MySuji2 + 1 RstYomi.MoveNext If RstYomi.EOF = True Then Exit Do End If Loop RstKaki.AddNew RstKaki![FromBangou] = MySuji1 RstKaki![ToBangou] = MySuji2 RstKaki![Ikutsu] = MyCnt RstKaki.Update
Else RstKaki.AddNew RstKaki![FromBangou] = RstYomi![Bangou] RstKaki![Ikutsu] = 1 RstKaki.Update RstYomi.MoveNext End If Loop RstKaki.Close Set RstKaki = Nothing RstYomi.Close Set RstYomi = Nothing MyMDB.Close Set MyMDB = Nothing DoCmd.Hourglass False MsgBox "fin" End Function
Qry1のなかでD関数使いまくりなので、数十万レコードなんてあると 処理に丸1日ぐらいかかるかも んじゃ、おやすみなさい
と、間違い発見 Tbl2のフィールド名 "Ikutu" じゃなく "Ikutsu" でした
160 :
名無しさん@そうだ選挙にいこう :04/08/23 14:02
アクセス2000を使っています。 例えば、エクセルの場合A1の値をA2からA100まで一気にコピーしたい場合は オートフィル機能(アクテイブセル右下の黒い四角形を下にドラッグ)を使えば 簡単にできますが、アクセスでテーブル入力する際、 同じようにやることは可能なのでしょうか? 上のデータをひとつひとつコピペしていくのはすごく大変なので・・・ よろしくお願いいたします。
excelでデータを作ってインポートすれば?
>>155 なんと、わざわざコードまで書いていただくとは…
ありがたすぎて涙が出ます。
今週中にやれと言われ、弱り切っておりました。
早速使わせていただきます。
>>151 ,154
ありがとうございます。
しかし、Me![実売価格]=Dlookup("参考価格","商品T","商品番号=" & Me![商品番号] ) と書いたのですが、
「実行時エラー3464
抽出条件でデータ型が一致しません」と出てしまいます。
代入値を表示させたいフィールド名 代入値のあるテーブル名 ?
↓ ↓ ↓
Me![実売価格]=Dlookup("参考価格","商品T","商品番号=" & Me![商品番号] )
↑ ↑
代入値 ?
とすればいいのですよね?
ふーむ・・・
>>163 Dlookup("参考価格","商品T","商品番号=" & Me![商品番号] ) は、
商品Tテーブルの、参考価格フィールドの内、商品番号がフォームで入力された番号と一致するもの
という意味だよ。
136に書いてあるテーブル名、フィールド名、コントロール名を使ったのに、
「?」なんて返されてもなぁ・・・。
>>139 あらためて見返すと、間違いと無駄がけっこうあるね
5行目〜MySuji2 As Long いらない
18行目〜MySuji2 = RstYomi![Bangou] いらない
21行目〜MySuji2 = MySuji2 + 1 いらない
29行目〜RstKaki![ToBangou] = MySuji2(これじゃ1個多い番号が出ちゃう)
→訂正→RstKaki![ToBangou] = MySuji1 + MyCnt - 1
ただ、これやっぱり処理は遅いよ
うちの店の伝票ナンバーでためしてみたの
30000番〜55000番ぐらいで、途中欠番あり、実数24000件ぐらいのレコードでさ
どうせ簡単に終わるわけないと思ってたから、3分待って Ctrl + Break
で、どれぐらい済んでるか見たら、約8000件だった(モバイルセレ1.2GHz, 394MB)
>>155 レコードセットを扱えるなら、ループ処理で一つずつ判定するのが
一番速いと思うが・・・。
DAO使用
番号が格納されているテーブル名[T_なんとか番号]
ワークテーブル名[TMP_番号帯]
----------------------------------------------
Function NumberCount() As Boolean
On Error GoTo errTrap
Dim rstRef As DAO.Recordset
Dim rstWR As DAO.Recordset
Dim lngCnt As Long
Dim lngPreVal As Long
Dim lngBegin As Long
Set rstRef = CurrentDb.OpenRecordset("T_なんとか番号", dbOpenSnapshot)
Set rstWR = CurrentDb.OpenRecordset("TMP_番号帯", dbOpenDynaset)
lngPreVal = 0
'-------------------------------------------------
'長いと怒られたので、次の発言へ
Do Until rstRef.EOF 'ループの初回 If lngPreVal = 0 Then lngBegin = rstRef![番号] lngCnt = 1 Else '現在の値は「前の値+1」か? If rstRef![番号] = lngPreVal + 1 Then 'カウント lngCnt = lngCnt + 1 '番号の連続が途切れた Else 'ワークテーブルに保存 rstWR.AddNew rstWR![開始番号] = lngBegin '開始と終了が同じ場合は、終了値はNullのまま If lngBegin <> lngPreVal Then rstWR![終了番号] = lngPreVal End If rstWR![カウント] = lngCnt rstWR.Update lngBegin = rstRef![番号] lngCnt = 1 End If End If
'次に移る直前に値を変数に格納 lngPreVal = rstRef![番号] DoEvents rstRef.MoveNext Loop 'ループの終わり rstWR.AddNew rstWR![開始番号] = lngBegin rstWR![終了番号] = lngPreVal rstWR![カウント] = lngCnt rstWR.Update rstRef.Close rstWR.Close Set rstRef = Nothing Set rstRef = rstWR NumberCount = True Exit Function errTrap: NumberCount = False MsgBox Err.Number & ":" & Err.Description End Function ------------------------------------------- マシンパワーにもよりますが、十万レコード程度なら、 おそらく20分も掛かりません。
うわっ!字下げが全部消された! なにがなんだかわからん〜
全角スペースを使うべし!
>>166 おっしゃるとおり
クエリだけで出来ないかと30分近くこだわったあげく、挫折してVBA
おまけに、初めに思いついたクエリが 間 違 っ て い る
とうぜんそいつをもとに出した結果も 間 違 っ て い る
連番になってないところまで一部連番でとっちゃってる
初めからVBAでやるべきだったわん
>>139 僕の方法は見なかったことにして
間違ってるから
>>166 氏のやり方ADOに書き直してためしたら、50000件のデータ20秒ちょっとで済んだ
>>164 何度もありがとうございます。
しかし、
「実行時エラー3464
抽出条件でデータ型が一致しません」と出てしまいます・・・
テーブル名やフィールド名を何度も確認したのですが・・・
>>172 もしかして、商品番号がテキスト型なのか?
ABC12-34とか。
だったら
Dlookup("参考価格","商品T","商品番号='" & Me![商品番号] & "'")
だぞ。
>>173 !! おー! 出たー!
お察しの通り、商品番号がテキスト型でした。
本当にありがとうございます!
調子に乗って、もう一つ聞いてもいいですか? 前出の伝票明細F =伝票番号、商品番号、商品名、参考価格、実売価格、販売数量、小計(=実売価格*販売数量) に、【在庫】を追加したいのですが、どうすればいいのでしょうか? 在庫クエリは別個に作ってあって、 在庫Q1=商品番号、商品名、仕入合計(集計:合計) 在庫Q2=商品番号、売上合計(集計:合計) をフォームで結合して、 在庫F=商品番号、商品名、仕入合計、売上合計、在庫(仕入合計-売上合計) で在庫数が出るようにしています。 この在庫を、伝票明細Fに付け足すことは出来るのでしょうか? 在庫があと1つになったら、警告を出したりしたいです。 明細フォームに在庫Qの仕入合計、売上合計をくっつけると、データを追加できなくなってしまいます。 在庫の出し方が根本的におかしいのでしょうか?
「サブフォーム」をヘルプで調べろ
177 :
名無しさん@そうだ選挙にいこう :04/08/25 20:03
Access2003のVBAで、オブジェクトrsにテーブル1を読み込み、 データ処理した結果を別のテーブル2に書き出したいのですが、 2番目のSQLを実行するところで「テーブルrsが見つかりませんでした」 という実行時エラーが出てしまいます。 SQL文の中でオブジェクトを指定する時、どうやって書けば よいのか教えてください。低レベルな質問ですみません。 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim SQL1 As String Dim SQL2 As String Set cn = Currentproject.Connection SQL1 = "SELECT フィールド1,フィールド2 FROM テーブル1;" rs.Open SQL1, cn, adOpenKeyset, adLockOptimistic ' いろいろな処理 SQL2 = "SELECT フィールド1 INTO テーブル2 FROM rs;" DoCmd.RunSQL SQL2 ←ここでエラー rs.Close : Set rs = Nothing cn.Close : Set cn = Nothing ※SQLの中に全角スペースが入っているのは 見やすくするためわざとです。
178 :
名無しさん@そうだ選挙にいこう :04/08/25 22:42
179 :
名無しさん@そうだ選挙にいこう :04/08/25 23:56
>>177 「いろいろな処理」のとこで、レコードセットのeditやupdateを
したんでしょ?
なら、そこでrsはcloseしちゃえばいい。
そしてSQL2のFRO句を「FROM テーブル1」に直せば、
「いろいろな処理」を反映したレコードが、テーブル2にインサート
されるでしょ?
>>178 配列を使う理由は何??
そのまま rs.addnew でこと足りると思うんだけど…。
「レコードセットをファイルに保存する」を参考サイトに挙げているのも謎。
あ、いや、何てか SQL2 = "SELECT ← これ についても、とりあえずひとまず一応つっこんでおきたいところだけど、 野暮すぎる、かな
177は、まず追加クエリーを作って、それをSQLビューで 見てみなさい。
184 :
名無しさん@そうだ選挙にいこう :04/08/26 11:00
レポートに件数を入れたいのですが、フッターに テキストボックスを作成して コントロールソースに =Count(*) と入力したのですが #Error と出てしまいます・・・ 何か良い方法はあるでしょうか?
書き忘れました・・・済みません。 OSはWindows2000NTでAccessのバージョンは2000です
186 :
名無しさん@そうだ選挙にいこう :04/08/26 15:51
>>184 =Count(フィールド名)
ところで入力フォーム上で、現在の(=フォームを開くと自動的に
新しいレコードを表示)レコード以前のレコードを編集できないようにするには、
前に進めなくする以外はないのでしょうか?
>>184 設置場所をページフッターでなくレポートフッターに
してミソ
>>186 レコードソースを持たない非連結フォームって手もある
>>186 >>187 ありがとうございます!
今Accessに触れないのですが後ほどやってみますね〜!
190 :
名無しさん@そうだ選挙にいこう :04/08/26 17:39
XPで2003を使っています。 レポートで「2004」と数値で入っているフィールドの書式設定を 「ggge」にすると「明治38」と出てきてしまいます。 「平成16」と出すにはどうすればよいでしょう? 教えて下さい。
>>190 日付/時刻型のフィールドでないので無理...
非連結テキストボックスを作ってコントロールソースに
=CDate(Format([数値フィールド名],"@@@@""/01/01"""))
として書式を「ggge」とする。
非連結テキストボックスを重ねるか、数値フィールドを不可視に
>>186 フォームのデザインに、[データ入力用]って項目があるから、探してみ。
193 :
名無しさん@そうだ選挙にいこう :04/08/26 21:01
区分 商品 日付 個数 1 A500 2004/08/01 2 2 B500 2004/08/03 1 1 A500 2004/08/10 3 3 C100 2004/08/12 4 このようなデータがあったとします。 各商品の最小日付と最大日付を検索したいのですが どうやればいいでしょうか?クエリでできますか? 完成させたい例 区分 商品 最小日付 最大日付 個数 1 A500 2004/08/01 2004/08/10 5 2 B500 2004/08/03 2004/08/03 1 3 C100 2004/08/12 2004/08/12 4 こういった感じです。 一度では難しいかもしれませんが、いい方法を教えてください お願いします。 Accessで無理ならExcelなら可能ですか?
>>193 ひねりもなんにも無い、基本的な集計ですな。
Accessの基本的な使い方ぐらいは、本を買って
勉強して下さい。
ヒント)グループ化、最小、最大、合計
127です。 別々のフォームのそれぞれのコントロールにデータを同時に書き込むにはどうすればいいですか? 売上明細に商品番号を入力したときに、同時に在庫フォームを起動させればいいのではないか、 と考えました。 在庫フォームの起動は、マクロでやりましたが、そのままだとデータを二回入力しないといけなくなるので・・・
SELECT 区分, 商品, Min(日付) AS 最小日付, Max(日付) AS 最大日付, Sum(売り上げ.個数) AS 個数 FROM 売り上げ GROUP BY 区分, 商品;
197 :
名無しさん@そうだ選挙にいこう :04/08/27 00:50
>196 ありがとうございました。 やはりすごく基本的なことだったんですね
>>192 ありがとうございます。
やってみます。
199 :
名無しさん@そうだ選挙にいこう :04/08/27 17:45
>>190 レポートのコントロールソースをこう書きかえる
=Format(Dateserial([2004のフィールド名],1,1)"ggge年")
あ、カンマが一個足りない。 =Format(Dateserial([2004のフィールド名],1,1),"ggge年")が正解。
>>191 >>199 遅レスですがありがとうございます。
一旦1月1日に直すんですね。やってみます。
202 :
名無しさん@そうだ選挙にいこう :04/08/28 15:55
初心者ですが、 テーブルの名簿から「スズキ イチロウ」を抽出する場合、 「ス」を入力すると「ス」が頭に付く人が抽出され、 「スズ」を入力すると「スズ」が頭に付く人に限定され、 「スズキ」を入力すると「スズキ」だけが抽出される。 「スズキ イ」を入力するとターゲットが更に絞られる。 このような条件の設定をどなたか教えてください。
WHERE フリガナ LIKE 'ス%' WHERE フリガナ LIKE 'スズ%' WHERE フリガナ LIKE 'スズキ%' WHERE フリガナ LIKE 'スズキ イ%'
>>203 挑戦してみます。
ありがとうございました。
205 :
名無しさん@そうだ選挙にいこう :04/08/29 11:46
良スレ お気に入り登録しますた
206 :
名無しさん@そうだ選挙にいこう :04/08/29 13:23
フォームで所定のフィールドの数字がある数字に一致した場合、 フォームの特定の場所に「OK」と表示され、一致しない場合は何も表示されない、 といったようにするためにはどのようにしたらよろしいでしょうか。 わかる方がいらっしゃったら教えてください。
解決しました。。
208 :
名無しさん@そうだ選挙にいこう :04/08/29 19:53
ACCESS でフィールド名をSQL使って変更する方法を教えてください。 HELP で ALTER TABLE の項目を読んだのですがよく分かりませんでした。
209 :
名無しさん@そうだ選挙にいこう :04/08/30 04:29
>208 無理じゃない?
211 :
名無しさん@そうだ選挙にいこう :04/08/30 20:31
質問です 以下のようなテーブルがあります 日付 数量 2004/01/01 3 2004/01/02 4 2004/01/03 5 2004/02/01 1 2004/02/02 2 2004/02/03 3 2004/03/01 2 2004/03/02 4 2004/03/03 6 これをクエリにて 日付 数量 2004/01 12 2004/02 6 2004/03 12 といった具合に、1度に1ヶ月ごとの合計を一覧で出したいのですが どうやればいいでしょうか? データが何十万件とあるので、一度に集計したいです
SELECT format(日付,'yyyy/mm') AS 日付, sum(数量) AS 数量 FROM テーブル GROUP BY format(日付,'yyyy/mm')
213 :
名無しさん@そうだ選挙にいこう :04/08/30 22:02
>212 ありがとうございました やっぱりSQLをもっと勉強する必要があると実感しました
>>210 レスありがとうございました。
無理ですか。他に何か方法はないでしょうか?
215 :
名無しさん@そうだ選挙にいこう :04/08/31 06:44
フィールド名をSQL使って変更する ? そんなんしたら、システム無茶苦茶になるんとちゃう。 レコード・フィールド名でシステム動くんでは ? 判らん。
運用時じゃなくて構築時の話だと思われ。
217 :
名無しさん@そうだ選挙にいこう :04/08/31 13:10
うん そう言えばあるなー。 わたしは、色々 区分する時、区分フィールド、たくさん作る。 そのうちなに区分だったかわからなくなる。
218 :
名無しさん@そうだ選挙にいこう :04/08/31 14:17
フォームで伝票入力をしています 既定値で直前の行の値を設定することができますか? Ctrl+’を使っているのですが指がつりそうなので・・・ Access2003を使用しています よろしくお願いします
219 :
名無しさん@そうだ選挙にいこう :04/08/31 19:17
>>213 なぜSQLで変更したいの?
理由によっては、代替手段があるかもしれない。
理由がわからなければ、頓珍漢な答えしか返せない。
>208 ちなみに、どうしてクエリーで変えたいと思われたのですか?
>>220 PostgreSQLでSQLの独学中で、ACCESSでも
RENAME COLUMNできるのかなと思い、調べていました。
222 :
名無しさん@そうだ選挙にいこう :04/09/01 01:06
ACCESS2002を使っています。 クエリのテーブルペインを右クリックして表示されるメニューから プロパティを選び、「固有の値...はい」にしたところ、 「ORDER BY 句 ([列名]) が DISTINCT 句と矛盾しています。」 と怒られました。確かにその[列名]はQBEグリッドで 表示のチェックボックスを外してあります。 「固有の値...はい」のまま、非表示の列で並べ替えるにはどうしたらよいのでしょうか? また、この条件は論理的にどう矛盾しているのでしょうか?
223 :
名無しさん@そうだ選挙にいこう :04/09/01 11:58
教えて下さい。 電話番号変換。 03-1234-9999 → 0312349999 090-7777-5555 → 09077775555 022-222-0001 → 0222220001 0999-11-9999 → 0999119999 なにか方法ありませんか ?
223はExcelスレとマルチ?
225 :
名無しさん@そうだ選挙にいこう :04/09/01 14:15
223です。 マルチではありません。Excelで見たのは確かですが。 私は Accessをやらされていて、電話番号入力したら お客データを表示するもの作れと言われ、今は急いでやったものですから 別々に03-1234-9999 → 0312349999 のようにフィールド作って やっています。 いい方法教えて下さい。
>>208 パススルークエリ使えばなんでも(?)出来るな
ALTER TABLE table1 RENAME name1 TO name2;
>>225 お客データ = Replace(me!電話番号, "-", "")
228 :
名無しさん@そうだ選挙にいこう :04/09/01 20:37
>>227 223です。
ありがとうございました。
229 :
名無しさん@そうだ選挙にいこう :04/09/01 20:41
ついでに教えて下さい。 東京だけの03は特に付けない。 03-1234-9999 →12349999 と やるには。
あんまり自信ないんで、確かめて欲しい。 dim phone as string if left(me!電話番号,3)="03-" then phone=mid(me!電話番号,4) お客データ=replace(phone,"-","") else お客データ=replace(me!電話番号,"-","") end if 東京以外の全ての局外番号をはずすやり方はちょっとわからない。
Split("01-2345-6789", "-")
232 :
名無しさん@そうだ選挙にいこう :04/09/02 09:38
>>230 231
223です。 度々の回答ありがとうございます。
>東京以外の全ての局外番号をはずすやり方はちょっとわからない。
逆です、 お客は約2万あり6割が東京のものですから。
東京03は外したいのです。
roundで四捨五入すると。 0.5 → 0 1.5 → 2 2.5 → 2 3.5 → 4 4.5 → 4 上記の様になってしまうんだが、 下記の様には出来ないんですか? 0.5 → 1 1.5 → 2 2.5 → 3 3.5 → 4 4.5 → 5
235 :
名無しさん@そうだ選挙にいこう :04/09/02 21:29
>>232 Iif関数とLeft関数、mid関数を入れ子にせよ
考え方は
Iif(もし左2文字が03ならば、3文字め以降を、そうでなければそのまま)
Iif(),Left().Mid()の3つの関数の使い方は頑張ってヘルプで調べてくれ。
わからなければ、編集メニューの置換機能を使って、
"03" を "" に置換するんですな。(置換後のボックスには何も書かない)
検索条件を「フィールドの先頭」にするのを忘れずに。
たぶん初歩的な質問で申しわけないんですが access2002の.mdbファイルを起動すると、ツールバーなどは一切表示されず、 辞めた前任者?が作った画面がいきなり表示されるだけで、 内部のテーブルデータの閲覧や編集作業が何も出来ず困ってます。 shiftを押しながら起動する方法を何度も試しましたが何も変わりません。 .mdeファイルならわかるのですが、拡張子は.mdbのままです。 「.mde 起動」とかでググってみても解決できませぬ。 「てめーそんな事もわかんねーのか!」と思われた方、 原因と対処法があれば是非ご回答をお願いします。
あー、まだハイフンを取っていないなら、 Iif(もし左3文字が03−ならば、4文字め以降を、そうでなければそのまま) ね。 Iifを使ったのは、クエリーで処理出来るように。 もしVBAが出来るのなら、Iifを調べなくてもIf文を使えば出来るよ。 あなたがどんなレベルなのかわからないと、答える方も困るんだよ。 質問する時はちゃんと1のテンプレ使ってね。
>>236 mdeの拡張子をmdbに直してあるのでは?
「mdeのままだと他のmdbとアイコンが違っちゃうから」とか、
様々な理由でmdeをmdbにわざわざ直しておくことも多いよ。
「辞めた前任者?が作った画面」のタイトルバー右クリックで
デザインビューに出来ない?
[Ait]+[W]+[U]でデータベースウィンドウを表示しない?
>>238 >「辞めた前任者?が作った画面」のタイトルバー右クリックで
>デザインビューに出来ない?
>Ait]+[W]+[U]でデータベースウィンドウを表示しない?
両方試しましたが何も変わりません・・・
右クリックはメニューすらでない状況です・・・
240 :
名無しさん@そうだ選挙にいこう :04/09/02 21:59
>>236 前任者が座っていた机で作業してみるとか。
>>241 F11(というかF2〜F12まで全部)押してみましたが変化なしです
ただタイトルバーでwクリックしたらツールバーが出て
「ファイル」「ウインドウ」「ヘルプ」の3メニューのみ表示されました。
でも編集とかのメニューはないので結局何もできないのですが・・・
やはりmdeをmdbに拡張子変換されたファイルってことなんですかねえ
>>242 それ昼間にさんざんやってみたのですがダメでしたw
一応同ファイル名でpc内検索もしたのですがこれ以外に見つからず・・・
>>241 はうっ、[F11]でデータベースウィンドウが出せたんか。
ありがとう。
>>243 ウィンドウメニューの中に、「再表示」というのがあったらクリックしてみて。
MdeでもShift起動で起動時の設定がスルーされる筈なので、
Shift起動が効かないということは、AllowBypassKey まで
いじられているっぽいですね。
こうなると、打つ手を思い着かないなぁ。
>>244 >ウィンドウメニューの中に、「再表示」というのがあったらクリックしてみて。
・・・ありませぬ(涙
他の似たような.mdbはちゃんとshiftもf11も動作するのでpcに問題はないと思います。
処理自体はちゃんと動いてるのにまた新規開発ってのもつらいのですが、今回は仕方なく諦めます。
(あ、でも「これだ!」ってご回答がまたあればひきつづきお願いしますw)
私のへっぽこ質問に色々ご回答頂いた皆様、ありがとうございました。
また機会があれば宜しくお願いします。
他のmdbから問題のmdbの中身をインポートすることはできない? 相手がmdeでも、テーブルとクエリーはインポート出来るはずなので、 それが出来ないとしたら、セキュリティの設定だな。 前任者がそんな設定をしたのなら、引き継ぎする義務がある。 電話すべし。
>>246 今日職場で方法調べながら試してみます。
ちなみに前任者ってのは、会社の営業権譲渡問題とかが絡んでて
正確には違う会社の辞めた方なんで連絡つけれない状況なんです。
しかも1人のバイトが作ったらしい・・・情報サンクスです。
>>234 レスありがとうございます。
エクセルのroundとかとは、違うんですね。
>>240 それで試してみたら、
うまく出来ました。ありがとう
>>247 別のmdbのイミディエイトウインドウに、DAOの参照設定にチェックを入れた上で
?OpenDatabase("該当MDBのファイルのフルパス").Properties![AllowBypassKey]
これでTrueが返ったら
Function test()
OpenDatabase("該当MDBのファイルのフルパス").Properties![AllowBypassKey] = False
End Function
これでShiftキーを無効にしてあるmdbをShiftキー起動できるばすです。
251 :
名無しさん@そうだ選挙にいこう :04/09/03 10:44
>>235 237さん 223です。
色々、ありがとうございました。 遅くなりました。
>>246 ダメでした。一応インポートのウインドウは表示されましたが
テーブルなどの欄は全空白で何もインポートできない状態でした。
情報サンクス。
>>249 えーと、へっぽこなりに色々調べながら試してみました(汗
まず参照設定の「Microsoft DAO 3.6 Object Library」欄とやらにチェックを入れ、
イミディエイトウインドウとやらに
「?OpenDatabase("d:\test.mdb").Properties![AllowBypassKey]」
(もちろん該当ファイルはdドライブ直下の「test.mdb」という名前にしてます)
と入力すると、「True」じゃなくて「False」と返ってきました。
これはダメってことなんですかね・・・?
構造の読み取り権限が無いとちゃうか?
254 :
名無しさん@そうだ選挙にいこう :04/09/03 23:31
1つのテーブルの中の2つの項目(no1,no2等)から、1つのテーブル (番号と名前を1対1で対応)にリレーションを設定して、 それらを1つのフォームに表示しようとすると、 データが入力できなくなったりします。 原因がわかる方はいらっしゃいますでしょうか。
255 :
よろしくお願いします :04/09/03 23:56
画像処理なんですが・・・ 顔写真(JPEG)の縦横比をDB登録時に自動的に 5:4 に変換したいのです。 画像ファイルをコントロールに読み込んで切り出す処理になると思いますが ACCESSで上手くコーディングできません。 取り敢えずVBで下記のように実現しています。 1.ピクチャーボックスに LoadPicture で読み込む。 2.もう1つのピクチャーボックスに PaintPicture でコピーする。 このときに、切り出す座標を調整して形を整える。 3.フリーのJPEG書出ソフト JpegPic.dll でファイルに書き出す。 Shell関数でVBのEXEを呼んでいますが、プログラム構成を単純にしたいので できれば ACCESS だけでやりたいのです。 ACCESSにはピクチャーボックスが無く、PaintPicture も使えません。 画像を任意の形に切り出してファイルに落とすには、どうすれば 良いのでしょうか?
>>252 ゴメンFalseとTrueが逆だったかも...
「?OpenDatabase("d:¥test.mdb").Properties![AllowBypassKey]」を
してFalseが返ったら
Function test()
OpenDatabase("d:¥test.mdb").Properties![AllowBypassKey] = True
End Function
を実行して
もう一度
「?OpenDatabase("d:¥test.mdb").Properties![AllowBypassKey]」を
Trueが返ったら
test.mdbをShift+ダブルクリックで起動してみてください。
※Shift起動を終えるまで押しっぱなし
>>256 ついにできました!教えて頂いた方法から
shift起動で通常画面が起動するようになりました
ありがとうございます
ただなぜかテーブル・フォームなど全て何も表示されておらず
でも過去データなどはこの.mdbのどこかに入っているようです。
こんなこと出来るんですね。
で、VB画面を出してみると「パスワード」を要求するウインドウが!
こればかりはどうしようもないっす・・・(涙)
でも今回皆さんから教えて頂いた方法は大変参考になりました。
今後似たようなケースでも使えると思います。
質問ばかりで失礼しましたが、本当にありがとうございました!
258 :
名無しさん@そうだ選挙にいこう :04/09/04 09:37
[ツール]-[オプション]のどこかに、「隠しオブジェクト」を 表示する/しないのチェツクボックスがあるよ。
259 :
名無しさん@そうだ選挙にいこう :04/09/04 10:57
最近仕事の都合でアクセスを使い始めましたが、いきなり壁にぶち当たってしまいました 店舗テーブルと顧客テーブルの2つを分けて作り、両方を関連付けをしたいのですが うまくいきません 例えば1つの店舗の顧客に、Aさん、Bさん、Cさんなど、複数の人員がいた場合は どのようにリレーションシップを繋げればよいのでしょうか? ずっと悩んでいます どなたかお助けを…。・゚・(ノД`)・゚・。
260 :
名無しさん@そうだ選挙にいこう :04/09/04 12:07
>>259 これは既に見た?
ヘルプ - サンプルデータベース - ノースウィンド
>>259 一冊ぐらいは本を買った方がいいよ。
「できるAccess」とかさ・・・。
何から何までネットで聞いて覚えられるようなソフトじゃ
ないよ、Accessは。
正直、この先も壁ばかりだと思う。
>>260 見てませんでした…(汗
サンプルを見本にしてなんとか出来ました
ありがとうございます
263 :
名無しさん@そうだ選挙にいこう :04/09/04 20:37
過去ログ読んでません、すんません! 例えばXPに97を入れたとき、気をつける点ありますか?
読めや
>>258 でっ、出た〜!ついに表示されました!
最後はそんなカラクリだったとは・・・
もう感謝感激。皆さんサンクス
267 :
名無しさん@そうだ選挙にいこう :04/09/05 09:21
アクセスって奥まで入り込もうとしたら難しいんだろうけど、 簡単なデータベースだけ作るのなら便利なソフトだと思う 私は本を何冊か読んだり立ち読みして、初めて自分でベースを作ったけど 思ったほど難しくないし特に不満もないなぁ〜 もっとやりたいことが増えれば、行き詰まるんだろうけど今は満足 クエリ様々
誰も不便なソフトだなんて言ってないし。 自力で本を読むこともしない人に向けて、最低限の 自助努力を促してるのに、何カンチガイして自分語り してるんだろう?
269 :
名無しさん@そうだ選挙にいこう :04/09/05 14:23
いや、だからさ…
これから始めようって人が、本を読むよりも先にここにきて
「アクセスは難しい」とか「壁に突き当たる」とかそんなカキコばっかり読んでたら
やる気なくすでしょ
だから先入観を取り除く為に書いたんだけどね
ここは親切な人もいるけど、
>>268 みたいな棘のある住人がいるってのがよく分かったよ
まあまあ。両者のご意見ともごく正論かと。 入門書くらい読む程度の自助努力も必要だし、269氏の気遣いもわかるし、 別に揉めるような事ではないかと。
271 :
名無しさん@そうだ選挙にいこう :04/09/05 17:23
>>269 >ここは親切な人もいるけど、
>>268 みたいな棘のある住人がいる
日頃親切にしてきたけど、余りにも安直な質問が続くのにうんざりしきてるだけです。
>>272 > 日頃親切にしてきたけど、余りにも安直な質問が続くのにうんざりしきてるだけです。
うんざりするなら来て欲しくないですね。
あなたにとっては安直でも、質問者にはそうではないんです。
>>273 誰が質問の内容が安直だと書いた?
1のテンプレも守れないヤツらを「安直」と呼ぶのは
当然だろ?
甘やかすのが親切だと勘違いして正義振るなよ。
>>267 自分も本を何冊か読んで作ったのなら、
本の一冊や二冊読む必要があるという
意見に異論は無いでしょ?
出来るようになった今だから「簡単」「難しく
ない」って言えるんだろうけど。
1のテンプレをそのまま使うと行数長くなって迷惑かと思い 必要項目だけ記述して質問してしまいました 運用ルールとしてテンプレ使うべきでしたね 反省
Accessに限らずデータベースの構築はどこから手をつけたらいいのかわからない人が 多いと思う。
データベースの構築は、RDBMSに何を使うかにかかわらず まず6つの正規形と、仕様に基づくそれらの利点・欠点を 充分に検討してからの方がいい。
はじめまして。accessにて重複クエリーウイザードにてtbl内は重複削除し、 双方のTBL重複チェック終了後AのTBL よりBのTBLに該当するものだけAから削除したいのですが よろしくお願いします。
>>279 重複クエリで削除おこなった後にまだ「AのTBL
よりBのTBLに該当するものだけAから削除」が
何故残っているのかよく分からないけど...
DELETE テーブルA.抽出対象フィールド
FROM テーブルA
WHERE 抽出対象フィールド In (SELECT [テーブルB].抽出条件となるフィールド
FROM テーブルB);
281 :
名無しさん@そうだ選挙にいこう :04/09/06 22:13
Accessにて Excelの関数であるVlookupと同じことが できる関数ってありますか?
ありませんよ。その関数が恋しければ Excel使いましょう。
>>Vlookup
dlookup("フィールド名","テーブルまたはクエリ名")
答えるなってか?
ま、いいじゃない。
てか、もしかして
>>281 は
>>267 〜
>>276 あたりの流れから出てきた釣り?
同じってどういう意味なんだろうね。 VLookupとDLookupは同じような気もするし、 違うような気もするし。 うかつに答えられないな。
285 :
名無しさん@そうだ選挙にいこう :04/09/07 14:29
クエリを基にした帳票フォームで、 日付を選択するとその日に納入する物件を表示させています。 該当の物件のうち、ある項目(納期決定状況)が"決定"のレコードの、 どのフィールドでもいいのですが、赤くしたいのですが、 VBAでは2,3件表示させているとして、そのうち1件が"決定"であっても、 全部のレコードが赤くなってしまいます。>当然ですが このように、If構文で条件設定してBackColorを変更する場合に、 帳票レベルで該当するレコードだけに有効なVBAってどうすればいいですか?
286 :
名無しさん@そうだ選挙にいこう :04/09/07 14:48
「条件付き書式」という機能を使いなさい
>>286 本当だ、簡単にできるんですね。鬱です。
でも、これで色々とできることもひろがりました。
ありがとうございました。
288 :
名無しさん@そうだ選挙にいこう :04/09/07 20:07
OS2000/Access2000 メインのメニューで非表示にしたい場合、 テーブルならば、TableDef.Attributes = dbHiddenObject みたいに出来ますが、 クエリはこのように非表示にすることは出来ないのでしょうか? プロパティで、隠しオブジェクトという設定はできますが、これだと 設定で表示できるようになってしまいます。 要するに、テーブルのデータの中身を見られないようにすればそれでいいのですが。
>>287 ちなみにどうしてもVBAで処理したい場合は、
詳細セクションの印刷時イベントで、
if Me![決定状況]=True then
詳細.Backcolor=vbRed
Else
詳細.Backcolor=vbWhite
End if
これでよし
290 :
名無しさん@そうだ選挙にいこう :04/09/07 22:24
OS:XP ACCESS:97 OSがぽしゃったので、OSを再インストールし、OFFICEも再インストールしたのですが、 Set db = CurrentDb() のところで、 ActiveXコンポーネントはオブジェクトを作成できません。 というエラーが出るようになってしまいました。 再インストール前は問題なかったのですが。 どなたか良きアドバイスを・・・
>>288 セキュリティウィザードで、権限を制限すれば?
293 :
よろしくお願いします :04/09/09 01:06
>>255 自己レスです。
ACCESSフォーム上での 画像の読込・切り貼り・変換・書込みですが
KODAK のイメージエディットコントロールを使うと出来そうです。
LEADのCMP形式に対応していないのが、ちょっと残念ですが。
ACCESS 並べ替えのエラー 始めまして。 Access97で作成された管理システムで、 どうして並べ替えのエラーが解決できず、困っています。 OrderBy = [管理番号],幹2 DESC, Left(案件内容,140),氏名 OrderByOn = True という並べ替えをモジュールで指定しているのですが OrderByOnのところで止まってしまい "[管理番号],幹2 DESC, 氏名" の構文エラー:カンマがありません。 というエラーメッセージが表示されます。 エラーが発生する可能性としてDESCの問題があると考え、 "幹2 DESC" の部分を "[幹2] DESC" のように []で囲みました。 しかし、結果は変わらず、エラーが再現してしまいました。 構文的には間違っていないとおもうのですが なぜ、カンマが無いというメッセージがだされるのか 原因が特定できず困っています。 どなたか、ヒントをいただけませんか。
295 :
名無しさん@そうだ選挙にいこう :04/09/09 14:32
初歩的な質問をさせて下さい。 セルの中で改行をしたいのですが、 どーしたらいいのですか? エクセルだったらAlt+Enterなんですが・・。
>>295 ctrl+enter
全てで出来るとは限らないが。
質問させて下さい! 会社が倒産してつかわなくなったソフト マイクロソフトアクセスやビジュアルC++などがあるんですけど もし中古屋さんに売ったら会社の情報ってわかってしまいますか? ユーザー登録してあります。
298 :
名無しさん@そうだ選挙にいこう :04/09/09 15:56
295です。
>>296 さん、出来ましたー。
ありがとうございます。
今まで観た映画のリストを作っているのですが、
アクセスは初めてで、まだ手探り状態です。
テーブルで、タイトルと原題等を入れて、そこからカルテみたいにしたいのですが
『クエリ』、『フォーム』、『レポート』の違いが分かりません。
どれもやってはみたのですが・・。
299 :
名無しさん@そうだ選挙にいこう :04/09/09 17:13
集計クエリについて質問があります。 例えば・・・ ●[個人別所有書籍リスト]テーブル 書籍名 書籍分類 ascii 雑誌 日経PC 雑誌 漢字源 辞書 雪国 小説 現代用語 辞書 ●[書籍分類]テーブル 所有者 書籍名 山下 ascii 山下 日経PC 山下 漢字源 長島 雪国 長島 現代用語 上記のテーブルから以下のクエリを作成したのですが・・・ SELECT 書籍分類.書籍分類, Count(個人別所有書籍リスト.所有者) AS 所有者のカウント FROM 個人別所有書籍リスト INNER JOIN 書籍分類 ON 個人別所有書籍リスト.書籍名 = 書籍分類.書籍名 GROUP BY 書籍分類.書籍分類; では、以下のようになります。 書籍分類 所有者数 雑誌 2(本来は1) 辞書 2 小説 1 二段階でクエリを行うか、クエリで重複を削除した後にピボットテーブルを使用すれば、正しい集計が出来るのですが、一括で集計することはできるのでしょうか?
あっちなみに、299の作業環境は、windowsXP、Access 2003です。 よろしくお願いします。
>>299 山下さんが日経PCとasciiを持っているから、
集計結果は「2」で正しいんですが。
何がしたいの?
>>301 のべ人数じゃない所有者ってことじゃない?
雑誌は、山下が二冊で1人
辞書は、山下、長島で2人
303は、「のべ人数」⇒「のべ人数じゃない人数」でした・・・(~_~;)
SELECT 書籍分類, COUNT(所有者) AS 所有者数 FROM ( SELECT DISTINCT 書籍分類, 所有者 FROM 個人別所有書籍リスト, 書籍分類 WHERE 個人別所有書籍リスト.書籍名 = 書籍分類.書籍名 ) GROUP BY 書籍分類;
>>305 クエリのfromの部分に、SELECT DISTINCTのSQLクエリを貼り付けられるんですね・・・
基本的な問題だったかもしれません。
非常に助かりました。
ありがとうございました!!
307 :
どぶ :04/09/10 17:14:18
取引先メモ代わりにこんなものを作っています。
ttp://kerop.cside.com/upload/img/149.zip 検索画面が空のまま、上側の検索ボタンを押すと
取りあえず全部の会社が表示される構造なのですが、
クエリを開いたフォームF_MASTERQにて
メールアドレスやURLも入れてワンボタンで
起動するようにしたものの、(HyperLinkAdress)
一度WEB開くボタンかメールボタンを押して、
次のレコードへ移動後、その先のメール・URLがカラだと
前にHyperLinkAdressセットされた値で開いてしまいます。
この問題はどうやって解決すればよいのでしょうか。
また、Q_main1,2 を見て頂くと解るように
ここでマスタ側のクエリにリレーションされたサブ側の
データーを飛ばして検索対象にしているため、
サブ側のデーターがたくさんある場合、
フォームF_MASTERQで移動ボタンを何度も押さないと
次の社名へ飛んでくれません。
検索の結果を現在から変えないまま、
ボタンを押したら確実に次の「社名」へ飛べるように
ならないものでしょうか。
以上2点、ご教授お願い申し上げます
308 :
名無しさん@そうだ選挙にいこう :04/09/10 22:45:44
あるセルに一度入力したら、変更出来ないように保護を掛けたいのですが、どのようにしてあげれば良いのでしょうか 教えて頂けますか? 間違って変更しないようにしたいのです。
309 :
名無しさん@そうだ選挙にいこう :04/09/11 23:26:42
クエリでFormatCurrency(数字)形式を使ったら左揃えになってしまいます。 他の通貨型のように右揃えで表示するにはどうしたら良いのでしょうか?
310 :
名無しさん@そうだ選挙にいこう :04/09/11 23:32:04
OS:2000 Access:2000 日付 仕事内容 件数 9/1 A 20 9/1 B 30 9/2 B 50 9/3 A 15 9/3 A 20 9/4 C 14 9/5 C 10 日付と仕事内容で、抽出する場合日付を設定し、 仕事内容を複数で抽出したいです。 指定した日付の仕事内容A,B,D,G,K(仕事内容は15種類ぐらいあります) とか、C,D,J,HのようにAND条件で、しかも場合によっては A,B,D,G,Iとかのように変えたいですし、その選択は保存しておきたいです。 フォームに仕事内容の選べる、コンボボックスを7,8個 (コンボボックス名、[仕事内容1]〜[仕事内容8])ほど置き、A,B,D,G,Kを 一つずつ選び条件が5個ぐらいのときは残りを空白(アスタリスクの方が良いですか?) ANDに含めたい項目を複数選択しクエリで抽出させたいです。 クエリの仕事内容の抽出条件には [仕事内容1]AND[仕事内容2]AND・・・[仕事内容8]と入れたんですがうまくいきません。 どの辺りがまずいのでしょうか? あと、その選択は次にフォームを開いたときも生きており、日付だけ変えて 検索し押すことも、少しだけ変えて、抽出しなおすこともできるようにしたいです。 よろしくお願いします。
311 :
名無しさん@そうだ選挙にいこう :04/09/12 00:06:40
OS: Win2000 Access: 2000 デザインビューでテーブルを作るときに、 複数のフィールドのデータ型やフィールドプロパティを 一括で変更する方法はありますか? Ctrlを押しながら左端のセルをクリックしていくと 複数のフィールドを選択することはできた(?)っぽいですが、 その状態でフィールドプロパティをいじっても 1つのフィールド(最後に選択したフィールド)にしか反映されません。 たとえばテキスト型のデータ型の場合、 自分はいつもIME入力モードを「コントロールなし」にすることにしているのですが、 標準では「オン」になっているので。 毎回、テキスト型のフィールドを作るたびにIME入力モードをマウスでコチコチいじっています。 一括で変更する方法もしくは データ型の規定値みたいなものを設定することなどはできないでしょうか。
>>310 正規形を崩すためにクロス集計クエリを作成して
そこを検索しましょう。
>>310 >指定した日付の仕事内容A,B,D,G,K(仕事内容は15種類ぐらいあります)
>とか、C,D,J,HのようにAND条件で、しかも場合によっては
基本的なことですが、CとDとJとHを抽出したいのであれば、
それは「OR」検索です。「AND」ではありません。
314 :
名無しさん@そうだ選挙にいこう :04/09/12 15:53:11
OS:WINXPホームエディション
ACSESS2000を使用しています。
PC起動時に、現在運用しているアクセスファイルを最適化
しようと考えています。
AUTOEXEのマクロに最適化した後にアクセスを終了する様登録し、
windousのタスクに登録するまでは判ったんですが、
普通に該当アクセルファイルを開いても、最適化してすぐ終了して
しまいます。
AUTOEXEを起動時のみ動かし、通常使用する時は動かない様に
できないでしょうか?(シフトを押しながら開くと、動かないらしい事
は発見したんですが、出来ればそれ以外でする方法があれば
教えてください。。。。使う人が素人さんなので。。。)
以前、終了時に最適化する様にしていたんですが、共有する時に
別のPCから開けなくなったので、終了時の最適化は設定していません。
ちなみに
http://www.accessclub.jp/samplefile/samplefile_220.htm を参考にやっています。
>>314 どうでもいいけど、微妙な誤字が多いね。
>>311 IMEMode, IMESentenceMode を DAO 使ってゴニョゴニョすれば
出来そうな気がするけど、俺には無理ぽ。
>>314 AutoExecにShift立ち上げ以外の例外は無い。
アクセスを終了するマクロを登録しているから、終了する。
素人さんが使うなら、別の方法を検討したら?
'MDBファイル(C:\xxx.mdb)を最適化 Option Explicit Dim path1, path2, con1, con2, jet, fso path1 = "C:\xxxx.mdb" path2 = "C:\temp.mdb" con1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path1 con2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path2 Set jet = CreateObject("JRO.JetEngine") jet.CompactDatabase con1, con2 Set fso = Createobject("Scripting.FileSystemObject") fso.CopyFile path2, path1, True
ACCESSとはもしかすると直接関係はないのかも知れませんが、 テーブルに顧客住所を入力する際に"PostalAddress/住所入力支援" プロパティを利用しています。しかし、最近の大規模な市町村合併で 最新の郵便番号データに付いていけなくなり入力時に支障が出るように なってしまって困っています。WindowsUpdateとかは試したんですが 関係ないようでした。OSはWindows2000、ソフトはACCESS2000です。 同じ境遇の方、もし解決法がありましたら教えてください。
種類 ナンバー社内外 A 1社内 B 1社外 D 1 A 2 A 3 C 1 このようになっておりサブフォームを使って、 メイン------ 種類 社内外 A 社内 サブ------- 種類 ナンバー社内外 A 1社内 A 2社内 A 3社内 このように作っております。 メインの種類、社内外とサブの種類、社内外をリンクさせており、 サブの種類、社内外は可視を「いいえ」にしています。 メインで種類、社内外を選ぶとサブにでてきます。種類、社内外の項目ごとにb振りたいです。 オートナンバーにも似ているんですが、項目ごとのもので、 社内の仕事内容Aの通しナンバー社内の仕事内容Bの通しナンバーという形 社内外は社内と社外の2つしかないんですけど種類はA,B,C,D,E、・・・ と15種類ぐらいあります。それぞれの項目に通し番号が 新規レコードのナンバーに振られるようにできないでしょうか? DMAXの応用になると思うんですけど、よろしくお願いします。 同じ仕事のすぐ上の番号に1を足すようなことはできないでしょうか?
なぜか空白がおかしい 種類 ナンバー 社内外 A 1 社内 B 1 社外 D 1 A 2 A 3 C 1 このようになっておりサブフォームを使って、 メイン------ 種類 社内外 A 社内 サブ------- 種類 ナンバー 社内外 A 1 社内 A 2 社内 A 3 社内 こんな感じです。うまくでてるかな? よろしくお願いします。
321 :
名無しさん@そうだ選挙にいこう :04/09/12 22:13:02
>>318 OfficeのUpdateはやった?
2004年5月現在のデータになってるけど。
はずしてたらゴメン。
>>321 ご返信ありがとうございます。
ヘルプからMicrosoft Office Webページを選んで(WindowsUpdateサイト
のような反応を期待して)飛んだことはあったのですが、なぜか英語サイト
が出てきたのでOfficeのアップデートは半ば放置状態にしてしまっていました。
>>322 まさにこのアップデートを求めていました。どうもありがとうございます。
ひょっとしてOfficeXP等の最新バージョンしか対応してくれないのかも、と
書き込んでからちょっと諦め気分だったのですがちゃんとサポートしていて
くれたと知って嬉しい限りです。
お二方、どうもありがとうございました。助かりました!
>>314 そのサイト、ビルゲイツのイラストが激しくむかつくな。
>312 >正規形を崩すために・・・ 意味が分かりません。初心者でスイマセン >313 そうですね。ORでした。で、変えてみたら思い通りのができました。 ありがとうございました。
327 :
309 :04/09/14 00:26:55
>>325 できました!多謝。
ところで、HELPでそれらの関数を
検索するにはどうしたら良いのでしょうか?
ACCESS2002(OfficeXP)です。
>>327 VBエディタ側のツールバーヘルプボックスに「データ型変換関数」と
入れれば色々できます。
AC2000以降のヘルプ激しく使いづらいですなぁ...
329 :
名無しさん@そうだ選挙にいこう :04/09/14 20:50:42
[ID(主キー)] [氏名] [居室] [電話] [勤務先] [勤務先電話] というテーブルがあり、居室フィールドを昇順で並べ替えているのですが、(A-Z昇順で並べ替えボタンで) フォームを作るとID順に並べ替えられてしまいます。。。 フォームもテーブルの並べ替え順序と同じに表示させるにはどうすればいいんでしょうか? フォームのプロパティシート→データ→並べ替え、の欄が空白なんで、フォームを開いたときに読み込まれる 並べ替え順序を記述すればいいと思うんですが、ここはどう記述すればいいんでしょう?
>>329 >フォームのプロパティシート→データ→並べ替え、の欄が空白
そこにカーソルを置いて[F1]キーを押す。
話はそれからだ。
331 :
名無しさん@そうだ選挙にいこう :04/09/15 13:54:25
>>329 オートフォームでやってだな。
普通クエリー作るけどな。
332 :
名無しさん@そうだ選挙にいこう :04/09/15 19:33:44
このスレの>211 と同じような作業をした際、 エラーメッセージで、オーバーフローと出るのですが このエラーは何を意味しているのですか? 実行したときのデータ件数は約40万件です
333 :
名無しさん@そうだ選挙にいこう :04/09/16 14:02:53
access 2003を使用しています。 2つのテーブルをUNIONクエリで結合させる際に、どちらのテーブルからとってきたデータかどうかを判定するために、クエリ結果にテーブル名を示したいのですが、そういうことって可能なのでしょうか?
334 :
名無しさん@そうだ選挙にいこう :04/09/16 16:45:55
Access2002を使っていて、質問があります。 サブフォームを含んだメインフォームを作成して、サブフォームの中には コンボボックスを埋め込みました。 ユーザがコンボボックスを選んだ値によってメッセージを表示させたいと 思いますがうまくいきません。 具体的には、コンボボックスのイベント「変更時」「フォーカス喪失時」 「フォーカス喪失後」にイベントプロシージャを組み込みました。 よろしく教示お願いします。
>>335 レスありがとうございます。
更新後処理でやってみましたがうまくいきませんでした。
他に手はないでしょうか。。。
>>336 どう、うまくいかないのか書かないとワカランよ
336に補足です。 メインフォームの場合は「更新後処理」でうまくいきました。 サブフォームの場合はうまくいかないので、何かコツなどないでしょうか?
>>337 具体的にどううまくいかないのかと言うと、コンボボックスの「更新後処理」に
イベントプロシージャを記述しているのですが、コンボボックスを変更した後
に全くイベントプロシージャが実行されていないようです。
イベントプロシージャには簡単なMSGBOXコマンドだけ記述しています。
>>333 UNIONする前にクエリかましてダミーの項目作ってテーブル名入れておいて、
その項目もユニオンに指定したら?
>>340 やっぱその方法しかないんですよねぇ・・・
とりあえず、その方法を使っています。
>>341 すでに目的は達してる訳だからいいだろ・・
何が不満なわけ?
もっと自分の思いもつかないスマートなやり方が知りたいってことかな
>>333 SELECT *,"tblA" as tablename FROM tblA
UNION SELECT *,"tblB" as tablename FROM tblB
>>341 いるんだよなこういう人。
既に案があってそれ以外の方法を知りたいのなら
最初からそう言えばいいのに言わない。
こっちはエスパーじゃないっての。
しかも人に考えさせておいてお礼もなし。氏ねと思う。
>>344 だから、テンプレがあるんじゃん。テンプレに従わない質問なんか、スルーすりゃいいんだよ。
俺からすれば、いるんだよな、アホ質問者に構っちゃう人。って感じ。
>>1 もロクに読まない人なんか放っておきな。どうせ努力もせず答えだけが欲しい奴なんだから。
>>339 サブ内のコンボに書いてるんなら問題ないはず。
そこからメインの何かを参照してない?
コードさらしたほうが早い気がするが...
テンプレ無視の質問はスルーしようよ。
解決しました! イベントプロシージャの「更新後処理」をコンボボックスに作成していたと 思い込んでいましたが、違うオブジェクトに設定していました。 みなさんありがとうございました。
>>344 >>345 うんざりするなら来て欲しくないですね。
あなたにとってはアホ質問でも、質問者にはそうではないんです。
>>343 さん
どうもです。
ばっちりです。
いちお、
>>344 さんにも言い訳しとくと、2chに書き込んだときには、さっぱりわからなかったんですよ。
その後、うん●してるときに、340さんの方法を思いついて、仕事は一段落ついたんです。
他の人はどうなのかよくわからないけど、私は目的が達成できて取り替えず仕事は前に進めたとしても、会社から帰りの電車の中や、う●こしてるときにうだうだ考えたりする方なんです。
とにかく今後は、テンプレ使いますわ。
すまそ<(_ _)>
えらそー・・・
353 :
名無しさん@そうだ選挙にいこう :04/09/18 02:10:47
xpでAccess2000を使っています。 [機器ナンバー] [貸出日] [返却日] 100 2004/09/01 2004/10/01 101 2004/09/12 2004/09/21 102 2004/09/30 2004/10/05 100 2004/10/02 2004/10/10 こういうテーブルから特定の日付の稼働とかは出せるでしょうか?
SELECT 機器ナンバー, 貸出日, 返却日 FROM テーブル名 WEHRE (貸出日=#特定の日付#) OR (返却日=#特定の日付#); ではダメですか意味が違いますかそうですかだったらもう教えてやんねーよ
WHERE (#特定の日付#>=貸出日) AND (#特定の日付#<=返却日)
>350 クズで賑やかしなお前にも親切に説明してやると、 アホってのは質問の内容じゃなくて質問の仕方のことを 言ってるの。それくらい分かるよな、アホなお前にも。
AテーブルとBテーブル間をリレーションシップを張りたいのですが、 AテーブルのKey1(6桁)とKey2(2桁)を足した物と、BテーブルのKey3(8桁)がマッチするのです。 (もともとパッケージ製品上のテーブルで、テーブル設計自体がタコなのかもしれませんが) SQLビューで INNER JOIN Aテーブル ON Aテーブル.Key1 & Aテーブル.Key2 = Bテーブル.Key3 と記述すれば検索はできるのですが、このクエリを保存してデザインビューで 開こうとすると、この検索の部分が「連結式を表示できません」とエラーになってしまいます。 他にもいろいろ条件を付けたいので、できればデザインビューで扱いたいのですが、 何かいい方法はないでしょうか? 今は仕方ないので、先に一発クエリーを入れてKey1とKey2の合成値を作ったものと リレーションを張ってしのいでしますが、クエリーが毎回一手間余分にかかるので 楽な方法があればと思い、質問する次第です。
FROM Aテーブル, Bテーブル WHERE Key1 & Key2 = Key3
>>358 なるほど、できました。
私が当初作っていたクエリの2個使いと同じ結果が得られました。
リレーションシップ(INNER JOIN) にこだわっていたから難しかったんですね。
教えて頂いてみれば、いたってシンプルなクエリで目から鱗が落ちる思いです。
しいて言うなら、デザインビューで見たときにテーブル間がリレーションの関係で
線が引かれていないので、作成者以外の人にクエリの意図が
一目で通じにくそうだという事でしょうか。 (これも私の固定観念かな?)
どうもありがとうございました。
CREATE VIEW Aビュー AS SELECT Key1, Key2, Key1 & Key2 AS Key12, ・・・略・・・ FROM Aテーブル で、 INNER JOIN Aビュー ON Aビュー.Key12 = Bテーブル.Key3
文字列を「"」で囲むのと、「'」で囲むのに違いがあるのでしょうか? このあたりの基本的なルールがよく分かりません。 文字列は「'」で囲むのかなと思ってたら、VBAではコメントになってしまうし・・
WindowsXPでACCESS2002を使用しています。 [ID][氏名][郵便番号] [住所1] [住所2] [分類] 1 ○○ 123--4567 ○○市○○町 ○○ハイツ A 2 △△ 234-5678 △△市△△町 B 3 □□ 345-6789 □□市□□町 □□荘1号室 C というテーブルを元に宛名ラベルを印刷するフォームを作ろうとしています。 フォーム上のリストボックスから印刷したい分類を選択して、 OKボタンをクリックすると、レポート(宛名ラベル)が表示されるようにしたいのですが、 Private Sub OK_Click() If Me!分類選択 = StrComp("分類選択", "select distinct 分類 From T_顧客") = 0 Then 「 」 Call F_close Else MsgBox "分類を選択してください", vbOKOnly + vbInformation End If End Sub 「」内をどうしていいのかわかりません。 最初は、 Docmd.RunSQL("SELECT 郵便番号,住所1,住所2,氏名 FROM T_顧客 WHERE 分類番号 = T_顧客.分類") でクエリをつくって、そこを足がかりに出来るかと思ったのですが、 次のようなエラーが出てしまいました。 実行時エラー'2342' "RunSQL/SQLの実行"アクションを実行するには、SQLステートメントからなる引数を指定する必要があります。 ACCESS、VBA、RunSQL、でぐぐって見ましたが、有効な答えは発見できず、このスレにすがりつきました。 いい方法がありましたらご教示ください。お願いいたします。
>>362 Docmd.OpenReport "レポート名",acViewPreview
>>362 DoCmd.OpenReport"レポート名",,"[分類番号] = '" & Me.分類リストボックス名 & "'"
レポートのレコードソースは
SELECT 郵便番号,住所1,住所2,氏名 FROM T_顧客か
T_顧客テーブルそのもの
>>363 レスありがとうございます。
せっかく解答していただいたのにすみません。
その方法は、あらかじめレポートが作られているということですよね。
気をつけたつもりだったのですが、質問がわかりづらかったようです。
「分類」にはどんな語句が入るかは、運用されるまでわからないのです。
Outlookの「分類項目」のようにユーザーが追加や削除が出来るようにしてあるので。
それで、選択された分類項目で顧客データを抽出したいのです。
レポートはそのクエリを元に作る。という感じで・・・。
書き込む前にリロードしてなかった・・・orz
>>365 やはり、はじめにレポート作れないと無理なんでしょうか。
そうなると、根本的に作り直すしかないですね。
>>366 >>364 のやり方で、いったいなんの不都合が?
抽出条件にリストボックスへの参照を入れているんだから、
ユーザーにどんな語句を入力されようと有効でしょ。
やってみもしないで文句言ってない?
フィルターを使うのがイヤなら、レポートのレコードソースとなる
クエリに WHERE [分類番号]=Forms![フォーム名].[リストボックス名]
>やはり、はじめにレポート作れないと無理なんでしょうか。
レポートを作っておきたくないのなら、
・レポートを新規作成
・各コントロールの作成、サイズ調整、配置等
・レコードソースの設定
・用紙の設定
VBAでこれらの処理をするしかありませんよ。
>>367 分類にかかわらず、全て表示されてしまったもので・・・。
こちらのやり方がまずかったのかもしれませんね。
367さんの方法は私のスキルじゃかなり難しそうです。
なんとか頑張ってみます。
お騒がせしました。
>>368 >分類にかかわらず、全て表示されてしまったもので・・・。
なら、そう書けっての。
こっちはエスパーじゃ(ry
>if Me!分類選択 = StrComp("分類選択", "select distinct 分類 From T_顧客") = 0 Then
そもそもここがワケわからんよ。
リストボックスを選択してない場合に警告を出したいだけなら、
if Me!分類選択.Listindex<>-1 then
レポートを開く処理
else
警告
end if
でよい。
リストボックスの作りもおかしくなってない?
列数を2以上にして連結列がずれたりしてない?
イミディエイトウィンドウで ?Forms![フォーム名].[リストボックス名] を
実行して、選択されている分類名が正しく返るかどうか、確認してみて。
書いてある情報だけから判断するに、全然難しくない処理のはずだよ。
どこか基本的なところでミスってると思われ。
>>369 >なら、そう書けっての。
>こっちはエスパーじゃ(ry
まったくです。
イミディエイトウィンドウ、Nullが帰ってきました。
おっしゃるとおり、どこか基本的なところのミスのようです。
364さん,365さん,369さん、どうもありがとうございました。
>>370 もう見てないかな?
>369さんの「イミディエイトウィンドウで...」の処理でNullが返るのに
すべてが表示される?
レポートのレコードソースのテーブルかクエリに「分類番号」フィールドに
値(A,B)が入ってないのでは?
「分類番号」フィールドに値が入っていれば私の提示したコードだと
何も表示されないレポートが表示されるはずだけど...
>>364 =371
見てます。
最初のレポート作成が失敗の原因でした。
お恥ずかしい・・・・。
レポートのソースコードになるクエリを作り直したらうまくいきました。
ここは優しいインターネットですね(笑)
レスしてくれたお三方にはお世話になりました。
本当にありがとうございました。これでゆっくり眠れます。
補足。
クエリのSQL文に、
>>367 にある、
WHERE [分類番号]=Forms![フォーム名].[リストボックス名]
を書き加えるのを忘れていたのと、
レポートのレコードソースを誤って顧客テーブルに指定していたのが、
レポート作成の失敗の原因でした。
焦るとろくなことがないですね。
374 :
名無しさん@そうだ選挙にいこう :04/09/20 08:52:00
質問です。acccess初心者です。
こちらでよかったのかわかりませんがよければ教えていただけませんか?
または検索の方法などをおしえてください。
よろしくお願いします。
【. 目 的 】もとのデータ(住所録)より本日入力した分のデータと県名が同じものだけ抜き出したい。
もともとはエクセルで処理をしていました。本日分のみオートフィルタで抜き出して、
そのデータの県名をコピーして県名と書かれている欄の下に貼り付け、
その後もとの住所録でフィルタで検索していました。
これをaccessでやりたいのですがわかりません。
【. 条 件 】windowsxpです。
■試したけどうまくいかなかった処理
【. 概 要 】本日入力分のみ検索するクエリを作成。その先がわからず困っています。
【駄目な理由】根本的に違うのでしょうか?
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】アクセス・検索・クエリで。難しいのが出てきてしまって・・・
初級のアクセスの本500ページ位ので調べたけれどわかりませんでした。
よろしくお願いします。
375 :
名無しさん@そうだ選挙にいこう :04/09/20 13:13:41
>>374 今ひとつ状況がよくわからないので、もう少し整理させてね。
1。住所録テーブルに毎日データを入力
2。上記の内、本日入力した県と同じ県のデータを、
住所録全体から抽出したい
こういうことでしょうか?
であれば、
>>本日入力分のみ検索するクエリを作成。その先がわからず
このクエリと住所録テーブルの県名同士をリンクさせて、
新しいクエリを作成すればいいんですよ。
【. 目 的 】 レコードを更新したときに、その更新日時が自動的に入力されるフィールドを作りたい。
【. 条 件 】 Windows 2000 SP4。Office 2000 SR1。Acces 2000 SP3。
プログラミングに関する知識はありません。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
access 最終更新日時
access データ 最終更新日時
access レコード 更新日時
access レコード 最終更新日時
tModify
>>376 Private Sub Form_BeforeUpdate(Cancel As Integer)
Me!データ更新日 = Date
End Sub
フォームでデータを入力しているなら、このコードを
データを入力するフォームに入れればいいと思われ。
データ更新日っていうのは、更新日時を保存するフィールド名ね。
フィールド名が違うなら、当然変更しなければいけません。
やり方。 テーブルにデータ更新日という日付型のフィールドを追加。 ↓ データを入力するフォームにデータ更新日のフィールドを追加。 (編集ロックとか、使用不可にするとユーザーにこのデータを 改竄されません) ↓ フォーム全体のプロパティを表示。 ↓ イベントタブから、更新前処理のところにカーソルをあてる。 「…」ボタンが出ると思うので、クリック。 ウィンドウが出るので、コードビルダを選択してOK。 ↓ VBエディタが起動し、以下のコードが既に書かれているはずなので、 Private Sub Form_BeforeUpdate(Cancel As Integer) End Sub この中に、 Me!データ更新日 = Date を入れてください。 これで上手くいくんじゃないかと。
Access2000以降のユーザーで、ついでに素人だったりすると、こういう不安は自分以外の人も 感じているんじゃないかと、仲間が大勢いることを願いつつ。 レコードセットを開くとき、参照設定が面倒でADO使っちゃう人って多分けっこういますよね(もちろん僕も) それとは別に、CurrentDb.Execute アクションクエリ なんてのはあちこちでしょっちゅう使いますよね (そうでもないのかな。僕はそうなんですけど) でもって、CurrentDb.Execute ってのはDAOなんですよね。 いつだったか、このスレだったかどこだったか、すっかりバカで思い出せないんですけど、実行されるSQLの 文法のちょっとした違いについて、簡単に解説をしてもらったことがあるんです。 WHERE Like '*hoge' が、ADOだと WHERE Like '%hoge' になる、みたいな。 ひとつのプログラム用mdbファイルの中で、ADOとDAOが混在している状態ってのは問題ないんでしょうか。 ひとつのファイル内どころか、たとえば同じSub処理内で、 Dim MyDb As New ADODB.Connection Set MyDb = CurrentProject.Connection でレコードセットを開いて何か処理をした直後に、CurrentDb.Execute とかやったり。 ときには気まぐれで、MyDb.Execute とかADOで実行してみたり(気まぐれというか、ADO用に書いたSQL文を 再利用したかったとか、まあそんな感じ) もう何が何だかぐちゃぐちゃの状態なんですけど、大丈夫なんでしょうか。
>>378-379 2レスに及ぶ丁寧なレスをいただき、大変感謝しております。
Excel の表に毛が生えた程度の使い方しかしない折れにもできました。
<丶`∀´> カムサハムニダ
>>375 説明不足だったのに、親切にありがとうございました。
アクセスでやっていく上でよいアドバイスになりました
リンクもよくわかりませんが(超初心者なんです)本見ながら頑張ってみます。
ありがとうございました♪
>380 大丈夫か、といわれれば大丈夫だよ別に。 そういうコーディングしてもとりあえず動くのが M$製品というものだし もちろん、そのmdbなりadpなりを製品として 客先に納品したり社内にバラ撒いたりすれば 待ってるのはメンテ地獄というのは言うまでも ない 自分の仕事でチョチョッと作るなら気まぐれで いいと思う
384 :
名無しさん@そうだ選挙にいこう :04/09/21 21:16:08
質問です。 Accessのインポートについてですが、 元データはタブ区切りのテキスト形式なんですが 日付のデータが「2004.9.21」という形であります。 しかし、Accessへインポートすると、 インポートエラーが発生し、日付のデータがインポートされません。 Accessには「2004/9/21」とインポートしたいのですが どうすればうまくいくでしょうか? ちなみに、タブ区切りにテキストファイルを Excelへ変換し、日付を「2004/9/21」形式に変換しようと しましたが、おそらく文字列と認識されているせいか 何をやっても「204.9.21」のままで、何もできませんでした。 どうか、よきアドバイスをお願いします
他のデータに「.」をつかってないなら、 excelで読み込んだとき、 「.」を「/」に置換してみたら?
excelでファイル読みこむ。 ↓ 問題の日付データの列全体をコピー ↓ 新しいexcelファイルを作るなりして、それにペースト ↓ メニューバーより「編集」→「検索」 ↓ 「置換」タブを押す ↓ 「検索する文字列」に「.」を入力、「置換後の文字列」に「/」を入力 ↓ 「全て置換」ボタンを押す ↓ 置換し終わった列全体をコピーし、元のファイルへペースト ↓ excelファイルをそのままインポートするなり、タブ区切りのテキスト ファイルに保存してインポートするなりすれば、できませんかね?
ありがとうございます。 モノは、個人の仕事というか、ちっちゃいですけど職場じゅうで使ってます。 久しぶりに手直しする機会があって、あらためて全体を見回したら、何か急に不安になりまして。 とにかく「不細工、きったね〜」 今よりもっともっとアホだった頃から、行き当たりばったりで増築を重ねてきた結果ですけど、 取りあえず動いているうちは良しとするしかない。。。ですね。
388 :
名無しさん@そうだ選挙にいこう :04/09/21 23:42:22
>385,386 やはり、地道にやるしかないってことですね
>>387 383ではないが、自分ならADOに統一するね。
CurrentDb.ExecuteをMyDb.Executeに置換すればほとんどが済みそうだし。
>>388 なんだよ、また傲慢な質問者かよ。
>>341 からループしてんのかな。
とりあえず氏んじまえ。クズ
>>388 385さんがあそこまで丁寧に教えてくれてるのに、
礼の一つも無くこの態度だ。
恥を知れと言いたいよ。
やっぱり、テンプレ無視野郎は相手にするの止めようよ。
393 :
?!? :04/09/22 15:08:08
Access2002でフォームでテキストボックスの入力規則をパスワード 表示にした時にそのパスワードに桁数チェックはどうやればいいのでしょうか?
394 :
名無しさん@そうだ選挙にいこう :04/09/22 21:40:08
OS:WinXP バージョン:Access2000 ちょっと難しいかもしれませんが、教えてください。 テーブル名:Data 上記のテーブルに毎月データを追加していきたいのですが インポートするファイル数が20ぐらい発生するので、 楽をするために、ダイアログボックスを表示させて 一気にインポートできればと考えておりますが VBAでこの作業を組むことはできますか? ちなみに、インポートするファイルは Excel形式であったり、タブ区切りのテキスト形式であったり いろいろあります。 ちょっと無茶なことかもしれませんが よろしく御願いします。
yes/no型のフィールドをカウントするのってどうしたらいいのでしょうか? 上手くカウントできなくて、足してみたらマイナス表示に・・・
SELECT Count(Switch([yes/no型のフィールド] = ON, [yes/no型のフィールド])) AS [YES], Count(Switch([yes/no型のフィールド] = OFF, [yes/no型のフィールド])) AS [NO] FROM テーブル名;
>>394 DoCmd.TransferSpreadsheet
DoCmd.TransferText
とかで可能と思われ。
VBができるなら、その他の処理も簡単と思われ。
>>385 インポート時に型を指定できることは知っているのかな?
日付型に指定してやれば問題ないよ。
401 :
名無しさん@そうだ選挙にいこう :04/09/23 19:35:42
ACCESS の「リレーションシップ」について勉強をしています。 テーブル間で「リレーションシップ」を参照性合成の チェックボックスを OFF のまま作成したとします。 作成の前後で、目に見える変化は起きませんでした。 (DRI でも、直積の制限でもない?) 一体これは、何をやっているのでしょうか? テーブルの構造が変わるのでしょうか? どなたかご教示ください。
s/参照性合成/参照整合性/
403 :
名無しさん@そうだ選挙にいこう :04/09/23 20:02:07
>398 ありがとうございます。 とりあえず挑戦してみます
404 :
名無しさん@そうだ選挙にいこう :04/09/23 20:11:45
403です。 もうひとつ聞きたいことがあります。 クエリーを2つ作成しました。 例:クエリー1、クエリー2と仮定します。 クエリーをExcelにエクスポートは当然できますが、 この2つのクエリーをひとつのエクセルファイルで シート単位で分けてエクスポートしたいのですが そのようなことは可能なのでしょうか? 実際はクエリーの数が10個ぐらいありまして Excelファイルも10個になってしまい 1つのファイルに統合するのも 時間がかかるものですから エクスポートの段階で、ひとつのファイルに 押し込むことができれば、かなり楽になります
フォームでActiveX コントロールを追加しようとしましたが、 以下のエラーメッセージが表示されました。 *************************************************************************************** このActiveX コントロールを使用するライセンスがありません。 OLEオブジェクトまたは ActiveX コントロールを含むフォームを開こうとしたか、 ActiveX コントロールを作成しようとしました。 ライセンス取得については、OLEオブジェクトまたは ActiveXコントロールの開発元に確認してください。 *************************************************************************************** これはどのような意味なのでしょうか? また、どのようにすれば解決できますのでしょうか? よろしく御願いします
都合でデータベース板に移動します。 お邪魔しました。
ここはあまりレスがありませんね。
質問する側が
>>1 を読んでないせいもあるんだろう。
>>404 同じファイル名を指定すれば、
押し込んでエクスポートできると思うが?
>410 おおお〜、出来ました〜 こんなに簡単だったとは〜! ありがとうございました、
【. 目 的 】 VBAが動かない。
【. 条 件 】 XPhomeSP1 ACCESS2000,XPProSP1 ACCESS2000
■試したけどうまくいかなかった処理
【. 概 要 】 よくわかりません。
【駄目な理由】 状況として、フォーム上に複数のボタンがあり、これらを押すと
別フォームに移動するVBAを作成したところ、このボタンは移動す
るのですが、別なボタンだと移動しない。ウォッチ式で確認しようと
すると、1行目にすら飛んでいない。
【
>>1 を読んだ】 はい
【Googleで調べた】 いいえ
【検索キーワードは?】 ACCESS VBA エラーで探したのですが、やはり情報が少なかったらしく。
すみません。教えてください。
413 :
名無しさん@そうだ選挙にいこう :04/09/24 23:24:18
【. 目 的 】
フォーム上のあるテキストボックスのデータが何行あるかを
知りたい。
レポート出力時に画面節約のために複数のフィールドの値を
&結合をして1つのテキストボックスに出力したいのですが、
ページ制約上30行に収めないといけないので入力時に
オーバーしないかどうかチェックするためです。
【. 条 件 】 Office2000 WinXP
■試したけどうまくいかなかった処理
【. 概 要 】=instr([A],Chr(13))、=instr([A],Chr(13)&Chr(10))
【駄目な理由】何か的外れな?返値がくる。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 アクセス 行数
【過去ログを検索したか】はい
よろしくお願いします。
>>412 情報が少なすぎるが、
イベントのクリック時に[イベントプロシージャー]と入っていないとか
あんまりカッコイイやりかたじゃないけど。 ボタンを作って デザインモードでボタンを右クリック、 イベントのビルダを選択して以下のコードを貼り付けると ボタンを押したら、行数がメッセージボックスに出るよ。 If IsNull(Me.テキスト1) = False Then MsgBox (UBound(Split(Me.テキスト1, vbCrLf)) + 1) End If
>>413 1行に何文字入るんかな?
たとえば20文字/行なら、
if LenB([txtA]) > 20*30 then で良いんじゃないの?
# テキストボックス内で改行可能なら、もうちょっと複雑になるけどね。
もしかしてLen関数って改行まで数えてくれるのかな いまちょっと試したら下の即席自前関数でそれっぽくできた 細かいところは適当に直してね。 つーより、完全な勘違いの可能性もあるのでもしそうだったらごめん (ところで。。。Chr(13)って、なんだっけ?) Function KaigyouIkutsu(MyTxt As Variant) As Long Dim i As Integer If IsNull(MyTxt) Or MyTxt = "" Then KaigyouIkutsu = 0 Exit Function End If KaigyouIkutsu = 0 For i = 1 To Len(MyTxt) If Mid(MyTxt, i, 1) = Chr(10) Then KaigyouIkutsu = KaigyouIkutsu + 1 End If Next i KaigyouIkutsu = KaigyouIkutsu + 1 End Function
>>413 へのレスね。
コードのテキスト1の部分は調べたいテキストボックス名に変えて
ください。
419 :
413 :04/09/25 00:56:18
情報が足らなかったようですみません。
>>415 さん
>>418 さん
ありがとうございます。明日、試してみます。最近寝不足で
きついです。
>416さん
ありがとうございます。テキストボックス内で改行ありです。
未だにLenBとLenと区別がよくわからないほどの未熟者です
ので明日、関数を含めて調べてみます。
>>417 さん
Chr(13) キャリッジ リターン、Chr(10) ライン フィードだそうです。
フィールド結合で改行を加えたいので、あちこち検索を掛けて
いたら見つけました。作っていただいた関数は明日、確認させて
いただきます。ありがとうございます。
普段使わない関数を見ると緊張します(^^;;;<ベンキョウ ブソク
最近、寝不足なので明日仕事が空いたときに確認させていただき
ます。根性なしですみません。明日、結果を含めてカキコさせて
いただきます。
とりあえずお礼まで・・・
420 :
名無しさん@そうだ選挙にいこう :04/09/25 03:20:17
すんません、アクセス初心者でつ。会社の月別売上げ表(図1) を図2のように簡単に展開する方法はありますか? クエリーで簡単に展開できると言われたのですが… 図1 4月 売上 5月 売上 6月 売上 7月 売上 〜 2月 売上 3月 売上 図2 4月 売上 5月 売上 6月 売上 7月 売上 | 2月 売上 3月 売上
421 :
名無しさん@そうだ選挙にいこう :04/09/25 03:21:46
あ、420はoffice2002のアクセスです。すみませんでした。
(´-`).oO(出来るといった人に聞かないのはなんでだろう?)
424 :
413 :04/09/26 00:49:14
415さん、416さん、417さん、こんばんわ。 先ほど、帰って来て確認しました。 目的のことができました。 昨夜は本当にありがとうございました。
質問というか単なる疑問なので、気が向いたら誰かひまなときに教えてくださいな。 クエリ Qry1 〜あるテーブルのデータをある条件で絞り込んだもの、とします if DCount("*","Qry1")>0 then Qry1をレコードセットとして開き、処理いろいろ End If VBAをおぼえて以来、こういう形のやり方を何度となく採ってきたんですけど、 DCount関数ってものについて、最近妙な疑問がわき起こってきまして。 こいつは一体どうやってレコード数をカウントしているのか、と。 もしかしたら自分の知らないところでひそかにレコードセットを開いたり 閉じたりしてやがるんじゃないか、と。 いや、多分とてもくだらない疑問なんだと思います。 でも、もし、万が一、そうだとしたら、上の書き方は無駄が多いですよね。 同じレコードセットを2回開いていることになるんですから。 だったら、まずはともかくQry1をレコードセットMyRstとして開いちゃって、 if MyRst.BOF=False And MyRst.EOF=False Then 処理開始 処理が終わったら、close, nothing else そのまま close, nothing end if みたいな感じのほうが効率がいいのかな、と。 何だかよく分かりませんけど、実際のところはどんなもんなんでしょ。
426 :
名無しさん@そうだ選挙にいこう :04/09/26 17:36:33
420ですが、DB板にてもっとaccess的で簡単なやり方をすぐに教えてもらえました。 ここは板違いだったみたいですね。ありがとうございました。
>>426 「access的で簡単な」やり方を知りたいから、
どのスレで教えてもらったか、教えて。
428 :
名無しさん@そうだ選挙にいこう :04/09/28 15:35:14
どなたか教えて下さい。 初歩的な質問ですが、どうやっていいのか 分からないのです。 金額を求める時、クエリーで、金額:[単価]*[数量]としました。 入力はフォームで行いこの時、テーブルの金額フィールドに反映させるには どのようにするのでしょうか ? 勿論 入力レコードその都度に反映させる。 出来れば簡単な方法が有れば、いいんですが よろしくお願い致します。 Access2002です。
DB板ってどこ?
>>428 更新時イベントで Me.Requery
>>429 >>431 テーブルの金額フィールドに反映させるには
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これを本当に実現するにはまったく別の解説が必要だけれど、
本当は実現する必要がないということについて、また別な解説が必要ではないかと
>>428 [単価]→[数量]の順で入力すると仮定し、数量テキストボックスの更新後処理のイベントに
Me.金額 = Me.単価 * Me.数量
でいいんでないの?
435 :
名無しさん@そうだ選挙にいこう :04/09/29 09:22:54
>>429 431 434さん
ありがとうございました。 428です
遅くなりました。
436 :
名無しさん@そうだ選挙にいこう :04/09/29 09:36:54
Access2003を使用しております。 テーブルに【内容】と【必要枚数】のフィールドがありまして、 それらに入力されたデータが3000レコードぐらいあるのですが 各【内容】を【必要枚数】分、簡単に印刷する方法はありますか? とにかくレコードが多く、ひとつひとつ【必要枚数】分、 印刷時に設定するのはめんどくさいです。 ご教授ください。
どなたかaccessの良い入門ホームページ御存知ないですか? 会社の部品表をACCESSで作成してみようと思ってますが全く使った事ないもので。 宜しくお願いします。
439 :
名無しさん@そうだ選挙にいこう :04/09/29 14:18:41
>>437 何度も挫折するアクセスの勉強法?
へ 行け
があああああ直リンしちまった。すまねぇ皆の衆。
442 :
名無しさん@そうだ選挙にいこう :04/09/29 16:34:02
レポートで、改ページって出来ますか?
443 :
名無しさん@そうだ選挙にいこう :04/09/29 19:05:19
クエリやテーブルから印刷すると右上に日付が勝手に表示されるのですが 日付や、書式の変更は可能なのでしょうか? 例1:平成16年09月30日現在 ヘルプと本を読んだのですが、探し方が悪いのか対処法が分かりませんでした。 どなたか教えてください バージョンは2003です
>>444 そのサイトで明らかに(パフォーマンス的に)誤ったSQLにツッコミ
入れたい衝動に駆られたんだが、解決済みが付いてるとそれ以上書けないんだな。
糞だ。
>>447 教えてあげればいいのに・・・
サイト運営者みんなが上級者ってわけじゃない
450 :
名無しさん@そうだ選挙にいこう :04/09/30 10:31:18
【. 目 的 】
レポート印刷しようとすると(開発PCと稼動PCが違うので)「プリンタが見つかりません」という
メッセージが表示されて印刷できない。
プリンタを稼動環境のものに変更したいのだが上記の様になってしまい不可能。
【. 条 件 】
ACCESS2.0
■試したけどうまくいかなかった処理
【. 概 要 】
Access2000ではデザインビューで開いてプリンタ設定し直して閉じれば変更できたので
同様の作業を試みたがやはり同じメッセージが表示され変更不可能。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
Access2.0 レポート プリンタ プリンタが
451 :
名無しさん@そうだ選挙にいこう :04/09/30 11:06:26
>>446 ありがとう御座います。
今ひとつ、よく解ってないのですが、何となく出来ました。
早く初心者を脱出したいです。
452 :
名無しさん@そうだ選挙にいこう :04/09/30 18:07:33
【. 目 的 】元のデータベースより抜き取りたいものだけクエリでor検索したい
【. 条 件 】 Access2000だと思います。
■試したけどうまくいかなかった処理
【. 概 要 】 元のテーブル対象のクエリ作成、下の条件を入れる欄に
抜き出したいものを書き込むが欄が8個くらいしか使えません。
私は50個くらい抜き出したいのでいちいち何回も同じことを繰り返しています。
どうしたら一気に50個or検索できますか?
■これだけはやりました
【
>>1 を読んだ】 はい・
【Googleで調べた】いいえ、 初級のページは目を通しました。
よろしくお願いします。
>>452 最大公約数となる抽出条件を見付けるのが、もっとも簡単な手段。
見つからないのなら、抽出条件テーブルを作成し、クエリで結合させればいい。
こんな説明で、意味は通じたかな?
抽出条件テーブルに、50レコード用意するんだよ。
>>453 早速のお返事ありがとうございます。
最大公約数の条件はないと思われます。なので下のやり方でやろうと思いますが
アクセスはまったくの素人に近い状態で、クエリで結合がよくわかりませんが
何を調べればいいのかもわからない状態だったのでとても助かりました。
検索してなんとかやってみようと思います。
また、お伺いするかもしれませんがよろしくお願いします。
ありがとうございました。
>>450 OSも関係してそう。
協力してあげたいけど、さすがに2.0はインストールしてないから、、、。
456 :
名無しさん@そうだ選挙にいこう :04/10/01 23:32:18
事務職をしていますが職場のパソコンでアクセスを使って 顧客情報を登録していくことになりアクセスをこれから覚えていこうと考えておりますが 初心者が無理なくはじめられる本や問題集などありましたら 教えてください。
>>456 目的は顧客情報の登録?
Excelで作った住所録をインポートするだけだよ。
>>456 知り合いにパソコン教室の先生がいるんだが、
その人のお勧めはFOM出版の奴だった。(緑の奴)
その本でACCESS覚えたけど、まあ悪くなかったと思う。
結構パソコン教室でのテキストとしても使われてるらしい。
でも一番いいのは立ち読みして自分に合ったの選ぶのがことだと思うよ。
ただ、データベースの勉強なので、サンプルが合ったほうが絶対いい。
自分で架空のデータベースつくるのは面倒だしね。
だから、なるべくサンプルCDが付いてる奴がいいんじゃないかな。
459 :
名無しさん@そうだ選挙にいこう :04/10/03 00:12:02
実を言うと、俺も一冊入門書を書きたい。 印税収入が欲しい!
入門書なんて内容よりも出版社で買われる物。 ビジネスマンに有難がられている出版社の編集者に近附く事だ。
【. 目 的 】
ヘッダもフッタも設定していないフォームで
ビュー表示の時に何故か詳細の下にフッタのようなものが表示される。
フッタを表示させると、詳細とフッタの間にこの謎の空間が出ます。
これが何なのかも消しかたも判らない…。
【. 条 件 】
WinXP、Access2000
■試したけどうまくいかなかった処理
【. 概 要 】 フォームの高さをいじってみたけど変わらず。
【駄目な理由】 謎
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 access フォーム 詳細 フッタ 隙間 余白
編集中のフォームを左上のビュー切り替えボタンで 切り替えずに、一旦閉じてからフォームをダブルクリックして開いても同じ?
>>464 詳細行の背景色を例えば真っ赤に変えてみると、
その空間は何色になりますか?
白のまま?赤くなった?
>>462 そのフォームのプロパティの書式>「サイズ自動調整」を「はい」にしてみては?
>>465 真っ赤になりました!
ってことは詳細の一部ではあるわけか・・・。
>>466 「はい」にしても同じでした。
468 :
名無しさん@そうだ選挙にいこう :04/10/05 00:44:27
【. 目 的 】
ID 名前
1 ひろゆき
2 ギコ猫
というテーブルがあります。
エクセルで
名前
モナー
というデータを追加したいのですが、その際にIDを自動付与することができません。
何か良い方法ありますか?
【. 条 件 】 OS:XP ACCESS2002
■試したけどうまくいかなかった処理
【. 概 要 】
IDをオートナンバーにし、エクセルの項目にIDという項目を作りブランクにしました。
インポートエラーがでるもののインポートはできましたが、番号は付与されません。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】
「インポート時に連番」
>>468 ExcelでIDという項目を作らなくても、インポートすれば自動で連番をふってくれると思います。
470 :
sage :04/10/05 01:30:47
できましたねぇ・・・。 ありがとうございます。
>>467 フォームのデザインで、[区切り線]を"はい"にしてみて。
謎の空間がその線よりも下にあるのなら、それはただの
サイズの問題。
フォームの高さを縮めて、”上書保存”すること。
保存しなければ、開く度に同じことの繰り返しです。
>>471 直りました!
フッタも含めた高さにしなければいけないと思ってたのですが、
詳細の分だけでよかったんですね。
考えてくれた皆様、ありがとう。
いや、何か間違った事を言ってる。 でも理解しました。
AC97でツリービューコントロールをつかってます。 ツリービュー上で右クリックをして任意のショートカットメニューを出すことは可能でしょうか? フォームのプロパティで設定したものは出ません。 mousedownでどうかすればいいと思うのですが……。
475 :
名無しさん@そうだ選挙にいこう :04/10/07 09:28:14
【. 目 的 】 テーブル1から削除したいレコードの主キー値を格納したテーブル2があり、
テーブル2のレコードの値に基づいてテーブル1のレコードを削除
(何がしたいのか必ず記入。)
【. 条 件 】 WinXP/Access2003
■試したけどうまくいかなかった処理
テーブル1とテーブル2を結合した削除クエリを実行->削除するテーブルを指定してくださいとのエラー
【. 概 要 】
VBAでテーブル2のレコードをオープンし、ループ処理中でテーブル1のSQLを発行するなど
(どんな処理を試したかを説明)
【駄目な理由】 (動作状況など)
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 削除クエリ 結合 ACCESS 解説
476 :
475 :04/10/07 10:27:07
↑ つまりVBAではできるのですが、削除クエリで 同等の処理を行うにはどうすればいいのか? また、削除クエリ以外でもこういった処理を行う方法があれば 教えていただきたいのです。 よろしくお願いします。
>>477 「削除できませんでした」と
表示されてしまいました。
お手数ですがSQLビューにはどういうSQLが表示されますか?
教えてもらえればどうやって作成するか見れるのですが。。
サブクエリを使う
>>475 DELETE テーブル1.フィールド1
FROM テーブル1
WHERE (((テーブル1.フィールド1) In (Select フィールド1 From テーブル2)));
こんな感じで...
>>480 なるほど!
抽出条件に
In (Select フィールド1 From テーブル2)
って書くだけでよかったんですね。
抽出条件にIn〜とかで直接SQLを書けるとは知りませんでした。
ありがとうございました。
482 :
名無しさん@そうだ選挙にいこう :04/10/07 13:40:43
更新クエリの「レコードの更新」欄にIIf構文って適応できますか?
Access2000以降の帳票フォームで、レコードセレクタを表示している状態での レコード貼り付け処理をトラップしたいのですが可能でしょうか?
484 :
名無しさん@そうだ選挙にいこう :04/10/08 01:35:31
[会社名] [部署名] [郵便番号] [住所1] [住所1続き] [住所2] というテーブルを作って、 クエリで並べ替えを行い(住所1-昇順、住所1続き-昇順)、 そのクエリを元にしたレポートがあるのですが、そのレポートで並べ替えが全く行われません・・・ (入力した順に表示される) レポートのプロパティは、フィルタ(空白)・フィルタ適用(いいえ)・並べ替え(空白)・並べ替え適用(いいえ)になっています。 しかし、もうひとつのレポートでは(上記のレポートとプロパティの内容は全く同じ)、クエリで並べ替えているとおりに表示されます・・・ 両方とも、並べ替え/グループ化の設定も何も指定していません。 全く同じ条件なのにどうしてでしょうか?原因が全くわかりません・・・
レポートはクエリ関係なく並べ替え/グループ化の設定が必須 たまたまクエリと同じになっただけじゃない?
>>484 レポート作成時に既に「並び替え」が設定してあるクエリをレコードソースとして
作成をはじめると反映されます。
以降に「並び替え」変更を行ったりしても変更は反映されずレポート側の「並べ替
え/グループ化」で設定する必要があります。
487 :
名無しさん@そうだ選挙にいこう :04/10/08 17:00:32
Access2000でパスワードを忘れて時にファイルを開くにはどうすればいいの?
>>487 不可能です
パスワードをかけたからにはパスワードを思い出してください
>>485-486 回答ありがとうございます。何とか解決しました。
しかし
>以降に「並び替え」変更を行ったりしても変更は反映されずレポート側の「並べ替
>え/グループ化」で設定する必要があります。
これはちょっと不便ですね....
>不可能です >パスワードをかけたからにはパスワードを思い出してください これはちょっと不便ですね....
>489 同意 >490 バカ
>>489 クエリ側の並び替えを変更した後でレポートを新規作成し、
オブジェクトをコピーしてくるって手もあるけどね。
かえってめんどいか。
>パスワーど 忘れたのか盗もうとしてるのか違いはどうするの?
あまり上手なたとえが思い浮かばないんですが 略号 フルネーム CRS クラッシュ DRV ドライブ HDD ハードディスクドライブ MDA メディア というようなテーブルがあったとして フォーム上のテキストボックス(255文字以内限定)に入力された下記のような文章を 「HDDがCRSしたら所定のDRVにMDAを・・・」 テーブルのデータを参照させながら 「ハードディスクがクラッシュしたら所定のドライブにメディアを・・・」 な感じにボタン一発変換させるような関数、募集してます
変換精度は必ずしも100%をめざしてはいません とあるDBの備考フィールドに入力された文章 うちわ用語でぐちゃぐちゃの文章を、少しでも普通の人に分かるものに 近づけたいな、と
うちわ用語を納めたテーブルは現在のところ300件前後 今後びっくりするような勢いで増えていくことはたぶんありません
str = テキストボックスの文 for DBのEOFまで str = replace(str, 略号, フルネーム) 次のレコード next とか。
わ、即答感謝します いまからためしてみます
すげっ、以下でどうにかできました Function BunshoF(BunshoG As String) As String Dim MyCnn As New ADODB.Connection Set MyCnn = CurrentProject.Connection Dim MyTbl As New ADODB.Recordset Set MyTbl = New ADODB.Recordset BunshoF = BunshoG MyTbl.Open "Tbl1", MyCnn MyTbl.MoveFirst Do Until MyTbl.EOF BunshoF = Replace(BunshoF, MyTbl![Ryaku], MyTbl![FullNM]) MyTbl.MoveNext Loop MyTbl.Close Set MyTbl = Nothing MyCnn.Close Set MyCnn = Nothing End Function これだけだといくつか余計なところまで変換してくれちゃいますけど、 あとの細かいところは自分でどうにか調整します ありがとうございました
ねえねえ、データベース板で言われたんだけどさ、 主キーってなんのためにつけるの?データの重複避けるためだけ?
効率のよいインデックス
疑問に思わず素直に使うといい
タプルレベルでのアドレス機構とデータベースの整合性(完全性)を提供するため。
主キーがないというのは正規化されていないってことだしな。
整合性維持の責任を、人間じゃなくデータベースにもってもらうため、じゃないかと 思ってたけど、勝手に思ってただけで実はけっこう無自信。
ユニークな値なら商品名でも人名でも主キーでいいじゃんって話じゃないか?
タプル?
あるレコードセットを開き、あるフィールド中の値をさがしにかかるとします MyQry.Open MyStrSQL, MyDbCnn MyQry.Find "[あるフィールド]=" & ある変数 これで見つかれば即処理にかかるわけですが、見つからなかった場合のExitの仕方 って、どう書くんでしょ
>>508 ヘルプに、見つからなかった場合何を返すかが書いてあるでそ。
ifでその時にexitすればいい。
>>509 thx
If MyQry.EOF = True Then
なるほど、たしかに、いくら進んでいっても見つからなきゃ、
最後は崖から落ちますもんね。
nomatch ってのもありましたけど、こいつはDAOの参照設定が必要っぽい
>>506 というかその主キーでレコードが一意に識別できないテーブルがあるってことは
テーブル構造が冗長になってるってこと。「正規化」について調べてみるとよいかも。
正規化は1NF関係のこと。 それを言うなら「高次正規化」だな。
513 :
名無しさん@そうだ選挙にいこう :04/10/13 21:20:54
教えてください。 Access2000を使用しているのですが、CSVファイルをインポート時に 「03-0000-0000」や、「2004/10/13 00:00:00」がそれぞれ 「0:00:00]、「2004/10/13」と入ってしまいます。 フィールド名が固定ではないので、一旦一行目だけ読取り、 全フィールドをテキスト型にしたテーブルを作ってから DoCmd.TransferText acImportDelim, , テーブル名, ファイル名, True としてるのですが、上記のように変換してしまいます。 作成したテーブル名にインポートウィザードでインポートすると ちゃんとそのまま入るのですが、自動化させたいのでVBAで処理したいのです。 何か指定の方法等ありましたらお教えください。 よろしくお願いいたします。
>>513 インポートウィザードで定義を記録できなかったっけ?
確かウィザードに設定ってボタンがあって
インポートの仕方を保存できたと思う。
それでその定義をVBAで使えばよかったような気がする。
うろ覚えなんで、間違ってたらスマソ。
515 :
513 :04/10/14 10:26:42
>>514 ご回答ありがとうございます。
ただ、インポート定義って、固定フィールド名になったりしませんか?
フィールド名が常に変わる可能性があるので、最初に指定しておけないのです。
インポート定義もVBAで作成できたりしないでしょうか??
いざとなったら、1行ずつ読み込みながらテーブルに入れていこうとは思ってるのですけど…
516 :
名無しさん@そうだ選挙にいこう :04/10/14 17:05:41
いままで問題なく使えていたのですが使えなくなりました。
たぶん当方が何かやったとおもうのですが・・・
【目的】
http://www.vector.co.jp/soft/win95/business/se308035.html にある「一気に見積りから領収書」というものを使っています。
【条件】
Windows2000Professional、Access2000(Office2000プレミアム)
■試したけどうまくいかなった処理
【概要】
いつも起動でクリックしていた.mdeファイルを開くとAccessが起動。
アプリ(!?)の最初のメニュー画面が表示された直後にエラーメッセージ
「イベント プロパティに指定した式 読み込み時 でエラーが発生しました:クエリ式’小数桁’の」
「*マクロ名、ユーザー定義関数名、[イベント プロシージャ]以外の式が指定されています。」
「*関数、イベント、マクロの評価でエラーが発生しました。」
とでるときと、または、
「ActiveXコントロールはオブジェクトを作成できません」
とでた時が一度だけありました。(エラー番号は失念)
■これだけはやりました
1)エラーメッセージからググって調べ「参照設定」を変えると効果がありそうだと知り試そうとしましたが、「参照設定」が選択できず。(ダメ)
2)オフィスを修復インストール(ダメ)
3)オフィスを削除後、再インストイール(ダメ)
【Googleで調べた】はい
【検索キーワード】上記のエラーメッセージを全組み合わせで。
>>517 ありがとうございました。
…ただ今回は期日が迫っていたため、
結局1行ずつ取り入れるようにしてしまいました。
次回、同様の作業が入った際には活用させてもらいます。
本当にありがとうございました。
520 :
名無しさん@そうだ選挙にいこう :04/10/16 01:44:53
>>519 516ですが、返答ありがとうございます。
VB6ランタイムとMDAC2.8の上書きについては、
別の掲示板でも指摘され、すぐに実施しましたが・・・効果ありませんでした・・
もう一件(バグ)につきましても、対策パッチ(レジストリ修復プログラム)を当てても効果がありませんでした・・・
う〜ん
そうそう、思い出しましたが、
最後に正常に動作してから、何本かゲームの体験版等をインストしてアンインストールを繰り返しましたが、
それも関係があるのでしょうか?
ちなみにそのゲームは「レインボーシックス3体験版(シングル&マルチ両方)」「メダル・オブ・オナー体験版」などの3Dアクションゲームです。
521 :
名無しさん@そうだ選挙にいこう :04/10/18 16:24:19
レポート上で、テキストボックスが異常に長い時、 「印刷時拡張」で全長が印刷されるようにするにはできますが、 レイアウト全体がページからはみ出て、狂ってしまうのですが、 なんとか出来ないものでしょうか?
>>521 上限の高さでデザインして「印刷時縮小」にしてはどうか。
やったことないけどw
あるいは、文字数を数えて、フォントサイズを小さくするような
処理を入れる。
523 :
名無しさん@そうだ選挙にいこう :04/10/18 22:10:57
524 :
521 :04/10/19 11:17:12
>>522-3 レスありがとうございます。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Dim Fsize As Integer
Select Case LenB(Me![FIELDx])
Case Is > 10
Fsize = 20
Case Is > 5
Fsize = 28
Case Else
Fsize = 38
End Select
Me![FIELDx].FontSize = Fsize
End Sub
でやったら、文字数に関わらず、全部最小フォントになってしまいました。
これは、指定したフィールドに一つでも長いデータがあれば、
全レコードをフォント小さくしてしまうのでしょうか・・・。
525 :
521 :04/10/19 15:13:49
ああ、数字いじったらできました、すみません・・・。 ありがとうございました、助かりました。
526 :
名無しさん@そうだ選挙にいこう :04/10/20 20:44:49
仕事でACCESSを使いたいので家で勉強したいんですけど、 ACCESSってWORDとかみたいに初めからパソコンに入ってないんですか? 新たにソフトを購入しないとできなんですか? 誰か教えてください。
Office Professinal 以上か単体で Access をご購入くださいませ。 MSDN 購読する手もある。
528 :
名無しさん@そうだ選挙にいこう :04/10/20 20:59:19
やっぱり今の状態(XP Home)じゃ無理なんですね。 分かりました。 レスど〜もです。
XP Homeだから無理ってわけじゃないでしょ。 OSは今のままでOK とりあえず\30,000出してAccess最新バージョンを買う。 この\30,00は高くないよ、絶対。 1か月もいじくり回せば思い知る。あまりの安さに震えがくるほどだって。
ACCESSって機能を考えたら安いよ。 入力、加工、出力まで一連の作業が1つのソフトで出来るし VBA使わなくてもVBもどきの帳票が作れるんだから。
531 :
お願い :04/10/21 09:25:07
テーブル,クエリーを隠しオブジェクトにし、 シフトキーも無効にしたのですが、 他のDBからインポートで指定すると全てが見れてしまいます。 インポートできなくする方法を教えてください。
>>530 逆、VBでAccess並のグリッドや
帳票を作るとなるとサードパーティのを使わないと大変。
きちんとしたものを作るとなると、VBAは必須だけど。
>>531 ・DBにセキュリティを設定する
・My Documentsに奥
534 :
お願い :04/10/21 14:42:48
ご回答ありがとうございました。 ・DBへのセキュリティ設定ですが、1DBの中のレコード単位に アクセスコントロールをしたいので、別途アクセスコントロール用の 項目を用意してログオンIDで利用可能なレコードをクエリーで制限 しています。 よってDBへのアクセス自体は許可するのでセキュリティ制御は できません。 ・My Documentsに置くのは自分のみで使うためですか? DB自体は上記のように共用で使うのですが・・・ やはり無理でしょうか???
>>534 >クエリーで制限しています。
つうことはもう作ってんのね。
MSDEにしてビューだかレコードを返すストアドだかに置き換えたらどうか。
普通のユーザはストアドの実行だけできるようにする。。。
やったことないけど。
ボタンに絵と文字を両方表示させる方法ってないでしょうか。
537 :
名無しさん@そうだ選挙にいこう :04/10/21 22:02:36
アクセスのクリエは、テーブルや他のクリエを参照するけれど、いくつまで参照できるの?
ク-リエ イイ!!
30個ぐらいはいけたはず
「Accessの定義」か何かでヘルプに書いてなかったっけ
>>536 絵と文字が両方入ったbmpを自分でつくる
で、ボタンのピクチャにそれをあてる
じゃだめ?
>>538 うーん、やはり通常の方法では無理っぽいですね。
レスありがとうございました。
いままでAccess2000を使っていて、最近2003に変えました。 ワークテーブルに連結したテキストボックスにソース上から値を代入し、 その時点では、レコードに確定されていないデータを確定するにはどのような方法がよいでしょうか。 2000ではRequeryするだけでよかったのですが、2003ではエラーが出てしまいます。
>>540 Docmd.RunCommand acCmdSaveRecord
でいいんでないのな?
>>542 レコードは保存できませんでした。とエラーになりました。
とりあえず、SendKeys ("+{ENTER}"), True
をつかって、確定させました。
2003は不便なところ多いですね・・。
では、失礼します。
絵の入ったボタン、文字の入ったボタン、 まるで一つのボタンのようにくっつけて配置 上下でも左右でもそこはお好みで でもってクリックイベントを一緒にすれば、これはもう一個のボタン。 こんなんじゃだめですかそうですか。
>>539 コマンドボタンは取りあえず「絵」にして置いて
プロパティの「ヒントテキスト」を説明(文字)を入れるか...
ラベルで文字を書いてコマンドボタンに重ねるとか...
文字は透明なラベルにして重ねておくという手もある。
547 :
名無しさん@そうだ選挙にいこう :04/10/23 11:40:41
質問です
よろしくお願いします。
元のテーブルのデータを商品名で分類し、クエリ10個ぐらいに分けたい、
クエリ1は商品名a,b,c,d,e、クエリ2はf,g,h,i,j、・・・とやっていって
(アルファベットは↑の様でなく2文字の組み合わせ、順はバラバラ)
クエリ10はその他として商品名がa,b,c,・・・以外のものとしたいんですが
クエリ10を商品名not a and not b and ・・・と条件を設定して
表示させようとすると「複雑すぎて表示できません」となります。
どうすればいいのでしょうか?
【. 条 件 】ACCESS97使用
■これだけはやりました
【
>>1 を読んだ】 はい【googleで調べた】はい
【検索キーワードは?】クエリ 複雑 で検索、場合が違うのかわかりませんでした。
単純に SELECT * FROM テーブル名 WHERE 商品名 = ○○ を10個作ればいいんじゃないの? ○○はaとかbの商品名ね。
ああ、ごめん。よく読んでなかった。 SELECT * FROM テーブル名 WHERE 商品名 <> a AND 商品名 <> b AND … でいいと思われ。
>>547 気が向いたら不一致クエリでも
クエリ1〜クエリ9を、元テーブルとレフトジョイン
で、それぞれ商品名 Null
クエリのデザインビューにオブジェクトがいっぱい並んで楽しい
551 :
547 :04/10/23 17:47:40
レスありがとうございます。 説明不足でした。 クエリ1から9は出来ました。 クエリ10その他(クエリ1から9以外)ができません。 549さんのおっしゃるとおり 商品名のところにnot A and not B and ・・・と100個くらい入れましたが 「複雑すぎて・・・」と表示されます。 (SQLでなくてクエリの画面でやるのがまずいのでしょうか?) 上の条件のほかにもうひとつ日付の絞りがあります。 550さんのおっしゃる方法ですが 初心者で?ですがこちらはご回答でしょうか? どちらにしても楽しいと書いてあるのでしらべてやってみようかなと思います ありがとうございました。
552 :
名無しさん@そうだ選挙にいこう :04/10/23 19:33:06
商品テーブルがあるなら、そこに商品群フィールドを追加して それで抽出するというのはどうかな
>>551 ま、あくまで方法のひとつよん。
新規クエリつくって、そのデザインビューで
クエリ1(商品名) ←(商品名)元テーブル(商品名)→ (商品名)クエリ2
んな感じで元テーブルと各クエリを結ぶ
矢印の向き、間違えないでね。向きは、結合線にマウスポインタ当てて右クリック
でもってクエリのフィールドに以下を追加
フィールド 商品名 商品名 商品名・・・
テーブル クエリ1 クエリ2 クエリ3・・・
抽出条件 Is Null Is Null Is Null・・・
ところで地震は・・・(ウチハチョトユレタ)
mdeをmdbに変換する裏技ってないですか? 会社で使っているソフトがMDBファイルなのですが使いづらいので一部修正したいのですが MDEのままだと編集できないのです。
555 :
修正 :04/10/24 15:34:02
>>554 会社で使っているソフトがMDBファイル→MBEでした。
>>554 mdeをmdbにもどすのはムリ。
そのアプリの製作元に言えばソース公開してくれるかもよ。
それか金払って製作元に修正してもらうかだな。
>>552 後々のこと考えるとこれが一番いい方法なのでしょうね。
ありがとうございました。
>>553 不一致クエリ使ったことなかったんですが
手取り足取りご説明いただいたおかげでできました。
またひとつ進歩でき感謝感謝です。
ありがとうございました。
559 :
名無しさん@そうだ選挙にいこう :04/10/26 00:02:13
【. 目 的 】 社内データのまとめ
【. 条 件 】 OS WINDOWS NT 4.0、ACCESS2000
【. 概 要 】検索画面をうまくつくりたいのですがうまくいきません。
テーブルには大項目、中項目、小項目があります。
検索フォームがあり、そこにはコンボボックス1、コンボボックス2、テキストボックスがあります。
それぞれのコントロールにテーブルのそれぞれの項目を反映させたいです。
コンボボックス1で大項目を選択すると、コンボボックス2で中項目が絞り込まれる。
絞り込まれたコンボボックス2の値を選択すると、テキストボックスに小項目の内容が表示される。
このような検索画面をつくりたいのですが、テキストボックスに表示させるというのができません。
どのようにすればうまくいくか、教授お願いします。
【駄目な理由】大項目から中項目を絞るには、クエリを組み、コントロールボックス2の値の参照にそのクエリをいれればできましたが、
テキストボックスは「値の参照」ができないので、どうすればできるのかわかりません。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 access解説サイトをみて回りました
知識不足からうまく説明すらできてませんが、よろしくお願いします。
560 :
559 :04/10/26 00:03:55
文章ずれまくったOTL かさねて申し訳ないです。
562 :
えびぞう :04/10/26 09:24:54
Access2000で突然、ウィザードを利用してのクエリやレポート作成ができなくなりました。 「ActiveXコントロールはオブジェクトを作成できません」というメッセージが出てきます。 再インストール等しましたが、回復できません。 このため仕事にならず困っています。どなたか助けてください。
>>559 コンボボックス1の
値集合タイプ:テーブル/クエリ
値集合ソース:SELECT 大項目 FROM テーブル名 GROUP BY 大項目;
列数:1
列幅:2cm
連結列:1
イベント-更新後処理:マクロの再クエリ(コンボボックス2) か Me.コンボボックス2.Requery
コンボボックス2の
値集合タイプ:テーブル/クエリ
値集合ソース:SELECT 中項目, 小項目 FROM テーブル名 WHERE 大項目= Forms!フォーム名!コンボボックス1;
列数:2
列幅:2cm;0cm
連結列:1
テキストボックス
コントロールソース:コンボボックス.Column(1)
※但し、中項目に対する小項目が1つの場合
>>562 ツールバー「ツールボックス」にコントロールウィザードがオフになっただけでは?
565 :
えびぞう :04/10/26 16:20:56
>>564 "ツールバー「ツールボックス」にコントロールウィザードがオフ" って
何処にあるんですか?しろうとでごめんなさい!
その設定をすると全てのACCESSでそうなるのですか?
>>565 だから「ツールバー」って書いてあるでしょ
適当なフォームをデザインビューで開くと現れるはずでが
非表示しているなら
メニュー>表示>ツールバー>ツールボックスをクリックして表示
左から2番目
ACCESS2000を使用しているのですが、 変数の名前をオブジェクトの名前として代入する事は出来ますでしょうか。 やりたいこととしては、 Dim NULLPO As TextBox Dim GAXTU As Variant GAXTU="処理して組み立てた現存するテキストボックス名" Set NULLPO=GAXTU Me.Controls!NULLPO.Visible=False といったような事がしたかったのです。 これを実行すると、 Set NULLPO=GAXTU で「オブジェクトが必要です」と言われてしまうのですが、 やはり簡単にそんな事出来ないのでしょうか(;´Д`)
563さん ありがとうございます。 教えていただいたとおりにやってみたのですが、テキストボックスには #Name? という風に表示されています。 中項目に対する小項目はひとつだけなので、 563が思っているとおりでいいと思います。 コンボボックス1の値集合ソースのGROUP BYでも構文エラーがでました。 561さん VBAはいまのところリクエリにしか使用していません。 なぜエラーになるのか全くわかりません。 自分でもいろいろ試してみますので、みなさん引き続きよろしくお願いします。
すみません。ACCESS初心者なのですので、ここで聞くほどのことではないかもしれませんが、よろしくお願いします。
【. 目 的 】 オプショングループコントロールを4組並べたフォームを作成しています。1組目の入力値によっては、2組目以降を入力不可にしたいのですができますか?
【. 条 件 】 ACCESS2000
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 access フォーム 入力規制 オプショングループコントロール 入力値による
>>569 VBAを使えるなら
中項目コンボボックスの変更時イベントに
Private Sub 中項目_Change ()
dim dbs as DataBase, rst as RecoredSet, strSQL as String
Set dbs = CurrentDB
Set rst = dbs.OpenRecordset("テーブル名")
strSQL = "小項目 = " & Me!中項目
rst.FindFirst strSQL
Me!小項目 = rst!小項目
Set dbs = Nothing
rst.close
Exit Sub
っていう感じのプロシージャを書くか
Public Function Get_小項目(中項目 as String) As String
Set dbs = CurrentDB
Set rst = dbs.OpenRecordset("テーブル名")
strSQL = "小項目 = " & Me!中項目
rst.FindFirst strSQL
Get_小項目 = rst!小項目
Set dbs = Nothing
rst.close
Exit Function
っていう関数を作って小項目のコントロールソースに埋め込むかでできるはず。
>>570 の補足
やってることはどちらの同じ。
元のテーブルのレコードセットを開いて選択した中項目に該当する小項目を検索して
小項目のテキストボックスに代入してるだけ。
他にも同様の箇所がいくつかあるなら後者の方が便利だけど、いろいろエラーでそうなので
あんまりお勧めしない。
いずれにしろ小項目が中項目に対して唯一ユニークでないかぎりどちらも使えない。
あと、検索でNoMatchの時のためのエラー処理も必要です。
>>570 の訂正
strSQL = "小項目 = " & Me!中項目
↓
strSQL = "中項目 = " & Me!中項目
>>570-572 とり急ぎありがとうございます。
まだ試していませんが、以前、VBAを使ったことがあるので
やってみます。
574 :
名無しさん@そうだ選挙にいこう :04/10/27 16:19:16
マクロであるフィールドがAの場合とそうでない場合、 異なるレポートをプレビューさせる設定をしました。 すると、印刷しなくていい方のレポートのフォーマット時のプロシージャが開いて 「値がありません」というメッセージが出ます。 多分VBAの格納の仕方に問題があると思います。教えて、偉い人。
575 :
574 :04/10/27 16:35:06
因みにプロシージャ内にMeプロパティがあります。 Select Case LenB(Me![フィールド名]) Me![フィールド名]じゃない表記をすればいいんでしょうか?
576 :
574 :04/10/27 17:02:05
またマクロ 条件 アクション [Forms]![検索]![型]="A*" Aのフォームを開く … マクロの中止 [Forms]![検索]![型]<>"A*" 非Aのフォームを開く これは式としてまずいでしょうか?
>574 レポートのプレビューを表示させるコードにブレークポイントを設定して コードを追いかければわかるだろう?
578 :
574-576 :04/10/27 17:16:24
>>577 レス有難うございました。
マクロ式を変えたら、うまくいきました。
多分Me!プロパティの式は、複数オブジェクトが開くと走らないんだと思います。
マクロ条件でマクロの中止を挟んで、解決しました。
お騒がせしました。
579 :
名無しさん@そうだ選挙にいこう :04/10/27 17:44:08
データをテキストファイルからインポートしたいのですが区切りがないので [スペースによって右または左に揃えられた固定長フィールドのデータ]で 区切らなければならないのですがそのとき何故か右端まで表示されません。 いったん、テキスト→エクセルでひらくと出来ますがテキスト→アクセスだと 右端まで表示されないのでデータが削除?されています。 テキストからいきなりアクセスで開くのに問題があるのでしょうか? 何か解決策ご存知の方教えてください。 エクセル・アクセスとも97使用です。検索しましたがわかりませんでした。 よろしくお願いします。
580 :
名無しさん@そうだ選挙にいこう :04/10/27 17:56:54
もうひとつよろしいでしょうか? テキスト形式でインポートした20040901という数字を2004/09/01と 表示させるにはクエリをどうしたらいいですか? (元のデータは040901となっているので日付でインポートできません) date(mid(1,4),mid(5,2),mid(7,2))でやったらエラーが出ました。 よろしくお願いします
561さん 563さん ありがとうございます。 実は自分の入力ミスで563さんの方法でできておりました。 手間をかけさせて申し訳ありません。 561さんに考えていただいたコードも試したのですが、Name?という表示で うまくいきませんでした。今の自分にはコードの意味すらわからないので、 いずれ理解できるようにがんばります。 563さんの方法で表示させること自体には成功したのですが、 小項目の文字数がかなり多いため、 テキストボックスに表示した時に全文表示されません。 コンボボックス → テキストボックス というデータの流れなので、コンボボックスに 値が入った時点で文字数OVERになり、OVER分は切り捨てられるのだと思います。 結果、切捨てられたものがテキストボックスに表示されるので、だめでした。
テキストボックスにテーブル、クエリの値を代入できれば解決なのですが、 しようとしてもエラーになります。 確か"このオブジェクトには値を代入できません"みたいなエラーでした。 テキストボックスにテーブルの値を代入はできないのもなのでしょうか。 また563さんに書いていただいたコードではできないのでしょうか。 またコンボボックスの文字数制限で起こる この問題を解決する方法はできないのでしょうか。 ググったり、accessサイトをみてまわったのですがわかりませんでした。 質問ばかりで申し訳ありませんが、わかる方、よろしくお願いします。
>>582 小項目のデータ型は?メモ型?
テキストボックス
コントロールソース:コンボボックス.Column(1)
これを
DLookup("[小項目フィールド名]","テーブル名","[中項目フィールド名]=" & Forms!フォーム名!コンボボックス2名)
中項目がテキスト型なら...
DLookup("[小項目フィールド名]","テーブル名","[中項目フィールド名]='" & Forms!フォーム名!コンボボックス2名 & "'")
これではどうでしょ?
=DLookup("[小項目フィールド名]","テーブル名","[中項目フィールド名]=" & コンボボックス2名) 中項目がテキスト型なら... =DLookup("[小項目フィールド名]","テーブル名","[中項目フィールド名]='" & コンボボックス2名 & "'") 「=」が抜けてたのと、コンボボックス名は上のように省略できますね。 ※コントロールソースと名前が同じだと#Nameがでるので名前を 「cmb中項目」のように変更してください。
585 :
名無しさん@そうだ選挙にいこう :04/10/29 00:42:21
複数のユーザーでデータベースを共有していて、 あるテーブルのフィールドにユニークなキーを保存したいとき、 他の人と重複せず、かつできれば通し番号で取得したいと思いますが どんな風に取得すればいいかアイディアはありませんか? 普通にMAXを取得して+1すると、複数のユーザーが同時に取得すると 同じ数字になってしまいます。 綺麗な方法ではないかもしれませんが、たとえば取得した値を レコードセットでaddnewしてみて、エラーが出たら次の数字を・・・ って形は考えたのですが、もう少しスマートな方法が無いかと 思いました。なにかアイディアがあれば教えてください。
>>579 1レコードの長さが長すぎってことはありませんか?
制限があったと思ったのですが・・・。
>>580 mid("日付",1,4) & "/" & mid("日付",5,2) & "/" & mid("日付",7,2)
これでどうでしょう
>>585 僕はなんのこだわりもなく番号発行テーブルからとったオートナンバー使ってる
共有フォルダに置いた番号発行テーブル、フィールドは[番号]のみ(オートナンバー)
Dim MyRecNum As Long
Dim MyDbCnn As New ADODB.Connection
Set MyDbCnn = ・・・・
Dim MyTbl As New ADODB.Recordset
Set MyTbl = New ADODB.Recordset
MyTbl.Open "番号発行テーブル", MyDbCnn, adOpenKeyset, adLockOptimistic
MyTbl.AddNew
MyTbl.Update
MyRecNum = MyTbl![番号]
MyTbl.Close
Set MyTbl = Nothing
MyDbCnn.Close
Set MyDbCnn = Nothing
この番号発行テーブルはどんどん膨れ上がっていくので、1日の業務終了時に
尻尾の10個ぐらい残して他は削除したうえ、最適化するように仕込んでる
空っぽにして最適化したら何もかも台無し(オートナンバーがゼロに戻っちゃう)
このやり方は、連番にこだわる人にはおすすめできません。番号とって作業途中で
投げ出しちゃったら、そこは欠番になる。
アクセス2000使っていますが、以下の原因がわからず困っています。
レポートのページフッターにグループとは関係なく小計を出そうと思い、以下のページを参考にしたのですが・・
ttp://www.tsware.jp/tips/tips_016.htm 一応小計は出るようにはなったんですが、10枚ほどレポートを出すとそのうち2〜3枚は小計が合いません。
誤差を計算してみると、200,000とか400,000とかキッチリとした数字ばかり合わないようです。
計算の元になる数字は細かい数字ばかりで、null値もありません。
どなたかアドバイスいただけないでしょうか?よろしくお願いします。
すいません、解決しました。計算はあっていましたが、表示の方法がまずかったようです。 スレ汚しスマソ
>>587 MyTbl.AddNew
MyTbl.Update
MyRecNum = MyTbl![番号]
こういう使い方を始めて知りました・・・。
大いに参考にさせていただきます。
>>586 お答えくださってありがとうございます。
1レコードの長さですが長さの違う5つテキストファイルをインポートして
結果5個とも少しずつ右端が切れます。(5文字分くらい)
なので長すぎるから、というわけではなさそうなんです。
でも、長さに制限あるとのことなので何らかの問題があったのかもしれませんね
dateの方ですが私の記述ミスで(すみません)
貴殿書かれたとおりフィールド名もいれてありました。
date(mid・・・、とやって出来なかったので/をくっつけるという荒業?に
こんな邪道で大丈夫かな?と思っていたのですが。
何か微妙に違うのでしょうね。
わざわざお答えくださってありがとうございました。
>>591 単に表示欄の幅が狭くて表示されてないだけなんてことはない?
>>585 サイズはどれぐらいになるか想像もつかないけれど。
ついでに、そんなデータをつくるのにどれぐらい時間がかかるか想像もつかないけれど。
けっきょくこれは単なる脳内実験で、実用にたえるものかどうかわからないけれど。
連番で20億ぐらいまでの数字が入ったテーブルを最初から用意しておく
(Long型ならたしかそれぐらいまでいけたはず)
そのレコードセットを開いて、MoveFirst
数字をとる。
とったら消す。
作業途中でキャンセルしてその数字を使わなかった場合は、元のテーブルに戻す(こうすれば欠番は出ない)
ACCESSのおもしろい利用法ないっすかね?会計や帳簿整理以外で。
595 :
名無しさん@そうだ選挙にいこう :04/10/30 06:11:31
お世話になります。 クエリでレコードの並び順を1つのフィールドで地域の件数が多い順に 並べ替えたいんですがどのように書けばよいでしょうか。 例: 地域 氏名 東京 佐藤 東京 中村 東京 山田 東京 伊藤 大阪 佐竹 大阪 木田 大阪 武田 福岡 近藤 福岡 鈴木 といった具合にです。 当方VBAも使えますのでクエリでは厳しかったらVBAでお願い致します。
>クエリでレコードの並び順を並べ替えたい ひょっとしてそれはギャグで言っているのか? SELECT 地域, 氏名, COUNT(*) FROM テーブル GROUP BY 地域, 氏名 ORDER BY 地域, COUNT(*) DESC
>>593 問題は、同時にその値を取得したときですね。
2つのクライアントで同時にある番号を取得したときどうするかと。
Docmd.runsql"delete 〜"で消すと件数が0でもエラーになりませんので
同じ番号が取得できてしまいます。
消しても追加でもいいですが、同時に同じ番号を取得しないように、
もしくは、違う番号を自動的に取り直すように組みたいですね。
599 :
名無しさん@そうだ選挙にいこう :04/10/30 13:18:12
>>596 返信ありがとうございます。
教えていただきましたSQLを実行してみましたが
Count(*)の所が全部1になってしまい、並べ替えできませんでした。
どこを直せばよいでしょうか
よろしくお願いします。
600 :
名無しさん@そうだ選挙にいこう :04/10/30 15:17:45
epson vp-800というドットプリンタ使っていますが、レポートでテキストボックス を配置し、均等割付をした時、フォントを「中太」や「太字」にすると一番右端の 文字が1ドットほど切れます。「中字」は切れない。「普通」だと文字が出ないです。 均等割付だけに起こる現象ですが、対処方法があるでしょうか。 アクセス2002で、プリンタドライバはネットからダウンロードした最新のものです。
>>585 ある意味賭け、だったりします
追加にしろ削除にしろホントに同時に、0.00何秒の狂いもなく行われてしまった場合どうなるか。
知らね〜(こればかりは実験もできない)
処理がコード何十行にもなるようなものだったら、使用中フラグ、自前ロックつけるけど、
それだって「同時」の確率はゼロとは言い切れない。
587程度の処理だったら「同時」の確率は自前ロックと変わらないから、まあここらへんが
素人のあきらめどころかと妥協しました(今のところ無事故)
ACCESSですが、さきほどまで何の問題もなく作業できていたのですが、 突然何をやっても「引数が無効です」エラーがでて作業できなくなって しまいました。 具体的にはクエリーでテーブル作成やデータ追加などの処理を行う際に このエラーがでてしまいます。 特別なことはしていないのですが、どうしたら復活できるでしょうか?
>>602 クエリを開いて閉じるだけでACCESS様の機嫌を損ねてしまうことも。
再起動してから試すと、すんなり通ることもあるし。流石JET!
>>604 何もいじってないよ。
で、一部のテーブルをテキスト形式でエクスポートして、
別の新規作成アクセスでクエリー作ったらできた。
ということは、一定容量越えると動作しなくなるってことかな?
単独で1.99Gもある・・。
608 :
名無しさん@そうだ選挙にいこう :04/10/31 12:06:12
>>606 クライアントとDB本体を同一ファイルにするのは極力避けた方が賢明ですよ。
GBスケールのmdbを扱う人間がホントにいたってことか 最適化したら所要時間報告キヴォンヌ
610 :
名無しさん@そうだ選挙にいこう :04/10/31 18:12:26
アクセスで処理するレベルで無いように思いますが・・・
>>610 何を使えばいいの?
アクセスのキャパはどれくらい?
612 :
名無しさん@そうだ選挙にいこう :04/10/31 20:46:30
>>609 最適化せず、ほったらかしにしとけば簡単に逝く。
ちなみに漏れはGBクラスのMDBなど日常的に使用している。
でかすぎて、テーブル毎にmdbを使っている。
まぁいつぶっ飛んでも困らん程度のものではあるのだが(w
613 :
名無しさん@そうだ選挙にいこう :04/10/31 21:49:58
614 :
名無しさん@そうだ選挙にいこう :04/10/31 21:52:10
GBのMDBって実寸だとしたらすげーな 見たこともね。 以前、何となくこの目で確かめたくなってサンプルデータつくろうとしたけどけっきょくあきらめた。 たしかAddNew100万件で3分ぐらい これでようやく15MB 単純かけ算、30分で150MB、5時間で1.5GB やってられね
617 :
名無しさん@そうだ選挙にいこう :04/11/01 01:26:27
>>616 PCしょぼくないか?
3分はありえないんだけどなw
619 :
名無しさん@そうだ選挙にいこう :04/11/01 12:17:45
Access2000で開発しています。 そのシステムを複数端末で使う仕様になってます。 僕は普通にアプリケーションとデータベースを別けて aaa.mdb(アプリケーション用MDB) bbb.mdb(データベース) とし、aaa.mdbはbbb.mdbをリンクテーブルで使い サーバにはbbb.mdbを置き、各端末にaaa.mdbを置くように考えています。 ここで質問なんですけど、やっぱaaa.mdbは各端末に置く必要があるのでしょうか? 例えばaaaもbbbもサーバに置いて、各端末からaaaをみんなで使用するって事は まずいんでしょうか?それとも不可能なんですかね? なんか根本的にずれてる質問かもしれませんが、教えてください。
複数端末ならMSDE+adpにしとけ
>>619 サーバに負荷をかけるか端末にかけるかの違いだけ
好きなほう選べ
>>607 ,
>>608 遅くなりましたが、ズバリ回答いただきましてありがとうございました。
いろいろ参考になりました。
623 :
名無しさん@そうだ選挙にいこう :04/11/01 22:38:25
レポートのラベルにCaptionで文字を入れようとしていますが 入りません。 ラベルにVBAから文字を入れるにはどうすればよいのでしょうか。
>>616 1テーブル4項目に4000万件で1.5GBだった。
1000件づつINSERTしたら約10分で終わったよ。
最適化してこのレベルだと、もはやAccessの適用範囲ではないな。
625 :
名無しさん@そうだ選挙にいこう :04/11/02 00:10:32
ところで,処理速度をあげるために何か工夫をしていますか? (コード記述上の工夫や,構造上の工夫など) 一般的にこうすれば速度が向上するというのがあれば,助かります。
>>623 どのイベントでやってる?
Report_Openあたりで Me.ラベル名.Caption = "別ラベル名" でいけるでしょ?
>>595 SELECT テーブル1.地域, テーブル1.氏名
FROM テーブル1 INNER JOIN [select 地域,Count(*) as c from テーブル1 group by テーブル1.地域]. AS ddd ON テーブル1.地域 = ddd.地域
ORDER BY ddd.c DESC;
628 :
595 :04/11/02 18:38:52
>>627 返信ありがとうございます。
SQLで引き出したレコードをこれで変更したいんですが
Set rs = New ADODB.Recordset
rs.Open SQL, cn, adOpenStatic, adLockOptimistic
どうすれば出来ますでしょうか。
お願いします。
>>625 1:必ず正規化する
2:複雑なクエリを組まなくてもすむようなテーブルを設計する
3:インデックス(プライマリキー?)を意識しながら組む
4:ロックが必要なら必要な所だけを短時間する
5:テストは想定してるMAX以上の件数でやる
DBを使うときはこんな感じで作っている。
コードはいたってノーマルで工夫は殆どないなぁ
SQL一発で取得や更新できる所をループして計算するとか
アホな処理を入れなければ影響はないと思う。
でもUIはクセがなく使いやすいように工夫するよ。
設計・ロジックが素晴らしくても、UIがショボイとユーザーは評価してくれないからねぇ
630 :
595 :04/11/03 08:24:21
>>627 さんに教えていただいたSQLを元にレコードを更新しようとすると
「読み取り専用なので更新できません」て出ます。
rs!氏名="あああ" の所で止まります。
どうすれば更新可能になるんでしょうか。
632 :
595 :04/11/03 12:51:29
>>631 Set rs = New ADODB.Recordset
rs.Open SQL, cn, adOpenStatic, adLockOptimistic
これの
>>627 さんに教えていただいたSQLの部分で抽出したレコードを
Do Until rs.EOF
rs!氏名="あああ"
rs.update
Loop
これで更新しようとしてます。
何か手立てありませんでしょうか。
633 :
名無しさん@そうだ選挙にいこう :04/11/03 13:32:06
634 :
名無しさん@そうだ選挙にいこう :04/11/03 14:32:24
rs.Edit
っつぅかINNER JOINが入ってると更新できないのでは?
636 :
名無しさん@そうだ選挙にいこう :04/11/08 22:25:15
教えてクンスマソ。。。 アクセスで在庫管理をしているんですが、離れた工場から本社のデータにアクセスするのはやはり無理な話でしょうか?
本茶の鯖←本茶の倉の一台←リモートデスクトップ←向上
638 :
名無しさん@そうだ選挙にいこう :04/11/09 11:18:07
あるメモ型のセルを書き直して下矢印キーを押すと 『レコードに検索キーが見つかりませんでした。』 と出て、編集出来ません。私のアクセスにはヘルプが入ってないので、 どなたか教えて下さい。
640 :
名無しさん@そうだ選挙にいこう :04/11/09 15:15:05
638です。 ヘルプは入ってました。 イルカは出てくるのですが、何も言ってくれません。 そのレコードを削除しようとしても 『レコードに検索キーが見つかりませんでした。』 と出ます。どなたか教えて下さい。
>>640 どうやって消そうとしたのか、興味あるな
【. 目 的 】 発注依頼書をまとめたい。DBを作ってみようとチャレンジしたのですが最初のテーブルを作る段階で つまづきました。正規化がよくわかりません。物件名をクリックすると発注依頼書の詳細がでてくるようにしたいのです。 【. 条 件 】 WindowsXP acces2002 ■試したけどうまくいかなかった処理 【. 概 要 】 正規化がわかりません・・。テーブルを分けようと試みてみたのですが 発注依頼書目次>注文番号・・日付・工番 工事名称・納入先・総額(税別)・代金支払い方法 検印・係印・終了印・備考 下請け会社名>(10社程度) 物件名>(30件程度) 契約先>(2社) 工期>工期(自)・工期(至) 工事内容>据付工事・電気工事・追加工事 自社プロフ>自社名・自社住所・自社電話番号・自社郵便番号 商品>品名・型式・数量・単位・単価・金額 地区別分類>大阪物件・広島物件・東京物件 【駄目な理由】 初めてaccesに触りました。一週間でマスターするacces2003「データベース構築基礎」という本を読みながら 見よう見まねで作り始めたのですが、テーブルの正規化がわかりません・・。 これだけの項目をどう分けたらいいのか、誰か教えてもらえませんか? 【検索キーワードは?】 正規化・発注依頼書・acces・モデリング・データベース
644 :
名無しさん@そうだ選挙にいこう :04/11/09 23:06:21
645 :
名無しさん@そうだ選挙にいこう :04/11/09 23:09:48
>>642 ここも追加
tp://www.akimoto-jp.com/java/Database/DatabaseSystem.html
646 :
名無しさん@そうだ選挙にいこう :04/11/10 11:06:08
638,640です。 一列を選択し、右クリックで、レコードの削除をしようとしましたが、 また『レコードに検索キーが見つかりませんでした。』 とでます。
647 :
名無しさん@そうだ選挙にいこう :04/11/10 12:41:35
レポートにある直線オブジェクトが全部印刷されなくなったんですが、 一体なんでしょう? 黒い実線、不可視ではありません。
648 :
名無しさん@そうだ選挙にいこう :04/11/10 14:45:11
【. 目 的 】 まいとー*FAXを使用した、FAX送信機能を作成していたのですが、同一の相手へ複数のレポートを送信する処理で悩んでおります。 レポートA,B,Cがあり、各レポートをまとめて相手に送信したいのですが、1回の発信(ダイアル)で行ないたいのです。空データのレポートがあったりもするので、その部分(空データ を送信しない)も考えなければなりません。 【. 条 件 】 (使用OS XP、ACCESSのバージョン 2000 FAXソフトまいとーくFAX 7Pro) ■試したけどうまくいかなかった処理 【. 概 要 】 下記処理を行なったのですが、送信(発信)できませんでした。 ----------------------------------------------------- Private Sub 送信ボタン_Click() Dim varItem As Variant Dim intResult As Integer Dim blnResult As Boolean On Error GoTo Err_送信ボタン_Click <中略>
'*1「まい***FAX」との接続
MfRemote.Connect '送信先情報の設定
'SendTo(FAX番号…)
intResult = MfRemote.SendTo( Me.FAX番号,Me.氏名, "", "", "", "", Me.電話番号,Me.ふりがな)
'送付状は無し
blnResult = MfRemote.CoverPage("")
'*2レポートの印刷
MfRemote.SaveAs "urichi"
DoCmd.OpenReport "レポートA", acNormal
MfRemote.SaveAs "uriya"
DoCmd.OpenReport "レポートB", acNormal
MfRemote.SaveAs "urimantion"
DoCmd.OpenReport "レポートC", acNormal
'送信開始
MfRemote.SendFaxExecute
Exit Sub
Err_送信ボタン_Click:
MsgBox Err.Description
Resume Exit_送信ボタン_Click
End Sub
-----------------------------------------------------
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 ACCESS DDE FAX 異文書 まいとーく
どうぞよろしくお願いいたします。m(_ _)m
651 :
名無しさん@そうだ選挙にいこう :04/11/14 11:59:19
>>646 最初にヘルプがないので見れないと言った時点で割れ物疑惑がかけられてるので
レスつかないと思うよ。
>>652 イメージ作ったら、あとはFAXソフトの仕事だと思うがね
>>652 ファイルを印刷する時スプールフォルダ見ていれば解ると思うが、プリントデータは一つ一つが
完結・独立しているので、現在の仕様ではどう考えても無理。
フォーマットが似ていれば最大公約数的なレポートにして、グループ分けなどで対応するしかない。
FAXからメール環境へ移行できるなら、Snapshotにして添付する方法もある。
655 :
名無しさん@そうだ選挙にいこう :04/11/15 10:46:49
■困っている内容
レポートで"-(ハイフン)"の後の文字が改行(ずれて)しまいます
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】Access レポート ハイフン - 改行 ずれる
どうかよろしくお願いいたします。<(_ _)>
OSはWindowsXP Access2002です。<(_ _)>
>>649 以下のコードを実際に使っています。
少し変更すれば希望に添うのでは。
Dim myReport1 As String
Dim myReport2 As String
myReport1 = "レポート1"
myReport2 = "レポート2"
MfRemote.Connect
MfRemote.ClearSendFax
MfRemote.SaveAs ("A.mfs")
DoCmd.OpenReport myReport1, acViewNormal
MfRemote.SaveAs ("B.mfs")
DoCmd.OpenReport myReport2, acViewNormal
intResult = MfRemote.SendTo("123-4567", "宛先名", "様", "", "", "", "", "")
blnResult = MfRemote.CoverPage("")
'レポート1 を 1枚, レポート2 を 2枚 一度に送る
MfRemote.FaxFile ("A.mfs")
MfRemote.FaxFile ("B.mfs")
MfRemote.FaxFile ("B.mfs")
MfRemote.SendFaxExecute
2行抜けてた Dim intResult As Integer Dim blnResult As Boolean
ちょっとやってみます^^
>>657 おかげさまで、うまく動作させることが出来ました。
すべて解決しました。どうもありがとうございました。
感謝いたします m(_ _)m
【. 目 的 】コンボボックスでの連続絞り込み
種別 氏名 必殺技
−−−−−−−−−−−−−
サイヤ人 孫悟空 かめはめ波
サイヤ人 孫悟空 元気玉
地球人 天津飯 気功砲
地球人 天津飯 飛行術 のようなテーブル(T_技表)を参照して、
<フォーム> 種別|コンボ0|
↑↓ リンク
<サブフォーム> 種別|テキスト0 |
氏名|コンボ1| 必殺技|コンボ2| 対戦相手|テキスト1| ヒット数|テキスト2|
みたいな明細入力フォーム(戦闘明細 戦闘明細サブ)を作っているのですが…
【. 条 件 】 WinXP ACCESS2003
【. 概 要 】コンボボックス0→1→2 と連続的に絞り込みたいのですが、
単独フォームなら出来るんですけど、サブになると途端に出来なくなります。(リストに何も表示されない)
値リストの抽出はクエリビルダで以下のように行っています。
例・氏名コンボ1) SELECT T_技表.氏名
FROM T_技表
GROUP BY T_技表.氏名, T_技表.種別
HAVING (((T_技表.種別)=[forms]![戦闘明細]![戦闘明細サブ]![テキスト0]));
また、種別|テキスト0|の更新後処理にコードビルダで
Me!コンボ1.Requery を行っています。
【駄目な理由】 氏名|コンボ1|だけに関して言えば、クエリビルダの抽出条件を
HAVING (((T_技表.種別)=[forms]![戦闘明細]![コンボ0]));
にすれば出来るのですが、必殺技|コンボ2|が解決しません。
■これだけはやりました
【
>>1 を読んだ】 はい【Googleで調べた】 はい【検索キーワードは?】 サブフォーム コントロールの参照
どなたかご教授下さい。m(_ _)m
>>661 メインフォームのコンボ0の更新後処理のイベント
Me.サブ戦闘明細.Requery
サブフォームのコンボ1の値集合ソースは
SELECT T_技表.氏名 FROM T_技表 WHERE 種別=Parent!コンボ0 GROUP BY T_技表.氏名;
同コンボ1の更新後処理のイベント
Me.コンボ2.Requery
サブフォームのコンボ2の値集合ソースは
SELECT T_技表.必殺技 FROM T_技表 WHERE 氏名=Forms!戦闘明細!サブ戦闘明細.Form!氏名;
以上
>662 見事に解決しました、ありがとうございますm(_ _)m
664 :
えりぞー :04/11/18 16:58:57
【. 目 的 】 宛名ラベルの出力
【. 条 件 】 Win/ACCESS 97
■試したけどうまくいかなかった処理
【. 概 要 】 DM発送のため、Yes/No型でフィールドをつくり、
チェックをいれたにもかかわらず、レポートの宛名ラベルにはすべてのレコードが出力されてしまいました。
【駄目な理由】 (動作状況など)
■これだけはやりました
【
>>1 を読んだ】 はい (読まない人が多いので必ず目を通してください)
マイクロソフトのサポートセンターにTELしましたが、サポート期間終了で
答えてもらえませんでした・・・。
いくらチェック入れてもクエリでフィルターかけないと全部出力されると思う。
Access2003でテーブル名を右クリック、プロパティを開くと テーブルの作成日時と更新日時が表示されますよね。 この日時をVBAで取得したいのですが、方法を教えてください。 ■とりあえずやってみたこと Tableオブジェクトのプロパティから取得できるんじゃないかと考えたので、 まず参照設定で「Microsoft ADO Ext.2.8 for DDL and Security」を追加。 モジュールを新規作成、デザインビューで「ADOX.Table」と入力して 「Table」の部分にカーソルを合わせてF1を押す。 出てきたリストから「ADOX Table(オブジェクト)」を選択して ヘルプを見ようとしたのですが、 ヘルプウィンドウが真っ白で何も表示されませんでした。 (Office2003はProfessional Editionをフルインストールしました) 僕の知識では、ここでお手上げです。よろしくお願いします。
データベース内の一部のテーブル一部のクエリを、 他のデータベースに移したいけど、 それぞれを、他のデータベースにコピペするのと、 他のデータベースに、インポートするの、どちらがよい?
>>668 SELECT Format( F1, 'GGG' )
& Choose(Left(Format(F1, 'EE'), 1 )
, '十', '二十', '三十', '四十', '五十'
, '六十','七十','八十','九十' )
& Choose(Right(Format(F1,'EE'), 1 )
, '一', '二', '三', '四', '五'
, '六', '七', '八', '九' )
& '年'
& Choose(Left(Format(F1, 'mm'), 1 )
, '十', '二十', '三十', '四十', '五十'
, '六十','七十','八十','九十' )
& Choose(Right(Format(F1,'mm'), 1 )
, '一', '二', '三', '四', '五'
, '六', '七', '八', '九' )
& '月'
& Choose(Left(Format(F1, 'dd'), 1 )
, '十', '二十', '三十', '四十', '五十'
, '六十','七十','八十','九十' )
& Choose(Right(Format(F1,'dd'), 1 )
, '一', '二', '三', '四', '五'
, '六', '七', '八', '九' )
& '日'
FROM T1
>>669 解答ありがとうございます。
SQL文(?)のようですが、この場合クエリに組み込むのでしょうか?
668のリンク先にあるような、VBAのモジュールにしたいのですが
この式をそのまま組み込むような事は可能でしょうか?
>>671 ありがとうございます。これで理解できたと思います。
早速、明日出社したらやってみます。
>>671 のコードを使って、無事出来ました。
テキストボックスのコントロールソースはこんな感じです
=Format([日付],"ggg") & VarKanji変換(Format([日付],"e")) &
"年" & VarKanji変換(Format([日付],"m")) & "月" &
VarKanji変換(Format([日付],"d")) & "日"
669さん、671さんありがとうございました。
674 :
名無しさん :04/11/22 02:42:15
【. 目 的 】 ExcelファイルのデータをAccessの既存テーブルにインポート 【. 条 件 】 XP、Access2000、Excel2000 ■試したけどうまくいかなかった処理 【. 概 要 】 新規テーブルへのインポートはできたが 既存テーブルへのインポートができず ■これだけはやりました tp://www.wanichan.com/pc/ac2000/unity01.htm ↑サイトを参考にやってみましたが 「次のテーブルに保存する」で既存テーブルに インポートできるのかと思いやろうとしたら 選択リストになにもなく選択できない状態です。 どなたか教えてください。お願いします。
【. 目 的 】 質問が長くて申し訳有りません。 現在、毎月行なう処理として、ユーザーがボタン一つでできるように csvテキストデータをインポートし、 それをさらにdateadd関数を使って、 ユーザーがその処理をした前月の月の名前が作成されたテーブルに「○○月分データ」とつくようにマクロで設定しました。 「11月分データ」 「10月分データ」 「9月分データ」 「8月分データ」・・・ と過去に処理したテーブルを数か月分くらいづつストックしていくように設定 (最新のデータをインポート処理と同時に8ヶ月前のデータを削除)しています。
質問1)
ボタン一つで例えば11月に押すと残っている
11、10、9、8、7、6、5、4月のテーブルからデータを抜き出してフォームに表示させたいのですが、
参照先となるテーブルが前述のようにマクロでdateadd関数によってテーブル名が付くように設定しているので
処理をする月によって対象となるテーブル名が変わってしまい選択クエリーの参照先テーブルが設定できません。
ユーザーがクエリーを開く瞬間の前月、前々月、前前々月・・・の名前が付いたテーブルから参照するように
クエリーの参照先テーブルの設定に時間的な設定の関数を組み込む事はできますでしょうか?
質問2)
出来れば2004年○月、2005年○月、等と処理をした「年」も入れたいのですが、
「年」にnow関数を使ってしまうと、2005年1月に処理をしてしまいますと
2004年12月と名前が付かなければならないところが
「2005年12月」となってしまいますので困っています。
どのような工夫が有りますでしょうか・・・。
どうぞ宜しくお願いします!!!
【. 条 件 】 ウインドウズ95使用、ACCESS97
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
>>676 質問2は
Format(DateAdd("m", -1, Now()), "yyyy年mm月")
でいけるんじゃなかろうか。
今手元にAccessないんで出来るかわかんないけど。
yyyy年m月だった。
フォームのほうにもレポートのような 画面の拡大縮小(ズーム)機能を実装できますか?
生年月日から、次にやってくる誕生日まであと何日かを計算させる関数をつくりました (顧客に出すバースデイカードのため) Function AtoNanNichi(ItsuUmare As Date) As Integer Dim Tanjoubi As String Dim CnvItsu As Date Tanjoubi = Format(ItsuUmare, "mm/dd") If Tanjoubi = "02/29" Then '2/29という日付はいろいろ問題が多いので、取りあえず強引に2/28に直してます Tanjoubi = "02/28" End If CnvItsu = DateValue(Year(Date) & "/" & Tanjoubi) '今年の誕生日 If CnvItsu < Date Then '今年の誕生日がすでに過ぎちゃった場合は CnvItsu = DateValue((Year(Date) + 1) & "/" & Tanjoubi) '来年の誕生日 End If AtoNanNichi = CnvItsu - Date End Function クエリで、あと何日:AtoNanNichi([生年月日]) というフィールドをつくってやると、いちおう数値は出してくれる んですが、この「あと何日フィールド」に5とか10とか抽出条件を入れると、型が違うとか怒られます。 でも、Between -- And -- の抽出条件なら、ちゃんと出してくれる。 まあそれでも使えないことはないんですけど、何か気持ち悪いです。
>>680 あと何日: IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))<Date(),DateDiff("d",Date(),DateSerial(Year(Date())+1,Month([生年月日]),Day([生年月日]))),DateDiff("d",Date(),DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))))
>>681 式ありがとうございます
な、ながいです。
いまからバラして解読してみます。
DateSerial, DateDiff, この二つの関数はどっかでみたことがありますけど
使ったことはないです
解読完了、なるほどです 長いっつってもIIFが重なって長いわけじゃなく、引数がちょっと多いから長く見えてるだけでした。 DateSerial、便利です。 DateSerial(1989,2,29) とか、日付としては存在しないデタラメな数字でも、関数側でうまいこと処理してくれちゃうんですね 日付どうしの引き算なんてのも今考えれば何だかなって感じで、DateDiffなんて関数があるならこっち使ったほうがスマートです
684 :
名無しさん@そうだ選挙にいこう :04/11/26 01:42:24
access覚えたいんですけどパソコンに入ってないので買おうとしたんですが アカデミック版ってのが安い、学生用らしいんですが一般の社会人がこれを 買っても使えないんですか?何も知らなくてすみませんが、どなたか教えて ください
686 :
名無しさん@そうだ選挙にいこう :04/11/26 14:59:08
>>685 わざわざ答えてくれてありがとうございます。
買えないのは知ってましたが自分は学生に頼んで買ってもらおうと思ってました。
使えないというのはどういう事なんでしょうか?どなたか知っていれば教えてください。
何度もすみません
>>686 捕まってもいいなら使えばいいだろ
犯罪だから誰も情報は出せないぞ
>>677 有り難うございます。
早速アドバイスを応用し以下のような関数を作ってみたのですがうまく働きません・・・。
=Format(Iff(DateAdd("m", -1, Now())=6 or (DateAdd("m", -1, Now())=7 or (DateAdd("m", -1, Now())=8 or (DateAdd("m", -1, Now())=9 or (DateAdd("m", -1, Now())=10 or (DateAdd("m", -1, Now())=11,6,12, "yyyymm")
7、8、9、10、11、12月に処理をした「yyyy年06月」、「yyyy年07月」、「yyyy年08月」、「yyyy年09月」、「yyyy年10月」、「yyyy年11月」と前月名の付いたデータをさらに
全て「yyyy年06月」と名前を変換し、それ以外の1、2、3、4、5、6月に処理をした
「yyyy年12月」、「yyyy年01月」、「yyyy年02月」、「yyyy年03月」、「yyyy年04月」、「yyyy年05月」、「yyyy年06月」には全て「yyyy年012月」と名前が変換されるように設定したいのですが・・・。
どこがおかしいのでしょうか・・・。ご助言お願い致します。
689 :
名無しさん@そうだ選挙にいこう :04/11/27 08:29:36
5年ぶりくらいにアクセスのレポート使ったけど Textboxとかの整列ってグリップの設定も何分割とか大雑把だし 自動的に隣のTextboxにくっつけるっていうのが無い?から 1個1個もしくは1行ごとに選択し高さや幅、配置位置から手計算して 小数点4位まで配置位置を手入力・・・・ ちょっと配置換えってのがとても億劫になる。 なんかいい方法あるのですか?
691 :
名無しさん@そうだ選挙にいこう :04/11/27 09:40:40
>>689 くっつけたい2つのテキストボックスをアクティブにして
右クリックすれば[配置]というのがあるから
こんな都市伝説しってる? まんこって町中で叫ぶと政府の機関にさらわれるってやつ、 これ俺の友達の弟の友達がまじでやったらしくって戻ってこなかったらしい。
2002から2003にアップグレードしようと思ってるけど 一旦2002を削除してから2003入れたほうがいいんでしょうか?
694 :
693 :04/11/27 12:11:14
ちなみにOFFICE本体をXPから2003にしようと思ってるんですが
>691 ぬお! なかなかいい。 ありがとう。
>>688 まずそれぞれの関数をヘルプで調べることをおすすめする。
>>697 色々聞いたり調べてはいるのですが・・・。
間にIffが入っているのがネックなんですかね・・・。
う〜む・・・他に良い組み方は有りますか?
>>698 まずIffじゃなくてIIfなので。
それから「前の月が6月〜11月なら」というのを「処理した月が7月〜12月なら」と
考えるべき。
DateAdd("m", -1, Now()) の戻り値がなんなのかもう一度調べてみたほうがいい。
DateAdd("m", -1, Now()) =6 は絶対に真(True)にならない。
その関数はどこに書いたの?その時に出たエラーはなんて書いてあった?
とりあえず以下の式が何をしているか理解してみて。
IIf(Month(Now()) > 6, Format(DateSerial(Year(Now()), 6, 1), "yyyy年m月"), Format(DateSerial(Year(DateAdd("y", -1, Now())), 12, 1), "yyyy年m月"))
700 :
名無しさん@そうだ選挙にいこう :04/11/28 00:27:35
テーブルAとテーブルBがある。 テーブルBにデータがあれば、テーブルAの「チェック」フィールドに 「1」を入れたい。 この場合、更新クエリを使えばできると思いますが、 @抽出条件に条件式を「ビルド」で書く場合 AテーブルA,Bでリレーションをはった場合 のどちらが処理速度は速いのでしょうか? 誰か教えてください。よろしくお願いします。
間違えてテーブルにNOWという名まえを付けてしまいました。 そのためにVBAで Now()関数が使えなくなってしまったのですが 使えるように戻す方法はありますか? テーブルの項目名はもうかえてます。 エラーは 「指定した式で参照されている 'NOW' フィールドが見つかりません。」 こうでます。 急ぎなのでわかる方おしえてください。
別の部署で使ってるエクセルのテーブルA、Bを それぞれインポートして各々最適化すれば 例えば商品名マスターがAとB2つ出来上がる。 A=Bでは無いが統合したい。 ABテーブルそれぞれに商品IDが振られてるし、勝手に商品マスターだけ統合して IDが変わるとテーブルとの整合がめちゃくちゃに? こういうときどうしてますか?
>>700 大して変わらんと思
>>701 テーブル名を変えてから、別mdbにデータ移行しろ
あと「急ぎ」はやめろ 見てるほうに関係ねーし
無駄な反感買うだけだ 誰もお前の都合なんか知らない
>>702 要はexcel→accessの移行で雑種データを纏めるわけだな
どうしてますかっていうか、そりゃ「商品ID」で一意性と
データとの整合性を考慮したマスタを作るしかないよ
そもそもその2つの業務は統合に耐えられるものかどうかの
判断が先だろDB部分を取り繕っても業務が滞るんじゃ意味からな
>>701 >急ぎなのでわかる方おしえてください。
この一文があるので答えない人は多い
705 :
701 :04/11/29 16:00:58
>>703 ご回答ありがとうございます。
>>704 急ぎと書いてすみません…
以後気をつけます(._.)
706 :
名無しさん@そうだ選挙にいこう :04/11/30 19:21:09
勉強中です。 テーブルのデザインヴューでの設定で、データ型が日付/時刻型の場合 標準では「99/99/00;0」となりますが、「年月」だけ入れさせる にはどのように定型入力欄に記載すればいいのでしょうか?
708 :
名無しさん@そうだ選挙にいこう :04/12/01 16:57:40
tbl社員マスター:社員ID/氏名/プロジェクト1ID/プロジェクト2ID tblプロジェクト :プロジェクトID/プロジェクト名 という二つのテーブルがあり、それぞれ tbl社員マスター:プロジェクト1ID−tblプロジェクト:プロジェクトID tbl社員マスター:プロジェクト2ID−tblプロジェクト:プロジェクトID と多対1のリレーションを張っています。 フォームを新しく作り 社員ID 氏名 プロジェクト1ID プロジェクト名 プロジェクト2ID プロジェクト名 としたいのですが、ウィザードではプロジェクト名はひとつしか選べません。 プロジェクト1ID、プロジェクト2IDそれぞれのプロジェクト名を表示するには どうすればいいのでしょうか?
709 :
名無しさん@そうだ選挙にいこう :04/12/03 00:24:09
select a.社員ID as 社員ID, a.氏名 as 氏名, a.プロジェクト1ID as プロジェクト1ID, nvl(b.プロジェクト名,' ') as プロジェクト名1, a.プロジェクト2ID as プロジェクト2ID, nvl(c.プロジェクト名,' ') as プロジェクト名2 from tbl社員マスター a, tblプロジェクト b, tblプロジェクト c where a.プロジェクト1ID = b.プロジェクトID(+) and a.プロジェクト2ID = c.プロジェクトID(+) order by a.社員ID
710 :
名無しさん@そうだ選挙にいこう :04/12/03 13:07:10
あるPCから別のPCへアクセスで作ったDBを移そうと思ったのですが、 スタート画面のフォームが表示されません。 どんな原因が考えられますか。
711 :
名無しさん@そうだ選挙にいこう :04/12/03 13:48:58
【. 目 的 】 accessで作られたDBを別のPCに移したい
【. 条 件 】 win2000、access2000
■試したけどうまくいかなかった処理
【. 概 要 】 別のpcに丸ごと移したが、テーブルしか表示されず、スタートのフォームが
表示されなかった。もう一台別のpcに移動したときは大丈夫だったが、何が原因なのかわかりません。
ちなみに、一台のPCで動作させる、ネットワークに接続はしないファイルです。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい検索キーワードは?】
access ファイル 移動 DB etc...の組み合わせ
すいません、先ほど
>>1 を読まずに書き込んでしまったので、
>>711 もう
一度書き込みました。
713 :
みゆき :04/12/03 14:54:14
ACCESS2000を使っています。 ACCESSのレポートで作成した2ページもののレポート (1ページ目が属性や数値が表になっている個票、2ページ目が写真2枚)を、 パワーポイントのファイルに出力したいのです(2ページで1ファイルになる。全部で100ファイルくらい)。 エクスポートを見ても、EXCELやHTMLはあるのですが、パワポ出力というのはなく、 どうしようか途方に暮れています。 何か良いお知恵を御貸しください。
714 :
山崎 渉 :04/12/03 15:38:54
715 :
l210025.ppp.asahi-net.or.jp :04/12/03 15:39:18
ACCESS2000を使っています。 ACCESSのレポートで作成した2ページもののレポート (1ページ目が属性や数値が表になっている個票、2ページ目が写真2枚)を、 パワーポイントのファイルに出力したいのです(2ページで1ファイルになる。全部で100ファイルくらい)。 エクスポートを見ても、EXCELやHTMLはあるのですが、パワポ出力というのはなく、 どうしようか途方に暮れています。 何か良いお知恵を御貸しください。
パワポ側からのインポートという角度から考えろ
>>711 [ツール]→[起動時の設定]を確かめる。
719 :
名無しさん@そうだ選挙にいこう :04/12/04 17:48:21
最近始めたばかりで分からないことだらけですが、質問させて下さい。 フォームのコマンドボタンに設定するつもりで「『売上一覧』というテーブルの 『契約日』というフィールドが11月のデータを抽出」というマクロを式ビルダで 作っているのですが、書き方が全くといっていいほど分からずに悩んでいます。 自分で考えたのは以下の記述なのですが・・・ #2004/11/01#<[売上一覧]![契約日]<#2004/11/30# これでは全く意図したことができず、どうして良いか分からないのです。 どなたか解決策を教えていただきたいです・・・。
720 :
名無しさん@そうだ選挙にいこう :04/12/04 19:30:38
>>719 ボタンを押してサブフォームに表示したいというのが意図?
クェリーの抽出欄に
Between #2004/11/01# And #2004/11/30#
として差byフォームに表示させればいいんじゃないかな
そして11月30日のデータが表示されないという不具合が
722 :
名無しさん@そうだ選挙にいこう :04/12/05 00:24:26
ttp://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetFileName.html ↑このページで、Accessから「ファイルを開く」のダイアログを出す方法を知りました。
これ、使い方によっては、単なる「フォルダ選択」もできるんですね。
そこまではいいんですけど、そこで選択したフォルダのあるドライブが
残りたとえば300MBを切っているときは、選択を無効にしたいんです。
Dim MyFolderPath As String
で、選択の結果はこの変数の中に入れることにしてあります。
はじめは、left(MyFolderPath,1) で取ったドライブ名から、WSH(VBS)で空き容量を出せばいいと
思ってたんですけど、LAN内の別のPC中の共有フォルダ選択されちゃった場合は、左端1文字じゃ
ダメじゃないですか。
何かいい方法ありますか。
723 :
名無しさん@そうだ選挙にいこう :04/12/05 00:56:46
accessで当座残高表を作ってます。 残高の計算をクエリでしているのですが、残高の計算はできたけどカンマ区切りの表示が出来ません。 残高を計算する関数は DSum("[収支]","Q残高計算","[日付]<=#" & [日付] & "#") で主なテーブルの構成は 日付 科目 金額(クエリで収支に分ける) 収支(日ごとの収支の計) です。 多分原因は日付を基準にして残高を算出しているのと[収支]を""で囲んでるからだろうと思います。 ご教授のほどよろしくお願いいたします。
format(カンマをつけたい数字,"Currency")
725 :
名無しさん@そうだ選挙にいこう :04/12/05 03:01:53
ACCESS2000を使っています。 テーブルAがあるとします。 テーブルA ID AS オートナンバー : 日付 AS 日付 フォームにタブコントロールを作成し、 タブコントロールのページ1にMicrosoft Date and Time Picker Control, version 6.0(DTPicker)を挿入し、 DTPickerのコントロールソースを上記テーブルAの日付に関連付けをしました。 ページ2(DTPickerが表示されていない)を選択してレコード移動等を行うとエラーが発生してしまいます。 対策もしくは代案をご存知の方ご教示ください。
【 目 的 】絞り込んでレポート出力 ACCESS2000を勉強中です。 . 何勝したか 名前 |1月|2月|3月|4月 Aさん 5 6 1 Bさん 2 3 Cさん 8 1 Dさん 6 5 Eさん 6 8 次のようなテーブルから、各個人の月毎の勝数を 「Aさんの勝率は 1月5勝 2月6勝 4月1勝」 というように勝利していない月を除いて表示したいのですがうまくいきません。 "1月>0 and 2月>0 and 3月>0 and 4月>0" としたところ、ぜんぜんうまくいかず・・・ ご助力お願いします。
すごくずれたorz . 何勝したか 名前 |1月|2月|3月|4月 Aさん. 5. 6. 1 Bさん. 2. 3 Cさん. 8. 1 Dさん. 6. 5 Eさん. 6. 8 このような感じです。
ああ、またしても 名前 |1月|2月|3月|4月 Aさん.........5.....6..................1 Bさん..................2.................3 Cさん.........8......1................... Dさん.............................6.......5 Eさん.................6..........8......... 分かっていただければいいのですが。 ちょっともちついてきますorz
コントロールにNull値が入力されているときのみ、 全件表示するクエリを作成しようとしていますが、 どうしてもうまくゆきません。検索結果が0件になります。 IIf([Forms]![フォーム名]![コントロール名] Is Null,True, [Forms]![フォーム名]![コントロール名]) 【True】の部分を【Like "*"】に変更するなど試しましたがNGでした。 同箇所にテーブル上に存在する数値を入力すると、検索結果は返ってきます。 検索フィールドのデータ型は数値型で、フォームのテキストボックス内の値を参照しています。 どなたかご指導をお願いします・・・。
>>724 くだらない質問に答えていただきましてありがとうございます。
実際数値を扱う場合はカンマ区切りできないと意外と不便でちょっと困ってました
ありがとうございました
>>729 like"*"& forms![○○○]![○○○]&"*"とかじゃあだめ?
732 :
名無しさん@そうだ選挙にいこう :04/12/05 10:32:12
>>731 それだと、テキストボックスの値がNull値でないときの
抽出に問題がありそうな気がする
>>729 テキストボックスのLost Focusイベントで
Null値なら*に置き換えるでいいんでないかな
>>732 >>731 の関数にOr で 0とか""とかつなげれば出来るかも知れないが、データを統一しておいたほうが無難で楽なのは賛成
>>722 俺も最近似たようなことやりたかったんですが、結局逃げちゃいました。
フルパスでの戻り値って、対象フォルダ名を\TargetFolderとすると、
共有ネットワークフォルダの場合、
\\コンピュータ名\ボリュームラベル\TargetFolder
でも、ネットワークドライブの割り当てがしてあれば、
Zドライブに割り当てたとすると、ローカルドライブの場合と同じく、
Z:\TargetFolder
ってなるじゃないですか。
なので、フルパスの左から2文字目が"\"だったら、
"ローカルドライブか割り当てされたネットワークドライブじゃないとダメです"
ってメッセージを出して、Exit Subさせちゃうことにしました。
お役に立ちませんで....。
>>722 ,
>>734 WSHのヘルプのコードを参考にしたんだけど、
Function ShowFreeSpace(drvPath As String)
Dim fso, d
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvPath))
ShowFreeSpace = FormatNumber(d.FreeSpace, 0)
End Function
で引数のdrvPathをUNCで指定するとどうなりますか?
今、自分じゃ試せないんで・・・。
>>734 ,
>>735 いま実験してみました
「UNC」の意味が分からなかったんですけど、お初でお目にかかる
「GetDriveName」てのが、いかにも何かやってくれそうだという気がしたんで。
>>735 の関数の引数に、共有フォルダのパスそのまま入れても、
ShowFreeSpace(\\PC名\共有フォルダ)
そのフォルダが属するドライブの空きは計算できてしまった。。。
感謝です
>>735 ,
>>736 734です。
俺んとこではWSHは使用禁止ということになっているので、
空き容量の取得はGetDiskFreeSpaceEX APIを使ってます。
こっちでもUNCでイケました!
てっきりダメだと思い込んでて、最初から試してもいません
でした....。
勉強になりました。ありがとうございました。
おやすみ前の追加実験報告
>>785 さんにつくっていただいた関数の、(僕にとっての)肝は、GetDriveName でした。
要はドライブ名が取れれば良かったわけですから。
で、ふと浮かんだ疑問。
ネットワーク上の共有フォルダを指定した場合、こいつはどういうドライブ名の
取り方をしているのか。
function ShowDriveNM(MyPath As String) as string
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
ShowDriveNM=fs.GetDriveName(MyPath)
end function
MsgBox ShowDriveNM("\\コンピュータ名\フォルダ名")
で実験したら、返ってきたのはcでもdでもeでもfでもありませんでした。
\\コンピュータ名\フォルダ名
引数そのまんま・・・( ゚Д゚)??・・・
宿泊客名 ランク チェックイン日 チェックアウト日 ○山○太 松 12/01 12/10 □河□司 竹 12/02 12/15 というテーブルがあって、これを元にして 日付 宿泊人数(松) (竹) (梅) 12/01 1 3 1 12/02 2 2 1 といった風に、その日各ランク毎に何人泊まっていたかカウントしたいんですが どうすれば可能でしょうか?
(゚∀゚) アヒャ ペダンティックな解答募集、な感じの問題。 僕には正面突破型のやり方しか思いつかないけど。 宿泊者名、つか、宿泊者IDみたいなものがあると信じることにして、 1 2004/12/01 松 1 2004/12/02 松 2 2004/12/01 梅 2 2004/12/02 梅 3 2004/12/04 竹 4 2004/12/03 蝗 な感じのテンポラリテーブルがつくれれば、あとは多分クロス集計でいけるよね レコードセット開いて、ひとつひとつ見ながら、チェックイン日から(チェックアウト日-1)まで テンポラリテーブルにAddNew
Dim MyHiduke As Date Dim MyDbCn As New ADODB.Connection Set MyDbCn = CurrentProject.Connection MyDbCn.Execute "DELETE * FROM 集計用テンポラリテーブル" Dim MyRs0 As New ADODB.Recordset, MyRs1 As New ADODB.Recordset Set MyRs0 = New ADODB.Recordset Set MyRs1 = New ADODB.Recordset MyRs0.Open "集計用テンポラリテーブル", MyDbCn, adOpenKeyset, adLockOptimistic MyRs1.Open "元テーブル", MyDbCn MyRs1.MoveFirst Do Until MyRs1.EOF MyHiduke = MyRs1![チェックイン] Do Until MyHiduke = MyRs1![チェックアウト] MyRs0.AddNew MyRs0![ID] = MyRs1![ID] MyRs0![日付] = MyHiduke MyRs0![ランク] = MyRs1![ランク] MyRs0.Update MyHiduke = MyHiduke + 1 Loop MyRs1.MoveNext Loop MyRs0.Close Set MyRs0 = Nothing MyRs1.Close Set MyRs1 = Nothing MyDbCn.Close Set MyDbCn = Nothing
これってリークしますか? If CurrentDb.OpenRecordset(sql, dbOpenSnapshot).EOF Then MsgBox "データはあります" Else MsgBox "データがありません" End if つまり、hoge.Close:Set hoge = Nothingは自動的に行われるでしょうか? これはaccess2000を使用してます。
743 :
名無しさん@そうだ選挙にいこう :04/12/08 03:45:44
アクセスの勉強をはじめているのですが、エクセルと違って 友達が作ったファイルを気軽にみるとかができません。 まずは何をするのが一番ですか? 「できる!ACCESS」くらいはできるようになりましたが・・・。
目的は自分で探さなきゃ使う意味がない
>>743 エクセルトと同じように気楽に見れますが何か?
>>746 Excelだってパスワードぐらいかけられます。ふざけてるの?
>>743 744で言ってるとおり
作りたい物を考えてそれを作ればいい
できる読んでるなら可能なはず。
アクセスで在庫管理をやることになったんですが製造年別で管理し 当年、前年、2年前、3年前、4年以上前と分けて1年度終わるごとに 1年古い欄に移すことはできるのでしょうか? (処理時に4年以上前の欄は今まであった数+3年前の欄にあった数になる)
>>750 欄って何のこと?
テーブルを移したいの?
クエリ?
>>751 できるだけ簡単な方法を教えていただけるとありがたいです
>>752 まだ作ってないのでどんな手段で作ればいいのやらって状態です
テーブルに”〜年前”を作るのは?
>>754 年が変わったときの処理の方法がわからんのです
当年は前年に前年は2年前に・・・って感じで4年以上前には
もともとの数+3年前になるのがどうやればいいのやら
エクセルからインポートしたデータで0と1の項目のものがあるのですが、 それをチェック形式に変えることって出来ますか? 0をOFF、1をONという感じに。 簡単に出来そうで出来なく、こまっています。
758 :
名無しさん@そうだ選挙にいこう :04/12/10 00:49:11
カレンダを作っています。 2005年以降でいいんだけど、休日の計算方法、どこかにない?
>>750 >>移す
って、何だかまるで、用済み掃き溜めテーブルに押し出したいみたいな感じだけど
そんな必要あるのかな
テーブルはそのままでいいんじゃないの
クエリで
0〜1年目、1〜2年目、2〜3年目、4年目以上
に分けるだけじゃダメ?
いつまでも一つのテーブルに溜め込んでたらパンクしちゃうような件数なの?
マスタのデータ変えちゃったら、それにともなって変えなきゃならないような履歴データはないの?
日毎の来客数の集計クエリをもとに閲覧専用のフォームを作ったんですが、 フォームで集計期間を指定したいと考え、クエリの[日付]の抽出条件欄に Between [Forms]![F_来客集計]![txt_FromDate] And [Forms]![F_来客集計]![txt_ToDate] と入力して、パラメータクエリで [Forms]![F_来客集計]![txt_FromDate] と [Forms]![F_来客集計]![txt_ToDate] の データ型を「日付/時刻型」に指定したのですが、 フォームを開くたびに日付の入力を求められ、フォーム上の値が反映されません。 タイプミスでもないようなので、他に原因があればご教示下さい。
762 :
名無しさん@そうだ選挙にいこう :04/12/10 14:22:32
ちょっと質問があります。 テキストボックスのExitイベントでその時点のSelStartを取得したいのですが、 日本語入力確定直後にフォーカス移動するとSelStartは0になっています。 うまく取得する方法があれば教えてください。
>>761 パラメータクエリだからじゃないのか?
パラメータクエリは毎回実行時に条件を指定しないといけないんじゃないかいなぁ
>>761 フォームでtxt_FromDateとtxt_ToDateという名前のコントロールが存在しているのか?
無いからパラメートして聞いてくるんだと思うぞ?
パラメート→パラメータと orz
>>764 その名前のテキストボックスちゃんと二つあるのに聞いてくるから不思議で不思議でたまりません。
>>750 クエリで追加クエリと削除クエリでできるんじゃ?
クエリのデザインビューでメニューのクエリにあるよ。
>>766 んん?
Between [Forms]![F_来客集計]![txt_FromDate] And [Forms]![F_来客集計]![txt_ToDate]
じゃなくて
Between [Forms]![F_来客集計].[txt_FromDate] And [Forms]![F_来客集計].[txt_ToDate]
じゃないか?
2つ目の!は.じゃない?
>>768 パラメータクエリと抽出欄両方 . に変えてもダメでした。あはーん。
>>769 ごめ間違って種orz
そうだ、入力した後にエンター押してる?
確定した後にもう1回。
そうしないと、フォームに入力したことにならないよ。
>>770 フォームを開いた時に値の入力求められるという時点でおかしいですよね。
それぞれテキストボックスに値入力してエンター押しても反応ないし。
元々両方のテキストボックスに規定値設定して開いた時と更新時にRequeryさせてます。
なぜ抽出条件の[txt_FromDate]をフォーム上の[txt_FromDate]と認識してくれないんでしょう?
>>771 俺なら、フォームのレコードソースはなし。
ボタンを作って、ボタンをクリックしたらクエリを表示するようにするけど。
たぶん、フォームのレコードソースにクエリがなってるんだよね?
>>772 オートフォーム→表形式で作ったのでその集計クエリがレコードソースになってます。
フォームヘッダに
集計期間 [txt_FromDate] 〜 [txt_ToDate]
とこんな感じで配置されてます。
>>761 そのフォームにはコントロールはその2つか?
とりあえずそれで話をするめる。
1 フォームをデザインで開く
2 フォームの周りのグレーの部分で右クリックしてプロパティを選ぶ
3 レコードソースを消す
4 そのまま残りのコントロールを選んでコントロールソースを消す
5 フォームを出して日付を入力し、そのままクエリを表示する
これでデータがとりあえず表示されないか?
776 :
名無しさん@そうだ選挙にいこう :04/12/11 14:57:58
使用環境 ファイル共有 共有する DB が存在するマシン:Windows XP/Access 2000 実現したいこと 普通に mdb ファイルを開くとデータベースウィンドウが表示されずに任意のフォームが開き、 Shift キーを押しながら mdb ファイルを開くとパスワードのログオンフォームが表示され、 パスワードを入力するとデータベースウィンドウが表示されるようにしたい。 もしわかる方がいらっしゃいましたら教えていただけると助かります。
>>757 ありがとうございます。
ちょっとずつですが分かってきました。
なんか楽しくなってきたぞ
779 :
776 :04/12/11 17:07:29
>>777 普通にパスワード設定しただけでは、起動時の設定で特定のフォーム
が開くようにしてあっても、最初にパスワード入力画面が出てしまうんです。
shitfキーを押しながら起動したときだけパスワード入力画面が出て、shiftキーを
押さずに普通に起動したときは、パスワード入力画面が出ず、
起動時の設定で指定したフォームが最初に開くようにしたいと思いまして。
780 :
t-pochi :04/12/11 23:03:22
OS XP ACCESS 2000→2002 ACCESS2002でフォームのピボットテーブルウィザードから2000までのように EXCELのピトットテーブルを使用することはできないでしょうか ACCESS2002のピボットテーブルピューの使い勝手がいまひとつなので2000までの ようにEXCELのピトットテーブルを使いたいのです となたか教えてください よろしくお願いします
VBAで、あるアプリケーションがすでに起動しているかどうか、判別する方法 はありますか。 (起動すると何かTmpファイルがあらわれるとかいうようなものなら、wshの FileExitでいけそうなんですけど、どうもそういったものは出てこないようなので)
>>781 APIのFindWindow使うとかじゃダメですかね。
やべっ、直リンしちゃった、ごめんなさい、ごめんなさい X 100
>>782 何だかどさくさのうちに出来ました。
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
これを標準モジュールに書いて以下の実験
Private Sub コマンド0_Click()
Dim RtnCd As Long
RtnCd = FindWindow(vbNullString, "ここに入れる文字列")
If RtnCd <> 0 Then
MsgBox "そのソフトはもう起動されてるよ"
Else
MsgBox "そのソフトはまだ起動されてないよ"
End If
End Sub
「ここに入れる文字列」ってのは、Exeファイルのパスでもなく、ファイル名ですらなく
タスクマネージャに出てくる名前、だったんですね
ちょっと不思議な感じ
>>785 タスクマネージャーに出てくる名前=ウィンドウキャプション(タイトル)です。
ソフトの左上にある、アイコンの隣の文字列です。
開いてるファイルによって、このキャプションが変わるものの場合、
調べるのが大変なので、その場合はFindWindowの1番目の引数で
クラス名を指定します。
>>782 解説ありがとうございます
「クラス」とか聞くと何かこめかみがしめつけられますが、後学のためにいくつか実験してみました。
(そもそもクラスってものが何なのかよく分かってないので、とてつもないバカ実験かも)
FindWindow("notepad", vbNullString) ←これはすでに起動していることを認識してくれましたが
FindWindow("winword", vbNullString)
FindWindow("excel", vbNullString)
FindWindow("calc", vbNullString)
これらはダメでした。ORZ
あ・・・
>>786 の間違い発見。w
× ソフトの左上にある、アイコンの隣の文字列です。
○ ウィンドウの左上にある、アイコンの隣の文字列です。
Win2K, Access2Kなんですが、コード(VBA)が開けなくなってしまいました。 [コード]ボタンを押してもうんともすんとも言いません。。。。 とほほほほ、 コードの変数名を一律変換したつもりが、フォームのtextボックス名も変えて しまったみたです。。。。違うかも 一応、デザインビュー/フォームビュー切り替えて確認して保存したのですが・・・
793 :
名無しさん@そうだ選挙にいこう :04/12/14 14:47:58
アクセス2003使用です。 テーブル、クリエ、フォームを作りレポートを作りましたが、 レポートを印刷プレビューで開くと、下の部分のページが『1』しか選択できません。 テーブルには10件分はデータ登録しています。 3度作り直してみたのでが、うまくいきません。 アフォな私にアドバイスを!! 先輩方、何卒御教授お願致しますううう(TT)
794 :
名無しさん@そうだ選挙にいこう :04/12/14 15:44:21
【序 論】
オウム事件とは、「オウム、創価、統一が共同でやっていた覚醒剤密造などの不法行為がばれそうになり、全ての罪をオウムに押付けた。」事件であると理解しています。
統一教会は、その起源から考えて、KCIA及びCIAの影響下にあると考えるべきです。
日本側のCIA専属のお爺さんたち、つまり、笹川さん、児玉さん、中曽根さんたちが、統一とつるんでいたのも、CIAの犬同士という絆があったわけです。
一方で、創価は創価で、笹川一派を通じて、統一と繋がりがありますし、それ以前に創価内部に深く入り込んでいる暴力団、
後藤組のもつ北朝鮮コネクションから、オウムの麻薬ビジネスに関わっていたわけです。
もちろん、日本社会に創価マフィアのネットワークをはりめぐらした学会を、CIAが放っておくわけがなく、マネーロンダリングなどに、しっかり利用されています。
宗教法人の財務の閉鎖性をCIAが利用しないと考える方が異常です。
そして、CIAお得意の麻薬ビジネスの日本支部が、オウムだったわけで、その収益が北朝鮮に還元されていたのも当然のことであり、
北の現体制を維持するための、CIAの有難い配慮だったわけです。
なにしろ北の体制が崩壊すると、一番困るのは、CIAのスポンサーである軍産複合体と国際金融資本であり、極東の緊張は、彼らの飯の種なわけですから。
麻薬王にして、CIAの帝王である大ブッシュさんが、統一の文と仲良しなのも、アッタリマエなわけですね。
今度の米大統領選でも、随分と統一のカネが小ブッシュ陣営に流れたようですね。
尚、本件の主たる議論は、2チャンネル、警察板の「告発します 第3部」スレッドにて、進めています。
http://mentai.2ch.net/test/read.cgi?bbs=police&key=985780338&ls=100
795 :
名無しさん@そうだ選挙にいこう :04/12/14 17:14:23
こんにちは。 レポートでグラフを作成しています。 グラフにデータテーブルをつけて金額や件数を表示したいのですが、 金額が 123456 となるばかりで ¥123,456 と表示されません。 グラフの表示形式で通貨の設定が出来て、設定したときは金額表示になるので すが 一回閉じて再度開いたときには元に戻ってしまいます。 これはどのようにすれば変更が出来るのでしょうか? しかも、(平均の数値なので)小数点第一位までを表示させていのです が、小数点が無限の桁数表示になってしまうのです。 どうしたらよいのでしょうか?おしえてください!!
796 :
名無しさん@そうだ選挙にいこう :04/12/14 17:22:14
XPpro/access 2003です テーブルで 業者マスター 業種マスター 業者業種接合テーブル の三つがあります 業者は複数の業種をかねる場合があるので接合テーブルを設けました。 業者入力フォームを作りました。 業種マスター/すべてのフィールド を選択し 業者業種接合テーブル/業者ID 及び 業種マスター/業種名 を選択して サブフォーム付きのフォームが出来上がりました。 ただし、のフォームにおいて業者を設定するには業者IDを入力する必要が ありますが、これを簡単にプルダウンで選べるようにしたいのです。 いろいろいじってみてもわかりませんでした。 どうすれば実現できますか?
798 :
797 :04/12/15 11:47:05
>>797 コントロールの種類をコンボボックスにし、値集合からプルダウンにするところまではわかりました。
もう一度お聞きしたいのですが、
業者マスタテーブルと業種マスタテーブルがあります。
業者マスタテーブルをメインフォーム(単票)、業種マスタテーブルをサブフォーム(データシート)
というフォームを作りました。
業種マスタテーブルの業種IDをコンボボックスでプルダウンにしてプルダウンから選択できるようになり
業種IDを選択すると対応する業種名が業種名フィールドに反映されました。
ただ業種IDだとわかりにくいのでプルダウンから選ぶのは業種名にしたいので
業種名をコンボボックスにしたいのですが、業種名を選択しても業種IDは既存のIDを拾ってくるのではなく
元の業種マスタテーブルの業種名を変更してしまいます。
業種名から業種IDを拾わせるにはどうすればいいですか?
あるいは業種IDのコンボボックスのプルダウンに業種名を併記させる方法でもいいです。
列数・列幅・連結列あたりを調べてみるといいかも。
800 :
797 :04/12/15 13:41:31
801 :
名無しさん@そうだ選挙にいこう :04/12/15 14:40:35
=DSum("[決定額]","支払マスター"," [支払マスター]![工番ID] = [工番ID] ") 非連結フィールドに支払マスターの工番IDが同一のものの合計をさせたいのですが、 コントロールソースを上記のようにしてもすべての合計が、どの工番レコードに行っても 計算されてしまいます。 どのような原因が考えられますでしょうか?
ACCESS2000を使用しています。 経理業務のため、数字には1,000のように桁区切りをつけたいのですが、 テーブル作成クエリで作成したテーブルにも書式を設定できません。 普通のテーブルならデザインのプロパティで書式を標準にすればできるのですが、 テーブル作成クエリで該当の列のプロパティで書式を標準にしても 完成したテーブルには反映されていません(選択クエリにしたら桁区切りがありました)。 作成されるテーブルにあらかじめ書式を設定しておいても クエリでテーブルを更新すると書式もクリアされています。 どなたかお願いします。
インスタントな使い方なら、テーブル、クエリからの直読み書きもいいけど、 桁区切りが問題になるような(つか、桁区切りなんてことまで問題になるような)使い方なら フォームを通した方がいいと思います
>>804 別のシステムのデータをテキストでインポートして
クエリで集約するという使い方をしているのですが
フォームを使うと書式について改善されるのですか?
>>803 あらかじめインポート項目が決まっているのなら、
テーブルを手動で作って書式設定し、
テーブル作成クエリでなく追加クエリ、データ入替なら追加前に削除クエリだと思います...
ていうか、自分はテーブルで書式設定したことないんですけど(;^_^A
ユーザーへのデータ表示はフォームかレポートでやるんで、そこで書式設定してます。
>>806 フォームのデータシートビューを使って
できました。削除→追加クエリの方法も面白そうですね。
ありがとうございました。
WINXP ACCESS2000を使っています。 項目 はい いいえ Aさん 1 Bさん 1 Cさん 1 こんなエクセルデータを整理汁!と言われ困っています。 Aさん はい Bさん いいえ Cさん いいえ こんな感じにできないでしょうか。
>>808 更新クエリで値変えた後に[はい][いいえ]を文字結合してフィールド作ってテーブル作成。
こんなのしか思いつかないやごめん。
>>808 ふつうにクエリで1つフィールドつくり、
IIF([はい]=1,"はい",IIF([いいえ]=1,"いいえ",""))
じゃだめ?
Access2000で作られたツールを、 英語版のOS上で動かしたいという客がいます。 英語表記(もちろん半角)で作成しているのに、文字化けするのですが なぜなんでしょう? 文字コードの関係?
>>808 >>810 「はい」と「いいえ」は排他になる(んでしょ?)
だったら
IIF([はい]=1,"はい","いいえ")
でいいんじゃ。
813 :
名無しさん@そうだ選挙にいこう :04/12/17 14:25:33
WinXPでAccess2000を使っています。 [受付入力]フォームの[ユーザ]テキストボックスの更新後処理に [受付入力]フォームの[ユーザ名]テキストボックスに [Qユーザ名表示]クエリの[名前]を入力しようと、以下のマクロを設定しました。 アクション:値の代入 アイテム:[Forms]![受付入力]![ユーザ名] 式:[Qユーザ名表示]![名前] #例えば #[Forms]![受付入力]![ユーザ]="1"のとき、 #[Qユーザ名表示]は名前で"佐藤"を返します。 ですが、[ユーザ]を更新すると、以下のエラーが出ます。 >このオブジェクトには、オートメーション オブジェクト 'Qユーザ名表示' は含まれません。 >オブジェクトのプロパティを設定するか、メソッドを実行する Visual Basic プロシージャを実行しようとしましたが、これらのプロパティまたはメソッドが使用できません。 >オートメーション オブジェクトでサポートされているプロパティまたはメソッドについては、コンポーネントのドキュメントを参照してください どうすれば、このエラーを回避出来るでしょうか。
>>812 項目 はい いいえ
Aさん 1
Bさん 1
Cさん 1
「はい」と「いいえ」は別フィールドじゃないの?
だから、分けます田。
>>813 自分ではあんまりこういうやり方はとらないんで自信はないけど、
クエリQユーザ名表示に、抽出条件として [Forms]![受付入力]![ユーザ] が入っているなら、
下で出来ないかな。
アクション:値の代入
アイテム:[Forms]![受付入力]![ユーザ名]
式:DLookUp("名前","Qユーザ名表示")
ダメだったらごめん
>>801 工番IDってのが数値型なら↓
=DSum("決定額","支払マスター","工番ID=" & [工番ID])
文字列型なら↓
=DSum("決定額","支払マスター","工番ID='" & [工番ID] & "'")
>>809 >>810 >>812 皆さんありがとうございます。
>>814 さんの言うとおり、はいといいえは別フィールドです。
IIFで何とかいけそうです。
ただ二つのフィールドを一つにしたかったのですが、
それはなんとか知恵を搾り出してやってみます。
レポートのページフッターにページごとのデータ件数を表示させることは出来ないでしょうか? ページごとの数値の合計なら可能のようですが。
すみません、教えてください。。。 Access2000を使用しています。 たとえば、(1)のデータから(2)のような内訳を印刷することは可能でしょうか? (1) 商品名 数量 ---------------- りんご 100 みかん 200 りんご 50 りんご 100 みかん 200 (2) ---------------- りんご 100*2 50*1 みかん 200*2
>>819 入門書読んでから来てくれ
最低限の知識すら無い奴は邪魔
>>819 可能
とりあえずいろいろ調べて、それでもダメだったら
ギリギリまで頑張りましたという証拠を手みやげに
もういちど来るべし
>>821 、820さん
ありがとうございます!
確認前に書き込んですみませんでした。
これから確認します。
>>815 できました。
DLookup 関数、これからたくさん使いそうです。
ありがとうございました。
824 :
名無しさん@そうだ選挙にいこう :04/12/20 17:15:07
こんばんわ。ACCESS2000のサブーフォーム(データシート)上で 受注商品を管理しています。 例えば今まで二行レコードある状態で"色"項目1行目に対して白 ┌─────┬─────┬─────┐ │商品名 │ 色 │ 値段 │ ├─────┼─────┼─────┤ │Tシャツ │ 白 │ 2000 │ ├─────┼─────┼─────┤ │Tシャツ │ │ 2000 │ └─────┴─────┴─────┘ と打ち込み、カーソル下を押した場合に二行目に自動的に白が打ち込まれていました。 エクセルにもある自動入力なのですが、この機能をアクティブいする方法が わかりません。 よろしくお願いします。
すいません。OSはwindowsXPです。
ACCESS2000ってオートコンプリート機能はあるんだっけ?
数字はあるかな。他のは規定値でなんとかするしかないんでね?
ダメならすぐにあきらめますけど、Accessフォーム上で Mpegファイルの再生って、できませんかね。 Accessフォーム上のボタンで、停止とか早送りとか。 さらに出来ることなら、スライダーバーでここからここまでみたいな感じで 範囲指定して切り取って、別名で保存のダイアログを出したりとか。 ちょっとでも可能性があるなら何かヒントください。 いや、ダメならいいです。 とっととあきらめます。 ええ、あきらめますとも。
>>828 MediaPlayerか何か呼び出した方がいいんじゃないの?
いまそういう形なんですけど、どうも不便だなと。 何つか、融通が利かないなと。 VBAしか知りませんけど、その支配下に置いてしまえば、 すごく使いやすいものになるんじゃないかなと。 いや、スレ汚しごめんなさい。
831 :
名無しさん@そうだ選挙にいこう :04/12/21 11:30:53
すみません、教えてください。 日付で並んでいるデータの中から、「今日から11ヶ月前のデータ」と 「今日から23ヶ月前のデータ」と、「今日から5ヶ月前までのデータ」の 3種類を抽出しようとしています。 それぞれの抽出はできたのですが、これを一枚の表にしてみることは可能でしょうか? (というか、抽出条件をつなげたらいいのかな?と思っているのですが、 つなげ方がわかりません。andでつなげたらエラーになりました) 悩んだ末にここへ来たのですが。。。すみません。お分かりになる方、よろしくお願いいたします。
>>831 可能
だが
条件はどこで入力されているのやら・・・
833 :
831です。 :04/12/21 13:00:51
すみません、自己解決できました!なんかむずかしく考えすぎていたようです。 ありがとうございました。またよろしくお願いします!
834 :
名無しさん@そうだ選挙にいこう :04/12/21 17:34:20
フィールド1の数値と、フィールド2の数値を、 足し算した数をフィールド3に求めると、何故かテキストデータになるけど 解決方法ない? 例 10+10=1010
835 :
美香 ◆RQ0Spv3q06 :04/12/21 18:26:29
(o- -)oムクッ
使用ソフトはACCESS2003です。 任意の数字を打ち込むと足らない桁を0でうめるマクロは存在するのでしょうか? 例えば6桁の場合、テキストボックスに 111と入れると000111 1234といれると001234 みたいに。 ACCESSに少しくわしい知人にきいたらマクロじゃ無理と言われたのですが、、
>>836 まぢれす。数値を文字型に保存するのはやめなよ。
839 :
名無しさん@そうだ選挙にいこう :04/12/22 07:15:38
841 :
名無しさん@そうだ選挙にいこう :04/12/22 16:53:04
ACCESS2000,osはxpです。 フォーム上で複数条件検索を行いたいのですが、参考になるサイト等はありませんでしょうか? 今まではテキストボックスでフィルターしていたのですが、これの応用で何とかしたいのですが。
842 :
名無しさん@そうだ選挙にいこう :04/12/22 18:33:05
843 :
名無しさん@そうだ選挙にいこう :04/12/22 20:20:06
>>842 失礼。正しくは,検索条件が3つまでなら,select case でいけるです。
金出したくないからここで聞いてるんだろ
>>841 Dim MyStrSQL As String
MyStrSQL="SELECT 〜 FROM 〜 WHERE (〜 Like '*" & Me![txt条件1] & "*') AND (〜 Like '*" & Me![txt条件2] & "*') AND ・・・"
Me.RecordSource = MyStrSQL
みたいな感じでやれば、条件なんていくつだっていける。
本当に無制限かどうかは知らないが。
少なくとも4つはいける。
実際にそれをやっているこの俺が保証する
846 :
名無しさん@そうだ選挙にいこう :04/12/22 22:43:30
>>842 4つ以上の条件検索は,IF句を使って分岐処理をすればいけます。
848 :
名無しさん@そうだ選挙にいこう :04/12/22 23:07:50
本ぐらい買って読め。
849 :
名無しさん@そうだ選挙にいこう :04/12/22 23:08:36
検索項目が何かとか全然書いてないのでコードの例も書きにくいんじゃないの?
850 :
名無しさん@そうだ選挙にいこう :04/12/22 23:11:05
851 :
名無しさん@そうだ選挙にいこう :04/12/22 23:20:37
基本的な質問ですが Nullってヌルって読めばいいのですか? また、InstrRevは何とよめばよいのでせうか?
856 :
名無しさん@そうだ選挙にいこう :04/12/24 12:09:57
access2000,windows2000で、レポートの内容をFAXで送信したいと考えています。 色々とサイトを巡りましたが、startfaxとまいとーく等で実現できるようです。 環境は、三台のPCでファイルサーバーに接続しており、そのサーバーで FAXを共有させて、クライアントからFAX送信を可能に出来ればと思います。 最低限、FAX番号を自動的に読み取り、宛先電話番号に付記できるように 構築したいのですが、最適な構成等をアドバイスいただきたいのですが。
>>856 FAXサーバとそのクライアント
同一バージョンでないとダメ
FAXドライバやocxのバージョンでしょうか?
サーバーとクライアントのOSのバージョンでしょうか?
>>860 やりたいことが分かってるのなら、なぜ調べようとしないんだ?
862 :
名無しさん@そうだ選挙にいこう :04/12/25 08:40:45
>>861 「調べる」=「このスレで質問する」だからじゃない?
パソコンの起動の仕方を教えて下さいヘ(^^ヘ)
もうこの板も終わったな・・・ と思ったら hell yeah!! だ!
hell 凸(´・Д・`)凸yeah !!
hell 凸(´・Д・`)凸yeah !!
>>860 access faxでぐぐれば
すぐ見つかった。
それと>1は、見ましたか?
870 :
名無しさん@そうだ選挙にいこう :04/12/26 06:51:56
テーブルの一つのフィールドを長整数(LONG)に設定してIDとしています。 そのIDに自動インクリメントの設定をしているのですが、レコードセットで RS.ADDNEWをやったとき自動的にIDが入る時とNULLになる時があるのです。 自動的に入るものとしてづっと使っていたのですが、ある日エラーが でるようになりました。調べてみると、IDフィールドがNULLになっています。 これではIDの自動設定機能は使えません。なにか使い方に問題がある のでしょうか? よろしく。
初歩的質問ですが、よろしければ教えてください。 [テーブルA] に住所録データが50レコードほど入っています。 フィールドは [ID] [氏名] [住所] … といった具合です。 [テーブルB] にはフィールドは [ID1] [ID2] の2つだけで、数レコード入ってます。 ここでクエリを用いて、[テーブルA] から [ID] が、 [テーブルB] の [ID1] か [ID2] に見つからないもののみを抽出したいのですが、 どのようにクエリを書けばいいのでしょうか?
幾多のアドバイス有り難うございます。 とりあえず、まいとーく買って、紹介していただいたソースを 元に作り込んでみます。 有り難うございました。
>>871 どのようにクエリを書けばいいのでしょうか?
の意味がわからん。
SELECT * FROM テーブルA WHERE NOT EXISTS (SELECT * FROM テーブルB WHERE ID=ID1 OR ID=ID2)
875 :
名無しさん@そうだ選挙にいこう :04/12/26 23:54:00
顧客テーブルに「愛知県名古屋市」と入力してある住所フィールドがあるのですがこれを 新規フィールド都道府県フィールドに「愛知県」市町村フィールドに「名古屋市」と表示 する作業をしているのですが住所フィールドの中に「福岡市」という県名は入力されていな いものがあるのですがこれを都道府県フィールドに「福岡県」市町村フィールドに 「福岡市」と表示されるようにしたいのですがどのようにすればよいのかよろしければ 教えていただけませんか?説明が下手ですみません。
876 :
名無しさん@そうだ選挙にいこう :04/12/27 13:19:08
住所入力支援機能で、郵便番号を入力すると、対応した都道府県、市区郡等が テキストボックスに表示されますが、 都道府県をコンボボックスにし、連動して表示させたいのですがどうすれば良いのでしょうか。 都道府県をコンボボックスにして、値集合タイプを値リストにし 値集合ソースに北海道;青森・・・と入力しました。
郵便番号入力支援機能はないんだろうか。住所入れると対応した郵便番号が〜っての。
880 :
870 :04/12/28 11:17:52
なあ。誰かこたえてくれー。 お前らIDのオートインクリメントって使ってないんか? 急にAUTOインクリメントせんようになった。 ACCESS2000 JET3.5だけどバグかよー。 どうしようもないから select Max(ID) as IDMAX from MSAFOTB で毎回ゲットしてセットするようにした。 こらーMS。おったら答えろ。バグだろがー。バグリスト作れぼけー。
急に人格変わったな
883 :
870 :04/12/28 16:53:54
>あれだけで分かる奴いるとおもうのか? access つかってて分からん奴以内と思うが。 おまえレコードにID振ったことないの? 通し番号だよ。わかる? IDってのは最初0なの、それでADDNEWすると新しいレコードがひとちゅできて IDは1になるの、そいでドンドン追加していくと1001になるの。 そいでね。1002回目にAddnewするだろ。そうするとIDがNULLになるの それからはたたいても、ひっぱたいてもどうしてもNULLなの。 わかる?この苦悩が。おれの所為だとおもう? 誰の所為なの? MSの所為だりょうがよ。馬鹿たれのクソッタレのMSのよう。 なんとかしろよ、このやろう。
884 :
870 :04/12/28 17:03:44
>急に人格変わったな そうでもありません。私はMSに電話したらいつもそういう調子で 怒鳴りまくります。 「バクだろ。ちがうんか? どういうつもりだ。俺はこの件で1週間も 悩んでるんだ。どうしてくれるんだ。 貴様ー。いまからこい。こっちへきて治せ。馬鹿やろう。誠意を示せ。誠意を。 ん。聞こえてるんか? どうなんやー、われー」 まあ皆様のお陰で、たいていは2chで解決しますので、めったには電話しませんが。 そういうわけで皆様よろしくお願いします。
・・・・・・これは釣り?
うん
>>884 それってダブレックレスジュールがONになってるんじゃないの?
質問です。年月日を入力するのは例えば2004/12/28と入れれば入りますよね。 では年月だけで入力したい場合はどのような入力方法が良いと思われますか? 私が失敗した方法は、年と月を別フィールドにし 年 月 16 1 16 6 15 5 16 12 15 8 みたいに入れていきました。 そんで16年6月以前を抽出しようと思い 年=<16AND月=<6と指定すると 15年8月が抽出されなかったのです。こんな馬鹿にアドバイスを。
dateserialあたりで年と月合体させちゃえばいいのでは? 日にちは適当に1にして。
単なる表示ならともかく、入力を元号でやるってのも何だかなという 感じだけど。 取りあえずいまの天皇陛下は絶対にお亡くなりにならないという前提で。 年月フィールド:Right("0" & [年],2) & Right("0" & [月],2) な感じのフィールドを足して <=Right("0" & [抽出条件_年],2) & Right("0" & [抽出条件_月],2) な感じの抽出条件にする、なんてのはダメ?
891 :
870 :04/12/28 22:12:02
>それってダブレックレスジュールがONになってるんじゃないの? えッ、それってどこで設定するの? テーブルデザインでは フィールド名 ID データ型 オートナンバー フィールドサイズ 長整数型 新規レコードの値 インクリメント 書式 空白 標題 空白 インデックス はい(重複なし) こんだけしか設定するとこないと思うんだけど。 コネクションだとかレコードセットOpen時のパラメータかい? ねえ。もっとくわしく教えてください。
>>890 ろくに調べもせず質問して申し訳ありませんが
「年月フィールド:Right("0" & [年],2) & Right("0" & [月],2) 」という式は
年 月
16 12=1612
16 5=1605 になるのですか?
>>892 ろくに確認もせずに答えて申し訳ありませんが
たぶんなるぜ、いや、きっとなる
([年] * 100 + [月]) のほうが・・・
いわれて何となく同意 大小比べたり、とかだし
と、まちがえた 894じゃなくその前だった
898 :
名無しさん@そうだ選挙にいこう :04/12/30 00:32:12
>>874 教えて頂いた方法を試してみたところ、
希望通りのクエリを作ることが出来ました。
回答ありがとうございました。
また、報告&お礼が遅くなってすみませんでした。
900 :
名無しさん@そうだ選挙にいこう :05/01/01 10:30:35
Accessかじった程度でテーブルとクエリをある程度理解できたレベルなんですが、このレベルでいい感じの入門書買うとしたら何かいいのありますか? また自分で本屋で選ぶとして、どの辺を注意したらいいですか? 何か定番書みたいなものがあったら教えてください。 よろしくお願いします。 ちなみにExcelはある程度VBAを使いこなせる程度のレベルはあります。
ども こんにちは 今あるソフトウェアを改造するためのソフトウェアをAccessで作成しております。 そのソフトウェアがどこにインストールされているのかを調べてパスを手に入れ るというところまではできています。 改造ファイルはこれまたmdbファイルなのですが、このmdbと自分のソフトウェア の中で起動時にテーブルのリンクを自動的に作成するようなコードを書きたいの ですが、うまくいきません。 パスはもうわかっているので、うまくいきそうなのですが、いまいちです。 すでにリンクテーブルに対するフォームなんかは完成しており、今は直接テーブル のリンクを作って運用してます。 けれども、素人さんがこれを使うとなるとそれはやはり自動化すべきと考え今に至り ました。インストール先もぼちぼちですし どか一つよろしくです
今さらながらACCESS97欲しいんだが秋葉原行けばうってるかなぁ。会社が97つかってるんだけど 2003で変換して97にさらに戻すとバグる事がおおいんだよね。
割れば?
905 :
名無しさん@そうだ選挙にいこう :05/01/02 08:55:18
2千種類の商品の売上が 5年の日次ベースで入力されている テーブルがあります。ここから小分類ごと(1グループ20−200品目) にデーターを抽出してエクセルに取り込みたいのですが。 まず本等をみてクロス集計クエリを試しましたが、 1.グループの品目登録を手動で行わないといけない 2.読み込み時間も結構かかる で1品目ごとのクエリを多数回行う に変えたら 1.スピードがより遅くなった。 2.品目はExcel上でパラメーターとして与えるので入力の手間は減った。 となって困っています。 何かより良い方法があれば 助言お願いします。 Excelでの処理は日ごとの伸び率を計算したり、 ある日を基準に指数化したりするので Access内で処理するには 自分の手に余ります。VBAは初心者レベルですが理解可能です。
>>902 見当違いなレスつけるな 糞が スレ汚しは消えろ
908 :
名無しさん@そうだ選挙にいこう :05/01/02 21:15:48
数量と単価を入力してOKをクリックするフォームを作りました、 数量は必ず入れたいのでnullやチェックのキーワードで具具って 下記のようなコードを入れました。 「数量が未入力です」のメッセージボックスが出た後に、 フォームにもどって入力したいのですが、Cancel = Trueで 中断かと思ったら、次の更新コマンドに進んでしまいます。 メッセージボックスからフォームに戻る方法はどうすれば いいのでしょうか? If Me!数量 < 1 Then MsgBox "数量が未入力です" Me!数量.SetFocus Cancel = True End If '更新コマンド発行 'DoCmd.RunCommand acCmdSaveRecord DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.GoToRecord , , acNext
909 :
名無しさん@そうだ選挙にいこう :05/01/02 21:49:24
>>908 If Me!数量 < 1 Then
MsgBox "数量が未入力です"
Me!数量.SetFocus
Cancel = True
Exit Sub
End If
すみません&遅くなりました>909さん ?沒かけてわからなかったのですが、 Exit Subでしたか、早速試してみます。 ありがとうございました。
>>905 これだけじゃ答えようがない
品目コード自体が体系化されてるのか?
1-2桁目 大分類
3-4桁目 中分類
とかなってるのか?
コードが体系化されていないのなら
質問の通り品目情報を登録するしかないのでは?
912 :
名無しさん@そうだ選挙にいこう :05/01/03 19:27:50
【. 目 的 】 フォームでタブコントロールを使いたい
【. 条 件 】 WinXP Access2003
■試したけどうまくいかなかった処理
【. 概 要 】 既存のコントロールをタブにコピペできない。
1.帳票形式のフォームを作成
2.タブコントロールをフォーム上に配置
3.既にあるコントロール(テキスト・コンボボックス)をタブにドラッグ
4.タブ上に配置されない
【駄目な理由】
新しいコントロールをタブ上に配置することはできます。
そのコントロールを既存のものと同じように設定して使うことは
できるのですが、既存のものをタブ上に移して(楽して)使いたいです。
まさかできないのでしょうか?
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 Access タブコントロール
>まさかできないのでしょうか? この一文に全米がむかついた
914 :
名無しさん@そうだ選挙にいこう :05/01/03 19:43:02
>>911 レスありがとうございます。
品目コードは体系化されていません。
1.別テーブルに[商品コード]、[グループ名]を入力し
登録作業合理化
2.全体にExcelでの分析作業も膨大過ぎるので、重要でない
グループは グループ売上のみ集計
などで極力作業量を減らそうと試みています。
916 :
名無しさん@そうだ選挙にいこう :05/01/05 15:56:25
WinXPでAccess2000を使っています。 GoToRecordで特定のレコードに移動するために、 マッチしたレコードの番号を取得するのは どうすればよいでしょうか。 やりたいのは下のような感じです。 recordNumber = function(ID = [Forms]![受付入力]![ユーザ名] , "Qユーザ名表示") DoCmd.GoToRecord acDataForm, "ユーザ入力", acGoTo, recordNumber
>>916 GoToRecordのacGoToのオフセットは自分の指定したIDへ
飛ぶのでなく、行に対して飛ぶので対象のIDが先頭から何行目に
あるかを取得して指定すればいいのでは?
918 :
名無しさん@そうだ選挙にいこう :05/01/05 20:59:06
Access2000を使っています。 テーブル1のデータ 1 2 3 4 テーブル2のデータ 3 4 5 6 7 とあるとして、 この差分(この場合1,5,6,7) をテーブル3に貼り付けるにはどうすればよいでしょうか?
>>918 不一致クエり テーブル作成クエリでどうにかなるんじゃねぇっすか
920 :
918 :05/01/05 21:32:57
書き間違いがありました。抽出したい差分はこのばあい1,2,5,6,7でした。
>>919 不一致クエリーでしてみたんですが、
1,2
か
5,6,7
のどちらかしか取り出せねぇんです。
>>920 ならば、1,2を抽出したクエリをテーブル作成クエリに変換。そんで5,6,7を作成したクエリを追加クエリ
にすればいいのだ。それより簡単な方法は俺は初心者だから知りませんです。
>>921 unionで出来ました。ありがとうございます。
>>917 レスどうもです。
[Forms]![ユーザ入力]![ID].SetFocus
DoCmd.FindRecord DLookup("ID", "Qユーザ名表示")
な感じでできました。
【. 目 的 】極座標グラフへのプロット
【. 条 件 】 Access2003 with Windows XP
■試したけどうまくいかなかった処理
【. 概 要 】
角度と電流の関係を極座標グラフにプロットしたいのですがどうやってもうまくできません。
2×10のテーブルをつくり、データを入力してピボットグラフビューで極座標グラフを作ろうとするのですが、
データフィールドをグラフにドラッグ&ドロップすると表を縦に合計したものが出てしまいます。
テーブルの作り方から教えてください。お願いします。
【駄目な理由】 (動作状況など)
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 Access 極座標 グラフ
よろしくお願いします。初歩的な質問で大変申し訳ありません。
926 :
名無しさん@そうだ選挙にいこう :05/01/08 03:35:12
Win98、Access97です。 Access完全な初心者です。 うちとこの従業員でパソコンわかるひと 一人もいません。 今業務で使っているAccessは、ファンクションキーと テンキーだけで使えるようになっているんだけど、 メニューバーもツールバーもありません。 どうやってメニューバーを出したらいいのでしょうか?
>>926 ここで聞くことじゃない
ソフト作った人に聞けよ馬鹿
928 :
926 :05/01/08 05:22:59
ソフト作ったのは外部のソフト会社のひとだし、 こんなことくらいでいちいち呼べないんです。
>>926 それだけで分かる人がいると思いますか?
最低限テンプレを使えよ屑
---------- ここから ----------
【. 目 的 】 (何がしたいのか必ず記入。)
【. 条 件 】 (使用OS、ACCESSのバージョン など)
■試したけどうまくいかなかった処理
【. 概 要 】 (どんな処理を試したかを説明)
【駄目な理由】 (動作状況など)
■これだけはやりました
【
>>1 を読んだ】 はい・いいえ (読まない人が多いので必ず目を通してください)
【Googleで調べた】 はい・いいえ (大概の疑問は検索することで解決します)
【検索キーワードは?】 (全て列挙してください)
---------- ここまで ----------
どうもすいませんでした。 もうちょっとAccessの事勉強して出直してきます。
932 :
名無しさん@そうだ選挙にいこう :05/01/08 10:35:07
回答じゃないんで申し訳ないが・・・
>>925 なぜアクセスで作る必要性があるのでしょうか。
アクセスで扱えるのはピボットグラフだけなので融通性は悪いと思います。
データテーブルとグラフだけを考えるなら、エクセルの方が良いと思います。
それから極座標グラフについてですが、エクセルでもレーダーチャートぐらいしか出来ません。
しかも軸の目盛りなんかの扱いには制限も多かったよう思います。
専門的・特殊なグラフがご希望でしたら、グラフ作成ソフトの検討が必要と思います。
>>926 そのファイルを作った人に聞くのが良いと思いますが。
使用者が勝手に変更できないように(壊さないように)するためにメニュー等を消した訳で、
それをパソコン知らない人と完全な初心者が弄るのは、お勧めできません。
改変したい点があれば、作成者に相談するのがよろしいかと思います。
お節介ですみません。
>>932 そうなのですか。わかりました。おとなしくグラフ作成ソフトを探してみることにします。
ピボットグラフの性質をよくわかっていなかったもので。。。
ありがとうございます。
日付 名前 金額 日付 名前 金額 日付 名前 金額 日付 名前 金額 日付 名前 金額 日付 名前 金額 と、縦二段組みのレポートを作成したいんですが 良い方法はないでしょうか? Access2002です。
>>934 前スレでガイシュツ・・
と言いたい所だが、すでに沈没していると思うので転載
547 名前:名無しさん@そうだ選挙にいこう[] 投稿日:03/07/01(火) 22:40
電話帳を想像していただけるとありがたいのですが、
レポートで縦3〜4列に複数レコードの情報を連記するのって
できるのでしょうか?
>547 電話帳から想像すると…
単純に3〜4列表示にするなら、レポートのページ設定の
レイアウトで列数、行間隔などを設定できる。
これは単純に、例えばレポートに表示する1〜100のデー
タがあった場合、1枚の用紙に1列10個で3列のデータが
配置できるとすると、3列表示にし自動的に折り返して必要
枚数に印刷してくれると言うもの。
ここってレベル低いなw 答えてねぇ質問ありすぎw おまけに答えているものの内容がレベル低すぎ。 ひょっとしてその程度なの?
870様の再降臨ですね
起動時にAというmdbの特定のテーブルのリンクをBというmdbに つくりたいです。 BはAのパスを取得しているという前提でお話しします。そのときの 値は、APathに格納しているとします。 起動時ですから、そのモジュールを作って読み込ませればいいわ けですが、ここにどのようにAのテーブルをリンクするという構文を 書けばよいのかわかりません。 ご教示願えればと存じます。
941 :
名無しさん@そうだ選挙にいこう :05/01/10 11:52:35
【. 目 的 】 帳票フォームでレコードの値によって背景色を変える
【. 条 件 】 WindowsXP,Access2003
■試したけどうまくいかなかった処理
【. 概 要 】 VBAでBackColorプロパティを指定する
【駄目な理由】 レコード単位でBackColorプロパティを持っていないので、
最初のレコードの値で背景色が決まってしまう。
■これだけはやりました
条件付き書式にて、色の指定。しかし、条件付き書式が3つまで(デフォルト
を入れて4つ)なのと、VBAにて機能の実現をしたかった。
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 (帳票フォーム 背景色),(帳票 背景色)
レスありがとうございます。
このページは前に参考にさせていただいた事があったのですが、
AccessのVBAで機能の実現ができないかと思い、書き込みさせて
頂きました。
APIを使って
>>941 の機能は実現できないでしょうか?
>>940 ありがとう
非常に助かったよ。もうなんて言うか、サンキュー
945 :
あさこ :05/01/10 17:09:53
【. 目 的 】 画像を一気に挿入
【. 条 件 】 WinME ACCESS2000
■試したけどうまくいかなかった処理
【. 概 要 】 画像を1レコードに1点ずつ挿入したいのですが、一括挿入する方法はありますか?
【駄目な理由】 1点1点挿入するしかないのでしょうか?
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 acccess 画像 挿入
>>945 文面から察するにOLEオブジェクト型のフィールドにBMPかなんかの画像を
ファイルから挿入しておられるのだろうと思いますが
この方法は
・件数が多いと挿入が大変
・挿入する度にデータベースのファイルサイズが膨れ上がっていく
などの理由からあまりおすすめいたしません。
テーブルのテキスト型(もしくはメモ型)のフィールドに画像ファイルのパスを保管し、
フォームなどに配置した非連結のイメージコントロールに表示させる、
(フォームのレコード移動時イベントでイメージコントロールにパスを送るコードを記述する)
こういった方法の方が、仰るような一括処理もしやすく、MDBファイルサイズに影響を与えません。
そんでも一応やり方だけでも・・と思って調べましたが、根性なしなので力尽き、
わからなくてもいいや、どうせやんないし・・とあきらめました。
【. 目 的 】 フォームのデザイン(サイズ)を変えたい。
【. 条 件 】 WinXP ACCESS2002
■試したけどうまくいかなかった処理
【. 概 要 】 windowの最小化や閉じるボタンやスクロールバーなどが隠れて操作できなくなる
【駄目な理由】 ウィンドウサイズの固定?プロパティのシラミツブシ
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 acccess 最大化 見えなくなる
プロパティではきちんと各ボタン、バーは表示させてます。 どうもウィンドウサイズが一定に固定されている様子。 サブフォームにはしていません。
>>947 境界線スタイルプロパティを「なし」にしてるとか?
そういう問題じゃない?失礼しました
横の方から失礼 >>フォームなどに配置した非連結のイメージコントロールに表示させる、 >>(フォームのレコード移動時イベントでイメージコントロールにパスを送るコードを記述する) コントロールはいくつか選択肢がありそうだけど、個人的には Microsoft Forms 2.0 Image がおすすめ Dim MyPic as Object Dim MyCtrl as Control Set MyCtrl=Me![コントロール名] Set MyPic=LoadPicture("画像パス") Set MyCtrl.Picture=MyPic ちょっと書き足せばスライドショーもいけます
951 :
名無しさん@そうだ選挙にいこう :05/01/13 00:31:54
【. 目 的 】 マクロのセキュリティレベルを下げたい 【. 条 件 】 WinXP SP1 Access2003 ■試したけどうまくいかなかった処理 【. 概 要 】 〔ツルー〕からマクロのセキュリティタブがない? 【駄目な理由】 DBを開けるときにいちいち警告ログが出てしまうので何とかしたい 初心者ですヘルプ等調べたが、お手上げですよろしくお願いします
セキュリティ下げる方法もどこかで紹介されてたと思うけど もう一つ、「デジタル署名」という方法があります。 自分のローカル環境のみでも利用可能です。 発行しておいてからVBEのツール>署名でMDBに署名され、 最初にその署名を許可しておけばあとでダイアログでなくなった。
953 :
名無しさん@そうだ選挙にいこう :05/01/13 09:38:07
Windows XPでAccess2000を使っています。 [受付テーブル] 店1, 店2 1, 2 2, 3 [店テーブル] ID, 店名 1, FUJITSU 2, TOSHIBA 3, PANASONIC とします。 選択クエリで[店1]と[店2]の店名を表示しようとしています。 [受付テーブル]の[店1]と[店2]から[店テーブル]の[ID]に 線がつながっている状態ですが、店名を二つ下にドラッグしました。 ですが、クエリを開いても何も表示されません。 どうすれば良いでしょうか。
>>953 [店テーブル]をもう一つFORM句に...店テーブル_1となるから
それと受付テーブルの[店2]を結合させる
>>953 下四行の意味が分からないけど、
店1 店名1 店2 店名2
1 FUJITSU .2 TOSHIBA
2 TOSHIBA 3 PANASONIC
と表示させたいんなら、クエリデザインで店テーブル二つ表示して
店テーブル 受付テーブル 店テーブル1
ID←-------------------店1
店2-----------------→ID
でいいんジャマイカ?
956 :
953 :05/01/13 13:45:51
>>954 ,955
できました、ありがとうございます。
同じテーブルをもう一つ追加できるとは思わなかったです。
957 :
あさこ :05/01/14 00:27:20
>>946 具体的なやり方を教えてくれませんか?
1000枚程あるのですが....。
すいません。是非お願いします。
テーブルAには他のDBからインポートしたデータがあり、日々その内容が変更されたり追加されたりしているので、 過去半年分削除→追加インポートで更新しています。 テーブルBは、テーブルAと同じ主キーを持ち、テーブルAにはないフィールドを補助的に作っています。 例) テーブルA(自分では変更不可) [ID][氏名][住所][電話番号][その他内容が追加変更されるフィールド].... テーブルB(自由にいじれる) [ID][担当者][入金額][備考]..... この二つ[ID]を1対1でリレーションさせて使用しているのですが、 テーブルAのレコードが増えるたびに、テーブルBにも手動でIDを追加しなければならず、面倒&追加忘れ多々で 困っています。 テーブルAをインポートした時点で、追加されたIDをテーブルBにも自動で追加することはできますか?
INSERT INTO テーブルB(ID) SELECT ID FROM テーブルA WHERE NOT EXISTS (SELECT * FROM テーブルB WHERE テーブルB.ID=テーブルA.ID)
ここに質問するのは間違いだな(藁
962 :
名無しさん@そうだ選挙にいこう :05/01/16 00:15:14
access2000です。 表形式のレポートでコントロールソースに以下の式を入れると#erroになります。 =IIf([フィールド名]=1,"1","0") 実験で =CStr([フィールド名]) だとエラー =CInt([フィールド名]) だと0が表示されます。 フィールドの方は数値型(整数型)です。 ちなみにフォームではちゃんと実行されます。 なぜでしょうか。
そのコントロールの名前をフィールド名とは違う名前にしましょう。
>>963 盲点でした!
ものすごく助かりました。ありがとうございました。
>>962 追記
レポート内コントロール、ソースの式の値で、レコードソースのフィールド名と
コントロール名が重複した場合、コントロール名が優先され、
各関数によって自身を再帰的に参照してしまうためエラーになる。
例:CStr()関数のエラー時の戻り値は"エラー" + エラー値として格納されている数値を表す文字列
なのでそのように表示されたのだと思われます。
あ・・書いてる間に解決してるしw
966 :
名無しさん@そうだ選挙にいこう :05/01/20 11:32:53
XPでACCESS2002です。言葉では説明しにくいのですが、 コンボボックスが何個かあります。1個目のコンボボックスにはリストからAを選んだとすると、 2個目のコンボボックスのリストはBからスタートさせたいんです。 どういう設定にすればよいでしょうか?
>>966 2個目のコンボ内容をダイナミックに変更せずに、選択位置だけ変えたいのなら
1個目のコンボボックスの更新後イベントプロシージャに
2個目のコンボボックス表示したい連結列の値(Value)を設定するコードを書く
968 :
名無しさん@そうだ選挙にいこう :05/01/20 15:24:46
バイトの時間管理を acccess2000でつくろうとおもっています 3つのフィールド [開始時間][終了時間][本日の労働時間]について(型は時刻) [開始時間]フィールドに時刻を入れる際なるべくキーボードは使いたくないので コンボボックスで選ぶようにしたいのです [時間][分] この二つのコンボボックスで選ばれた数値を[開始時間]という 時刻型のフィールドに入れるにはどうしたらいいでしょうか? また[開始時間]フィールド、[終了時間]フィールドに入った数値から [本日の労働時間]フィールドに自動的に計算して入力されるようにしたいです どう計算すれば良いのでしょうか
>>966 私は初心者なので、
「コンボボックス 2段階の絞り込み」でぐぐったサイトを参考にさせてもらいました。
>>968 CDate(Format([時間],"00") & ":" & Format([分],"00"))
終了時間-開始時間でいいのでは?
Format([終了時間]-[開始時間],"hh:nn")
休憩/日付跨ぎなどがあるのならそれなりに...
971 :
名無しさん@そうだ選挙にいこう :05/01/21 15:23:47
【. 目 的 】 動作について皆さんのご意見を聞きたい
【. 条 件 】
PC1:PentiumV600、20G、348MB、 WindowsXP ProSP1、Access2000
PC2:Celellon1G、30G、256MB、 WindowsXP HomePS1、Access2000
■試したけどうまくいかなかった処理
【. 概 要 】
3500ほどのレコードの前日差&前日比を計算させるクエリを作成
テーブルをそのままのフィールドX7、算出フィールドX2
【駄目な理由】
動作が非常に遅い。
PC1のスペックで、クエリを開こうとすると5分くらいかかる。<PC2では2分程度
デザインビューで開く分には問題ない。
■これだけはやりました
【
>>1 を読んだ】 はい
【Googleで調べた】 はい
【検索キーワードは?】 Access、動作が遅い
3500件ほどのテーブルは1つだけで、残り数テーブルは500件程度。
上記PCでは、アンダースペックなのでしょうか?
ちょっとスペック違うけど再現してみようかな・・ 3500件のテーブルのデータ型とクエリ内の算出フィールドの計算式を 教えてもらえますか。
>>971 算出式って差と比だけでしょ。数千件程度で所要〜分ってのはちょっと異常
それ以前、たとえば当日分前日分を出す段階で、何か極端に効率の悪いことやってる、とか
まさかとは思うが、そのテーブルはリンクテーブルではないよね?
975 :
名無しさん@そうだ選挙にいこう :05/01/24 00:05:00
>>972-973 遅くなりました。
このレスを書き込む直前に、PC1にて再度動作確認を行ってみたところ
1分ほどでクエリを開けました。<これは"普通"の動作時間でしょうか?
一応、皆さんのご意見を伺いたいので、SQLビューを晒します。
リンクテーブルではありません。
SELECT T.Data, T.[A], T.[B], T.[C], T.[D], ([D]-(SELECT [D]
FROM テーブル名
WHERE DATA = ( SELECT MAX( DATA )
FROM テーブル名
WHERE DATA < T.DATA ))) AS E, [E]/[D] AS F, T.[G], T.[H]
FROM テーブル名 AS T;
フィールドDATA:基テーブルから追加。日付時刻型。
フィールドA,B,C,D:基テーブルから追加。通貨型(5桁+小数点以下2桁)。
フィールドE:前日差(Dataフィールドを参照して、当日・前日のDの差を算出)
フィールドF:前日比(E/D)
フィールドG,H:基テーブルから追加。日付時刻型。
E,F以外はフィールドを追加したのみで、特に計算に利用していません。
A,B,C,Dを通貨型としているのは、「算出精度」が高いと聞いたからです。(真相未確認)
以前は倍精度浮動小数点型でしたが、動作スピードに変わりはありませんでした。
上記SQLも、Web上にてご教示いただいたものです。
「当方のAccessがおかしいかも・・」と思い、Officeの修復・再インストールを行っています。
そのときは、相変わらずPC1でクエリを開くのに5分ほどかかりました。
あー、WHEREでサブクエリ使っちゃったか いや別に悪いことじゃないんだけど 何となくなるほどって感じ 細かいところまでは見てないから分からないけど (きょうは眠くてやってられない)、もしかしたら もっと速くいける方法があるかも (ずーっと前、1万件ぐらいのデータでWHEREサブクエリ使って、 トイレから戻っても処理が終わらないので頭にきて電源切っちゃった経験あり)
ctrl+breakで中断できなかったっけ?
質問です。アクセスでHTML(ページ)を作るときにはやはり、 HTML言語を学ばないといけないのでしょうか? それともJAVAスクリプトですか?
979 :
サブクリえん :05/01/25 16:57:22
>>976 そうなんですか。
もしよろしければ動作の速い方法をご教示ください。
このスレを巡回しますので、いつでも結構です。
仮コテつけておきます。
やろうとしていることに比べてクエリが複雑すぎ テーブル中、計算に必要なのは日付DATAとDの値だけだよね ひとまずフィールドA,B,C,G,Hは無視 テーブル(日付, 金額)として、以下をコピペしてみて たぶん100倍ぐらいは速くなると思う SELECT Q0.本日, Q0.前日, Q0.金額 AS 本日金額, テーブル.金額 AS 前日金額, [本日金額]-[前日金額] AS E, ([本日金額]-[前日金額])/[本日金額] AS F FROM (SELECT テーブル.日付 AS 本日, テーブル.金額, [日付]-1 AS 前日 FROM テーブル) AS Q0 LEFT JOIN テーブル ON Q0.前日 = テーブル.日付
984 :
サブクリえん :05/01/26 16:09:44
>>983 うわっ!
めっさ速くなった!!!<一瞬で表示できます
・・・がっ!
前日金額のフィールドが抜けてる箇所があります。
当方の説明不足でしたが、日付データは毎日ではなく、土日祝日を除いた日付です。
(年末年始なども除く)
ですので、以下のような日付の跳んでいる箇所では前日金額が表示されず算出されません。
1991/01/11
1991/01/14:算出されず
1991/01/16:算出されず
1991/01/17:算出OK
この点はどのようにしたら良いのでしょうか?
動作は非常に速いので、ぜひ利用させていただきたいです。
よろしくお願いいたします。
985 :
名無しさん@そうだ選挙にいこう :05/01/26 20:08:34
もう少し自分で考える努力をしたら?
WINDOWS XPでACCESS2003を使用しています。 連結オブジェクトフレームを使用してフォームにjpg画像を表示したいのですが、 アイコン表示になってしまい確認できません。 Photo Editerに変わって入ったPictureManagerにJPGの関連付け機能がないというのが 理由らしい、というのは検索して判ったのですが、「photoEditor」を入手できない状況で これを解決する方法はありますでしょうか?
僕の負け (たかが「前日」を出すのに何であんな複雑なサブクエリを使ったのか、 理由を読みとれなかったという意味で、負け) ただの前日ならマイナス1日でいいだろう、前日金額がない日は差比もNullでいいだろうと、 単純にクエリ式で出しちゃったけど、その日にとっての前日がいつなのか状況によって 変わるようなら、別あつらえの当日前日カレンダーみたいなものを用意しなきゃダメっぽい。 ただこれはクエリだけでやろうとするなら、の話。 VBAでレコードセット開けば、何とでもできる(レコード一個一個見て、前日データがなければ あるところまでさかのぼってそれを前日とする、みたいなやり方。数千件程度だったら 処理時間はそんなにかからないと思う。パズルとしては面白そうなのでそのうち気が向いたら、ね)
元テーブル(日付, 金額) 出力用仮テーブル(本日, 前日, 本日金額, 前日金額, 差, 比) として、モジュールに以下をコピペ Function KingakuSaHi() Dim DHon As Date, DZen As Date Dim GHon As Currency, GZen As Currency Dim RST0 As New ADODB.Recordset, RST1 As New ADODB.Recordset Set RST0 = New ADODB.Recordset Set RST1 = New ADODB.Recordset CurrentProject.Connection.Execute "DELETE * FROM 出力用仮テーブル" RST0.Open "SELECT 日付, 金額 FROM 元テーブル ORDER BY 日付 DESC", CurrentProject.Connection RST1.Open "出力用仮テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
990 :
続き :05/01/27 02:50:46
RST0.MoveFirst Do Until RST0.EOF DHon = RST0![日付] GHon = RST0![金額] RST0.MoveNext If RST0.EOF Then Exit Function End If DZen = RST0![日付] GZen = RST0![金額] RST1.AddNew RST1![本日] = DHon RST1![前日] = DZen RST1![本日金額] = GHon RST1![前日金額] = GZen RST1![差] = GHon - GZen RST1![比] = (GHon - GZen) / GHon RST1.Update Loop RST0.Close Set RST0 = Nothing RST1.Close Set RST1 = Nothing End Function あとは適当な場所からこのファンクションを呼び出して (呼び出し方が分かんなかったら マクロ→プロシージャの実行→プロシージャ名 KingakuSaHi () でもいい) Ac2000, Win98, 400MHz, 128MBで、3秒ぐらい
>>979 眺めてたけどやはり
>>983 氏のアプローチが良いと思う。
しかし休日の問題があるのであらかじめ前後関係をはっきりさせる
"連番"列を追加した"一時テーブル"を作成する。
SELECT 日付,金額 INTO 一時テーブル FROM テーブル ORDER BY 日付;
ALTER TABLE 一時テーブル ADD COLUMN 連番 AUTOINCREMENT;
上記SQLをマクロなどで警告なしで連続実行させた後に
>>983 氏のクエリを元にした以下のクエリを実行する。
SELECT Q0.本日, Q0.金額 AS 本日金額, 一時テーブル.金額 AS 前日金額, [本日金額]-[前日金額] AS E,
([本日金額]-[前日金額])/[本日金額] AS F FROM [SELECT 一時テーブル.日付 AS 本日, 一時テーブル.金額,
一時テーブル.連番-1 AS 前日連番 FROM 一時テーブル]. AS Q0
LEFT JOIN 一時テーブル ON Q0.前日連番 = 一時テーブル.連番;
一時テーブルが出来てしまうのがいまいちだけど速度的には問題ないと思うよ。