ズザァー
よ〜〜〜し!3ゲットオオォォ!!  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ (´;(´⌒;(´⌒;;(´⌒;;//(´⌒;;(´⌒ (´/ / (´⌒(´⌒; ∧ ∧(´⌒;;//(´⌒;; ⊂(゚Д゚ )⊃(´⌒(´⌒;;(´⌒ ズザーーーーーーーツ! (´/ / /(´⌒; ∩/ ∩ //(´⌒ || | |/ └ ⌒└
なぜアクセスを使うのか? それが問題だ。 6万以下のデータなら、エクセルを使え! エクセルの関数を極めよ! と上司に言いたい。
>>4 紙出力が多いケースだと、レポート機能の充実してるAccessの方が使いやすいYo!
あとユーザー管理が楽な点かな?
6 :
名無しさん@そうだ選挙にいこう :02/04/18 20:50
Access2002を使用しています。 業務で使用する大量のAccess95形式のMDBファイルがあって それを全て2002形式に変換したいのですが、 コマンドラインから "C:\Program Files\Microsoft Office\Office10\msaccess.exe" _ 変換元.mdb /Convert 変換先.mdb とするとAccess2000形式に変換されてしまいます。 オプションの「規定のファイル形式」をAccess2002に設定してもダメでした。 色々調べましたが、解決方法が見つかりません。 バッチでもVBでもVBAでも、一括変換できれば何でも構いません できれば、変換時に出力するアラートも無視するような仕組みも欲しいです。 よろしくお願いします。 OSはWindows XP Proです。
7 :
名無しさん@そうだ選挙にいこう :02/04/18 23:03
フォームのデザインビューで図形が重なったとき、Wordのオートシェイプのように 順序を最背面に移動するというようなことが出来ますか?
宛名ラベルウィザードを使用したときの郵便番号の書式を 〒○○○−○○○○にするときはどうすればよいのですか? 書式を「\〒999\-9999」にしたのですが、変化ありません。 お願いします、お助けください。
9 :
名無しさん@そうだ選挙にいこう :02/04/18 23:24
>>8 それ定型入力とちゃう?<「\〒999\-9999」
書式=表示書式
定型入力=入力書式(ただし書式がない場合は表示書式を兼ねる)
>>9 すみませんその通りでした。
定型入力でちゃんと表示できました。
どうもありがとーーー。
>>8 どうでもいいけど、郵政事業庁は、郵便番号の頭に「〒」マークは
付けないように推奨しているぞ。OCRの誤認率が高くなるから
出力するモノが郵便物ではなく、名簿や住所録の類なら問題ないけど
12 :
名無しさん@そうだ選挙にいこう :02/04/19 09:42
そうなんですか。 知りませんでした。 だから標準ではつかないんですね。
13 :
名無しさん@そうだ選挙にいこう :02/04/19 10:33
フォームの壁紙のスタイルを標準から石壁に変えようと思い、 どこでやるのかわからなくて探していたらオートフォーマットというのがあったので、 そこを触ってたら石壁が標準に変わってしまい、石壁が無くなってしまいました。 石壁を復活させるにはどうすればいいのでしょうか? よろしくお願いします。
14 :
名無しさん@そうだ選挙にいこう :02/04/19 13:48
>>13 いつもここにはお世話になっているので、恩返しをしたくて
一生懸命調べてみました!
石壁が標準になってしまったフォームをデザインで開いて、
フォームのプロパティを表示させる。
書式タブのピクチャのビルドボタンをクリックして、
C:\Program Files\Microsoft Office\Office\Bitmaps\Styles\STONE.BMP
を指定する。
オートフォーマットを起動させて、カスタマイズから
'クエリ○'フォームを基に'石壁'を更新するをオンにする。
石壁という項目自体無くなってしまっている時は、
'クエリ○'フォームを基に新規フォーマットを作成するを
オンにして、名前を「石壁」にする。
で、どうでしょうか…?
(プログラムとかコマンドにて) 出力プリンター名を指定するにはどうしたらいい?
16 :
名無しさん@そうだ選挙にいこう :02/04/19 19:47
>>13 すみません、オートフォーマットを起動する前に
フォームプロパティの書式タブでピクチャ全体表示を
「はい」にしてください。
18 :
名無しさん@そうだ選挙にいこう :02/04/20 00:45
>17 2002から追加された、Printオブジェクトのことじゃね? あれでレポートA4地獄から脱出できるよ。 って言えば分かってくれる開発者は絶対いるよね。客先で プリンタいじる空しさってゆーかさ・・・
19 :
名無しさん@そうだ選挙にいこう :02/04/20 07:35
誠に申し訳ありませんが,教えてください。 LAN上のアクセスデータを利用していたのですが,突然,LAN上の データを開いているにも関わらず,Aドライブを読みにいき,まったく データが反映されなくなりました。 LAN上の他のPCでは問題ないのですが,私のPCだけがこのような 症状になってしまいました。 このようになってしまった場合,どうやって直せば良いでしょうか。
20 :
名無しさん@そうだ選挙にいこう :02/04/20 09:49
>19 それ、Accessの所為じゃないと思うけど。このスレじゃ回答得られないと 思います。 それと、LAN上で複数共有してるようですが、データどうなってるか わからないですよ?
ACCESS使ってデータベース作ってて テーブルは作れたんですが 式ビルダ&クエリがまったくわかりません。 式ビルダ&クエリの参考書でおすすめの本はありますか?
22 :
名無しさん@そうだ選挙にいこう :02/04/20 12:03
(お聞きしようとしていたら、同じような質問が。(w (私の方は)これからACCESSを使い始めようと思っているのですが、 ACCESS初心者に良い参考書を教えて頂けないでしょうか?
24 :
名無しさん@そうだ選挙にいこう :02/04/20 15:31
>>14 13です。出来ました!
どうもありがとう。
私も早く恩返しが出来るように頑張ります!
25 :
名無しさん@そうだ選挙にいこう :02/04/21 08:33
アクセスを作業中に「サブフォーム」を消してしまいました。 作り直すことができるでしょうか。 宜しくお願い致します。
26 :
名無しさん@そうだ選挙にいこう :02/04/21 11:32
>>25 メインフォームをデザインで開き、ウィンドウサイズを調節して
データベースウィンドウも表示させる。
サブフォームに使用したいフォームのアイコンをドラッグ&ドロップ
でメインフォームへ。
サブフォームのサイズを整える。
27 :
インポートしたいの :02/04/21 12:56
c:\testに???_A.txt形式のテキストファイルがあります 例) 135_A.txt 246_A.txt : ファイルの中身はどれも 2002/04/21,12:00:00,鈴木, 2002/04/21,13:00:00,佐藤, のようにカンマで区切られてます. これを135_A.txtなら、 2002/04/21,12:00:00,鈴木,135 2002/04/21,13:00:00,佐藤,135 のように???の部分を行末に書き足すことは、アクセスのVBAでできますか? または、このような事ができるソフトってありませんか?
ご回答をしていただきありがとうございます。 ただ心配なのが、私が初心者(特にアクセス)なので、 ご回答のようにうまくいくのかわかりませんので、 より簡単な(他にも)方法があれば教えていただきたいのです。 たびたびお世話になりますが、宜しくお願い致します。
>>27 以下を hoge.vbs という名前でデスクトップに保存し、それをダブルクリック。
ただし実行する度に数値が後ろに付くので、実行は1回きりにしろよ
念のため c:\test の内容は別フォルダにバックアップしておいてくれ
folder = "C:\test"
Set FS = CreateObject("Scripting.FileSystemObject")
Set WS = CreateObject("Wscript.Shell")
Sub AddBuf(buf, s)
buf(UBound(buf)) = s
ReDim Preserve buf(UBound(buf)+1)
End sub
ReDim nbuf(0)
For Each F In FS.GetFolder(folder).Files
If LCase(Right(F.Name ,6)) = "_a.txt" Then AddBuf nbuf, F.Name
Next
For i = 0 To UBound(nbuf)-1
t = FS.BuildPath(folder,nbuf(i))
Set F = FS.OpenTextFile(t,1)
ReDim fbuf(0)
While Not F.AtEndOfStream
AddBuf fbuf, F.ReadLine
Wend
F.Close
nnn = Trim(Left(nbuf(i), InStr(nbuf(i), "_")-1))
Set F = FS.CreateTextFile(t,True)
For j = 0 To UBound(fbuf)-1
s = Trim(fbuf(j))
If Right(s,1) = "," Then
s = s & nnn
Else
s = s & "," & nnn
End If
F.WriteLine s
Next
F.Close
Next
MsgBox "完了"
30 :
インポートしたいの :02/04/21 14:27
31 :
名無しさん@そうだ選挙にいこう :02/04/21 16:42
>>28 こっちの方がややこしいぞ〜
メインフォームをデザインで開く。
ツールボックス内の「コントロールウィザード」をオンにしておく。
同じくツールボックス内の「サブフォーム/サブレポート」をクリック。
フォームの詳細セクション内をドラッグするとサブフォームウィザードが
起動する。
後はウィザードに従ってサブフォームに指定するテーブル/クエリを指定
して行く。
>>26 の方が簡単だよ〜
>>27 です
すいません、もう1つ。
>>29 さんのおかげでファイルの準備はできましたが、これを一括でインポート出来ませんか?
マクロのテキスト変換は1つ1つファイルを指定しないといけないし・・・
>>32 コマンドプロンプト開いて、
CD \test
type *_a.txt > all.txt
これで all.txt にまとめられるので、それをインポートしろ
35 :
名無しさん@そうだ選挙にいこう :02/04/23 10:41
access2000で、商品管理(画像付き)のデータベースをつくりたいのですが、 可能でしょうか?
36 :
お役立ちサイトです。 :02/04/23 10:50
37 :
名無しさん@そうだ選挙にいこう :02/04/23 11:00
38 :
名無しさん@そうだ選挙にいこう :02/04/23 11:24
35です。 37さん、有難うございます。 宜しければ作成に参考になるサイトや書籍を教えていただけないでしょうか
39 :
引退した人(37) :02/04/23 13:12
>>38 近頃は人様の書いたモノを拝見することがありませんので
お勧めできるものを知りません。(すみませんね)
とっかかりとしては、サンプルとしての出来の良し悪しは抜きにして
ノースウィンドウサンプルデータベースに目を通してはいかがでしょう。
商品区分テーブル&UI画面周りは参考にならないでしょうか?
今までAccess以外でDBアプリケーションを作成した経験があるなら
フォーム&レポートを制御するための勉強だけで済むと思いますが。。。
40 :
名無しさん@そうだ選挙にいこう :02/04/23 14:18
どなたか、教えて下さい。 ある業種のサービスメンテの管理しております。 項目はたくさんありますが(電話番号を聞き入力すると、該当客先の 内容が表示される、仕組みです) で メンテ内容をきき入力、サービスマンを行かせます。 サービスマン入力はリストボックスから選択します。 当番制を取っており 当番区分1=本日 2=明日 3=明後日 これを1=赤色 2=青 3=紫 等々に表示したいんですが どのようにしたらよろしいか教えて下さい。 よろしくお願いします。マクロではむりでしょうか。 バージョンは2000です。(勿論リストボックスは昇順しております)
41 :
名無しさん@そうだ選挙にいこう :02/04/23 14:22
42 :
名無しさん@そうだ選挙にいこう :02/04/23 15:50
>40 Ac2000なら条件付書式ってのを調べてみれ。
43 :
名無しさん@そうだ選挙にいこう :02/04/23 16:00
商品NOと商品名があってコンボボックスで商品NOの方が表示されるんだけど、 商品名がでるようにするにはどこ設定すんの?
44 :
名無しさん@そうだ選挙にいこう :02/04/23 17:08
>43 連結列を変えてみるか、テーブルでのフィールドの並びを直接変えてもオッケー。
>43 書式-列数を2(商品名が3つ目のフィールドなら3) 列幅を0cm;3cm(3つ目なら0cm;0cm;3cm) にする
46 :
nanasi :02/04/23 22:40
データベース設計の本を片手にいろいろいじりはじめましたが リレーションとクエリの違いがいまいちよくわかりません。 選択クエリで複数のテーブルをつなげるのと リレーションでつなげるのとはどうちがうのですか?
47 :
名無しさん@そうだ選挙にいこう :02/04/23 22:50
どなたか教えてください。 IBMのAS400で作られたシステムに、 アクセス(オフィス2000)でODBCを使って別のシステムを動かしてるんだけど、 OS(98ファーストエディション)を入れ直してから動かなくなりました。 とりあえず試行錯誤してみて、オフィス2000にSR−1をあてると、 ODBCは一応動くようになったのですが、複雑なクエリーとかは動きません。 何度かオフィス、ODBCドライバー等を入れ直しをしましたが、全く直りません。 原因が不明ですごく困ってます。 どのようなことをすれば、ODBCが上手く動くようになるのでしょうか?
>>46 リレーションシップ画面で関連付けると「参照整合性」をオンに出来る。
また、すべてのクエリで同じように関連付けられる。
クエリで関連付けると、参照整合性はオンに出来ないし、そのクエリだけで有効なリレーションになる。
49 :
名無しさん@そうだ選挙にいこう :02/04/23 22:59
申し訳ないんですがだれか教えてください。 アクセス2000を使っています。 業務の管理をアクセスでやりたいって上司に言われて、初級の本を買ってきて何とかフォームを作った私なんですが追加注文に頭を抱えています。 フォームにファイルをドロップして、ファイルのショートカットを作らせ、リンク先パスを入力表示させたいのですが・・・、どうしたらいいのでしょう?? お願いします・・ もう帰りたいよー
50 :
名無しさん@そうだ選挙にいこう :02/04/23 23:24
>>47 そのシステム構築を手がけられた方でないとわからないんじゃないでしょうか?
AS/400のシステムとの連携に関するドキュメントがあるならば、それに沿って
地道に施行する以外、方法は無いような気がします。
組織固有の仕組みの問題を、何の関係も無い外部の人々に問うても問題の解決に
はならないと思います。どうしても協力を得たいならば、それなりに情報を開示
しなくては期待する答えは得られないと思いますが。
53 :
TATABON :02/04/24 00:39
アクセスの場合、書店で売っている初級の本程度ではまずシステム構築は不可能でしょう。 私はアクセス2.0からのユーザーですが当時のオフィス4.3に付属していたユーザーズマニュアルは実にわかりやすく書かれている。 このユーザーズマニュアル以上のスキルを身につけられる本は現在皆無と思います。 会社でエクセルやアクセスの他人が作ったものを見てみるとあまりのノースキルで自称パソコン通に いつも鼻で笑っています。最低限VBAをいじれるまでやりこもう。 後大事なことですがいくら良いシステムを構築しても端末の入力者がヘタレだとデーターベースは死ぬな。 そうだ選挙にいこうさん。アクセスで数十万件のデータを豪快にいじれる快感を味わうとやみつきになりますよ。
>>49 察するところファイル管理(+アプリケーションランチャー)ユーティリティ
の類を実現しようとなさっているように見受けられます。
"Accessでは実現不可能"とは断言しませんが、要求される機能によっては
他のプログラミングツールの方が適している場合もあると思います。
今回の用件を無理に実現しようとすると、モノ作りに対してトラウマに
なりそうな気がするのですが。「No!」と口にするのも選択肢の一つだと
思います。
RADツール固有の標準部品の範疇で"何が実現できて何が実現できないか"を
見極める能力も必要だと思います。
>>54 ありがとうございます。
上司はたぶんOLEオブジェクトでファイルの取り込み&起動ができるのを見てそう言っていたようです。んなことしたら悪魔のようにデータベースが重くなってしまいます。
ハイパーリンクにーに地味にパスを引っ張ってくれって頼みます。(デスクトップ等にショートカットを作ってそれをドロップする事で次善策とします)
彼は社内各人の業務に加えて、技術資料(エクセルだったりワードだったり他データだったりする)を集中管理ってゆうか、資源として共有できるようにしたいらしいんですけど。
私はアクセスさわるの今回初めてで、”できる”機能なのか”できない”機能なのかさえわかりませんでした。(少なくとも基本編の本には載っていなかったので)
ありがとうございました。
>>41 さん
アクセスのプラグインということでしょうか?
そうであればまだ何も入れていないので、オススメがあれば教えてください。
鬱死 ハイパーリンクでウインドをアクティブにすればドラック&ドロップでパスコレクトできますのね・・・。 もうだめだ。ホント首吊ってきます。
58 :
名無しさん@そうだ選挙にいこう :02/04/24 13:03
>>35 さん 41です
画像管理をしようとすれば、当然画像の取込はどうするかではないのでしょうか。
デジカメだと直接取れるし、スキャナーから取込むことも必要と思います。
>>41 さん
画像入りの商品管理でアクセスが使えるのかな、と思いました。
商品はスキャナから取り込みたいと考えています。
何かいいテンプレートがあれば教えてください。
宜しくお願いします。
60 :
名無しさん@そうだ選挙にいこう :02/04/24 13:54
>>35 アクセスで管理できますが、
アクセスは当然できるわけですねー。
又 画像に付いての知識はあるんでしようね。
テンプレートなぞ、無し
それから管理データはどれ位あるんですかねー
61 :
名無しさん@そうだ選挙にいこう :02/04/24 14:23
教えてください。 テーブル『名簿』 フィールド『氏名』 上記のテーブルがあったとします。 氏名を『MEIBO.TXT』にインポートしたいときに、 DoCmd.TransferText acExportDelim, , "名簿", "C:\MEIBO.TXT" 上記を実行すると、 "相川 太郎" "飯田 史郎" 上記のように『"』が入ってしまいますが、 相川 太郎 飯田 史郎 このように格納する方法は無いのでしょうか? よろしくお願いします。
62 :
名無しさん@そうだ選挙にいこう :02/04/24 14:40
よろしくお願いします。 レポートをPDFファイルに出力し直すことは可能でしょうか? 可能なら方法をお教えください。
リストに例えば 100 200 300 が表示されるようにする方法を教えてください。
63の訂正 フォームではなくツールバーにコンボボックスを配置して リストに例えば 100 200 300 が表示されるようにする方法を教えてください。
>61 Open "C:\MEIBO.TXT" For Append Lock Write As #1 で、MEIBO.TXTを開いて(開くって言ってもテキストエディタが 立ち上がるわけじゃないよ) DAOかADOでテーブル「名簿」を開いて Do While Not .EOF 変数Shimeiに氏名を読み込んで Print #1, Shimei .MoveNext Loop Close #1 って感じかな。
67 :
名無しさん@そうだ選挙にいこう :02/04/24 17:43
コンボボックスで商品id、商品名、金額と3列あって、1つはコンボボックス、 残りの2項目はテキストボックスへと表示させるにはどうしたらよいですか?
>65 「表示」の「ツールバー」の「ユーザー設定」を開く。 「ツールバー」のタブを開いて「新規作成」をクリック。 適当な名前をつけてOKするとボタンが何もないツールバーができる。 「コマンド」のタブに切替えて左の「分類」の一番下の「新しいメニュー」を クリック。右の「コマンド」に「新しいメニュー >」が表示される。 これをさっき作ったツールバーにドラッグ&ドロップ。 「新しいメニュー▼」ってボタンができる。▼をクリックしてボタンが何もないけど開く。 ここに「コマンド」のタブの分類の一番上「ファイル」の「ユーザー設定」を 「新しいメニュー▼」に突っ込む。ついでにもう2個ぐらい突っ込む。 突っ込んだ「ユーザー設定」を右クリックして「プロパティ」を開く。 このとき「表示」の「ツールバー」の「ユーザー設定」を開いたままじゃないと 「プロパティ」が出ないので注意。で「プロパティ」の「ボタン名」に「100」 「マクロの実行」に「100」を選んだときに行いたいマクロを指定する。 「200」「300」も同様に。で、「新しいメニュー▼」も「プロパティ」ひらいて 好きな名前つける。
>66 出来ました。 ありがとうございました。
>61 >66 >69 すみません。続きの質問があります。 テキストファイルの中にある、前回出力したデータを消すには、どのような方法があるのでしょうか?
71 :
わかば3号です :02/04/24 19:48
よろしくお願いします。 アクセスのデータをCDで持ち込んで、不具合等の診断をしてくれる 人、企業をご存知ないでしょうか? このところ、顕著に反応が遅くなっています。 また、こういう症例が出た場合、普通はどう対処するのでしょうか。 作成者は既にここにはおりません。
>>67 テキストボックスはコンボボックスのcolumn関数でもってくる。
73 :
名無しさん@そうだ選挙にいこう :02/04/25 00:21
>>71 データベースの最適化してみては?
[ツール]-[データベースユーティリティ]-[最適化/修復]
だったっけなぁ(うろ覚え)
>64 ありがとうございます。購入検討してみます。
75 :
名無しさん@そうだ選挙にいこう :02/04/25 04:50
>>71 index付けて、不要なI/0除いて、クエリーをまとめたらどう?
76 :
名無しさん@そうだ選挙にいこう :02/04/25 09:21
>71 まー、とりあえず、それってLAN上で共有してるんか? それとも個人がチマチマ使ってるのかい? ここだけでも明らかにしてみて。専門の業者に持っていく までもない話かもしれんし。 ってか、そのAccessのデータベース設計した業者がいるだろうにさ。
VBAで、例えば aaa.txtのテキストファイルを bbb.txtというファイル名に変更したいときはどのようにすればいいのでしょうか? また、テキストファイルを削除したいときはどのようにすればよいのでしょうか? よろしくお願いします。
>>68 様
非常に分かり易く丁寧な説明たいへんありがとうございました。
メニューをコンボにみたててやるのですね。なるほど
・・・ですが、実はリストから100、200、300を選択できる以外
に、コンボに例えば153とか238とか任意の数値を直接入力でき
るようにしたいのですが、方法はないでしょうか?
よろしくお願いします。
79 :
名無しさん@そうだ選挙にいこう :02/04/25 10:31
テキストボックスで、入力桁数のチェックをするにはどうしたらいいのでしょうか? 10桁のところに、15桁いれると、更新時にエラーになってしまうのですが
>61 70 ひとつはKillステートメントを使ってファイルを削除。 もう一つは上書きモードでMEIBO.TXTに空の文字列を書きこむ。 Dim Deltext as string Open "C:\MEIBO.TXT" For Output As #1 Deltext = "" Print #1, Deltext Close #1 たしか、改行1つ残ったと思う。 MEIBO.TXTを何度も更新するので削除したいなら、 FileCopyステートメントでMEIBO.TXTのバックアップして、 Open "C:\MEIBO.TXT" For Output As #1で開いて1行目を書き込んでClose、 Open "C:\MEIBO.TXT" For Append Lock Write As #1で2行目以降を書込みかな。 >77 リネームはFileCopyステートメントでコピーしてKillステートメントで 元のファイルを削除。削除はKillで。って61さん宛てといっしょだったりする。 >65 78 Webのアドレスでど〜だっ。っていってもhttp://100と補完されて 見つかりませんと言ってくる罠。とりあえず、俺にはできん。 マクロからメニューの作成はあるし、マクロでプロシージャの実行が できるんだけど、フォームからメニューの作成やフォームをメニューのように 表示するってのがないねえ。できる人いますか? >79 IfとLenとMSGBOXで。
>>66 ,68様
レスありがとうございます
66,68様でもできませんか...
分かる方がいらっしゃいましたら、よろしくお願いします。
------------------------------------------------------
フォームではなくツールバーにコンボボックスを配置して
リストに例えば
100
200
300
が表示され、リストから100、200、300などを選択できる
だけでなく、コンボに例えば153とか238とか任意の数値を
直接入力できるようにしたいのですが、方法はないでしょうか?
------------------------------------------------------
82 :
名無しさん@そうだ選挙にいこう :02/04/25 13:33
>>81 入力チェックを「いいえ」でいいんじゃないの?
だめ?
83 :
名無しさん@そうだ選挙にいこう :02/04/25 13:34
>>82 ツールバーか・・・スマソ
ポップアップ枠+境界線表示無しで目立たないように配置するのはどうでしょう
84 :
名無しさん@そうだ選挙にいこう :02/04/25 13:36
>79 そのテキストボックスのフォーカス喪失時イベントに、 If Len(テキストボックス名.Value)>10 Then MsgBox"桁オーバー") Cancel=True End If とでも書いておく。
>83様 レスありがとうございます。 フォームでなくツールバーというのは譲れない一線なのです。
86 :
名無しさん@そうだ選挙にいこう :02/04/25 16:24
>>85 ツールバーをいじりたいのならAccessはおすすめしない。
フロントエンドにVB持ってくるのが楽だと思われ。
87 :
名無しさん@そうだ選挙にいこう :02/04/25 17:36
Access2000を使っています [起動時の設定] で [すべてのメニューの表示] のチェックを外したら メニューが [ファイル] [ウインドウ] [ヘルプ] のみになってしまいました。 [ツール] が表示されないので、元の設定に戻せず困っています。 良い解決法はありませんでしょうか?
88 :
名無しさん@そうだ選挙にいこう :02/04/25 17:39
>>88 助かりました!
どうもありがとうございます!
90 :
マイルドセブン :02/04/25 20:20
いつの頃からか、MDB の読み取り権限が無い為レコードを読み取ることが出来ませんと表示され 最適化できなくなりました。 セキュリティーは何も使用していなく、1度も触ってもいません。 エクスプローラーで見ると以前よりもだいぶ容量が大きくなってしまってます。 最適化ができるようになるにはどうすればいいのでしょうか?
91 :
名無しさん@そうだ選挙にいこう :02/04/25 23:45
激しくガイシュツかもしれませんが Access97のヘルプで「半角カタカナ変換」に出てくる例文にはちょっと笑った
92 :
名無しさん@そうだ選挙にいこう :02/04/26 04:44
>>85 = 63
CommandBars をキーワードにヘルプを引きなさい。
メニューバー、ツールバーと称しているものは CommandBarsオブジェクトという
Officeコモンオブジェクトを基底にしています。(Word, Excel, Access etc.共通)
コンボボックス形式のコントロールはVBAからしか追加、削除ができないので、ヘルプ
に記載されているサンプルコードを改変して望む物を得るしかないです。
体裁(見た目)を整えるところまでは、すぐに出来ると思います。
その先に進めるか否かは定かではないですが。。。
# ちなみにテキストボックス、コンボボックスに直接入力された値を拾うところで
# 行き詰まりました。情けない。。。
# MSDN onlineのヘルプ見てもOffice97の頃から内容が変わってないから参考にならんし。
93 :
名無しさん@そうだ選挙にいこう :02/04/26 11:51
>90 MDBを開いているのは独りだけ?誰かが開いてるときは最適化できないよ。 もし、誰も開いていない状態だったなら、レコード破損、MDB破損の可能性も ある。 レコード破損の場合、大抵テーブルの一部が壊れている。全てのテーブルを 試しに一つずつエクスポートしてみれ。レコードが壊れてりゃできないから、 そのテーブルを外せば最適化できるようになると思う。 で、新規MDBに全オブジェクトをエクスポート。コレ基本
>>92 様
できました!
CommandBarsを調べてどうにかできました。
80様、83様、86様、92様をはじめレスこぞせずとも頭を悩ませてくださった皆々様方
本当にありがとうございました。
下記に私の行った方法を記述しておきます。
-----------------------------------------------------------------------------
「あいうえお」というツールバーに「ABCDE」というコンボボックスを配置し、コンボ
リストに100、200、300を設定し、コンボリストから100、200、300などを選択または
任意の数値を直接入力してマクロを実行する方法。
1.あらかじめメニューの[ツール]−[ユーザー設定]でツールバーを新規作成し
ておきます(ツールバー名は「あいうえお」)。
2.モジュールに下記のプロシージャを記述します。
Function MakeCombobox()
Dim ToolBar As CommandBar
Dim NewComboBox As CommandBarComboBox
Set ToolBar = CommandBars("あいうえお")
Set NewComboBox = ToolBar.Controls.Add(msoControlComboBox)
NewComboBox.Caption = "ABCDE"
NewComboBox.AddItem "100", 1
NewComboBox.AddItem "200", 2
NewComboBox.AddItem "300", 3
NewComboBox.ListIndex = 0
End Function
3.メニューの[ツール]−[参照設定]でMicrosoft Office 9.0 Object Libraryを
チェックし、OKします。
4.3のプロシージャの任意の場所をクリックし、F5キーを押してプロシージャを
実行します。ここまでの作業でコンボボックスの配置は完了です。
5.4で配置されたコンボボックスのプロパティを開き、マクロの実行の所に
=ツールバーコンボ処理()
と入力します。
6.モジュールに下記のプロシージャを記述して完了です。
Function ツールバーコンボ処理()
Dim ToolBar As CommandBar
Dim ComboBox As CommandBarComboBox
Set ToolBar = CommandBars("あいうえお")
Set ComboBox = ToolBar.Controls("ABCDE")
'ここに処理を記述します。コンボボックスの数値はVal(ComboBox.Text)で取
'得します。
End Function
-----------------------------------------------------------------------------
95 :
名無しさん@そうだ選挙にいこう :02/04/26 23:53
mdbってしょっちゅう壊れるものなんですか? この1週間で2回壊れた。
>>95 会社に4年くらい使い続けてるヤツがあるけど壊れたこと無い。
つっても定期的にメンテナンスしてるからなぁ
97 :
名無しさん@そうだ選挙にいこう :02/04/27 00:39
よろしくおねがいします。 あるパソコンのアクセス2000で作成したデータベースを、他のパソコンにコピーして使用 しようと思ったところ、「式に未定義関数dateがあります。」と表示されて選択クエリ を実行できません。 選択クエリの抽出条件からdate()を外すと開くようになります。 ちなみに、そのパソコンにある他のアクセスファイルでも抽出条件でdate()を使用していますが問題なく動きます。 アクセス2000そのものに問題があるのかと思いインストールし直しましたがダメでした。 何が原因なのでしょうか?
98 :
名無しさん@そうだ選挙にいこう :02/04/27 00:45
ACCESSで書いたコードのステップ数って 簡単に知ることってできるんですかね? いや、自分が書いたコードが どの程度のステップ数なのか 知りたくなっただけなんだけど。
>96 うちのだけですかね(w
100 :
名無しさん@そうだ選挙にいこう :02/04/27 12:57
>98 ツール → 解析 でモジュールを指定してやれば、行数ならすぐわかるけどな。 いまどき気にするものでもないし。 コメントと空行飛ばした行数はかる程度のモノだったらすぐにできそうだ。
>>97 VBへの参照設定が壊れているのでは?
以下の方法を試してみてはどうか
1)Alt+F11でVBAを起動
2)ツール→参照設定で「VisualBasic for Application」が「参照不可」になっていればそれを直す
以上
>101様 レスありがとうございます。 さっそく確認しましたがVBAは参照不可になっておりませんでした。 もう少し詳しく書きますと数台のパソコンに同じmdbをコピーしたのですが、 症状が出たのは1台だけです。 そのパソコンには、ほかにもmdbが幾つかあり、SQLの抽出条件にdate()を使用 しているものもありますが、問題無く動作しています。 他のパソコンで問題無く動作するのですからそのmdb自体にも問題は無いと思います。 アインストールし直しはOffice2000を丸ごと行いました。 と考えると・・・・・ パソコン自体とmdbの関係でSQLが動かなくるってことあるのでしょうか?
>>97 俺はAccess97なんだけど、フィールド名に date とか使ってて
同じ状況になったことがある。
こういうもんだとあきらめて、フィールド名に関数名と被る物は
使わないようにしたよ・・・
104 :
名無しさん@そうだ選挙にいこう :02/04/28 00:27
>>102 ワープロの文書ファイルなどでも時たまファイルの挙動がおかしくなるときがある。
そんなときは文書の全テキスト&オブジェクトをコピーして、新規文書に貼り付けてやり、
文書の体裁をコピってやれば、元の文書と同じようになる。
このケースも似たようなもので、新規DBを作成して、全オブジェクトをインポートしてみてはいかがか。
>103様104様 レスありがとうございます。 新規DBを作成しインポートする方法を行なってみようと思います。 が、4/30まで会社休みのため、それ以降という事になります。 結果は後ほど報告します。 いろいろとありがとうございました。
名簿フォームを作成した後、違うフォームで作成順とは別に 50音順で表示したいのですがやり方がわかりません。 フリガナを基準にして並び替えたいのですが・・・ ご指導よろしくお願いします。
事後報告です。 mdbを新規作成しクエリ、フォームを全てエクスポートし直したところ、問題無く動作しました。 全く同じ構成なので、とても不思議なのですが、それより問題が解決できて、なによりです。 皆様ありがとうございました。
あ。取り込んだのからインポートですね。 失礼しました。
114 :
名無しさん@そうだ選挙にいこう :02/05/02 16:20
ご存知の方教えてください。当方、初心者より ちょっとだけ知識がある程度です。 2000なのですが、 売上データから抽出したクエリがあります。 日付 取引先 種別 売上日計 02/05/01 01 AAAA 3333円 02/05/01 01 BBBB 9999円 02/04/26 02 AAAA 4444円 02/04/30 03 AAAA 1111円 … クエリ ↓ 種別 当日売上 累計 AAAA 3333円 8888円 BBBB 9999円 9999円 これを営業日報の書式に合わせて レポートに埋め込もうとして、 種別ごとにクエリを分割しました。 クエリAAAA 当日売上 累計 3333円 8888円 クエリBBBB 当日売上 累計 9999円 9999円 (本当は30位のクエリに分けました) そしてレポートウィザードで 複数のクエリからフィールドを選択すると 「選択したフィールドのレコードソースにアクセスできません。 テーブルとそのテーブルを基にしたクエリーのフィールドを選択した 可能性があります。もしそうであれば、テーブルかクエリのどちらかの フィールドだけを選択してください」 と出てきます。 開こうとしているのは同じ手法で種別だけを替えたクエリだけで テーブルも元になったクエリも開けていないのです。 どなたか解決策、原因などご存知でしたら教えてください。
それはちょっと・・・クエリ作る段階から構造を見直したほうがいいのではないかと。 見たわけではないからなんともいえませんが、30位作ったクエリは 実は一つで済みそうな気がします。 クロス集計クエリつかってみてはどうですか? で、とりあえず、クエリをこのままにした場合。 レポートに複数クエリを使いたい場合は、 テーブル作成クエリーや追加クエリーを使って、 使いたいデータを一つのテーブルにまとめるというのはいかが? それをレコードソースとして使います。 どうしても、別なクエリがよければ、サブレポートを使用します。 いずれにせよ、複数のクエリをバラバラに指定する事はできません。 別のクエリを使う場合は、更に一つのクエリにまとめる必要があります。
よろしくお願いします。 アクセス2000にてDB作成しているのですが、不正コピーを防ぐ為 「LANボードのMACアドレスを取得して、それが固定で持っているテーブル の内容と一致したときだけ起動するようにすれば!」と考えました。 ということでMACアドレスの取得方法を教えてほしいのです。 いろいろ調べたのですが、わかりませんでした。 また、他に不正コピーを防ぐ良い方法があれば教えて頂けないでしょうか? なにとぞよろしくお願いします。
Accessのテキストボックスに (C) と半角で打つと © に かってに変換されます。 変換をなくす方法ないですか? どうぞ、よろしくお願いします。
115さん早速のレスありがとうございます。 やっぱり私のやってることには無理がありましたね。 もとの日報の書式が変なところで 小計を入れなければいけなかったり 改行が逆L字型だったりなので テキストボックスを簡単に移動できるようにしようという 意図でした。 改行時の問題があるので連休中にサブフォームの 勉強をして再挑戦します。 また分からないことがあったら書きますので よろしくお願いします。ありがとうございます。
119 :
名無しさん@そうだ選挙にいこう :02/05/02 17:24
>>117 [ツール]−[オートコレクト]の入力中にオートコレクトの
チェックボックスをオフにする。
119様 すばやい回答 ありがとうございました。
122 :
名無しさん@そうだ選挙にいこう :02/05/02 20:48
不正コピー防止ネタがでたので便乗 ファイルに「賞味期限」を付けたいんだけど、なんか良い方法あるかな? つまり、最初に指定した「賞味期限」に達するとファイルがロックされて 使えなくなるようにしたいんよ(もちろん、PCの内部時計を遅らせれば 解除できるような簡単なものではなく) で、賞味期限の更新は管理者のみが出来るようにしたいんだ。 MOとかでmdbファイルを丸ごと持っていかれた時の防衛策なんだけど・・・。
>>122 >>121 を見た上で質問してる?
(ネタ?)
PC以外の時計情報(WEBにあったっけ)
とかを参照するとか。
(試したことないが)
>116 ちなみにMACアドレスは騙れるよん♪ 何事も勉強だから、これはこれでいいと思うが。
むー確かに顧客情報の流出とか怖いから気持ちはわかる。 でもなあ、所詮はPC上で動くアプリ。Mdbに小細工しても エクスポートされたりしたら終わりだねえ。 40列*15000行の手元の顧客データをcsvで書き出して 3.65MB。Lzhにして1.35MB。名前、住所、電話ぐらいに限って書き出せば 何十万件とかでもFDに分割で簡単に持ち出せるね。なお上記操作に3分ぐらい。 サムドライブだっけ?\100ライターにUSB端子がついてるぐらいのサイズで ドライバ無しでUSBに刺すだけでドライブになるヤツ。あれ使えば圧縮分割すら いらないかもね。 んーとまず、端末のPCはFDDとかのリムーバブルメディア無し、 USBとかシリアルとかPCIとかを接着剤とかで埋めて物理的に使えなくする。 インターネットに繋ぐのとは他のLANにして、無線LANも使わない。 AutoLoginを有効にしてパスワードを教えない(LANケーブル抜いてノート繋げて Loginできないように)窓の手とかで制限かけまくり。 MDBは止めてMDEとかPHPにしてAccessはインストールしない。 顧客一覧とかのデータを吐くクエリは作らない。サーバーはカギのかかる部屋に 置いて(ピッキングされやすいシリンダー錠は不可。警備員もつける? カギの管理を厳重に)就業時間外はサーバー止めた方がいいかな。 BackUp取ったら即、金庫へ。BackUpの廃棄時も注意。 まだ穴があるような気がする。
126 :
名無しさん@そうだ選挙にいこう :02/05/03 13:23
そこまでする必要があるのならそもそもAccessなど… という気がしなくもないゴールデンウィークの雨の午後
127 :
名無しさん@そうだ選挙にいこう :02/05/03 15:36
>126 ま、考えるだけならタダだから・・・
ちょっと教えてください。 MS-Access のファイル構造というか内部仕様の詳細が 書かれた資料って、どっかに落ちてません? できれば MS-Access 97 くらいのがあれば最高です。 いろいろ理由があって、リカバリ ソフトでも修復 できないのです。で、手作業でやろうと...(^^; どうかよろしくお願いします。
129 :
名無しさん@そうだ選挙にいこう :02/05/04 17:26
激しくガイシュツかもしれませんが、誰か教えて下さい。 テーブルのデータ型を日付/時刻型にして、フィールドプロパティから 書式を設定しようとするときに、 『西暦/年/月日』ではなく 『年号/年/月日』にしたいのですが、 その方法がわかりません。 もし分かる方がいらっしゃいましたら教えて下さいませ。 つーかここ以外で教えてもらえる所も無くて、激しくウチュ
130 :
名無しさん@そうだ選挙にいこう :02/05/04 18:49
ある集団を10のグループに分けてあり、グループでの上位順に成績表を作りました。 その表の中にそのグループを構成している個人の名前、実績も入ったレポートを作りたいんですが、 いくつか本を探してみたんですが見つかりません。やり方をご存知のかたご教示願います。 (個人ごとの成績順の表も作成済みです)
131 :
名無しさん@そうだ選挙にいこう :02/05/04 22:16
>>129 ggge年m月d日 ←平成○年○月○日
ge.m.d ←H○.○.○
ありがとうございます!
外出かもしれないですけど。 access97〜2000のコンバートってどうしてもうまくいかない… コードが文字化けしちゃうんですよね。
SQLデータベースに書き込みしたい。 vbaで何を記述すればいいの?
>130 学校の先生かな?営業の売上の管理かな? もう少しテーブル構造とクエリをどう作ってどう表示したいのか書き込めば 答えれるけど。 >133 一括してコンバートするのに問題が出るなら、テーブルだけとかクエリだけ とかインポートして、97のままコピーしてフォームのVBAを消してインポートして VBAを後からテキストでコピペしてみると言うのはどうだろう? >134 DAOとかADOでヘルプやグーグルを検索したらいろいろコードとかでるから、 試してわかんないとこがあったら具体的に聞いてみそ。
学習塾で講師をしております。 生徒のテストの点数を管理するデータベースを作ろうと思っています。 テストは年に4回。それが2年間継続します。合計8回です。 テーブル作成時に、生徒の基本情報(中学校・入塾日・選択教科)のテーブルを作成しました。 そこで質問なのですが、この基本情報と共にテストの点数データ8回分(国、数、英)を同じテーブルに 作成したほうがいいのでしょうか? それとも、この基本情報と整合性を持たせて、別テーブルに作成したほうがいいのでしょうか? もし、別テーブルに作成するとしたら、8回分そのままテーブルに作成するのか、 それとも1回ごとに分けて管理したほうがいいのでしょうか? グラフ、合計、平均点数などもこのデータベースでは管理します。 どなたかおわかりになる方、ご教授宜しくお願いいたします。 もし他に、こうした方がいい、という意見がありましたら、そちらもお願いします。
137 :
名無しさん@そうだ選挙にいこう :02/05/07 13:12
私も成績管理に使おうと思っています。 生徒ID、科目分野、細分科目名、評定というフィールドがあり、 生徒一人一人の科目分野(国語、数学)ごとの平均評定を出したいのですが、 細分科目名(現国、古典)等の評定(A,B,C)の数をカウントしたいのですが どなたかわかる方がいたら教えてください。 よろしくお願いします。
138 :
名無しさん@そうだ選挙にいこう :02/05/07 14:38
2000で教えていただきたいことがあります。 マクロでマイドキュメント内のエクセルを 開こうとしています。 マクロデザインビューの 「アプリケーションの実行」コマンドラインに C:\Program Files\Microsoft Office\Office\Excel.exe C:\My Documents\xxx.xls と書いてマクロ実行すると「'C:\My.xls'が見つかりません」 というメッセージが出てしまいます。 色々やってみて「My Documents」の間の半角のせいではないかと 思いますが、保存先を変える以外の対処法があったら どなたか教えてください。
139 :
名無しさん@そうだ選挙にいこう :02/05/07 16:25
>>136 データベース作成と言う観点からは以下の通り(案ですよ)
テーブル1:生徒 (これは良く分からんので略)
テーブル2:科目(科目ID、科目名)
テーブル3:試験(試験番号、学年、実施年月日)
テーブル4:試験成績(生徒ID、試験番号、科目ID、点数)
これでテーブル4と1・2・3を1−多のリレーションで繋ぐ。
あとはクエリでデータを加工すれば、試験毎の科目別平均点も、
生徒毎の全科目合計点数なども求められるハズ。
>>137 >生徒ID、科目分野、細分科目名、評定というフィールドがあり、
>生徒一人一人の科目分野(国語、数学)ごとの平均評定を出したいのですが、
まず、評定を数字データに変えないと平均評定は出せないと思う。
例えば(A、B、C、D、E)評定だったら、(5、4、3、2、1)にまず直す。
で、その後で、上記の4つの内、生徒ID、科目分野、評定の3列を選択してクエリを作成し、
生徒ID、科目分野の2列はグループ化する。評定列は平均とする。生徒ID、科目分野の2列
に関しては昇順にソートもしておいた方がいいでしょう。
>細分科目名(現国、古典)等の評定(A,B,C)の数をカウントしたいのですが
この場合は数字に直す必要は無い。
この場合は、案としては以下の通り
まず、生徒ID、科目分野、評定の3列を選択し、上記と同様に、生徒ID、科目分野
はグループ化、評定はカウントにする。そして評定の選択条件欄に、=Aを入れる。
これで、生徒個人別、科目分野別の、評定Aの数を求めるクエリが出来るので
これをクエリAとして保存。同様の事を選択条件=B、=Cで行い、クエリB、クエリC
として保存する。これも生徒ID、科目分野で昇順ソートした方がいいでしょうね。
で、このクエリA、クエリB、クエリCから更にクエリを作成する。
その際に、デザインビュー上で、3つのクエリを生徒ID、科目分野
の2列で結合し、クエリの選択列は生徒ID、科目分野と、A評定数
B評定数,C評定数とでもして結合クエリを作成すれば、恐らく完成する筈(と思う
けど、実際にやってはいないので試行はそちらでやってネ)。
140 :
名無しさん@そうだ選挙にいこう :02/05/07 16:35
>>138 "C:\My Documents\xxx.xls"
のように前後を " (ダブルクォーテーション)で括ってみては。
141 :
名無しさん@そうだ選挙にいこう :02/05/07 17:06
>>139 ありがとうございます。とても参考になります。
とりあえず試作で作ってみようとおもいます。また質問すると思いますが、
その節はよろしくお願いいたします。
142 :
名無しさん@そうだ選挙にいこう :02/05/07 17:29
>>140 ありがとうございます。
ちゃんと開きました。
143 :
名無しさん@そうだ選挙にいこう :02/05/07 17:56
>134 SQLが使えるDBなら何でもええの?97以前?2000以降? ちょっと情報足りないよ。
>>139 ありがとうございます。
やってみます。
また詰まったときはよろしくお願いいたします。
Excelのウィザードと全然違うので ACCESSでは思い通りのグラフが作れないです。 なので、データベースはACCESSで構築して Excelで取り込んでグラフを作成してるのですが ExcelでMDB内のテーブルを呼ぶクエリを組むのと ACCESSで選択クエリを作っておいてそれをそのまま取り込むのとで 何か違いがありますか?
146 :
名無しさん@そうだ選挙にいこう :02/05/08 09:15
>145 結果に差はないように組むことが出来るだろうけど、一般には クエリ(SQL文)組んで実行するより、既存のオブジェクトとしての 選択クエリの方が実行速度が速い。 ま、SELECT文投げる程度なら実感できない程度のモノだけどね。
147 :
名無しさん@そうだ選挙にいこう :02/05/08 11:51
フォームに作った抽出ボタン me.filter= 〜 me.filteron=true で抽出された抽出結果からさらに違う条件で抽出するには?(ツールバー使わないで作りこみで) あと2つ抽出ボタンつくってるけど、また一からの抽出になってしまいます。
148 :
名無しさん@そうだ選挙にいこう :02/05/08 13:51
Access 始めたばかりでつまずいてばかりなのですが、 今やっと販売管理の、受注伝票に明細のサブフォームを 入れるところまでたどり着きました。 受注伝票テーブル←→明細テーブル (1対多) 顧客テーブル ←→受注伝票テーブル(1対多) 商品テーブル ←→明細テーブル (1対多) となっています。基本の型みたいですけれど。 ところが、本によって、 明細テーブルの主キーを、オートナンバー等の明細IDで 指定してあるものと、明細テーブルには明細IDがなくて、 受注伝票ID+商品マスターIDの2つセットで主キーに してあるもと両方ありました。 明細IDを主キーにするのと、明細IDなしで外部キー2つを まとめて主キーにするのとでは何か違いがあるのでしょうか? それともどっちでもいいのでしょうか?
149 :
名無しさん@そうだ選挙にいこう :02/05/08 14:22
>>148 >明細IDを主キーにするのと、明細IDなしで外部キー2つを
>まとめて主キーにするのとでは何か違いがあるのでしょうか?
>それともどっちでもいいのでしょうか?
どっちでも、使う分には構いません。が、違いは有ります。
明細IDを主キーにしてる場合、受注伝票IDと商品マスターID
はNull値であっても、テーブルに登録出来ます。受注伝票ID+商品マスターID
が主キーの場合、この両方を決めないと登録出来ない、その違いだけです。
通常使う場合はどっちでも大差無いでしょう。
>>139 >はグループ化、評定はカウントにする。そして評定の選択条件欄に、=Aを入れる。
カウントにして、抽出条件=Aを入れたらデータ型が一致しませんでした
とのエラーが出て、実行できませんでした。
また、カウントとはそもそも何なのでしょうか?ヘルプを見ても
載ってませんでした。よろしくお願いします。
151 :
名無しさん@そうだ選挙にいこう :02/05/08 15:16
>>150 申し訳無い、昨日間違いを書いてしまいました。
評定がA、B、Cって事は、評定のデータ型は恐らくテキスト型ですね?
その場合は=Aじゃなく、"A"(ダブルクォーテーションでAを囲む)って
抽出条件欄に入れれば、多分大丈夫です。イコールは不要です。
イコール何々は、データ型が数値とかYes/No型の場合でした。
>また、カウントとはそもそも何なのでしょうか?
カウントってのはその名の通り、その条件に合った行の数をカウントしてくれる
関数の事です。例えば貴方のテーブルの中から、生徒1名毎に科目分類毎に評定A
の行が何行有るのか数える訳です。
152 :
名無しさん@そうだ選挙にいこう :02/05/08 15:44
Access2000を使用していますが。 Accessの複数テーブル(クエリ)を1つのExcelファイルで 複数のテーブルをシートごとに分割してエクスポートすることは可能でしょうか。 どなたかご存じの方は教えてください
116です。 結果報告です。(結局本屋を3件はしごして見つけました) netbiosという関数を使ってできました。 お騒がせしました。 今度はこんなの教えて下さい。 フォームはデータシート形式なのですが、 水平のスクロールバーを動かしても 一番左の項目は常に表示している状態にしたいのです。 どなたか教えて下さい。 よろしくお願いします。
154 :
名無しさん@そうだ選挙にいこう :02/05/08 17:30
>>153 固定したいフィールドにカーソルをおいて、書式−列の固定。
155 :
名無しさん@そうだ選挙にいこう :02/05/08 18:55
>>149 さん、
よくわかりました。なるほど〜です。
2つを主キーにする方にしました。
>>151 ありがとうございます。
これからも何かありましたらよろしくお願いします。
>>135 さん、133です。
コンバート後の文字化けのコードを直したところ、無事動作しました。
アドバイスありがとうございました。
158 :
153desu :02/05/08 21:07
154さんできました。 ありがとうございます。 これからも何かありましたらよろしくお願いします。
>146 私はSQL文は直接記述できないので ウィザードでクエリを作成するんですが 同じ組み方したクエリでも SQLを比べてみたら違ってたりするんです。 もちっといろいろ試してみます。 まぁACCESSで思い通りのグラフ作成ができれば Excelといったりきたりすることないのですけど。
160 :
名無しさん@そうだ選挙にいこう :02/05/09 02:08
誰か
>>147 に答えてー
あとそれとフォーム上での日付の、例えば「2000/01/02」〜「2001/01/02」の
範囲でフィルタをかける構文がわからん
「2000/01/02」など日付のところはそれぞれテキストボックスを用意して抽出したい範囲を手入力ね
でボタンを押したらフィルタがかかるという設計。
>>147 Me.Filter= "((" & 新しい条件 & ") AND "(" & Me.Filter &"))"
>>160 Between 日付1 And 日付2
>>160 >>1 の注意書きをよく読んでくれ。
「可能なかぎり詳しく」これが抜けていると誰も答えられない。
Access で、プロンプトを出して SQL コマンドを逐次解釈させることは 出来るのでしょうか?
よろよろしくお願いします。 フォームがデータシートビューで、背景に色をつけたいのですが、 奇数レコードだけ色塗って見やすくできないでしょうか? 「書式」−「データシート」からだと全部変わってしまうー。
165 :
名無しさん@そうだ選挙にいこう :02/05/09 16:28
>161さん、(又は、どなたか)すみません関連質問です。 Between 日付1 And 日付2 ですと パラメータの入力[日付1]パラメータの入力[日付2] と 聞いてきます。 これを 日付1 0/0 〜 日付2 0/0 と 一つの画面上で(フォームで作成する のでしょうか ?) 表示させレポート出力させるにはどのようにしたら いいのでしょうか、ご教示お願いします。
>145 AccessでExcelのグラフって話題はたまにあがるから、もっと 専門なトコに行って、過去ログ漁って質問してみない? 参照設定いじって、Excelオブジェクト使用可能にしておけば、 Access側から全然問題なく操作可能です。 ただし、ExcelVBAいじる必要が出てくるので、ちょっと面倒かも。
167 :
名無しさん@そうだ選挙にいこう :02/05/09 22:27
>>165 そんなことはない。
2000/1/2〜2001/1/2だったら
Between(半角スペース)2000/1/2(半角スペース)And(半角スペース)2001/1/2
※Betweenと日付とAndもすべて半角。
でやってみて。
ACCESSについてどなたか教えて下さい。初歩的な質問で申し訳ないのですが・・。 UNIONクエリを作成してるのですが、どうしても実行するとエラーになってしまいます。 スペルはあっているんです。他にどのような原因が考えられますか?m(__)m エラー表示 →SQLステートメントが正しくありません。DLETE,INSERT,PROCEDURE,SELECT またはUPDATEを使用してください。
170 :
名無しさん@そうだ選挙にいこう :02/05/10 02:02
教えてください。お願いします。 商品サブフォームを持つ入荷品フォームがあります。 入荷品フォームに入荷品を登録する際に記入する商品番号 を元にして、商品番号で管理されている商品サブフォームに 商品情報を表示させたいのです。 つまり、入荷品フォームにある商品番号テキストボックスに 数字を入れると、その数字と同じ商品番号を持つ 商品サブフォームのレコードが表示される様にしたいのです。 で、以下のプログラムを書きました。 Private Sub 商品番号_AfterUpdate() Dim rs As DAO.Recordset 'レコードソースのコピーを作成 Set rs = 商品サブフォーム.RecordsetClone '検索 rs.FindFirst "商品番号 = " & 入荷品フォーム!商品番号 '見つからなかったとき If rs.NoMatch Then Beep MsgBox "見つかりません" '見つかったとき Else 商品サブフォーム.Bookmark = rs.Bookmark End If '終了処理 rs.Close: Set rs = Nothing End Sub If rs.NoMatch Then Beep MsgBox "見つかりません" '見つかったとき Else 商品サブフォーム.Bookmark = rs.Bookmark End If '終了処理 rs.Close: Set rs = Nothing しかし商品サブフォームは反応しません。どういう事が考えられます でしょうか? (フィルターでなしにサブフォームに表示される様にしたのは、 商品情報を変更する場合があるからです。) 宜しくお願いします。
>>168 文法的に正しくないか、もしくは、
スペルが合っていると「思いたいだけ」では?
ここにSQL文載せれば誰か見てくれるかもよ。
172 :
名無しさん@そうだ選挙にいこう :02/05/10 09:34
>168 そのSQL文をここに投げてもらった方がわかりやすいから。 あなたのその質問で明確な回答を与える人がいれば、そいつは神だよ。 マトモな回答ほしければ、にはマトモな質問するのが定石でしょ
>>170 OSまでは望まないからせめてAccessのバージョンだけでも書いてくだせえ
で、商品サブフォームは入荷品フォームの埋め込みサブフォームという
解釈でよろしいですね?
当方はAccess2002で確認をとりました。
このフォームで商品番号を入力した直後にエラーが発生していませんか?
メインフォームからサブフォームのRecordsetCloneプロパティは参照
利用できないかもしれないのですが。(旧バージョンで有効なのか忘れました)
そのコード全体はRecordsetCloneプロパティのサンプルコードを持ってきて
修正されただけのように見受けられますが、なぜVBAコードで制御するように
したのでしょう?
コードレスでも実現できる可能性があるように思います。
174 :
名無しさん@そうだ選挙にいこう :02/05/10 13:02
>167さん 165です、遅くなりましたがご回答ありがとうございました。 やって見ます。
完了報告です。 結局、元になる営業日報が レポートで対応するには複雑なのと どうしても複数クエリを印刷しなければならなかったので クエリをエクセルで出し、別に用意した日報用の ファイルに取り込んで対応しました。 115さん、考えてくれた皆さんありがとうございました。
>173 お答えありがとうございます。 うっかりしてました。98SEでアクセス2002を動かしています。 商品サブフォームは入荷品フォームの埋め込みフォームです。 技術評論社から出ているACCESS VBA応用プログラミングに 載っていたサンプルを大体借用しています。 しかも前回プログラムをコピー間違いしてました、、。 無茶苦茶です。スレを汚して申し訳ないですが、 もう一度コピーさせて下さい。 Private Sub 商品番号_AfterUpdate() Dim rs As DAO.Recordset 'レコードソースのコピーを作成 Set rs = 商品サブフォーム.RecordsetClone '検索 rs.FindFirst "商品番号 = " & 入荷品フォーム.Form!商品番号 '見つからなかったとき If rs.NoMatch Then Beep MsgBox "見つかりません" '見つかったとき Else 入荷品フォーム.Bookmark = rs.Bookmark End If '終了処理 rs.Close: Set rs = Nothing End Sub で、今回はエラーメッセージが出ました。 実行エラー424,オブジェクトが必要です。 だそうです。 これが何を意味するエラーなのかも分かりませんが、 仰るとおり、サブフォームの内容にアクセスする事が 出来ないのであれば、どうしようもないのかな、、、。 私もコードレスで実現したかったのですが、私の知恵では 上手く行きませんでした。 後、検索結果として出てきたレコードの内容を、 入荷品フィールドに自動で入力する処理をさせたいとか 他にも希望があるので、コードで書いた方がシンプルになるのでは? と思ったのです。決して今の状況はシンプルではないですが(藁。
>166=146 ども、お手数かけます。 VBAはExcelではよく使ってまして 表示したいモノ(番号など)を入力したり グラフの形式などを選択するようなフォームや 時系列グラフの連続表示なんかは作成したりしてます。 これがACCESSでも応用できればいいんですが ACCESSをまだ使い始めたばかりなもんで データベースの構築からきちんと覚えたいので ACCESSだけでグラフ表示という部分に まだ達してないというのが現状です。 もちっとベンキョしてきます。
>>147 です
161 さんありがとうございます。
日付の方はできたのですが、フィルタの方がやっぱりうまくいきません。
以下のようになってるのですが。
Private Sub 注文日検索_Click()
Me.Filter = "注文日 between # " & Me!日付1 & " # And # " & Me!日付2 & "#"
Me.FilterOn = True
End Sub
Private Sub 区分ごと_Click()
Me.Filter = "区分='" & Me!区分別 & "'"
Me.FilterOn = True
End Sub
Private Sub 業者ごと_Click()
Me.Filter = "業者名='" & Me!業者別 & "'"
Me.FilterOn = True
End Sub
Private Sub 区分ごと_Click()
Me.Filter = "区分='" & Me!区分別 & "'"
Me.FilterOn = True
End Sub
Private Sub 分類ごと_Click()
Me.Filter = "分類名='" & Me!分類別 & "'"
Me.FilterOn = True
End Sub
以上のように4つのボタンをフォームに設定していて、
日付は手入力(書式「日付」)で、あとの3つはコンボボックスで選ぶようになってます。
フォームは表形式です。
常に、全項目を入力するわけではなく必要に応じて、日付だけなら日付、
必要なときは次の項目・・・といった感じで使えるようにしたいです。
要はツールバーについてるフィルタボタンと同じ働きにさせたいわけです。
今の状況では日付でフィルタして、次の区分でフィルタかけても、
また、日付フィルタをかける前の状態のものにかかってしまうので、
日付はまたバラバラになってしまうといった具合です。
例えばですが、業者名フィルタの結果に分類フィルタ、
で、また次に別のフィルタといった感じにしぼっていけるようにしたいわけです。
教えていただいた
Me.Filter= "((" & 新しい条件 & ") AND "(" & Me.Filter &"))"
でできるんでしょうか?
自分で考えていたのはボタンを新たにつくって、そのボタンをクリックしたら
現在のフィルタ結果がのこり、そこからまたフィルタをかけて、さらにしぼりたいときは
またそのボタンをクリックして・・・といった感じのものだったんですが、これは出来ないでしょうか?
どなたか知恵を貸してください。
すいません これ一個いらないです Private Sub 区分ごと_Click() Me.Filter = "区分='" & Me!区分別 & "'" Me.FilterOn = True End Sub あと97でやってます。
183 :
名無しさん@そうだ選挙にいこう :02/05/11 15:11
excel(csv形式)からデータを反映させて、 各テーブルに入れるにはどうすればいいですか? クロス集計クエリーで2つの流動する値を反映させるにはどうすればいいんですか?
>170.177 サブフォームにこだわるなら目的のレコードへの移動ではなくて 絞込になっちゃうけど、RecordSourceプロパティかな。 >147.180 Me.Filter = "分類名='" & Me!分類別 & "'" と Me.Filter= "((" & 新しい条件 & ") AND "(" & Me.Filter &"))" を足して Me.Filter= "((" & "分類名='" & Me!分類別 & "'" & ") AND "(" & Me.Filter &"))" こうなる。うまく動いたなら、これを整理して Me.Filter= "(分類名='" & Me!分類別 & "') AND (" & Me.Filter &")" かな。 Me.Filter= "分類名='" & Me!分類別 & "' AND " & Me.Filter でもいいかな。 >182 う〜ん、変数はともかくプロシージャ名に日本語使えないとテキストボックスとかの 名前も日本語使えなくなっちゃうね。Access95からプロシージャ名に日本語を 使ってるけど、それが原因でどうこうってなった事無いような。 >183 >excel(csv形式)からデータ〜 インポートとか、Openステートメントとか。 >クロス集計クエリで〜 クエリを開きなおすとか、更新とか。 そういうことが聞きたいんじゃなくて〜ってときはもっと詳しく書いてね。
>>184 ありがとうございます。しかしもう少し
ヒントを、、、。
サブフォームでなく、商品フォームを
別ウィンドウで表示していても、同じ
エラーが出ます。
>>185 VBAコードを記述する時、商品サブフォームと打ち込んだ後に
.(ピリオド)を打ち込むとプロパティとメソッド一覧のドロップ
ダウンリストが現れるよな?
その一覧中にはRecordsetCloneとRecordSourceは含まれていない。
つまり入荷品フォームから商品サブフォームのRecordsetは制御
できないんだ。すなわちまったく別の処理方法を考えなければ
ならないわけ。
その処理方法はあんたが考えるしかないわけなんだが・・・
サブフォーム.Form.RecordSource
188 :
名無しさん@そうだ選挙にいこう :02/05/13 10:34
困ってます!! フィールド <フィールド名> とキーが一致しているレコードがテーブル <テーブル名> で見つかりません。(Error 3101) 表形式の商品注文フォームで、コンボボックスに何も入力しないで、次のレコード(フォーム上では2行目) にカーソルを移動させようとすると上記エラーがでます。 テーブル側の先頭レコードに空白行を入れ、コンボボックスの初期値に設定して回避していたのですが、 コンボボックスを開いた時、一番上に空白行が出来てしまい、見た目が悪いのでなんとかしたいのですが。 いい方法、ありますか? エラー処理も考えたのですが、ボタンをクリックするなどで、発生するものではないので、どこにプログラムを書いたら いいかわからなかったです。
189 :
名無しさん@そうだ選挙にいこう :02/05/13 11:07
>>188 似たような経験があるので参考までに。
コンボボックスの中身は商品名で本来、空白やNULLは
ありえないと思って読みましたが、
そうであればデフォルトで本来のテーブルの先頭レコードを
入れておけば解決しませんか。
あと空白が許されるのであればテーブルの最終レコードに
入れたらどうでしょう
>>189 自分で使う分には構わないのですが。そうではないので。
いくつか項目があって、最初に日付を入力するのですが、その段階でコンボボックスの一行目及び
データ−入力の2行目が表示されて、これから入力しようとする人は「あれ?」ってなってしまうということで。
また、入力中に2行目にカーソルなどを移動させるとエラーになってしまい、そのところでなやんでます。
あと、空白というかスペースという文字をあてています。
間違えました。
155ではなくて
>>188 です。
見た目に影響しないようなやりかたないですかね?
まだ悩んでます。
192 :
名無しさん@そうだ選挙にいこう :02/05/13 12:04
初心者ですが、オートナンバー型フィールドの5046の次が、 自動的に1000になってしまいます。(本来は5047のはず) 1000のレコードはあるのでデータが重複して保存できません。 どなたか原因を教えていただけないでしょうか? Acsess2000です。
>>190 =188
「あれ?」の意味なんですが、
いきなりデフォルト値が出ちゃうからでしょうか?
もしそうなら最初のレコード(=デフォルト値)を空白ではなく
「(下から選んでください)」とかにしてはいかがでしょう?
あとコンボボックスに割り当てるテーブルの先頭を空白(スペース)
にしてもデフォルトに設定しないとコンボボックスの入力を
飛ばしたときに入ってくるのはNULLなのでエラーになるのでは。
>193 そうです。まだ選択していないのにすでに商品名がでてるので。 商品テーブルの方はオートNOなので、コンボBはデフォルトで一行目に 商品テーブルの一行目(スペース入力)がくるようにしていますよ。 最終行をスペースにすると追加したとき不都合なので、とりあえず 「(下から選んでください)」とかで、やってみようかと思います。
すいません、やっぱり そのやりかただと履歴テーブルに「下から選んでください」とういうのが 登録されてしまうので無理です。スペースならまだましなのですが。 エラー文章を「〜を入力してください」とかいうmsgboxに変えることが できればいいのですが、やり方わからないですか? その他、いい解決策あったらお願いします。
スペースだろうと「下から選んでください」だろうと 商品名じゃないから同じじゃん、と思って書いていました。 デフォルトのままコンボボックスをスキップしたときに 「入力してください」を出すようにしてはどうでしょう
履歴一覧見たときに、ただのテキストボックスに「下から選んでください」というのがあったら おかしいかと思ったので。 そのメッセージを出す路線でやってるんですが、エラーメッセージも一緒にでてくるんですよね。 クエリからひっぱってるので、2行目はどうしてもでてきてしまうし。 使う人がかならず真横に動いてくれるとはかぎらないですし、いきなり2レコード目にカーソル合わせた 場合を考慮しなければならないので。
198 :
名無しさん@そうだ選挙にいこう :02/05/13 16:31
どなたか、教えて下さい。 住所 又は 名前で検索表示する場合 Like "*" & [住所名は?(漢字で入力して下さい)] & "*"とクエリーで 作成。 フォームで表示させております。 これで、もし該当なしのとき[該当するものは、有りません]と 表示したいのですが、どのようにしたらよろしいか、ご教示下さい。
>198 VBA だとこうなるけど if me.recordset.recordcount=0 then msgbox"見つかりません" end if
200 :
名無しさん@そうだ選挙にいこう :02/05/13 16:58
>>199 198です、早速のご返事ありがとうございます。
>>197 考えてて混乱したので確認
1.日付入力→これはレコードに入るんですよね。(2行目にも入れますよね)
2.コンボボックス出現→デフォルトが商品名テーブルの先頭(空白とか)。
ほぼ時を同じくして次レコードが出現。ただし、本来コンボボックスのところが
普通のテキスト入力になってるんですか?
3.2行(レコード)目にマウスで飛んだら1行目はデフォルト値が入っているので
アクセス的にはOKで2行目に何かを入れると(またはNULLだと)
テーブルと不一致なのでエラーですか?
だと、特に意図がなければコンボボックスを日付入力まで隠すのが
よくないのかな。
前提が間違ってたら言ってください。
>201 すいません。説明不足でした。 NO、注文日、メーカー、商品区分、商品NO、商品名、単価、数量、金額 というフィールドがあります。 コンボBは3つあります。表形式です。 NO(オート)、注文日(日付)、メーカー(コンボ)、商品区分(コンボ)、 商品名(商品区分を選ぶと商品NOコンボの値が決まり、選択すると商品名のTXTボックスに名前が入る)。 単価(商品名を入れると自動表示)、数量、金額 注文日を入れた時点で、次レコード目の入力欄が出て、現在入力中のレコードでコンボボックスを選択しないで 次レコードにカーソルを持って行くとエラーになります。 コンボボックスを隠す設定にしてても、条件を満たした時、次レコードの行もその条件を満たすことになるので、 結局、次レコードへのカーソル移動が可能になってしまいます。 なので、コンボのデフォルトをNullにしておいて、エラー時、エラーメッセージを「〜に入力してください」にかえれれば、いいのですが、 どこにどうやってエラー処理を記述すればいいのかわからなくて。 エラー原因は例えば、商品NOコンボボックスは初期値1から商品名と対応してるのですが、未選択なのに 商品名が表示されるのを防ぐために初期を0にすると、当然、商品名と一致しなくなるためです。 そこで初期値1をスペースにしたのですが、見た目が悪いので何とかしたいといったところです。
203 :
名無しさん@そうだ選挙にいこう :02/05/13 19:02
すみませんがどなたか教えてください。 フォーム作成時です。 <オプションボタン>コントロールで、4者択一させ、それに対応した テキストを別テーブル等に反映させたいのですが、どのように すればよいでしょうか? 択一させるものが15個あります。 4択の反映させたいテキストはそれぞれ同じです。 よろしくお願いいたします。
204 :
名無しさん@そうだ選挙にいこう :02/05/13 20:13
教えてください。 AC97を使ってます。親フォームにあるボタン等で サブフォーム内を「フォームビュー」と「データシートビュー」の 切り替えをしたいのですが、どうすればよいでしょうか? お願いします。
205 :
名無しさん@そうだ選挙にいこう :02/05/13 23:27
誰か
>>202 のエラー処理のやり方教えてください。
特に記述場所など。
206 :
久しぶりに使う言葉だが…… :02/05/13 23:37
バグか?(^^; ブツはAccess2000SP2。手持ちの環境はWin2KSP2だが、Win98SEでも同じ症状が出てるらしい。 フォーム内に貼り付けたデータシートモードのサブフォームで、ある一つの項目に差し掛かると、 突然IMEが(ONのままで)「半角英数字」モードに切り替わる、という奇怪な現象が発生したぞなもし。 とりあえず、テキストボックスとテーブル定義のIME周りをチェック。IME周りは「保持しない/オン/一般」 になってることは確認済み。 他にどんなトコを見ればいいでしょうか?(^^;
207 :
名無しさん@そうだ選挙にいこう :02/05/14 09:21
>206 ATOKなら諦めれ。VBはもともとATOKと仲ワルイ。 IMEにしていても、そういう現象は報告されているが、 MSの方ではこれといった言及はしてなかったな。 新規MDBに全オブジェクトインポートして再構築してみる。
>>202 説明よくわかりました。
コンボボックスにない値を入れるとアクセス側でエラーになってしまうのは
仕方ないと思います。フィールド3〜7をNULL-NULL-NULL-NULL-0を
許す設定にしてデフォルトで持ち、そのまま次のレコードに飛んだら
エラーメッセージにしてはどうでしょう。
あるいは次レコードに飛ばれないように単票形式にするとか。
Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 3101 Then Response = acDataErrContinue MsgBox DataErr & vbNewLine & " 〜 " End If End Sub これでできたよ!意見くれてた人ありがとう
211 :
名無しさん@そうだ選挙にいこう :02/05/14 17:05
キーボードの「ESC」キーと同じ機能を持つVBAの記述を教えれ
いつも参考にさせてもらってます。 さっそくですが質問が有ります。 いまここに複数のテーブルを持つ3つのMDBファイル とリンクしたDBがあります。(current) 起動時に全て再リンクさせたいのですがファイルが 複数有る場合どんなモジュールになるのでしょうか? 段取りだけでもご教授ください。
>211 Msgbox("OKしたらESC押せ") もしくはSendkeys調べれ
214 :
名無しさん@そうだ選挙にいこう :02/05/14 17:46
>211 ESCの動作なんぞ各々のアプリ特有の動作をするから、 「ESCの機能」なんて特定できないよ。 いちおう、キークリック時イベントで、 If Keycode=vbKeyEscape Then でESC押を拾えるけど、こーゆー意味じゃないの? >212 自分も全く同種のコード最近書いたから分かりますが、 まずは起動時ってタイミングを拾うのを考えて。 AutoExecだとエラートラップがメンドイから、起動時の設定、 で空フォーム立ち上げて、Open時イベントでLink貼り直そう。 OpenならCancelも効くから便利だよ。 で、つぎはLink先のパス取得。これくらいは自分で考えること。 以下にヒントね。 Set DB = CurrentDb Set TD = DB.TableDefs("テーブル名") TD.Connect = ";DATABASE=" & "リンクMDBのフルパス(MDB含むよ)" TD.RefreshLink Set TD = Nothing Set DB = Nothing オッケー?
>>214 有りがとうございます。
これから試してみます。
216 :
名無しさん@そうだ選挙にいこう :02/05/14 18:51
すみませんがどなたか教えてください。 フォーム作成時です。 <オプションボタン>コントロールで、3者択一させ、 選択肢Cを選んだときのみ隣のフィールドに記入可能なようにするには どのようにすればよいでしょうか? よろしくお願いいたします。
>>214 無事、成功しました。
Countでループさせようとしてたのが問題をこじらせていたようです。
ありがとうございました。
>216 「隣のフィールド」を条件付書式を使って、「オプション」がCのとき以外は 灰色にして、ユーザーに入力して欲しくないんだなーと思わせて、 かつ「隣のフィールド」の更新前処理のイベントプロシージャで Private Sub 隣のフィールド_BeforeUpdate(Cancel As Integer) if Me![オプション]<>3 then Msgbox("ほげほげがCのときはここに入力の必要がありません") Cancel = True end if End Sub といった感じかな?上記はオプションでCを選んだときの値が3で指定されている 仮定で書いてるので適当に直してね。
219 :
名無しさん@そうだ選挙にいこう :02/05/14 20:40
それよりも、隣のフィールドを入力不可にするほうがよくはないだろうか。 EnabledだかLockだかのプロパティをつかって。
>>186 >>187 かなり遅れたけどありがとう。
結局DAOではサブフォームも他のフォームも
参照出来ない様なので、どうしようかなと
思ったら、OpenFormで抽出したレコードは
編集が出来る事を知って解決しました。バカでした。
前マクロで摘出したレコードは編集出来なかった
のにな。単なる勘違いか。
>219 フォローありがと。調べて見たら確かにそっちの方がスマートだね。 C以外の場合EnabledをFalse、LockedをTrue CのときEnabledをTrue、LockedをFalseかな?この場合。 Cを選んで「隣のフィールド」を入力、その後C以外に変更された場合用に C以外をクリックしたら「隣のフィールド」をからにするのもいるね。 218はぱっと見で思いついたのぼけっと書いてまったっす。 冷静に考えるてたら使ったこと無くてもそういうプロパティあるの思いついたはずでした。 まだまだ修行がたらんです。
222 :
名無しさん@そうだ選挙にいこう :02/05/15 00:20
>>214 そういう感じです。サンクスです。
Sendkeysでやってたんですが、これって設定しまくってたら画面ちかちか
みたいな感じになるじゃないですか。ツールバーとかでやってると。
ESCはキーボードだから関係ないんですが、ちゃんと記述あるなら
そっち使っていく方針がいいかなと思ったんで。
>216 あと、Visibleをいじる方法がある。 見た目にはこっちの方がいいと思うが。
>>218 ありがとうございました。
また何かありましたらよろしくお願いします。
フォームには1つのテーブルのフィールドしか配置できないんですか? 2つ以上のテーブルのフィールドを配置することはできないんですか?
>227 2つのテーブルを元にしたクエリをレコードソースにするとか、サブフォームをつかうとか。 具体的に聞けば具体的な答えが返ってくるかも。
229 :
名無しさん@そうだ選挙にいこう :02/05/15 16:21
コンボボックスでキーボードからカキコできなくする「LIMITTOLIST」を 設定したいんですが、コンボボックスの右クリックから開けるプロパティの中の どこをどんな風に設定すれよいですか?
230 :
名無しさん@そうだ選挙にいこう :02/05/15 17:17
>229 入力チェック を ハイ に設定するだけじゃダメ? キーボードからコンボの候補以外は入力できなくなるが、 VBのようにコンボの種類は選ばなかったんじゃない?
231 :
名無しさん@そうだ選挙にいこう :02/05/15 17:30
ラベルのテキストを点滅させたいんだけど
232 :
名無しさん@そうだ選挙にいこう :02/05/15 17:36
>230 その場合だとカキコ自体はできて、しかもエラーがでるのでまずいのですが
233 :
名無しさん@そうだ選挙にいこう :02/05/15 17:46
>232 おとなしくリストボックス選んでおけば? もともとコンボボックスって、 リストボックス + テキストボックス てのがウリなんだから。
234 :
名無しさん@そうだ選挙にいこう :02/05/15 18:08
>231 フォームのタイマーイベントに if ラベルのコントロール名.visible=true then ラベルのコントロール名.visible=false else ラベルのコントロール名.visible=true end if ってやれば大丈夫。 タイマ間隔は上手くとれ
235 :
名無しさん@そうだ選挙にいこう :02/05/15 19:51
フォームにマクロを組み合わせてデータ入力してたら、 整数型オートナンバーのフィールドで、番号が突然飛びました。 なにがあったんだろうか?
236 :
名無しさん@そうだ選挙にいこう :02/05/15 20:07
まあ、そういうものです。
237 :
名無しさん@そうだ選挙にいこう :02/05/16 00:08
スレ違いかも知れませんが。 Adobe Acorbatのフォーム機能からデータをはき出して ACCESSのデータベースに蓄積することはできますか?
1時間23分45.5秒を "00123455"と収めた属性があるのですが、これをきちんと時刻形式で 足し算し、結果を時刻形式で格納、表示することって、クエリだけで できるのでしょうか?例として、 属性[時刻] 例(実際の表に、この属性はありません) "00123455" 1:23:45.5 "00154325" 1:54:32.5 結果 3:18:18.0 としたいのです。ご存知の方、どうぞお知恵をお貸しください。
239 :
名無しさん@そうだ選挙にいこう :02/05/16 01:10
>>238 関数探そう。文字列操作関連の関数(文字のm文字目からn文字分取り出す、
みたいな処理が必要かと思われ)と、日付時刻関連の関数。
>>239 成る程!!関数を使うと。Left$ とか Mid$、Right$ あたりかな(N60BASICしかわからん)。
でも、クエリに引き渡す前に関数を通すなんてできるのかな。Access が
家になく、会社に行かないと使えないので会社で試行錯誤してみます。
#会社にネット環境があれば質問しつつ作業できるのに…。
241 :
名無しさん@そうだ選挙にいこう :02/05/16 09:11
>238 クエリに関数挟むのはできる。 根性で時間足す関数作ってもイイと思うけど、DateAdd って関数調べてみれ。 ほか、Date で始まる関数には結構便利なものが多いよ。
>>207 お返事遅くなって申し訳ないぞなもし……。
……………(爆涙)
バカ>笹塚
243 :
名無しさん@そうだ選挙にいこう :02/05/17 02:02
教えてください。当方アクセス2002、OSは98SEです。 OpenFormメソッドなのですが、whereconditionの所に 二つの条件を入れたいのですが、そんな事出来ますでしょうか? 例えば、 "靴番号 = " & Me!靴番号 でしかも、 "売り切れ品チェック = true" と言う二つの条件を含んだレコードを抽出したいのです。 どうでしょうか?
"(( 靴番号 = " & Me!靴番号 & " ) AND ( 売り切れ品チェック = true ))"
245 :
名無しさん@そうだ選挙にいこう :02/05/17 10:20
ビジネスソフトなのツールーバーのボタンにマウスカーソルを合わせたら、ボタンの名前とかが 黄色く出てくるやつ。 以下の記述で表示させるまではできたんだけど、マウスポインタが離れたとき消すことができなくて。 マウスボタン開放時に記述したけど駄目でした。 どうやればよいですか? Private Sub 日付1_MouseMove Me!日付クリップ.Visible = True End Sub
246 :
名無しさん@そうだ選挙にいこう :02/05/17 10:49
>245 努力は見とめるけどさ、それ、標準プロパティで何とかなるレベルちゃう? ボタンとかの「ヒントテキスト」にテキスト打ちこんでみれ。
247 :
名無しさん@そうだ選挙にいこう :02/05/17 10:56
>246 ほんとだ 2時間かけてポップつくったのに・・・ ありがと
初心者にAccessの講習をしているのですが、データベースの概要を説明する 適当なテキストが見つからなくて困っています。 初心者にもわかりやすくデータベースの概要(あまり深くなくて良いです)が 掲載されている書籍・サイトなどをご紹介ください。 よろしくお願いいたします。
>>244 うわ、二十分後に書いててくれたですね。
ありがとう。バッチリです。
なまじ素人にAccessを教えると、そいつは会社で上司にプログラムを 作らされて、結局スパゲッティなプログラムをメンテして欲しいと自分 トコにSOSが来てしまうという罠。 #だから「主キーとは何ぞや」「リレーションシップとは何ぞや」といった #RDBの概念を正確に教えておかないと大変なことになる
251 :
名無しさん@そうだ選挙にいこう :02/05/18 13:44
作成したフォーム上で、右クリックしたときのメニューを出なくするには?
252 :
名無しさん@そうだ選挙にいこう :02/05/18 14:43
>251 Access単体では無理。あれはWindowsの仕様だから。
テーブル(クエリ)のレコード一件一件をテキスト(html)ファイルに エクスポートすることは可能でしょうか? あまりない需用かもしれませんが本当にそういう状況なんです どなたかご存じの方教えてください。
>253 Openステートメントを使えばいけるね。
255 :
名無しさん@そうだ選挙にいこう :02/05/18 15:30
>253 一件ずつHTMLで吐きたいの?つまり、100件レコードがあれば、 100のHTMLファイルができるってことなんか? なんか自分誤解してるっぽい?
256 :
名無しさん@そうだ選挙にいこう :02/05/18 15:37
>>255 はいそのとおりです。
2000レコードほどありますが、htmlファイル2000個にして出力したいのです
書き忘れましたが、ファイル名は「商品コード」で abcd0001.html〜〜といった感じなんです
>257 まじですか? で、順番を指定できるIDとかKeyとかってあるよね?
>DDD とりあえず以下を商品情報のテーブルを元にして作ったフォームにコマンドボタンを 作ってクリック時のイベントプロシージャにコピペして、動かしてみて。 ただし、HTMLを4年ぐらい書いてないから間違ってるかもしれないよ。 デバッグもしてないしね。 Dim HTMLFile as string HTMLFile = Me![商品コード] & ".html" Open HTMLFile For Append Lock Write As #1 'ここが254で書いたOpenステートメント。追加書込み&Lockモードで 'テキストファイルを開いてる(無かったら作ってくれる)。 Print #1, "<HTML><HEAD><TITLE>" & Me![商品コード] & " " & Me![商品名] & "のPage" '[Print #ファイル番号 入力したい文字]で入力できる。まあSQL文をVBAで書いて動かすような感じで。 Print #1, "</TITLE></HEAD><BODY BGCOLOR = " & Chr(34) & "#FFFFFF" & Chr(34) & ">" '[BGCOLOR = "#FFFFFF"]と書こうとしたら、ダブルコーテーションで困ってしまうね。 'で、Chr関数でダブルコーテーションを指定。 Print #1, "<H1>" & " & Me![商品コード] & " " & Me![商品名] & "</H1>" '中略。 Print #1, "</BODY></HTML>" Close #1 '開けたら閉める。これ常識。 これで1個HTML文書がたぶんできるからLoopとかでがんばれ。
>>253 初代スレでその手のやりとりしたよ。
その時は1個のテキスト(html)ファイルにアンカーをズラズラと
書き出すだけのしょぼいコードだけど。
Access2000以上って、そこらへん楽にできるようになってないの?
254-260>> 激しくありがとうございます。 とりあえず1ファイル出力することはできました・・・ あとはがんばります!
Accessを0からはじめる初心者(プログラム経験なし)ですが、お勧めの書籍を教えていただけませんか? よろしくお願いします。
264 :
名無しさん@そうだ選挙にいこう :02/05/19 14:07
>>262 ACCESSの操作方法のみを少しくらい知っても、使いこなせないと思う。データベースとは
どんなソフトなのか?と言う概念を身に付ける事が重要。
実データはテーブルに正規化して保存し、それをクエリを使って、集計したり、
条件に合うデータのみを抽出すると言う概念を身に付ければ、細かい操作方法や
VBAなんぞを知らなくても使える筈。
>>264 概ね同意だが、「データベース」が理解できたこと」と「操作方法やVBAを理解する
こと」は、別ではないか?
VBAは、Accessのオブジェクトが判らないと、使いにくいだろうし。
よって順番としては、
1.データベース(RDBMS)とは何かを学習。→Accessが何を目的としたソフトか判る
2.Accessの操作法を学習。→やりたいことをAccessで操作・作成することができる
もっとも、Accessの入門書によっては最初にDBのことを紹介しているかも知れないなぁ。
ちなみに漏れが使い始めたとき(Access Ver2の頃)は、入門書ではなくHelpとか開発ガイドを参考に
したよ。
267 :
名無しさん@そうだ選挙にいこう :02/05/20 10:25
>>252 できるじゃんか!
フォームプロパティのショートカットを「いいえ」に
何十個ものテーブルから、データを全削除するとき、 削除SQLや削除クエリ実行を、何十行も書いたりしなくても、 コード数行で済むやり方があるって、どこかできいたような気がするんですけど、 どなたか御存じですか?
クエリのデザインビューにて該当フィールドに、ワイルドカードを 使用して抽出条件を設定するとき以下のような症状が出ます。 例)氏名フィールドで、姓の2文字目に「田」の付くレコードを抽出する 抽出条件入力セルに 「?田*」と入力すると「指定した式の構文が不正です。たとえば、演算子がな いときにオペランドを指定しています」 と表示されます。 「*田」のように * を使ったワイルドカード指定、もしくは「田?」 「田*」のようにして Like演算子を表示させてから「?」を挿入、 または最初から「Like "?田*"」のように記述する、ではエラーメッセージは 出てきません。 なぜ条件の先頭に「?」がくるときにだけエラーになるのでしょうか? 回避方法などご教授ください。
>268 何十個ものテーブルのレコード全削除ってアンタ、どんな設計なんだよ!! テーブル名は連番になってんだろうな! と問い詰めてみるテスト。
271 :
名無しさん@そうだ選挙にいこう :02/05/21 07:57
すみませんが、質問をさしてもらってもよろしいでしょうか。 現在、Access2000にて生徒の個人情報を管理するものを作っております。 その中で情報を履歴書のようなフォーマットでレポートを作成しました。 このレポートをフォーマットはそのままでExcelに出力することは 可能なのでしょうか? レポートが複数ページになる場合はそのことも考えたいのですが。 どうか、よろしくお願いします。
272 :
名無しさん@そうだ選挙にいこう :02/05/21 08:44
>>268 一つのリソース系テーブルが有り、そのテーブルの主キーデータ
を何十個もの別のイベントテーブルの外部キーに設定しておき、
リレーションの設定を、ON DELETE CASCADE にしておく。こうしておけば、
リソース系テーブルのデータを全削除すれば、同時にそれを外部キーで参照している
全てのイベントテーブルの全データも同時に削除されます。
273 :
名無しさん@そうだ選挙にいこう :02/05/21 09:08
>268 270 の言うとおりテーブル名が連番(例えば、tbl001、tbl002・・・) になっている必要はないが、テーブル名に何らかの関連性がないと、 一括削除を数行ってのは難しいのでは? 多分、Tabledefs と for Each を使う方法じゃないかな? 例えば、削除するテーブルは、必ず tbl〜 という名前だとする。 Dim DB As Database Dim TD As TableDef Set DB=CurrentDB For Each TD In DB.Tabledefs If TD.Name Like "tbl*" Then DB.Execute "DELETE * FROM [" & Td.Name & "] " end if Next Set TD=Nothing Set DB=nothing Msgbox"終了" こんなんかな?
274 :
名無しさん@そうだ選挙にいこう :02/05/21 14:47
>>268 こんなのはどう?
これなら名前の関連性がなくても動くはずだが
Dim TD As Variant
For Each TD In Array("hoge",hoe","age","sage")
CurrentDb.Execute "DELETE * FROM [" & TD & "] "
Next
275 :
名無しさん@そうだ選挙にいこう :02/05/21 15:20
リンク先の変更方法について教えていただけますでしょうか。 WindowsXP上のAccessファイルにリンクテーブルを 貼っているのですが、リンク先を変えることができません。 変更先を指定してOKボタンを押そうとすると、 「ファイル'○○.mdb'を開くことができませんでした。 ほかのユーザーが排他的に開いているか、データを読み取る 権限がありません」 とエラーがでます。 Windows98では起きなかった問題です。 他でそのファイルを開いている可能性はないです。 ご存じの方お助けくださいませ。
276 :
名無しさん@そうだ選挙にいこう :02/05/21 16:42
>>271 或る役所のデータ処理しました。
彼らがあなたと同じ事言ってきました。
無理です、と言っても中々分って貰えなかつた。
Excelなら彼らもできるんですがAccessをどう説明しても
分って貰えませんでした。
出荷する製品リストをインポートした表を元にして、そのリストで 欠けているデータを発送先のDBから入力するフォームを作っています。 こんな感じ。 「製品1 発送先1 担当1 製品2 ? 担当2 ・・・ ・・・ ---------------- 社名[ ] 仮名[ ] [前][次][入力] アイウエオ カキクケコ ・・・」 50音のボタンと、発送先の社名をフォームのフッタに置いて、 クリック時のイベントで「アで始まる社名」のフィルタをかけています。 (DoCmd.ApplyFilter "", "[発送先]![仮名] Like ""ア*""") しかし、ボタンを押しても「パラメータの入力」なるウインドウが出るだけで 社名と仮名の所が[#Name?]になったままです。 どうすれば、クリック時にフィルタをかけたデータリストを参照できるでしょうか?
278 :
名無しさん@そうだ選挙にいこう :02/05/21 17:36
>>271 エクセルの中間ファイルにレポートの中身をエクスポートして
好みの形式に整えたエクセルに貼り付けるのはどうでしょう?
私、やったことあります。
279 :
名無しさん@そうだ選挙にいこう :02/05/21 20:41
WinXP上にあるdb1.mdbを、Win98マシンからコピーしようとしたら、「ディスクがいっぱいでないか、ライトプロテクトされていないか...」といったメッセージが出てコピー出来ません。 他のテキストファイル等はコピー出来るので、アクセスファイルになんらかのロックがかかってしまって いると思われるのですが、db1.ldbは無いし、XP側から送りだすことは出来るのです。 いったいどうしてしまったのでしょうか。お助けください。
お騒がせしました。
みなさまのご協力に感謝します。
>>270 ごめんなさい。ちょっと油断するとそういうモノも出来てしまう、てことで
ご勘弁を
それからテーブル名、連番にはなってません。
>>272 私程度のアタマではかなり難しい技のようですが
それはたとえば、1対多のリレーションシップで主テーブルのデータを削除すると、多側テーブルからも自動的にそのデータが削除される、というような意味でしょうか(間違ってたら済みません)
もしそうなら、ちょっと無理です。
結合線なんてひけないようなテーブルがたくさんあります。
>>273 ありがとうございます。
テーブル名は、a1とか、1_1とか、TB11とか、テーブル1とか、あと漢字が入っているのもあったりしまして。
今回のケースには使えませんが、このさき役に立ちそうな技なので、コピーして残しておきます
>>274 感謝します
これ、使わせていただきます。
281 :
名無しさん@そうだ選挙にいこう :02/05/23 02:19
教えてください。アクセス2002、システムは98SEです。 以下のテーブルの情報からクエリ等を使って、日付別の商品の在庫数を 求めるのにはどうしたら良いのでしょうか? 日付テーブル(日付) 色テーブル(色番号、色名) 商品テーブル(商品番号、色番号) 売上テーブル(売上日、商品番号、色番号) 入荷テーブル(入荷日、商品番号、色番号、入荷数) 私がやってみた事は、まず下のクエリを作り、 売上数クエリ(売上日、商品番号、色番号、商品番号のカウント) 入荷数クエリ(入荷日、商品番号、色番号、入荷数) 次に下の様な在庫数クエリを作り在庫数を求めようとしました。 在庫数クエリ(日付、商品番号、色番号、在庫数:売上数クエリの商品番号の カウント - 入荷数クエリの入荷数) しかしこの方法だと、当たり前かも知れませんが、入荷数が5あっても、 その日にその商品が売上テーブルに入力されていなかったら、 本当は在庫数は5のはずですが、何も表示されません。 後もし表示されても、このクエリでは日別の在庫の動きしか表示されません。 良く考えたら当然ですね。しかし私の思考力ではこれが限界でした。 うまく説明出来なくて申し訳ないのですが、出来れば宜しくお願いします。
間違えましたすんません。 日付別の商品の在庫数を求めたいのではなくて、日付、色別の 商品の在庫数を求めたいのでした。 宜しくお願いします。
283 :
名無しさん@そうだ選挙にいこう :02/05/23 13:58
>>281-282 貴方が何をやりたいのか?いまいち目的が不明確ですが、一応レス。
まず、データベースにおいて、在庫管理と言うのは基本的に、ある時点を
特定し、その特定した時点での各商品の現有在庫数を計算表示するものです。
日別で在庫数を追う一覧表が欲しいなら、イベントテーブルを日付だけでグループ化
するのと同じで、とてつもなく長大な一覧表になってしまうと思いますよ。
で、考え方ですが、例えば、有る日付を入力し、その日付時点での各商品の在庫数を
見たい と言うのが目的であれば、以下の通りにすれば出来るとは思います。
1.棚卸し時点在庫テーブル(商品番号、色番号、初期在庫数)を作成。
2.棚卸し時点から、目的の日付を入力パラメータとし、その日付までの
商品別売上、商品別入荷数累計を求めるクエリを作成する。(商品別売上・
入荷集計クエリとでも名前を付けて保存)
3.棚卸し時点在庫テーブルと、上記のクエリを商品番号・色番号で結合し、
(結合タイプは、在庫テーブル側を全て表示する外結合タイプ)
在庫数計算の列を追加し、初期在庫数+入荷数累計−売上数累計 とする。
284 :
名無しさん@そうだ選挙にいこう :02/05/23 17:00
access2000 win98seを使ってます。 宛名ラベルの作成なのですが、 うちの場合、顧客によって宛名ラベルの使用量が激しく違いますので よく使う顧客の分は、宛名ラベルシート一枚全て同じ人物にして まとめて作成しておきたいのです。 (わかりにくくてすいません。宛名シート一枚に12枚のラベルがあったら、 12枚とも同じ住所、氏名にしたいということです) パラメータ(?)などで選択した顧客の宛名ラベルをこのような形式で 印刷できれば良いのですが、なにか良い方法ご存じの方 いらっしゃいましたら宜しくお願い致します。
次にレスつけるやつはBタイプ、に1900カメルン A あんたねエ、とか、ふてくされた文体で解説してあげる B ええとですね、とか、やさしい文体で解説してあげる C 貴様Access使う気あんのかゴルァ!!とキレる D 冷たく突き放す
>285 答え E.自己解決する。 お騒がせしてすみません。自己解決できました。 同じ事で悩んでいる方がいらっしゃるかもしれないので 私のやった方法を書いておきます。 1.新規テーブルを作成し、宛名シート一枚のラベルの分だけ レコードを作成する。(中身はなんでも良い) 私の場合「宛名ラベル枚数」というテーブルを新規作成し、 フィールド名は「枚数」データ型は「数値」にしました。 そして、1〜10までの数値(私の使いたいラベルは1枚に10個の ラベルがあるので)を入れたレコードを作成しました。 2.あらかじめ宛名ラベル作成ウィザードで作成していた宛名ラベルの クエリビルダに、1で作成した「宛名ラベル枚数」テーブルを追加する。 以上です。ご迷惑おかけしました。
287 :
名無しさん@そうだ選挙にいこう :02/05/24 10:17
>>271 いまさらだが,とりあえず.
Accessのレポートと同様のフォーマットをExcelで作成.
DAO,ADOなんかでデータをひっぱる.
288 :
名無しさん@そうだ選挙にいこう :02/05/24 10:33
>>271 一旦、CSVにしてExcelのauto_openで読みこんで、cellに代入するのが
よかろう。無理なら自分が安くやってあげるよって宣伝してみたりして。
>>283 詳しくお答えありがとう!
実は日別で在庫数を追う一覧表が欲しいのではなくて、
回転率を求めたりするクエリの前段階としての
在庫数クエリの様な物を作りたかったのでした。
しかし良く考えると、売上げ、入荷以外の商品の
増減(メーカーへの返品や、御客からの商品戻り
等)も日別に入力しなければならないので、結局
それらを直接入力出来る在庫数テーブル(日付別)
も別に要るのでした、、、。
つまり結局、売上げフォームと入荷フォームで
レコードを入力した際には、その在庫数テーブルに
自動的に反映される仕組みを作らなければいけない
のです。
その場合、どの様な方法が考えられるでしょうか、、?
やはり各々のフォームにVBAとかADOとかDAOを使って
処理しなければならないのでしょうか、、?
出来ればもう一度ヒント等お答えお願いします。
290 :
名無しさん@そうだ選挙にいこう :02/05/25 19:15
VB初心者ですが、よろしくお願いします。 モジュールに関数を作成し、クエリにて計算しようと考えています。 Function Watson method(Ht As Double, DW As Double, Y As Double, SX Asring) As Double Dim DataErr As Integer On Error GoTo ERROR_INPUT (以下に) SXが"男性"の場合は V = 2.447 + 0.3362*DW + 0.1074*Ht- 0.09516*Y SXが"女性"の場合は V = -2.097 + 0.2466*DW + 0.1069*Ht の関数を使用したいと考えています。 どのように記述するとよろしいですか?
>>289 >つまり結局、売上げフォームと入荷フォームで
>レコードを入力した際には、その在庫数テーブルに
>自動的に反映される仕組みを作らなければいけないのです。
別に、そういう仕組みでなければいけない!なんて決まりは無いでしょうがね。
ただ、貴方の要件は、要するに、在庫テーブルの在庫データが、売上・入荷と言う
イベント発生毎に、受け払いで数値が上下する こういうシステムを作りたい訳ですね?
個人の好みが有るんでしょうけど、僕はテーブルはリソース系とイベント系に
分けて、在庫数の様な変動データは、テーブルにではなく、クエリで、その時点時点で
集計、演算した方が分かりやすいと思いますがね。
まぁ、方法は有ります。まず、僕がやった様な方法で在庫数を求めます。
その時点時点のデータでいいんであれば、日付のパラメータは不要で、売上数、入荷数、
返品数、戻り数を、全部集計するクエリを作成します。
で、そのクエリと、初期在庫テーブルを結合し、在庫数=初期在庫数+入荷数+戻り数−売上数−返品数の列を
追加したクエリを作成します。
で、在庫テーブル(商品、色番号、在庫数)を作成し、在庫数のデータ型に
ルックアップウイザードで、そのクエリで求めた時点在庫数を貼り付けてやればいい訳です。
ただし、テーブルを開く際に、その在庫数を求めるクエリを事前に行う用に
マクロかVBAで設定してやる必要が恐らく有るでしょう。
まぁ、結局クエリで求めた在庫数を、テーブルの在庫データにクエリを行って
貼り付ける訳だから、只、手間を食ってるだけですけどね。
VBAを駆使すれば、在庫テーブルの各レコードの在庫データに、イベントデータ発生毎に、
差し引きする様な真似が出来るかもしれませんが、その方法は僕は知りません。
そういう方法が知りたければ他の人に後は訊いてください。
292 :
名無しさん@そうだ選挙にいこう :02/05/25 20:17
>281=289 さん、
在庫管理システムをアクセスで作ろうという
講座を見つけましたので参考までにどうぞ。
↓のページの下の方に、ステップ1から10まで
すごくまどろっこしいけどわかりやすく説明
されていましたよ。
http://www.pool.co.jp/access/ (281さんの求めているものかどうかはわからないですけど)
293 :
名無しさん@そうだ選挙にいこう :02/05/25 20:50
select case SX case "男性" V = ... case "女性" V = ... case else V = ... end select とか
>293 cse elseて・・・・ オカマか・・・。
296 :
293 as ukkarisan :02/05/25 23:25
Select Case を使う際は必ず Case Else を入れ、意図しない値が入った 場合にはそのことがはっきりとわかるようにしています。 小生は粗忽者なので自衛策が必要なのです。
>296 名前にワラタヨ。
298 :
名無しさん@そうだ選挙にいこう :02/05/27 09:07
access2002では既存のフォームを簡単にデータアクセスページ化する 機能があるらしいですが、こういうことは可能ですか? ・access2000で作成済みの accessデータ一式 (*.mdb) を、access2002 (Office XP)インストール済み PC へコピー。 ・access2002で access2000の *.mdb からデータアクセスページを作成。 保存形式は access2000 形式指定。 ・*.mdb と作成されたデータアクセスページの *.htmを access2000 + IIS環境に置き、イントラ内で IE5.5 SP2からDBをつつく。
>>295 マジレスすると、そういったイレギュラーなデータに対しても、何らかの
対応をするようにモジュールを作るのはいいことです。(というか、そうすべき)
>>299 マジレスするとイレギュラーなデータに、値を返してはいかんだろう。
301 :
名無しさん@そうだ選挙にいこう :02/05/28 00:11
>>300 どの条件にもあてはまらないものに対して、何がしかの message を
返すのがプログラム作法ではないか? 放置はいただけないぞ
>>301 >何がしかの message を
そう、それが正解だ。
303 :
名無しさん@そうだ選挙にいこう :02/05/28 12:39
ある特定のフォームが開いてるかどうか、 又はカレントフォームであるかどうかを判断する内容を VBAで記述したいのですが。 わかる方いたらお願いします。
304 :
名無しさん@そうだ選挙にいこう :02/05/28 12:53
Is Loadedとか。 ヘルプかサンプルに載っていたと思う。 Function IsLoaded(ByVal strFormName As String) As Boolean ' フォーム ビューまたはデータシート ビューで指定のフォームが開かれている場合は True を返します。 Const OBJ_STATE_CLOSED = 0 Const DESIGN_VIEW = 0 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> OBJ_STATE_CLOSED Then If Forms(strFormName).CurrentView <> DESIGN_VIEW Then IsLoaded = True End If End If End Function
305 :
名無しさん@そうだ選挙にいこう :02/05/28 13:12
307 :
名無しさん@そうだ選挙にいこう :02/05/28 17:56
数万件の顧客データを渡され、accessでデータベースを構築するように言われました。 この古いデータは、削除とかを繰り返した結果、顧客Noが飛び飛びなのですが accessで新規レコードを追加する際に、オートナンバー型にしたいと思います。 しかし、既にデータの入った行に対してはオートナンバー型を選択する事ができません。 どなたか解決策をご存知でしたらご教授ください
>>307 顧客bオートナンバーにするのが良いかは別として…
同じ設定の空テーブルを作成し顧客hネ外を追加クエリーすればよいのでは?
309 :
名無しさん@そうだ選挙にいこう :02/05/29 07:44
質問です。 「オートナンバー」+「テキストボックスに入力された任意の四桁」を 新規入力時に別フィールドに保存するときの関数を教えて下さい。 例) ID 任意 通しID 56636 & 1234 = 566361234 自分でやってみましたが 型が違うのかエラーになってしまいます。 よろしくお願いします。
>>309 IDはオートナンバー型なので任意の四桁の方の型と合わせればいいのでは?
CLng([ID])なんかで…
311 :
名無しさん@そうだ選挙にいこう :02/05/29 09:28
>307 まず、オートナンバーで顧客管理をしているのがダメ。 で、顧客を削除するといって、本当にレコード削除しているのがダメ。 顧客の削除、登録を確認するのは、レコードの有無ではなく、 例えば「登録状況」などのフィールドを設けて、そこに削除、登録、と いった情報を書きこむのが安全だと思う。 方法は 308 のやり方が一番てっとり早い。
312 :
名無しさん :02/05/29 15:19
アクセスでデベロッパーツールを使う場合には オフィスデベロッパー版を買わないとだめですか?
>>312 普通そのようになりますけど。何か気になることがありますか?
314 :
名無しさん :02/05/29 17:01
>>313 やっぱりそうですか
アクセスのデベロッパー版もしくは
デベロッパーのみ単体では売ってないですよね?
>>314 Access単体+デベロッパーツールの組み合わせパッケージは
過去から現在に至るまで無いです。
デベロッパーツールの単体パッケージは2000シリーズまでは
ありましたよ。「差分アップデート」という名目で。
2002(XP)シリーズではラインナップから消えているようです。
316 :
名無しさん :02/05/29 17:15
317 :
名無しさん@そうだ選挙にいこう :02/05/29 19:20
教えていただけるでしょうか? 環境はWin98、Access2000です。 フォームに7個のチェックボックスを配置しております。 チェックボックスの名前をa〜gとしています。 このチェックボックスがチェックされた時、該当する名前 例えばaがチェックされた場合は「a」とラベルに表示したいのです。 複数選択された場合としまして例をあげますと、a,b,cとチェックされた場合は ラベルには「a〜b」と表示させたいのです。 もう1パターンとしましてa,b,c,gと選択された場合は、 「a〜c,g」と表示するようにしたいのですが、御教え願えないでしょうか?
318 :
名無しさん@そうだ選挙にいこう :02/05/29 19:22
>>317 8行目、「a〜b」ではなく「a〜c」に訂正いたします。
>>317-318 ・チェックボックスのON/OFFが切り替わるたびに表示変更
・コマンドボタン押下時に一括で表示変更
どちらでしょう
あと、処理ロジックの骨子はできていませんか?
あるなら提示して頂いたほうがリプライがつきやすいと思います。
# 少なくとも"丸投げ(?)"よりかは印象が違うと思います。。。
320 :
名無しさん@そうだ選挙にいこう :02/05/30 00:00
>>319 表示変更するのはコマンドボタンを押したときです。
ロジックの骨組みというか全体的に良く分かっておりません。
ひとつひとつif文で拾っていくのでしょうか?
>>320 用意した全てのチェックボックスを判定する必要があるんじゃないですか?
ループ処理に押し込めればまとまると思いますよ。
むしろ、表示する時の表現方法がわずらわしいんじゃないかと。
・連続するチェックが2個の場合
a、bがON -> ラベル上の表記 a,b
・連続するチェックが2個以上の場合
a、b、cがON -> ラベル上の表記 a〜c
でしょう?
単純にカンマで区切るほうが楽だと思うんですよね。
>>317 要件向けのテスト
フォーム:名称 Ftest
・コマンドボタン:名称 Command1
・チェックボックス:名称 ボックス毎にaからg
モジュール:名称 Module1
・ファンクション:名称 checker()
動作:
コマンドボタンが押下されたらファンクションchecker()を呼び出し
チェックボックスの状態をフォームのラベルに表示する
コマンドボタンのプロシージャ
Call checker
>>322 の続き フォーム上にラベル:名称 label1も追加してください
しかし我ながら汚い :-P エレガントな処理方法求む
Function checker()
Dim ary1(7) As String
Dim ary2(7) As Boolean
Dim i As Integer
Dim suc_pos As Integer
Dim out_flg As Boolean
Dim out_str As String
For i = 1 To 7
ary1(i) = Chr$(96 + i)
ary2(i) = False
Next i
For i = 1 To 7
If Forms!ftest.Controls(ary1(i)) = True Then
ary2(i) = True
End If
Next i
-続く-
>>323 の続き
-ここから-
suc_pos = 0
out_flg = False
out_str = ""
For i = 1 To 7
If ary2(i) = True Then
Select Case i
Case 1
out_str = out_str & ary1(i)
Case 7
If suc_pos > 0 Then
If (i - suc_pos) > 1 Then
out_str = out_str & "〜"
Else
out_str = out_str & ","
End If
Else
If out_flg = True Then
out_str = out_str & ","
End If
End If
out_str = out_str & ary1(i)
Case Else
If suc_pos = 0 Then
If out_flg = True Then
out_str = out_str & ","
End If
out_str = out_str & ary1(i)
End If
End Select
If suc_pos = 0 Then
suc_pos = i
End If
out_flg = True
Else
If suc_pos > 0 Then
If (i - suc_pos) > 2 Then
out_str = out_str & "〜"
out_str = out_str & ary1(i - 1)
Else
If (i - suc_pos) > 1 Then
out_str = out_str & ","
out_str = out_str & ary1(i - 1)
End If
End If
End If
suc_pos = 0
End If
Next i
Forms!ftest.Controls!label1.Caption = out_str
End Function
>>322-324 インデントはいってないと醜い。。。
あ〜、フォーム上のチェックボックスの配置順を変えると破綻しますんで(w
おまけ:
コマンドボタンの代わりにチェックボックスのイベントプロシージャから
ファンクションを呼び出すとボックスのON/OFF切り替えの度に表示変更
するはずです。
326 :
名無しさん@そうだ選挙にいこう :02/05/30 15:47
教えてください、お願いします。 文字数が10文字未満であるデータのみを 抽出したい場合の条件の設定の仕方を教えてください。
>>326 Len([フィールド名称])<"10"
328 :
名無しさん@そうだ選挙にいこう :02/05/30 17:18
>>327 どうもありがとうございます。
クエリーの抽出条件で使用するとLen([フィールド名称])="10"
は出来たのですが、Len([フィールド名称])<"10"が出来ません。
演算フィールドLen([フィールド名称])を作成して、抽出条件
で<10を指定すると出来ました。
Len([フィールド名称])で○○未満を認識させる方法ってありますか?
申し訳ありません、もう一度お願いします。
329 :
名無しさん@そうだ選挙にいこう :02/05/30 17:30
>>328 クエリーのフィールドを
IIf(Len([フィールド名称])<10,True,False)
として、抽出条件をTrueにするというのはどうだ?
>328 Accessのバージョンは? >Len([フィールド名称])<"10" 97なら出来たよ。
331 :
名無しさん@そうだ選挙にいこう :02/05/30 18:43
>>329 どうもありがとうございます。
出来ました!
>>330 すみません、バージョンはAccess2000です。
332 :
名無しさん@そうだ選挙にいこう :02/05/30 18:48
先輩方、すみません、おせーて下さい。 1) Accessのタブコントロールってタブ変更時にクリックする部分を クリックしても_Clickイベントが発生しないっぽいのですが、 タブ切り替えた時に処理をしたい時は、どのようなイベントを使うべきでしょうか。 2) AccessではVBでいうところのApp.Pathはどのように表記したら良いのでしょうか。 Access97です。よろしくおながいします。
333 :
名無しさん@そうだ選挙にいこう :02/05/30 20:44
ふりがなフィールドで、 ニシムラ ヒロユキ となっているデータを ニシムラヒロユキ と、間のスペースを取り除きたいのですが、どうすればよいのでしょうか_
>>333 HelpでReplace関数など見てみよう。
>>333 ごめそ、見てみたらAccessにはReplace関数無いのね…。
じゃあInstrあたりかなぁ。
今日は先輩方おられないんすね…。
336 :
名無しさん@そうだ選挙にいこう :02/05/30 21:06
>333 置換するとか
337 :
名無しさん@そうだ選挙にいこう :02/05/30 21:11
>332(1) Changeイベントとか。
338 :
名無しさん@そうだ選挙にいこう :02/05/30 21:31
たとえば Left([フィールド名],InStr([フィールド名]," ")) で空白より前が取り出せるね。 これの応用で Right([フィールド名],Len([フィールド名])-InStr([フィールド名]," ")) で空白よりあとが取り出せる。 で、両者をくっつけるとか。 しかしもっといい方法があるはずだね。 元データそのものをいじっていいのか、元データはそのままでクエリ上で のみ空白を取り除きたいのかでまた違うし。
>>334 私もエクセルのReplaceに相当する関数があるかと思ったのですが
見つかりませんでした。
>>338 データそのものを書き換えたいです
フォーム上で、氏名フィールドに
西村 博之
と入力すれば
フリガナフィールドに
ニシムラヒロユキ
と表示させるようにしたいのです
なぜか漢字氏名は、姓名間スペース有り、フリガナは姓名間スペース無し
というフォーマットなので・・・
>>337 サン
タブコントロールには
click
DblClick
MouseDown
MouseMove
MouseUp
しか見あたらないんすけど・・・。
341 :
名無しさん@そうだ選挙にいこう :02/05/30 21:47
姓名を別々のテキストボックスに入力させ、テーブル格納時に合成するのはどうですか?
343 :
名無しさん@そうだ選挙にいこう :02/05/30 21:51
それはタブコントロール内のページ(コントロール)です。 タブコントロールそのものにはchangeもあります。
>>343 サン
ほんとだ…ありますた…
こんな部品があるんすね…詐欺みたいな。
すみませんでしたーーー!
思い出した!
>>332 なんですけど(2)の質問おながいできませんか?
粘着すまそ…。
346 :
名無しさん@そうだ選挙にいこう :02/05/30 23:00
CurrentProject.Path とか?
>332 Ac97だよな? まず、App.path に相当する関数はない。なので自分で作る。 CurrentDB.Name で、自MDBのフルパスがとれる。ただし、 MDBまで含むので、削ってやらんといけない。 InstrRev関数を自作するか、一番右側の ¥ 以降を削るように 努力しよう。 InstrRevくらい自作できんのなら、もっぺん質問すれ。 あと、Ac2000以降はReplace関数が標準でついているし、これくらいは 自分で作れるだろうに。
>>347 ありがとうございます。
できますた。マジ感謝です。
VBAで質問したいのですが、私、VBAはじめたのが最近で、本読んでADOで接続してやってたのですが、 知り合い(無知なくせに嫌な奴なの!)に「AccessならDAOだろー」みたいに言われました。 DAOって以前のやつじゃないですか。それが本当に良いのですか。簡単さとか? どんな感じなのかも含めて教えて欲しいのですが…。 例えば、データベースに接続して、野菜テーブルから最も値段の高いものをSQLで取ってきて テキストボックスに入れる、みたいにするにはどんな感じになるのですか。
生徒の名前などの情報が登録してあるテーブルと、月別に行うテストの点数を入力するテーブルがあります。 月別に入力するテーブルのセイトシメイフィールドに、生徒情報が登録してあるテーブルから自動的に氏名を表示し、 入力することはできないでしょうか? テーブル作成クエリでやってみたのですが、生徒氏名が一軒しか表示されませんでした。 よろしくお願いします。
351 :
名無しさん@そうだ選挙にいこう :02/05/31 22:50
>>350 ・tbl生徒
生徒コード 生徒氏名
01 安倍
02 飯田
03 石川
・tblテスト
教科 生徒コード 点数
国語 01 55
数学 01 25
理科 01 60
国語 02 50
数学 02 20
理科 02 95
国語 03 80
結論:
1.数学のテストが激ムズ。
2.モー娘。ファンである。
>>351 ワラタ(w
じゃなくてですね、そんな感じのデータなんです。確かに。
生徒コードはオートナンバーにしないほうがいいのでしょうか?
生徒情報テーブル
生徒ID オートナンバー
生徒氏名 テキスト
フリガナ テキスト
テスト得点テーブル
生徒ID オートナンバー
生徒氏名 テキスト
国語 数値
数学 数値
英語 数値
テスト得点テーブルのフィールドは変わっても構いません。とにかく、生徒一人一人の月別(計12回)の得点を入力し、
それを集計したいのです。生徒氏名がオートで入るようにはならないのでしょうか?
もし、他にいいアイデアがあったら、ご教授願います。
353 :
名無しさん@そうだ選挙にいこう :02/06/01 01:12
テスト得点テーブルの生徒IDがオートナンバーじゃ生徒情報テーブルと 結合できないじゃないか。生徒情報テーブルにある生徒氏名をテスト得 点テーブルで再度持つのもどうか。 貴殿の処理内容ならばエクセルでやったほうがいいんじゃないかな。
354 :
名無しさん@そうだ選挙にいこう :02/06/01 09:09
>>352 生徒情報テーブルはリソース系、テスト得点テーブルはイベント系テーブルで
性格が異なる。
イベントテーブルはデータ発生毎にデータを入力するタイプのテーブル。
もし、生徒氏名の入力が面倒だから、入力支援がしたいと言うだけなら、
生徒情報テーブル
生徒ID テキスト
生徒氏名 テキスト
フリガナ テキスト
テスト得点テーブル
生徒ID テキスト
国語 数値
数学 数値
英語 数値
として、リレーションシップを結べばいい。で、テスト得点入力用のフォームを
作成し、生徒氏名入力をコンボボックスにして、値集合ソースを生徒情報テーブル
に指定すれば、生徒の氏名を選択するだけでいい。
355 :
名無しさん@そうだ選挙にいこう :02/06/01 09:18
>349 無知なくせにイヤなヤツってわけでもないと思うが。 Access単体(Access同士)でしかつかわないのに、やたらとADOで 組みたがるヤツはバカ。単なる新しモノ好き。 DAOはAccessJetエンジンに最適化された、最良のミドルウェアだよ。 速度が違うし、細かいところまで手が届く。その代わり煩雑。 もっとも、将来的にデータベースの肥大化が見こまれているなら、 今はAccessで組み、MSDE、SQL-Server とアップサイジングして いく予定なら、ADOが最良の選択肢といえる。 よって、ADPで組むならADO、MDBならDAOって割り切れ。 ま、でも、最近始めた初心者ってなら、ADOをオススメする。 なぜなら、DAOは確かに過去の技術であり、これからの .net では 切り捨てられる運命にある。 ラッパークラスを介してDAOの使用も可能ではあるが、学習していく上で 空しく感じるはず。 ADOは拡張が続いているので、やっといて間違いではない。 値段の高い野菜についてはまた今度。
>>353 >>354 レスありがとうございました。エクセルでの処理を行っていたのですが、
データ量が多く、エクセルではちょっと処理しきれなくなってきたので、アクセスにしたんです。
テストの科目別ベスト3などを出し、その生徒一人一人の過去の成績の推移も出したいので、
アクセスの方がいいか、と思いまして。
テーブルの質が違うという時点までは気づいたのですが、どうにもうまくいかなくて。
クエリを使って、テーブル作成クエリを使い選択式にしてみたのですが、
生徒の人数が500人近くいるので、オートで入るようにしたいのです。
なんとか、月別に生徒の点数を入力できるようにならないものでしょうか?
テーブルをつくり直すことになってもかまいません。ご教授お願いいたします。
357 :
名無しさん@そうだ選挙にいこう :02/06/01 16:05
>>356 「Access SQL Where句」で検索しなさい。
500人×教科数のデータをアクセスで入力するのは大変そうだな。 入力はエクセルでやって、アクセスで分析というのがいいのでは ないかな。 ああ、でも全部一気に入れるわけじゃないだろうしな。教科毎の クラス毎での入力ならまた話は違うな。実際のところ、どんな感 じ? 各教科の先生がドスンと全教室ぶんの結果をくれる? そ れとも、各担任が全教科の結果をドスンとくれる? あるいは別 の形? 各教師にそれぞれ入力してもらえたりはしない?
359 :
名無しさん@そうだ選挙にいこう :02/06/01 16:29
>>356 テスト得点テーブルについては、科目フィールドを設けて
tbl_TEST
生徒ID | 科目ID | 得点
としたほうが後々いいかも。
360 :
名無しさん@そうだ選挙にいこう :02/06/01 16:33
>>356 情報少なすぎ。どうやって前述のテーブル構成から月別の集計ができる
のか?
EXCELからテーブルインポートしれ。
最終的に何を知りたいのか。
今現在入力済みのデータはどうなっているのか教えれ。
ごめん、修正。 tbl_Exam 生徒ID | 科目ID | 年度 | 月 | 得点 学校だったら多分暦年より年度のほうがいいだろ。
たくさんのレスありがとうございます。とても参考になります。 現在の作成状況はこんな感じです。 「成績表.mdb」 テーブル:2002年度生徒名簿マスタ、中学校名マスタ。 テスト7月、テスト8月、テスト10月、テスト12月(テストテーブルはこんな感じで12個) フォーム:2002年度生徒名簿マスタフォーム 2002年度生徒名簿マスタのフィールド構成 主キー 生徒ID オートナンバー 学年 数値型 入力規則1 OR 2 OR 3 生徒氏名 テキスト IME変換モード:人名・地名 ふりがな→フリガナ フリガナ テキスト 全角カタカナ 無変換 所属校舎名 テキスト 所属中学校名 テキスト インデックスで、生徒情報が重複しないようにしてあります。 テストテーブルのフィールド構成 主キー 生徒 ID オートナンバー 生徒氏名 テキスト 数学 数値 英語 数値 国語 数値 このテストテーブルがおそらく間違いだらけなのだと思いますが・・・・ 生徒名簿マスタフォームは、テーブルをもとにそのまま作ってあります。 テストの結果は、各校舎ごとに生徒一人一人の得点として算出されます。 例)山田 タロウ 国語30 数学30 英語30 という感じです。 生徒一人につき、テスト3科目、12回分のデータが存在するという形になります。 最終的にやりたいことは、生徒一人一人のテストの成績をデータベースで管理して これまでの成績の推移と、今回の成績をを毎回成績表としてレポートで出し、そのレポートには、 その生徒が、全生徒と比べ何番目にいるのかというのを出し、さらに全生徒全科目の平均、 科目ごとのベスト5、合計得点のベスト10をレポートに出す。といったことがやりたいです。 これを、初心者でもいじれるようにボタン化しておきたいのです。 月別の得点などはクロス集計クエリでやろうと思っていますが、毎回の得点入力をする際に、 生徒一人一人の名前が自動に出て、入力することは出来ないでしょうか? もしくは、これとは全く違う方法でもかまいません。 現在は、生徒名簿マスタに、生徒情報は全て入力済みです。 クエリを色々駆使してますが、どうしてもできず相談に来た所存です。 お手数をおかけしますが、ご教授お願いいたします。
>>356 要するに、「イベントテーブルに毎月生徒一人一人の氏名〜各科目点数等を全部入力するのは
面倒だから、毎月500人分の生徒の、科目と得点以外のデータはテーブルに入力済み
にしといて、各科目の点数だけを、入力して出来るだけ楽をしたい!」
こういうワガママを逝ってる訳だな?
本来、こういう怠け者にはアドバイスもしたくはないが、俺は親切だから
いい方法を教えてあげよう(w
エクセルで、生徒ID |年度 | 月 | 科目ID | 得点 というワークシートを
作成する。アクセスのテーブルも同じフィールド名で作成する。
で、エクセルの方に毎月、月と得点データのみを入力する(他のデータはワークシート
上で共通だからコピーすれば良し)。
で、月別にできあがったエクセルワークシートのデータを、アクセスの
作成しておいたテーブルにインポートする。(エクセルのワークシートのデータの場合は
アクセスの既存のテーブルとフィールド名などが共通なら追加インポートが可能らしい)
尚、俺は君の様なめんどくさがりやではないので、こういう怠けた方法は試して見た事は無い。
ただ、「アドバイスを」と言う事なので、アクセスのヘルプを参照して、エクセルワークシートデータの
インポートの場合は、フィールドが共通なら既存テーブルへのインポートが可能らしいと言う事が分かったので、書いただけ。
当然、実際に試してはいないよ。うまくいくかは、自分で試してね。そこまで責任持てません(w
>>363 ありがとうございます。科目は毎回決まっているので、生徒氏名だけが問題なのです。
このような場合でも毎回500人分の生徒氏名を入力するものなのでしょうか?
もし、普通はそうならごめんなさい。わがままでした。
>>364 >このような場合でも毎回500人分の生徒氏名を入力するものなのでしょうか?
だから、最初に俺が354で書いた通り、普通はいちいち「氏名の入力」なんてしないよ。
普通は、一件一件のレコード入力の際に、キーボード入力を出来るだけ避けて楽をする為に
可能なデータはコンボボックス選択を利用する。
「コンボボックス選択すら面倒だ!」と言うので、“怠け者”呼ばわりしたけど、
冗談だから、そんなに気にするな(w
>352さん 採点て学級単位なんでしょ? 生徒IDを「学級+出席番号」にして、、、例えばa01みたいな。 それで、フォームでID入力したら生徒名表示+点数入力ができるように したらどーですか。 的外れだったらゴメソ。
367 :
名無しさん@そうだ選挙にいこう :02/06/02 01:13
>このような場合でも毎回500人分の生徒氏名を入力するものなのでしょうか? しないよ。 「他のデータはワークシート上で共通だからコピーすれば良し」 って書いてあるじゃないか。きちんと読むべし。
アクセスを起動して、エクセルにリンクさせる、ということは出来るでしょうか?
>>366 ちょっとやってみます。ありがとうございます。
>>321 さん
お礼の返事が遅れまして申し訳ありません。
大変、参考になりました。
本当にありがとうございました。
370 :
名無しさん@そうだ選挙にいこう :02/06/03 12:30
500人もいるんならフォームでID入れるだけでも一苦労だろ。 どうしたら一番楽なのか、よく考えた方が良くないか。
>>370 あら、別にフォーム入力しなくてもイイやね。
IDをソートさせて、上から順に入力するだけでも、イイと思ふ。
なんなら、Excelで入力してインポートしてもイイんじゃないの?
ま、楽に作業するには、答案を学級順かつ出席番号順に
並べておく必要があるけどね。この作業はあまり負荷がないでしょ?
372 :
名無しさん@そうだ選挙にいこう :02/06/03 20:04
>>368 エクスポートする際にそれらしいのが無いか確かめてごらん。
ほらリンクとかって。
373 :
名無しさん@そうだ選挙にいこう :02/06/03 20:49
リンクだと今度はデータ利用の段階で苦労するんじゃないかい
難しいですね、アクセス。 まさかこれほどだとは思いませんでした。 自分の間違いが、ご指摘どおり月ごとに代わるテーブルと、 更新性の少ないテーブルを一緒に使おうというのが間違いでしたね。 こうしてみたのですが、どうでしょうか? テーブルを12個用意しました。これは毎回のテストごとのテーブルです。 テーブル構成は 主キー 生徒ID オートナンバー 学年 数値型 生徒氏名 テキスト フリガナ テキスト 所属校舎名 テキスト 所属中学校名 テキスト 英語 数値 数学 数値 国語 数値 これでは、アクセスの意味がないでしょうか?これをクエリで生徒の名前で抽出し12回分のテストデータの分析を 生徒一人一人しようかと思うのですが・・・・。お手数をおかけしますが、ご意見よろしくお願いいたします。 それと、オートナンバーが含まれたデータを削除した場合、例えば1〜10までで2〜5を削除した場合、 この2〜5は復活しないのでしょうか?データが、1.6.7.8.9となってしまうのですが。
375 :
名無しさん@そうだ選挙にいこう :02/06/03 21:51
顧客リストで、たとえば 佐藤 一郎(主人) 佐藤 花子(奥さん) それぞれ別のデータがあったとします。 購入総合計などの計算をするとき、この二人(佐藤家の人)を まとめた数値が欲しいのですが、どのようにしたらよいでしょうか? ちなみにテーブルはこんな感じです 顧客マスタ 顧客番号/氏名/住所/.... 購入履歴マスタ 顧客番号/商品コード/日付/.....
376 :
名無しさん@そうだ選挙にいこう :02/06/03 22:20
その二人が家族であることを示すデータがどこかにいりますね。 例えば、顧客マスタに家族番号を加える。 さすれば家族番号は顧客番号から一意に定まるので 家族番号|(顧客番号)|商品コード|売上 というようなクエリができます。 これをさらに家族番号ごとに集計してやればよいですね。
>>376 早速の回答ありがとうございます。
家族番号をつけるということは、顧客全員に家族番号を割り振るということでしょうか?
たとえば顧客100人中、家族は2人程度なので、それ以外の人は単独という事になります。
こういった場合は、単独の人にもそれぞれに異なる「家族番号」を振ることになるのでしょうか
論理上はそうなります。
>>375 ただ、そういう状況であれば全て個人単位で集計した後に
家族の人たちだけは手で合計、という方法でいいんじゃな
いでしょうか。もちろん、顧客数や業務の規模にもよりま
すが。
あるいは、単独の人は家族番号0などで統一しておいて、家族番号0の 人は顧客番号ごとの集計、そうでない人は家族番号毎の集計とする。
380 :
名無しさん@そうだ選挙にいこう :02/06/03 23:39
>>375 世帯主というか主顧客番号フィールド作って、世帯主でない場合のみ
世帯主の顧客番号を入力するって方法もあるね。
設計段階で結婚・離婚は考慮しておいた方がいいね。
集計方法は379さんと同じ
381 :
名無しさん@そうだ選挙にいこう :02/06/04 08:27
>>374 テストテーブルに
学年、生徒氏名、フリガナ、所属校舎名、所属中学校名
は必要ない。
それらは、生徒テーブルに持つべきデータ。
生徒テーブルに上記データ(+生徒ID(オート))を持ち、
テストテーブルの生徒ID(整数型))にリレーションをはれ。
サンプルあげようか?
382 :
名無しさん@そうだ選挙にいこう :02/06/04 08:59
>>374 12個のテーブル生徒IDがオートナンバーだとそれぞれのテーブル毎に
生徒名とIDが同じものにならないと思われ…
>352のテーブル状態でいいのでは?
生徒情報テーブル
生徒ID オートナンバー → テキストか数値(長整数)
生徒氏名 テキスト
フリガナ テキスト
テスト得点テーブル
生徒ID オートナンバー → テキストか数値(長整数)
生徒氏名 テキスト → いらない削除
テスト日 日付
国語 数値
数学 数値
英語 数値
この状態でクエリーなどで生徒IDをつなげてフォームなりレポートなりを作れば。
テスト日フィールドの他に回数フィールドを作ってもいいかも
クエリーを使えばテスト日フィールドや回数フィールドをデータの抽出もできるし…
384 :
名無しさん@そうだ選挙にいこう :02/06/04 11:00
>>374 おそらく今のスキルじゃ、皆の教えてくれていることを理解するのは無理。
回り道かもしれないけど、住所録とか簡単なチュートリアルを一通りこなし
てから再挑戦したほうが、結局は早いと思う。
みなさんレスありがとうございます。早速作ってみます。
>>381 本当ですか?いただけるとありがたいです。よろしくお願いいたします。
>>382 ありがとうございました。再設定できました。
>>383 大変よくわかりました。てっきりテーブルにはオートナンバーが必要なものだとおもっていました。
違うんですね。アクセスの解説本とかには全部オートナンバーが含まれていたもので・・・。
>>384 住所録は一度つくったことはあります。でも、忘れている部分が多いので、顧客マスタを作ってみます。
レスありがとうございます。
386 :
名無しさん@そうだ選挙にいこう :02/06/04 13:06
>>385 まず、順序だててやってみる。必要な機能、それに伴って必要なデータ等
を紙に書き出してみるといいかも。
そして、わからないところが出たらピンポイントで質問する(当然自分でも
調べてから)。
漠然とできませんというより、適切な答えが返ってくると思う。
まず、最終的にやりたいことを考えて、テーブルを設計してみよう。
387 :
名無しさん@そうだ選挙にいこう :02/06/04 17:23
accessを覚えたいのですが、初心者でも分かりやすく解説してる サイトなどありましたらおしえてください。
access2000でレポートをHTML出力する場合、複数のページになると 自動的に"[レポート名]の2ページ.html"というファイル名がついてしまいます。 access97では"[レポート名]_Page2.html"という英語の形式だったので問題が なかったのですが・・・ このレポートのHTML出力の際のファイル名の形式の指定の仕方をどうぞ教えてください。
389 :
名無しさん@そうだ選挙にいこう :02/06/05 18:26
390 :
名無しさん@そうだ選挙にいこう :02/06/06 09:58
Access97のアンインストールってCDナシでできる?
391 :
名無しさん@そうだ選挙にいこう :02/06/06 10:20
ACCSの陰謀 ・日本での音楽CDはアーティストの取り分は1%(作詞作曲+6%) 残りは全てプロダクションやら協会が持ってく。 ・プレステや任天堂もややメーカーの取り分が多いがマージンを持っていく。 ・ACCSはPCソフトでこのシステムを取り入れようと躍起になっている。 結局、メーカーの収支は変わらず(かえって減る)ACCSが儲ける構造になる。 そんなACCSに味方するのは販売店(中間層)だけで、作成者と利用者には なんの還元も無い。 インターネットが盛んになり「ピアtoピア」(人と人)の距離が短くなりつつある 現状ではメーカーはダイレクトにユーザーに提供するシステムに切り替えてい るのに、ACCSのやってることは時代遅れの金鉱探しでしかない。 まぁ販売店には気の毒なことだが中古市場がオープンになったのでその辺り で頑張ってほしい。(Yahooオクを超えるのは簡単なはずだ) もっとも、BookOffで100円で売られた日にゃ手を上げるしかないとは思うが。 (コンビニ・ソフトはすでに100円で売ってる、パチンコとかキータッチ系ね)
テーブルのデータIDと名前を100個レポートに印刷したいのですが、 表形式でやると、右側にデータが出て、3ページ分になってしまいます。 このデータを一枚の紙に、1〜100までデータを印刷することはできないでしょうか?
>>392 用紙向きがA4縦とすると100のデータは縦には収まっているのでしょうか?
収まっているとしてらプレビューをしながらページ設定で左右の余白部分を
設定してみてはどうでしょう。
また、デザインモードで各フィールドサイズ(幅)を変更してみては?
>>393 縦に1〜34まで収まっています。
右側がかなりの余白になってしまいっているので、この余白に35〜68、さらに右に69〜100という感じで
データを収めたいのです。
>>394 レポートのプロパティで書式の「同一ページ印刷グループ」を
列に設定すればいいと思います。
※当方Access97の為名称が2000や2002では違ってる場合があります。
396 :
名無しさん@そうだ選挙にいこう :02/06/06 17:07
「名簿」という名前のテーブルを基にフォームやクエリ、レポートを作ったの ですが、名簿が4種類必要になったのでmdbファイルをコピーして4つに分 けてそれぞれ名簿テーブルに違う種類のデータを格納したのですが、 後になってレポートやフォームの変更がある場合に大変になってしまうことに 気付きました。 理想ならテーブルを別のファイル?にして外部から読み書きしたらいいのです が、どうやるのかわかりません。 こんな私は逝って良しですか?
>>396 それぞれのMDBは別内容の名簿テーブルがあるということですよね
それに対してレポートやフォームは同一フォーマットを使用するのですか?
いずれかひとつのMDBでレポートやフォームを再設計し、その他のMDBには
レポートやフォームをインポートすればいいのでは?
※右クリックのプルダウンメニューで「インポート」
398 :
名無しさん@そうだ選挙にいこう :02/06/06 18:01
>>397 あ。レポートやフォームってインポートできるんですね。(恥
399 :
名無しさん@そうだ選挙にいこう :02/06/06 20:36
>>395 列にしましたが、だめでした。VBAの世界でしょうか?
>>396 ひとつのMDBで、ひとつの名簿テーブルに、種類を区分するフィールドを設けろ。
SQLのWHERE句や、クエリの抽出条件で使い分けるべし!!
>>394 レポートをデザインビューで開いて、ファイル−ページ設定−レイアウトで
3列にしてみな。
402 :
名無しさん@そうだ選挙にいこう :02/06/06 21:14
顧客管理をAccessでつくってます。顧客IDごとに対応記録の フォームを検索結果で表示させようとしてますが、何故か1行目しか 表示されません。Enterを押せば2行目は表示されますが、一気に でてこないものでしょうか? Private Sub cmdSchdule_Click() '[対応記録]ボタン 'カレントレコードの顧客対応記録を表示 DoCmd.OpenForm "frm対応記録_sub", , , "顧客ID='" & Me!顧客ID & "'", _ acFormEdit, acDialog, "検索結果" End Sub
403 :
名無しさん@そうだ選挙にいこう :02/06/06 23:00
>>401 だめでした。列間隔を狭くするか、列幅を少なくしないと表示されませんとなってしまいました。
列幅を2列にしても表示されませんでした。どうすればよいでしょうか?
404 :
名無しさん@そうだ選挙にいこう :02/06/06 23:03
1行目って何が1行目やねん。
405 :
名無しさん@そうだ選挙にいこう :02/06/06 23:05
列間隔を狭くすれ。
406 :
名無しさん@そうだ選挙にいこう :02/06/06 23:10
列間隔を狭くしたり 列幅を狭めたり 余白を狭めたり したまえ。 …って、アクセスのスキルというような問題ではないだろう
>403 データIDと名前のテキストボックスって広くなりすぎてないか? そうでなかったら、今の状態はどのようなのか数値を書いてみろ。 403のレポートは403にしかみえないんだからな。
408 :
名無しさん@そうだ選挙にいこう :02/06/07 00:57
409 :
名無しさん@そうだ選挙にいこう :02/06/07 01:04
顧客IDと顧客氏名があって、テーブル名は顧客名簿マスタです。 顧客ID 顧客氏名 1 2ちゃん太郎 ここに34から↓表示したい 2 2ちゃん二郎 3 ・ 5 ・ 6 7 ・ 8 9 10 11 12 13 ・ ・ ・ ・ ・ ・ 33 2ちゃん三三郎 で、右側が余白で思いっきりあいてます。
410 :
名無しさん@そうだ選挙にいこう :02/06/07 02:49
>>409 レポートだったらレポートデザインで、
ファイル−ページ設定−レイアウト−列数
あたりをいじってね
>>409 間違えました
新規レスかと思ったもので・・・
407さんの言われてることをちゃんとやってるのかな?
>>409 でもないか
レポートそのものの幅が大きすぎるのかな
レポートプロパティの幅
413 :
名無しさん@そうだ選挙にいこう :02/06/07 08:34
>>409 412さんの言うとおりにまずデザインモードでデザインできる部分の幅を
狭くしてみてください。
> 顧客ID 顧客氏名
> 1 2ちゃん太郎 ┣ ←この辺のまで(ここから右はグレーになる)
> 2 2ちゃん二郎
> 3 ・
> 5 ・
> 6
> 7 ・
> 8
> 9
> 10
> 11
> 12
> 13
414 :
レポーター :02/06/07 21:12
レスくれた皆さんありがとうございました。レポートできました。
おっしゃる通り、デザインビューで
>>413 の通りにやったらできました。
ありがとうございました。
テストが12回あるのなら、テストテーブルはそれぞれ12個作って分けたほうがいいですよね? 少しずつですが出来てきました。 テスト氏名は、コンボボックスで入力支援にしました。
416 :
名無しさん@そうだ選挙にいこう :02/06/08 06:38
>415 平均だとか出さないのか? ひとつにまとめろ、DBの基本だ!!
417 :
名無しさん@そうだ選挙にいこう :02/06/08 07:48
>>415 テストテーブルはひとつのほうが良い。
テストの実施日をフィールドとしてもたせる。
>>412 383で書いた者だけど…
ほんと読んでくれたの?
420 :
名無しさん@そうだ選挙にいこう :02/06/08 13:41
テストテーブルを12個に分けるんなら、生徒テーブルも500個に分けるべきじゃないか? テストテーブルも3教科分で36個必要じゃないか?
>>415 同じく384で書いた者だけど、
読んでくれた?
煽られる前に少しは意見聞こうよ。
>>421 ワシのは読んでくれたっぽいんで、こんなこと言うのあれだけど、同意。
Access使う前に、正規化を学んでほしいっす。
ま〜この方は、無理してAccess使わずに、Excel使ったほうが
いいんじゃないかと思う今日この頃。
すみません。本当にお手数おかけします。 テストが12回あって、テストの回数フィールドを設けたとして、教科が3教科、生徒が500人いる場合、 テストテーブル 生徒ID テスト回数 国語 数学 英語 となるわけですよね?つまり、同じテーブルに同じ生徒IDが12回出てくることになるのでしょうか?
424 :
名無しさん@そうだ選挙にいこう :02/06/08 21:01
425 :
名無しさん@そうだ選挙にいこう :02/06/08 21:02
なるのです。
352ってほんとうにがっこうのせんせいなの? 5人くらいでサンプル作って、試行錯誤しる!
>>432 12個のテーブルが1個に収まったと思えばいい!
その後でクエリーを使ってデータ編集すればいいのでは
ないでしょうか?
遅かれ早かれクエリーを使うのは必然となるのだから…
>>426 塾の講師です。すいません。
皆さんレスありがとうございました。そうすると主キーを設定するためにオートナンバーのフィールドは必要でしょうか?
それとも主キーはいりませんか?
429 :
名無しさん@そうだ選挙にいこう :02/06/08 23:18
主キーは 生徒ID + テスト回数 でいいじゃん オートナンバーなんて、話がややこしくなるから使うなよ
>>428 >>383 でやって見れ
主キーは「生徒情報テーブル」の生徒IDを指定。
「テスト得点テーブル」に主キーは必要なし。
「テスト日」は「テスト回数」に変更して…
オートナンバーの必要性はあるのか、ないのかは
あなたの判断で別フィールドを取ってください。
以上
>>429 そうすると、もとテーブルの主キーは生徒IDなので、入力支援は出来なくなるのでしょうか?
もっぺん要件をまとめて見れ。微妙なレスが混じってるぞ。
作り直してみました。現在こんな感じです。 テーブル ・2002年度生徒名簿マスタ 生徒ID テキスト 生徒氏名 テキスト フリガナ テキスト 学年 数値 所属中学校名 テキスト 所属校舎名 テキスト ・テスト入力 生徒ID 数値 テスト回数 数値 英語 数値 数学 数値 国語 数値 あとは、校舎名マスタと、中学校名マスタ。フォームで入力時のコンボボックスのソースです。 そして上記二つのテーブルのフォームです。 テスト入力の生徒IDはコンボボックスにして、名前も表示されるようにしました。連結は生徒IDです。 いまのところこんな感じです。 質問があります、テスト回数に1〜12の数字しか入れられないようにしたいのですが、1 Or 2 Or・・・という感じで やるしか方法はありませんか?between and でやってみたのですが出来ませんでした。 よろしくおねがいします。
すいません。やりかた間違ってたみたいです。入力規則できました。
438 :
名無しさん@そうだ選挙にいこう :02/06/09 22:58
>>423 =>437の塾の先生さん、
私も最近accessを勉強し始めたばかりなのですが、
魔法使いの開発工房
http://www.mahoutsukaino.com/ というところで、トランザクションデータとマスターデータの
違いが、超入門編のどこかに書いてあって、(在庫管理だったかなぁ)
後からたまってくるデータと、初めから決まっているデータのことが
分かりやすく書いてあって、それを読んだら
>となるわけですよね?つまり、同じテーブルに同じ生徒IDが12回出てくることになるのでしょうか?
というような疑問が無くなるような気がしますが。。。
一緒に頑張ってマスターしましょう!
>>438 ありがとう。そこは前から行ってて勉強中です。在庫管理のところですね?了解しました。
早速行ってみます。
440 :
名無しさん@そうだ選挙にいこう :02/06/09 23:10
>439 いや、待って、待って。 在庫管理のところだったかどうか忘れちゃったよ。 あそこは、取敢えず、超入門の中をぜえんぶ初めから 読むべき。データベースのことがものすごく分かる。 ウィンドウズの基礎的なことまで説明してくれているから クソ長いけど、ぜーーーーんぶ読んだら目から鱗の連続ですよ。
441 :
名無しさん@そうだ選挙にいこう :02/06/09 23:11
あ、ごめん。 前から行ってて勉強中って書いてるね。
442 :
名無しさん@そうだ選挙にいこう :02/06/09 23:20
>>352 お祭り騒ぎの中、ごくろうさん
ガンバレ!
>>442 >>440 ありがとん。とりあえず、いまVBAまで行きました。少しずつ頑張ります。
結構やってて楽しいYO!
・・・・・・・・・ロシアで暴動らしいですね。
>>352 あ〜う〜楽しいのは分かったから。
まず「データベースとは何なのか?」それから学んでって言ってるのですよ。
VBAなんて、その後の話。まだ早すぎ。
とりあえず、知ってると思うけど、
住中先生のデータベース活用塾
//www.microsoft.com/japan/office/suminaka/access/
ここ全部読んで。ローカルに保存してもいいくらいだから。
あと、URL伏せるので自分で検索してほしいところ。
Fly Me To The Access-Heaven
ここの「天国への扉」つぅコンテンツ、必読。
Accessに触るのは、これらを読んで理解してからでも遅くないから。
>>444 魔法の〜を最初から実践してますけど、それじゃあだめでしょうか?んで、VBAに到達したのですが・・・・。
このページも行ってみます。
>>445 塾の講師やってるならわかるよね、理解もしていないのにどんどん先に
進んでいくことの無意味さが...
Win XP & AC2k で固定長ファイルのインポートをしたら、 一部のレコードで桁ズレが起きています。 MSのサポート情報を検索したら、たぶんコレかなと思うのですが。↓ -------------------------------------------------------------- 現象: テキスト ファイルに以下の文字が含まれていた場合に、 固定長としてファイルをインポートすると指定した位置と異なる位置で区切られ、 インポートされます。 状況: この問題は弊社にて Text IISAM ドライバ バージョン 4.0 の障害として認識しています。 Microsoft Jet 4.0 データベース エンジン Service Pack 6 (以下 Jet 4.0 SP6) で 修正しました。 回避策: 以下のいずれかの方法で解決してください。 Jet 4.0 SP6 を適用し、 レジストリ エディタを使用して以下のとおりレジストリに値を追加します。 キー名 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text 値 : StartDoubleWidthUnicodeCharacters 内容 : DWORD 0x80 -------------------------------------------------------------- で本題ですが、レジストリの追加の仕方がわかりません。 regeditを開いて 編集 → 新規 → ・・・この後、どこを操作すればいいのでしょうか? とりあえず「DWORD 値」をクリックして「値の名前」に >StartDoubleWidthUnicodeCharacters 「値のデータ」に >DWORD 0x80 をコピペ(「表記」16進)したら 桁ズレがひどくなったので慌てて元に戻しました。
449 :
名無しさん@そうだ選挙にいこう :02/06/10 12:47
>>444 さん、
>>438 ですけど、「魔法使い..」しか知りませんでしたが、
おっしゃっているところに行ってみて感動。
特に「Fly Me To The Access-Heaven」が気に入り、ちょっと
通いつめようかと思ってます。
自分で検索していろいろ探しましたが、ここには行きあたり
ませんでした。
また教えてくだされー。
>>449 ども。
「Fly・・・」は、有名所からあまりリンクされてないようで、
目立たないんだけど、面白い構成してるよね。
ページ検索を渡り歩いて、辿り着いた所です。
上級者には物足りないだろうけど、初級というか入門者には、
本当に読みやすくて分かりやすい所だと思うよ。
あとは、書籍だけど、
「図解でわかるデータベースのすべて」小泉修著:日本実業出版社
これも読むと、宜しいかと思われ。
451 :
素人ですが何か? :02/06/10 18:12
天国・・・はいいよね。 俺は書籍やほかのネット情報では分からなかった 「日付時刻型への変換」がここ読んでやっと分かったよ。
全く関係ないけど、「Fly。。。」を探そうとググルで検索したらビクーリした。 ググルすげー。
教えていただきたいのですが、よろしいでしょうか? アクセスで発注・入荷管理をしようと思っているのですが、 商品を発注したり、入荷したりするときに、 うちの取り扱い商品にはセットものとバラものがあるのです。 AセットはS2 M2 L2 合計6 BセットはS0 M4 L1 合計5 Sセットはバラ となっています。 例えばAセットを1つだと、S2 M2 L2 合計6 Bセットを2つだと、S0 M8 L2 合計10 となるわけです。 テーブルには、セット/セット数/S/M/L/合計という項目を つくっています。 そこで、質問なんですけど、入力する際に、 Sのところにもし、[セット]がAならば、セット数*2、 [セット]がBならば、0、 [セット]がSならば、手入力する。 という式を入れたいのですけど、Aセット、Bセットのところは、 IIF関数を組み合わせて、作れても、 最後の[セット]がSならば、手入力する。 というのがわかりません。 わかる方いらっしゃいましたら、教えてください。。。 よろしくお願いします。
>>453 どういう状態かわかりづらいんだけど、テキストボックスを用意しておいて、
「Sの時」→「テキストボックスの値」にすればいいんじゃない。
>>454 すみません
わかりづらいですか?
IFF([SET]="A",[セット数]*2,IFF([SET=B],0,******))
の*******の部分がわからないのです。。。トホホ
ちなみに「Sの時」→「テキストボックスの値」
というのは、どのようにしたらよいのでしょうか?
>>455 *******の部分に何も記されないようにするなら
「Null」でいいでしょう。
IIf([SET]="A",[セット数]*2,IIf([SET]="B",0,Null))
こんな感じ?
458 :
名無しさん@そうだ選挙にいこう :02/06/11 13:47
ガイシュツかもしれませんがすみません。 地区 名前 得点 静岡 A 1 静岡 B 5 静岡 C 3 愛知 D 4 愛知 E 7 愛知 F 3 というようなテーブルがあり、 地区でグループにしてレポートを作っているのですが 地区の中で得点のランキングを出したいのですがどうしたらよいでしょうか? (A 1位 B 3位 という感じ) excelならRANK関数で出ると思うのですが・・・ よろしくお願いします。
459 :
名無しさん@そうだ選挙にいこう :02/06/11 14:26
初心者な質問で恐縮ですが、教えてください。 ACCESS2000ですが、マクロで クエリをエクセルにエクスポートしようとしたら 「定義されているフィールドが多すぎます」 と出てエラーになってしまいました。 ところが抽出条件を変えただけで同じレイアウトのクエリーは ちゃんとエクスポートできます。 どこを気をつければエクスポートできるようになるのでしょう? 以下のようなものをエクセルに吐き出し、日報に貼り付けています。 キー 数値 顧客コード 数値 顧客名 テキスト 顧客名 テキスト(2つ必要なので) 掲載日 日付 種別コード 数値 内容 テキスト 金額 数値 発効日 日付 入力日 日付 担当者 テキスト 発効日がDate()だとNGで フォームに指定日付を入れてそれを見に行くとOKです。 よろしくお願いします。
>>458 非連結なテキストボックスを一つ作って、コントロールソースに「=1」、
集計実行をグループ全体にしてみな。
>>459 VisualBasic Editorを開いて、ツール−参照設定を見てみな。
参照不可になってる項目がないか?
ま、なくてもおまじないで、どれかテェックを外して、またチェック付けて終了してみな。
462 :
名無しさん@そうだ選挙にいこう :02/06/12 01:16
>460 それだとちゃんと得点順にソートしてなきゃなりませんよね。 名前順のままなので上から1,3,2と振りたいんです。 ちなみに同点がいた場合は同じ順位にするとかも。
>>462 そういうことか。となるとモジュールだな。
元テーブルには順位といったフィールドはないだろうから、コピーして長整数で順位フィールドを加えた、
テンポラリテーブルを用意しておきな。
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim iTarget As Integer
Dim lCnt As Long
Dim lRank As Long
Dim strTiku As String
Dim strSQL As String
Set db = CurrentDb
db.Execute "DELETE * FROM テンポラリテーブル"
db.Execute "INSERT INTO テンポラリテーブル ( 地区, 名前, 得点 )" & _
" SELECT 地区, 名前, 得点 FROM 元テーブル;"
strSQL = ""
strSQL = strSQL & " SELECT 地区, 得点, 順位"
strSQL = strSQL & " FROM テンポラリテーブル"
strSQL = strSQL & " ORDER BY 地区, 得点;"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
iTarget = -1
strTiku=""
With rs
Do While .EOF = False
.Edit
If !地区 <> strTiku Then
lCnt = 0
iTarget = -1
strTiku = !地区
End If
lCnt = lCnt + 1
If !得点 <> iTarget Then
lRank = lCnt
iTarget = !得点
End If
!順位 = lRank
.Update
.MoveNext
Loop
.Close
End With
Set rs = Nothing
Set db = Nothing
これで、テンポラリテーブルをレポートのソースにしてみな。
464 :
名無しさん@そうだ選挙にいこう :02/06/12 13:47
すいません。基本的なことと思うのですが、テーブル上でエクセルのように数値を加算したり合計したりするにはどういう式を使えばよいのでしょうか? 教えてください。
465 :
名無しさん@そうだ選挙にいこう :02/06/12 14:19
すいません464です。2000使っております。 状況をもう少し詳しく書いてみます。 テーブルの順番に複数順番に記入してゆく入力値を最後のセルに合計したいのです。 そんなのエクセル使えーという感じなのですが、ACCSでもできる筈と思い、あきらめる前に質問に来ました。 どなたか宜しくお願いします。
466 :
名無しさん@そうだ選挙にいこう :02/06/12 14:52
>>464 =465
フォームとかレポートじゃなくてテーブル?
フォーム・レポートだったらフッターに
非連結テキストボックスで"=sum()"使えばできるよ。
そうじゃなくてレコードの最後に累計のフィールドを持つのかな?
467 :
名無しさん@そうだ選挙にいこう :02/06/12 15:05
>465 >エクセル使えーという感じなのですが、ACCSでもできる筈と思い もちろんできるが。 テーブル直打ちしかできないスキルなら無理だけどね。 Accessのフォーム、あるいはレポート、クエリが使えないと、Excel以下の ことしかできないよ。 選択クエリを持ち、一番右側の列に式をつくるだけ。
468 :
名無しさん@そうだ選挙にいこう :02/06/12 15:37
>>466 >>467 ありがとうございます
>非連結テキストボックスで"=sum()"使えばできるよ。
早速試してみます。
フォーム入力してるんですけどクエリは未だに手に余っています。(無念です)
上記を追加クエリとしてテーブルにフィードバックさせることは難しいのでしょうか?
できそでできないのでキーっとなっております。
それと・・・クエリに引っ張るとき小数点以下8桁くらいの端数が出て来ちゃうんですけど。これは数字の引用設定が悪いのでしょうか・・・元データ(テーブル・フォーム入力)に端数はない筈なんですけど・・・
469 :
名無しさん@そうだ選挙にいこう :02/06/12 15:52
お願い致します。どなたかお教え下さい。 エクセルで作成したデーターをワークシート変換で テーブルにインポートし、そのテーブルを テキスト変換にて区切り記号付きエクスポートで txtファイルを作成しました。 txtを開くと数値項目に「.00」と小数点が表示されてしまいます。 「.00」を表示させない方法を教えて下さい。 テーブルの該当する数値項目のデーター型は数値型、 フィールドサイズは長整数型、小数点以下表示桁数は0 となっています。 AC2000 EX2000 WIN98SE です。
自己レスです。 とりあえず、クエリーでCLNG関数を使って解決しました。 貴重な2レスを使ってしまい、申し訳ありません。 でも何故「.00」になるのかが判りません。
471 :
名無しさん@そうだ選挙にいこう :02/06/12 16:36
>469 元のExcelで小数点は入っていないか? インポートの段階では? エクスポートの段階では? それぞれ確認はできると思うからもっとよく見てみて。 多分、エクスポート時のウィザード下部の[設定]を 確認してみたほうがイイ。 >468 小数点以下が気に入らないのであれば、更に、 =Cint(Sum()) で小数点以下は切り捨てられる。加工方法は様々取れるよ
472 :
名無しさん@そうだ選挙にいこう :02/06/12 18:19
>460=463さん、 本当にありがとうございました。助かりました。
473 :
名無しさん@そうだ選挙にいこう :02/06/12 22:09
Accessを少しずつ勉強しているのですが、フォームとクエリで ちょっとわからないことがでてきました。 フィールドを2つだけにするクエリを作ってみましょうという 練習問題があるんです。 たとえば、社員名簿の場合、社員コード、氏名、住所、電話番号、 部署などのフィールドを持つテーブルがあり、100件のレコードが あったとして、氏名と部署名だけが全データ(100件)表示される ようなクエリを作る練習しましょうというものです。 これは、フォームで表形式にして氏名と部署名のみが表示されるように するのと何か違いがあるのでしょうか。 クエリには、1.フィールドを絞り込む、2.レコードの抽出、 3.並べ替え、という3つの機能が基本の機能です、と書いた 上での例題ですから、上記のようにクエリを作ることは大切な ことだと思うのですが、その前のフィールドの練習問題で 同じようなことができたのでなんかわからなくなってきました。 練習は魔法使いの開発工房の超入門のところでしています。
>>473 フォームでフィールドを2つだけ表示するというのは見え方の問題です。
実際は存在しているフィールドを見えないように隠しているだけです。
クエリはフィールドを2つだけ、テーブルから取り出しているということです。
ただ単に表示させるだけならどちらもそう変わりはないと思います。
クエリの大きな役割は必要なデータをテーブルから取りだして利用することです。
クエリを作成しておくと、テーブルと同じようにフォームやレポートなどを作れます。
今の段階ではおそらくフォームの並び替えやフォームフィルタとなどと
ほとんど変わらないように思えるのではないかと思います。
この段階で一つ言えるのはフォームではフィルタの条件を手で入力して変えない限りは
違う条件のものをみることができませんが、クエリは条件を保存できます。
475 :
名無しさん@そうだ選挙にいこう :02/06/13 15:19
アクセスのコマンドボタンから、裏側に開いている別のアプリ(インターネット エクスプローラとかアウトルックとか)を終了させることは出来ますか? って、馬鹿な質問ですか?
476 :
名無しさん@そうだ選挙にいこう :02/06/13 19:30
>474 つまり、今私のやっているところまでは結果はどちらでも 同じだけれど、利用の仕方によって、クエリでなければ できないことが山ほど出てくると言う意味ですね? >テーブルと同じようにフォームやレポートなどを作れます。 クエリは、テーブルのような実態はないけれど、まるで 実態があるように、フォームやレポートに利用することが できるということなんですね。 どうもありがとう!
477 :
名無しさん@そうだ選挙にいこう :02/06/13 22:58
質問です。 AccessでOracleのテーブルにODBC接続してるんですけど、テーブルのリンクをして Oracle側のテーブルを更新することは可能でしょうか? ローカルのMDBとリレーションして、更新クエリーかけたいのですが。
>471 レスありがとうございます。 エクセル、インポート定義、エクスポート定義、テーブル もう一度見直してみます。
>>478 レスサンクスです。
試しに実行してみたのですが、複数の表にマップしているため更新できませんと
エラーが返ってきますた。
エラー番号はORA-01779だったのですが、Oracleのメッセージリファレンスにも何故か載ってません。
(´・ω・`)ショボーン
以前、書きこみをしたものですが、 アクセスで発注・入荷管理をしようと思っているのですが、 商品を発注したり、入荷したりするときに、 うちの取り扱い商品にはセットものとバラものがあるのです。 AセットはS2 M2 L2 合計6 BセットはS0 M4 L1 合計5 Sセットはバラ となっています。 例えばAセットを1つだと、S2 M2 L2 合計6 Bセットを2つだと、S0 M8 L2 合計10 となるわけです。 テーブルには、セット/セット数/S/M/L/合計という項目を つくっています。 そこで、質問なんですけど、入力する際に、 Sのところにもし、[セット]がAならば、セット数*2、 [セット]がBならば、0、 [セット]がSならば、手入力する。 という式を入れたいのですけど、Aセット、Bセットのところは、 IIF関数を組み合わせて、作れても、 最後の[セット]がSならば、手入力する。 というのがわかりません。 わかる方いらっしゃいましたら、教えてください。。。 よろしくお願いします。 という質問をしたところ、 IIf([SET]="A",[セット数]*2,IIf([SET]="B",0,Null)) とすればいいのではないか?と回答いただいたのですが、 上の式をクエリにいれてしまうと、 Sの時は手入力というのができません。 式が入っているせいか、入力できないのです。 同じ、テキストボックスに、数式と手入力を組み合わせる ことはできないのでしょうか?
>>481 手入力といってるが、どこに入力するつもりなの?
なんか想像するにものすごくへんなテーブルとフォームが存在してるように思えるんだが。
>>482 S/M/Lのテ−ブルです。
ですから、上の式は
S:IIf([SET]="A",[セット数]*2,IIf([SET]="B",0,Null))
となっています。
>>481 選択クエリでフォームをつくっていて、そこのSの項目にという意味で
テ−ブルに式を入れているわけではないです。
よろしくお願いします。
>>481 クエリで表示される計算値は値があるわけではないのでそこへ
数値を書き込むことは無理なのですが・・・
この手は、クエリではできません。イベントでテーブルに値を
突っ込む形を使うしかないです。サンプルありますが、メール
で送りますか?
>>485 送っていただけるんですか?
それなら、ぜひお願いします。
捨てアドとってきたほうがいいですか?
どうしたらいいでしょう?
487 :
名無しさん@そうだ選挙にいこう :02/06/14 16:55
>471 SHELL関数を使うとできるよ、多分。 ところで、10桁の数値をdoubleで宣言した変数に入れたら オーバーフローした人っている? doubleならまだまだいけるはずなのに・・・。
488 :
名無しさん@そうだ選挙にいこう :02/06/14 17:01
フォームのセット種別のテキストボックスの イベントタブの更新後のところに、 private sub セット種別_AfterUpdate() S.value = IIf([セット種別]="A",[セット数]*2,IIf([セット種別]="B",0,Null)) end sub
489 :
名無しさん@そうだ選挙にいこう :02/06/14 17:26
>480 オラクルのテーブルはひとつなの? パススルークエリーでやってるの?
>>481 AセットとBセットは値が決まってるなら
セット=A、Bの時はデータをテーブルから値を持ってくる。
セット=Sの時、テキストボックスに入力でいいような。
>>490 ありがとうございます。
でも、そうするにはあらかじめ、
値を入力しておかないと、いけないので、大変なんです。
>>491 ありがとうございます。
月曜日に必ずメ−ルします
>>492 大変?IIf使うのも同じじゃん。
それがダメならフォームに隠しフィールドでも用意しておくとか。
>>489 レス遅くなってすみません。
今日職場でいろいろいじってたら、自己解決しますた。
どうやら私がいじっていたテーブルは、システム側でユーザに分かりやすく表示していた
仮のもの(多分スナップショット)だったので、いくら更新かけようとしても無理でした。
よくよく考えたら、Oracleのテーブルの定義が日本語で職員番号とかになっているのは
おかしいと気づいていれば・・・・。
パススルークエリーの結果は更新できないってのは知ってたのですが。
レスサンクスです。
すみません教えてください あるクエリーでテキストを連結してHTMLファイルを生成させました。 以下のようになっています ------------------------------- HTML 出力ファイル名 ------------------------------- <HTML>‥ 20020614.html <HTML>‥ 20020615.html <HTML>‥ 20020616.html このHTMLフィールドの値を、出力ファイル名フィールドの名前で 一気にTEXT保存させることは可能でしょうか? よろしくお願いします
>495
クエリを全部選択してコピー。テキストエディタに貼りつけ。いらないカンマとか
置換で削除。で、TEXT保存できるね。エクスポートしてでもいいし、何度もやるから
置換の操作とか毎回するわけにはいかないなら、Openステートメントとか使って
書き出しかな?
けど、裏読みすると
>>259 が聞きたいのかな?とも思う。
上記のクエリを元にしたフォームを作って、それに置いたボタンのクリック時の
イベントに以下をコピペ。
Dim HTMLFile as string
Dim LastHTMLFile as string
DoCmd.GoToRecord acDataForm, "フォーム名", acLast
LastHTMLFail=Me![出力ファイル名]
DoCmd.GoToRecord acDataForm, "フォーム名", acFirst
Do
HTMLFile = Me![出力ファイル名]
Open HTMLFile For Append Lock Write As #1
Print #1, Me![HTML]
Close #1
DoCmd.GoToRecord acDataForm, "フォーム名", acNext
Loop Until Me![出力ファイル名]=LastHTMLFile
書込みながら見直すとこっちのほうが聞きたいのが本命な気がしてきた。
こんどから聞くときはもうすこしがんばって一意に取れるように聞いてね。
あ、ごめん。このままだと最後のレコードのHTMLでないや。 Loop Until〜をLoopだけにしてClose #1のあとに If Me![出力ファイル名]=LastHTMLFile then exit sub end if を置いてね。 あと、フォームがげしょげしょページめくるのなんとかしたかったら DAOかADOで読み込んでがんばってね。
>>496-497 259じゃないんですが
早速試してみます
迅速な回答、心から感謝します
またご報告いたします
いろいろやってみましたが、コンパイルエラーが出たりしてだめでした もすこし勉強してみます
ありゃ、ごめん。チェックしてみる。走らさないでノーミソだけで書いたからなあ。 エラー内容意味ある事言ってるならあげて。 あ、それから259は同じような事聞いてきた人に前に答えたレス。 ワードの差込印刷っぽいので、まあ496と同じような事書いた。
>>500 ほんとにご面倒かけてすみません
ボタンのイベントに貼り付けたり、
モジュールにしたり、
マクロ化してみたりしましたが、やっぱりだめでした。
エラーはあんまり大したこと言ってません
レポートについて質問です。 レポートで出力する場合、例えばフォームのように、 コンボボックスに入力された値のみを出力するということはできないのでしょうか? そういう出力をしたかったら、クエリで最初から抽出しておかなければならないのでしょうか?
>498 LastHTMLFail=Me![出力ファイル名] ↓ LastHTMLFile=Me![出力ファイル名] >エラーはあんまり大したこと言ってません って「変数が定義されていません」のこと?んで上のところが反転してなかった? ん〜VBA使うのは初めてかな。「変数が定義されていません」って言われたら 大体打ち間違えとか。で反転したとこが怪しい行。 >352,502 できるよ。具体的に聞いたら具体的に答えるよ。
504 :
名無しさん@そうだ選挙にいこう :02/06/16 18:28
こんにちは。 現在Accessを使用した在庫の管理をしようと思っています。 最終的には、Webからのアクセスとし、一部の参照機能等は インターネットからのアクセスができるようにしたいと思っています。 今Accessの2000を使用して作成しています。 フォーム自体は無事できたのですが、Webからのアクセス作成の 部分が良く分かっていません。 Webページを作成してもうまくIE等からのアクセスができません。 この辺もしAccessの2002になると簡単にできるのでしょうか? カタログ等を見るとかなり機能がアップしているようなのですが 具体的にイメージがわきません。 もし求めてる機能があるなら購入を考えています。 どなたか詳しい方いらしたら教えていただけないでしょうか? (2002でのWebに関する機能Up情報) よろしくお願いします。
>>503 テストの得点テーブルがあって、そこには第1回〜第12回までの得点が生徒ごとに収められています。
また、別テーブルにそのテーブルをもとにして、生徒一人一人の偏差値が納められています。
レポートで出力する際に、ヘッダーにテキストボックスを用意して、
そこに1と入力したら第1回のテスト結果が出力されるようにしたいのです。
やってみたら、レポートは入力はできなかったので、ヘッダーにテキストボックスを用意するのは間違いだと
わかりましたが、それ以外に方法はあるでしょうか?
506 :
名無しさん@そうだ選挙にいこう :02/06/16 22:22
良スレあげ
>>505 ご無沙汰ですね塾の先生さん
レポートにしたいデータを抽出したいということでよろしいので
しょうか?
抽出はクエリーを使うといいでしょう。
クエリーのデザインでレポートに抽出したいフィールドを選択し、
抽出対象のフィールド(この場合は「回数フィールド」)の抽出
条件に「1」を設定します。
これで先生の抽出したいデータベースが出来ると思います。
このクエリーをレポートの対象とすればいいと思います。
(このクエリーを「A」という名前と仮定します)
ちなみに既にテーブルを基にしたレポートがあるのなら
対象のテーブル名をこの「A」クエリーに書き換えればOK
また、抽出条件をその度クエリーを開いて何度も書き換えるのが
面倒になると思いますのでダイアログが開く書式があっと思いま
すので調べてみてください。
ではでは…
>>507 皆さんのおかげでなんとか形になってきました。
レスありがとうございました。やはり、クエリで抽出し、それをレポートにするという形が最善なのですね。
ダイアログが開く書式、というのはクエリ抽出条件のところに例えば [表示したいテスト回数を入力してください]
というのでいいのでしょうか?これとは別にもっと便利なものがあるのでしょうか?
509 :
名無しさん@そうだ選挙にいこう :02/06/16 23:54
>>504 在庫管理ってどうやるんでしょうか?
当方ど素人でエクセルでやる入出庫・累計が縦に
並んでる程度しか思い浮かびません。
参考にしたいのでよろしければ教えて下さい。
>>505 パラメタクエリというのがあるのでそれを使ってください。
詳しくは私の本に出てます。「できるAccess2000」の210Pから
説明されてます。
ようはクエリの条件式に比較する対象として何でもいいから[]
でくくった名前(フィールド名とは異なるやつにしてください)
を指定すると、クエリ実行時にその値を入力できるようになる
のです。そのクエリを元にレポートを作ればレポート印刷時に
値が指定できるようになります。
>>504 インターネットから見入れるようにする、ということはデータ
を置くサーバにIISとかパーソナルWebサーバとかを動かす必要
が出てきます。データアクセスページって、ネットワークとWindows
のモジュールのつながりが理解できないとうまくいかないですよ。
インターネットに公開するということですから、当然データを
置くサーバはWindows 2000,XPを使うわけですよね。ACLとか
アパートメントとかわかります?
いま、使うならAccess2000のほうが安定していそうなので2002
はあと半年舞ったほうが良い、と思います。
>>509 在庫管理って、単に数量を管理すると漠然と思ってしまいますが
こいつの味噌は、「引き当て」と「消し込み」なんですよ。
こんばんは 今小さいパソコンスクールを経営しています。 現在予約管理システムをAccessで作成しているのですが、まだ作成して半年なのですが、 あと2ヶ月ほどで総レコード数が5万件に達しそうです。 ACCESSはレコードが増えすぎるとファイルが破壊されるとうわさを聞くのですが 他のソフト・システムに切り替えるならば何がお勧めです(勉強しやすい)か??
>>512 レコード数というよりはファイルサイズ。
1G越えるようであれば他のに乗り換えることも考えた方がいい。
こまめな最適化で十分対応もできる。
それよりもパソコンスクールを経営してるならもうちょっと発言には注意した方がいいと思われ。
意味がわからないこともないんだが、変な文章だと思う。
514 :
名無しさん@そうだ選挙にいこう :02/06/17 09:11
>513 正論だけど、Accessで1Gってのは少々厳しい運用だと思う。 何せ、MSDEでも2Gが限界。その半分の容量でAccessを 運用していくのは難しい。 というのも、最適化に恐ろしく時間がかかる。 最適化の仕組みをカンタンに言えば、Copy&Delete。マシンスペック 次第だが、1GのMDBを最適化するときの時間は運用に支障が あるだろうし、そのバックアップはどうするのか、といった 問題がつきまとう。 自分の場合、運用1年〜2年でのおおよその容量を見積もって、200〜300MB 超えるようであれば、最初からMDBの分散化を計算した設計をするけど。 >512 五万件なら、タコな設計していない限り大丈夫だし、LAN共有とか していないなら当分もつだろ。でもその調子だと2年目には 厳しい運用状況になるだろうね。 ちなみにAccessがファイルを壊すのではない。Accessを知らない アフォが正しい設計をできずにデータを飛ばして騒いでいるだけ。 そういうアフォは何やってもデータベースを運用できないだろうから、 まずは正しいデータベースの知識を身につけよう。
>>508 > ダイアログが開く書式、というのはクエリ抽出条件のところに例えば [表示したいテスト回数を入力してください]
> というのでいいのでしょうか?これとは別にもっと便利なものがあるのでしょうか?
そうそうそれです。
作成者ご本人が利用するデータベースならデータベースの構成がわかっているのでそれでいいのではないでしょうか。
もし、「Accessなんてわからない」っていう人にオペレーションを依頼する(事務員さん等)なら最終的には「フォーム」
から条件を設定できるようにしてもいいでしょう。但し、MDBが完成してからでも遅くないのでこの件は後日で…
ACCESSのVBAで「フロッピーの中にいくつかテキストファイルがあり、 その中の最新のファイルを読みこむ」という処理で悩んでおります。 ヘルプと首っ引きでタイムスタンプを得るところまではできたのですが、 ・ディレクトリ下のファイル名のリストを作り ・タイムスタンプを比較して一番新しいものを選ぶ 処理がよくわかりません。 どなたか、ヒントを頂けないでしょうか。
517 :
名無しさん@そうだ選挙にいこう :02/06/17 11:22
>516 一番新しいモノを選ぶって処理はVB側の処理になるよな。 ボタン押せば最新のテキストファイルを読みこめばいい わけだろ?何とかなりそうだな。 ちょっとやってみよう。
>516 あ、そうそう。ディレクトリは決め打ちで良いの? A\以下に得ることを前提とするよ? APIでコモンダイアログ実装しても良いけど、メンドイでしょ? あるいはユーザーにディレクトリ選ばせたりするの?
DAOでディレクトリの下のファイル名とタイムスタンプのフィールドのついた ファイル名リストテーブルを作って、それで比較する。というのは? そういう事でなく? 全然違ったらすみません。
>>517 おぉ、ありがとう!
ディレクトリは決め打ちでかまいません。
使用者があまりPC詳しくないので、選ばせる処理はなるべく省いてるんです。
連続スマソ >519 は >516 の返事ですが、最新のファイルだけを選べばいいなら テーブル作る必要は無いですね。失礼しました。。。
>>519 DAOについてあまり理解できてなくて、使い方がわからないんです。
VB/VBAはやっつけ仕事に何度か使ったことがあるんですが、ヘルプで
オブジェクト関連の記述が出てくると、文章がややこしくて混乱してしまう…
谷尻かおりの「ACCESS VBA 初級プログラミング」を参考に業務用アプリを
作っているんですが、あれにはDAOを使うようなプログラムも載っていませんでした。
523 :
名無しさん@そうだ選挙にいこう :02/06/17 13:30
>516 A:\以下のファイルの中で最新のモノを選ぶ、つもり。 テストはしたけどね。使ってみて。 タブが消えて改行なくなると思うから、見にくいと 思うけど。 ファイル読みこませるくらいの処理はわかるよね? Msgboxでの表示のみにしてみましたが。 Private Sub cmdTextInput_Click() Dim FileName As String Dim FilePath As String Dim FileDate As Date FilePath = Dir("A:\*.*") Do Until FilePath = "" If FileDate < FileDateTime("A\" & FilePath) Then FileDate = FileDateTime("A\" & FilePath) FileName = FilePath & vbCrLf & FileDate End If FilePath = Dir Loop MsgBox FileName End Sub
524 :
名無しさん@そうだ選挙にいこう :02/06/17 13:57
>>510 >>509 コメントありがとうございます。(res遅れてすみません)
一応サーバはIISを考えています。
社内のサーバの管理等でIISは一応理解しているつもりなのですが
HTMLレベルであり、accessとの統合まではまだあまり分かっていません。
ACL,アパートメント。。すみません。分かっていません。勉強します。
もともと、在庫はExcelで管理していました。ただ、中古の小売がメインなので
件数が増えてしまい、シートが分割されると棚卸等での検索がexcelでは
結構大変というのが理由の一つ。
また、今は、Webでの販売時は、まったく別にhtmlで販売ページを
作成しているのですが、accessを使用することにより
以下のようなことができるのではと考えました。
1)現在はhtmlを作る(れる)人が1人。
accessを使って、Webからデータを登録することができないか?
(データの1元化と簡素化)
2)登録ができるのであれば、一部をインターネットに公開して
参照や検索をできるようにできないか?
といったものです。私の勘違いなのかもしれませんが、accessのフォームで
つくったものが、そのままWebでも使えるようになればと考えています。
Frontpage等でHTML作って、ASPとかというのも考えたのですがaccessのフォームと
2つ作るのも大変かと考えてます。
コメントの中に2002より2000の方が安定性がとありましたが、上記のようなことを行う上で
2002で機能アップしたような部分はありますでしょうか?
みなさんありがとうございます。 パラメータクエリで頑張ってみます。
>>523 バッチリでした! ありがとう。
もっと精進してここで答えられる様にがんばるッス。
527 :
名無しさん@そうだ選挙にいこう :02/06/17 15:31
ACCESS97を使用しています。 ID オートナンバー TEXT1 テキスト TEXT2 テキスト というDB:test1を作成して、 TEXT1とTEXT2に タリラリラーン・コニャニャチハー・グループ と入れます。 これを20個ほど作って、 SELECT * FROM test1 ORDER BY text1 DESC , text2 DESC , ID DESC; とやると全然並び替えされてないんですが、なんででしょう? 正常に並び替えする方法ってありませんか?
528 :
名無しさん@そうだ選挙にいこう :02/06/17 15:51
Accessの勉強を始め、やっと、売上管理データベースを作る際、 売上テーブル、売上明細テーブル、顧客テーブル、商品テーブル 送料テーブル(地域コードで売上テーブルと関連付け)というように 分けることの意味がわかりかけてきたところです。 ただ、支払い方法という項目を売上テーブルに入れる必要があって、 考えているうちにわからなくなってきました。 支払い方法は、1.代引き、2.郵便振替、3.銀行振込の3つ だけで、それらはただデータとして持っているだけよく、最後に 売上伝票に印刷されるだけでいいというデータです。 はじめは、これも支払方法テーブルとして、1,2,3という ナンバーのフィールドと、3つの支払い方法のフィールドの 2つのフィールドからなる、3レコードのテーブルを作って 売上テーブルにリレーションシップでつないでいたのですが、 なんだか意味がないような気がしてきました。 これは、売上テーブルに直接3種類を選ばせるだけでよかった のだと思いますが、正しいでしょうか。 つまり、このような、フィールドを1つしか持たないもので、 なおかつ、レコードが増えていかないものはテーブルとして 存在する必要はないと理解していいでしょうか。
529 :
名無しさん@そうだ選挙にいこう :02/06/17 15:54
>527 あ、SQL間違えてるよ、ソレ。 SELECT * FROM test1 ORDER BY text1,text2,ID
>>529 >SELECT * FROM test1 ORDER BY text1,text2,ID
これだと昇順ですね。でも結果は
ID TEXT1 TEXT2
4
5
6
7
1
2
3
になってしまうのです。
531 :
名無しさん@そうだ選挙にいこう :02/06/17 17:21
>527 あー、ID順に並べたいの? じゃあ SELECT * FROM test1 ORDER BY ID,text1,text2 こうするだけだと思うけど。自分の方が勘違いしているのかな?
>>531 >SELECT * FROM test1 ORDER BY text1,text2,ID
いえいえTEXT1とTEXT2の中身が
テスト
だったら正常に
ID TEXT1 TEXT2
1 テスト テスト
2 テスト テスト
3 テスト テスト
4 テスト テスト
5 テスト テスト
となりますが、
タリラリラーン・コニャニャチハー・グループ
だと
ID TEXT1 TEXT2
4 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
5 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
6 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
7 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
1 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
2 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
3 タリラリラーン・コニャニャチハー・グループ タリラリラーン・コニャニャチハー・グループ
になってしまうのです。
同じクエリーでも、TEXT1とTEXT2に入れる文字が違うとソートの順番がおかしくなってしまうのです。
>527 うーんとね、Accessでソートするでしょ? ORDER BY句に近い順に並び順が優先されるんだけど、 >531 のSQLの場合、IDで同一のものがないから、 そもそもText1、Text2って指定している意味がないわけです。 仮にIDが10ってのが二つあった場合、そのIDの中で、Text1 の内容が 加味され、更にText1の中身が同様である場合、Text2の中身が加味 されていく。 まず、オートナンバーをふっている時点で、複数条件で並び替えを する必要はないと思います。 単純に、 SELECT * FROM test1 ORDER BY ID ってやってみた?
534 :
名無しさん@そうだ選挙にいこう :02/06/17 20:52
>>528 3種類でもう増えなくてもテーブルを持つ意義は有ると思います。
何よりメンテナンス性が良い。今後、現金払いやクレジットカード
での支払いが無いとも限らないし。
535 :
名無しさん@そうだ選挙にいこう :02/06/17 22:30
>534 あ、そうなんですか。 やっぱり、あとあと追加や修正ができるという メリットは大きいのですね。 すみません、その時は、その3つのレコードしかない テーブルの主キーは、「郵便振替」や「代引き」などの 言葉そのもので設定してもいいものなのでしょうか。 主キーは、重ならないデータなのだからそれでいい ようにも思うのですが。。。 そうすると、フィールドがたった1つのテーブルと 言うことになりますよね? 支払い方法テーブルで、フィールドは支払い方法1つ だけで、主キーもそのフィールドに設定し、レコード は3つだけ、「代引き」「郵便振替」「銀行振込」。 って、変でしょうか?
>535 理屈上は間違ってないけど、一般的ではないですね。
537 :
名無しさん@そうだ選挙にいこう :02/06/17 23:20
>535 IDで参照した方が、データが1バイトで済むじゃん。
グラフについて質問です。どーやってもどうしてもうまくいきません。助けてください。 クエリで、生徒の1〜12回までのテストの得点と、偏差値を抽出しました。 例)氏名 第X回 偏差値 2chねらー 1 55 2chねらー 2 67 2chねらー 3 45 ・ ・ ・ 2chねらー 12 33 という感じで。これをレポートにして、単票形式にして出力しました。 そこにグラフで、過去からの偏差値の推移をグラフにしようと思い、 このクエリをソースにして、折れ線グラフを作成しました。 データ:偏差値 系列: なし 軸 : 第X回 で、プレビューではうまく表示されるのです。偏差値の推移が。 ところが、完成したものは、軸が「東京・名古屋・大阪」となってるし、 データのところは、1〜100までの数値になっているし、なによりも、データが明らかにおかしいのです。 プレビューでは、55→67→45となっているのに、完成したものはいきなり100付近から始まっている始末。 しかも凡例には1〜4月までの色分けされた線。グラフもプレビューでは推移の線1本だけなのに、 なぜか、1〜4月までの4本の線があるのです。コントロールソースなども見てみましたが、間違ってませんでした。 これはなぜなのでしょうか?アクセスのインストールがおかしいのでしょうか?宜しくお願いします。
539 :
名無しさん@そうだ選挙にいこう :02/06/18 00:34
で、人に訊く前にせめてそのまま完了させてみて印刷プレビューを 見てみるくらいのことはしたんだろうな>352
>>539 本当にすいませんでした。ばか者でした。ありがとうございました。まさかこんなことだとは・・・・・・。
みなさんご迷惑おかけしました。
もちろん、悪いのはマイクロソフトだ。538のケースはバグといってよいと思う。 しかし、こういう、ちょいとやってみるの精神はこの先不可欠だ。 その点は理解していただきたい。
>522さん Accessを単体で使う時はDAOは超便利です。 それほど難しくは無いのでちょっと頑張ってみてください。 って、全然参考にならないですね。スマソ・・
543 :
名無しさん@そうだ選挙にいこう :02/06/18 22:54
>>537 あ、そういうことか!
>>536 さんもそのことを言われているわけですね?
繰り返し出てくるデータを文字で持つと重たくなるのかぁ。
そうか、そうか。やっとIDの意味がわかったです。
生徒一人一人の順位を出したいのですが、クエリで生徒を抽出し3科目合計を出して、 RANK関数をつかって出そうと思いましたが、RANK関数がありません。 アクセスにはRANKはないのですか?それともクエリではムリなのでしょうか?
>>544 一週間くらい前に同じ質問を見たような。
546 :
名無しさん@そうだ選挙にいこう :02/06/19 00:10
アクセスのmdeファイルとはなんでしょうか?
>>545 ありがとうございます。やってみます。
クエリを開こうとすると、アクセスが終了してしまって開けないのですが、なぜでしょうか?
これが、壊れたってことでしょうか?もしそうなら修復可能ですか?
>>547 煽る訳じゃないのだが、脊髄反射で質問してないか?
>クエリを開こうとすると、アクセスが終了してしまって開けないのですが、なぜでしょうか?
>これが、壊れたってことでしょうか?もしそうなら修復可能ですか?
そのファイルも見てないのに答えられないよ。
>>548 ごめんなさい。いきなり開かなくなったので焦ってしまって。
原因がわかりました。
どうやら、参照がループになってしまっているようなのです。
生徒の得点平均を出すクエリを作りました。
その平均を使って、偏差値を出すクエリをつくりました。
偏差値を出したクエリを平均を出すクエリに新たに追加し、そのクエリで偏差値の平均をだそうと思いました。
すると、開かなくなってしまいました。
解決方法はあるでしょうか?
550 :
名無しさん@そうだ選挙にいこう :02/06/19 09:01
>548 ループ参照をしている場合、そもそもクエリの作成ができないし、 エラートラップされて、強制終了するといった事態に陥ることは ありえない。 まずAccessの挙動が疑わしい場合、必ず以下を試みるべき。 ★ 最適化 ★ 全オブジェクトを新規MDBにエクスポート ★ MDBの修復 >546 MDEはMDBからデザイン情報を省いたもの。その分、サイズが 軽くなるし、モジュール等を改変される心配がなくなるよ。
551 :
アクセス2000の文字化け :02/06/19 09:32
すみません。 教えてください。 アクセス2000で、式ビルダをひらき、関数を探すと、 下に関数のHELPが出たと思うんですが、 現在、ふにゃふにゃな文字になってしまいます。 ほとんど線の状態です。 NT4.0です。画面のプロパティでも文字はMS-Pで14ポイントを 指定しております。 お助けくださいませ。
便乗質問になりますが、関数のヘルプ自体が出てこないんですが・・・。 そんなのあるんですか?
>551 式ビルダとかズームは文字化けする事が多いようですが、フォントを 開くと治ったりします。そういう問題ではないでしょうか? 関係なかったらスミマセン。 >552 Access2000以降のヘルプは変です。 検索しても関係ないものがヒットしたりしますね。全く使いづらい!
554 :
名無しさん@そうだ選挙にいこう :02/06/19 10:08
>553 ヘルプに関してもAc97マンセーだよね、ホント。 >552 VBAのエディターを起動してからじゃないと、関数関連のヘルプ は出てこないし、詳細なヘルプはデフォルトではインストールされて いないから、追加インストする必要がある。
>>553-554 普通のヘルプ機能の話なの?
>下に関数のHELPが出たと思うんですが、
これがどこのことかよくわからなかったんですが・・・。
後学のため教えていただきたいですが、式ビルダやビルドの文字化けって
入力するところが文字化けするんですか?
たとえば、DATEのところをクリックすると、日付とか出てくれる 奴です。入力するところではなくて、窓の下にでてくる、説明文です。 皆様レスサンクスです。
557 :
名無しさん@そうだ選挙にいこう :02/06/19 14:27
A4横で余白も指定して保存しておいたレポートをDoCmdオブジェクトのOpenReportメソッドで印刷すると、書式設定が無視されてA4縦で出力されてしまうことがあります。何か解決策はありませんか?
558 :
名無しさん@そうだ選挙にいこう :02/06/19 15:57
レポートの書式設定(用紙サイズなど)はいじらないほうが良いというのを良く見かけるのですが、 本当にいじらないほうがよいのでしょうか? あと、レポートのデザインビューの時に、あの画面をA4サイズにすることはできないのでしょうか?
>557-558 Access2002からはプリンタの設定とかいじれるようになったらしいです。 それ以前の場合はプリンタの設定はあんまり信用しない方がいいです。 特にプリンタが変わっちゃったりした日には面倒な事に・・・。 ・・・と個人的には思ってますが、皆さんいかがでしょう?
-------風俗の総合商社・MTTどこでも-------
〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/ ------------------------------------------------
>558 >あと、レポートのデザインビューの時に、あの画面をA4サイズにすることはできないのでしょうか? プレビュー見ながらサイズ調整すればいいのでは?
562 :
名無しさん@そうだ選挙にいこう :02/06/19 18:38
>>550 と、いうことは作成したMDBはMDEに変換しておいたほうが良いのでしょうか?
たびたびすみません。
順位を出す
>>463 のモジュールをどこに入力すればよいのでしょうか?
テーブル:テスト入力には、生徒500人の1〜12回までのテストデータが入っています。
このテーブルをコピーして、あらたに順位フィールドを作成しました。
レポートを回数別に作成しているのですが、この回数別のレポートで順位を出したい場合は、
クエリで回数別に抽出し、順位フィールドを作成し、
>>463 のモジュールを作成すればよいのでしょうか?
564 :
名無しさん@そうだ選挙にいこう :02/06/19 20:34
>557 > A4横で余白も指定して保存しておいたレポート・・・ 通常使うプリンタにだろ。 デザインビューで、ファイル→ページ設定→ページで その他プリンタにして、プリンタの設定もしておけ。
565 :
名無しさん@そうだ選挙にいこう :02/06/19 21:56
>563 うーむ。352のレベルだと何から言ったらいいのか・・・。 レポートってデータベースウィンドウから単独にだしてるのか? もし、そうだったら今回の場合「回数別」ってパラメタもあることだしフォームで制御するのが簡単だ。 まず、テンポラリテーブルは、順位を記録するためのものだ。 だから、今のレポートのソースになっているクエリに合わせ、順位フィールドを追加しておけ。 フォームに回数を入れるテキストボックスとコマンドボタンを用意して、そのコマンドボタンのクリック時の イベントプロシージャに463のモジュールを貼り付けてみな。 >463の途中のINSERT文のなかのSERECT〜を、最後のクエリをSQLビューで見ながら調整してみな。 フォームのテキストボックスはここのWhere句に組み込みな。 最後に、DoCmd OpenReport 〜 で、レポートを開くことを忘れずにな。
>>565 つまり、いまのレポートの元になっているクエリに順位フィールドを追加して、
フォームで順位をだして、そこに表示しろってことでしょうか?
>>463 の文の詳しい解説とかを知りたいのですが、本屋のVBAに載ってるのでしょうか?
567 :
名無しさん@そうだ選挙にいこう :02/06/20 00:30
レポートで質問があります。 レポートに別のレポートを貼り付けたりできるでしょうか?クエリでも構いません。 そのレポート、もしくはクエリの検索の値を貼り付けられる側のレポートの値にしたいのです。 例えば、レポートの顧客名というところに、入力されている値をもとにして、 別のレポート(クエリ)に、その顧客との過去の取引商品などを表示したいのですが。 こういうことはできないのでしょうか?
>>352 そろそろ教えて君を卒業しましょう。
本に載っているか否かは、直接本を見れば分かるでしょ?
「つまり〜ってことでしょうか?」を連発されてますけど、
まずは、ご自分の環境でやってみるのが先です。
>>567 別のレポートっていうのがよくわからないけど、
1ページに
Aさん ○○株式会社
------------------
2002/1/1 ○○
2002/2/3 ××
といった感じにしたいのならレポートウィザードでできる。
元のデータにもよるが。
570 :
名無しさん@そうだ選挙にいこう :02/06/20 01:35
>>569 レポートAとレポートBがあって、
レポートAの顧客名をキーにして
レポートBの過去の取引を表示という形にしたいのです。
>>570 レポートをくっつける方法は知らない。
レポートを作った元のデータがリレーションされてるテーブルなら
サブフォームを作る要領で似たようなものはできると思う。
その都度顧客名を選びたいならパラメータクエリを使えばいいんじゃない?
>566 > つまり、いまのレポートの元になっているクエリに順位フィールドを追加して、 いや、そうではなくてテンポラリテーブルのフィールドをだ。落ち着いて、>565をよく読め。 352は、熱心でクエリのこともいろいろ聞いてたから、最初のテーブルからいくつかのクエリを経て レポートがあるのだろうと思ってレスした。 解説本? >463は俺が書いたが、載ってるのかねぇ。本なんて買ったことないから、わかんね。 その代わりHelpはよく見る。今でも見るぞ。 352もわかってると思うが、Accessで定型処理をしようと思ったら、モジュール、つまりVBAは不可欠だ。 モジュールの処理にSQLは欠かせないものだ。クエリの狭い意味での実体だからな。 ある程度、クエリの操作に慣れたら、デザインビューで開いて、表示→SQLビューで見てみろ。 選択クエリなら「SELECT〜」で始まって、抽出条件があれば「WHERE〜」、並び替えを指定してれば 「ORDER BY〜」といったところがあるだろ。 で、「INSERT INTO〜」なら追加クエリだ。今回出てこないが「UPDATE〜」なら更新クエリ。 ほかの人もいってるが、まずは自分の環境に『応用』してやってみろ。自分のモノになるかは、 この『応用力』がすべてといっていい。
573 :
名無しさん@そうだ選挙にいこう :02/06/20 08:39
某講師タソって 自分の気に入らない(それが実は一番彼のためになることなのだが)意見は無視。 意見の真意を知ろうとしない。 理由・経過はともかく、早く答えそのものを知りたい。 その割には、実例を挙げても自分で試しているのか怪しい。 自分の能力範囲をとっくに超えてるのに気づいていない(ふり?) コピペで正解がでたら自分に能力がついたと思い込む。 最悪の生徒だな。
すいません。わかる方いらっしゃいましたら教えてください。 テーブル1 名前 料金2 料金3 A 50 35 B 40 40 上のテーブル1の料金2、料金3のフィールドは文字列であるため クエリーの演算でval関数を使い、数値として扱えるようにした クエリー2があります。 クエリー1 名前 料金2 料金3 A 50 35 B 40 40 このクエリー1と下記テーブル2をリレーションシップで 結び新たなクエリーを作りました。 (リレーションはテーブル2のすべてのレコードとクエリー1の 同じ結合フィールドだけを含めるという形にしました) テーブル2 名前 料金1 A 100 B 50 C 30 すると結果的にできたのは下記のようなクエリーでした。 名前 料金1 料金2 料金3 A 100 50 35 B 50 40 40 C 30 #Error #Error このクエリーのCさんの料金2と料金3の#Errorをゼロに 変換させて表示させる方法ってあるでしょうか? お手数かけてすいませんが教えてください。
>>574 クエリを2回に分ける必要ってあるの?
テーブル1とテーブル2をくっつけたクエリでValに変換すればいいような。
その時にIsNull関数を使えばいいかも。Nullの時は0にしておく。
>>575 最初のテーブル1は取引先からもらう文字列データなので
それを数値として扱うためにクエリーを1回余計にやらなきゃ
いけなかったのです。
>>576 くっつけると同時に数値に変換するのはダメなのかってことを聞いてるんだけど。
で、
>>575 でいいの?
>>577 ええと、くっつけると同時にvalで数値にしてIIF関数とIsNullで0に変換し
ようとしたのですが、やっぱり#Errorになってしまいました。(涙)
>>578 順番が逆。
IIfでNullの時0、そうでないときValにしてみ。
>578 どんな式ですか?逆なんじゃないかと思いますけど。 IIFでNullだったら0、そうじゃなかったらValで数値に変換、 という書き方でいいと思いますが・・・。
ええとこんな感じです。 料金2: IIf(IsNull(Val([料金2])),0,[料金2])
>581 そりゃだめです。 Nullの時もValを使おうとするからエラーになる。 こうです↓ 料金2: IIf(IsNull([料金2]),0,Val([料金2]))
>>581 それじゃあ、#Errorにならないときも数値には変換できてないと思う・・・
料金2: IIf(IsNull([料金2]),0,val([料金2])) これでもダメでした。
>>578 IIf([クエリー1]![名前] Is Null,0,[クエリー1]![料金2])
これでいけると思う
>>585 それは無理だろ。Is Nullの使い方が変
>584 今までと同じえらーですか? これではどう?↓ 料金2: IIf(IsNull([クエリ名].[料金2]),0,Val([クエリ名].[料金2]))
>>584 それって、式がエラーになってクエリが実行できないって意味?
それなら料金2の参照がどこかわからなくなってるから
[テーブル].[料金2]にしてみれば?
>584 !!!? 料金2: IIf(IsNull([クエリ名].[料金2]),0,Val([クエリ名].[料金2])) ↑この新しくつけるフィールド名と IsNull([クエリ名].[料金2]) このフィールド名が同じ?同じだったら実行できないのでは? それに、このフィールド名は合ってる?
>>590 いや、クエリーは実行できるのですが、結果として現れる料金表で
値が#Errorになってしまうのです。
新しく作るフィールド名は若干変えて循環参照が起こらないようには してます。
>>592 どんなクエリ作ってるの?
テーブル2から名前、料金1、テーブル1から料金2、料金3のクエリだとしたら
料金2: IIf(IsNull([テーブル1].[料金2]),0,Val([テーブル1].[料金2]))
で行くはずだけど。
>592 これで治らなかったら、試しに一辺mdbファイルを閉じてから 開きなおして実行してみてくれー。 わけわからんエラーが、これでタマに治る。
>>594 ちょっと書き方悪いかも。
テーブル1とテーブル2を追加して、テーブル2から名前、料金1を拾ってくる。
で、料金2と料金3はIIfで作る。
>>594 一度MDBを閉じて、再度開いたらその式でいけました! ありがとうございます。
それで
>>574 のようにあくまでテーブル1をクエリー1で
数値変換した上で同じように#Errorを防ぐのはやっぱり無理でしょうか?
というのも、取引先から来る文字列データには余分な行がところどころに 入っており、クエリーでその行を取り除きたいのです。
>>598 じゃあ、そのクエリをテーブルにすればいいんでは?
>下記のようなクエリーでした。 >名前 料金1 料金2 料金3 >A 100 50 35 >B 50 40 40 >C 30 #Error #Error このクエリーをクエリー2とする テーブル2の名前とクエリー1の名前を 「テーブル2のすべてのレコードとクエリー1の 同じ結合フィールドだけを含める」 名前のフィールドはテーブル2から 料金1のフィールドテーブル2から 料金2のフィールドに「料金2:IIf([クエリー1]![名前] Is Null,0,[クエリー1]![料金2])」 料金3のフィールドに「料金3:IIf([クエリー1]![名前] Is Null,0,[クエリー1]![料金3])」 ※[クエリー1]![名前] Is NullはIsNull([クエリー1]![名前])でも可
治ったね。よかったね。たまにそういう事あるから、また怪しい動きしたら
やってみるといいかも。
> それで
>>574 のようにあくまでテーブル1をクエリー1で
> 数値変換した上で同じように#Errorを防ぐのはやっぱり無理でしょうか?
無理というか、意味が全く無い。
Cがエラーになっちゃうのはそこにデータもフィールドもないからです。
AとBだけを一旦数値変換しても、Cについては再度上記の関数を使用する
必要があります。
>>600 できた!!!!
ありがとうございます! めちゃくちゃ感謝です。
取引先がしょうもないマルチボリュームの文字列データを送ってくる
からすごい迷惑してましたが、これで作業が楽になりました。
>>601 >Cがエラーになっちゃうのはそこにデータもフィールドもないからです。
これをIsNull([クエリー1]![名前] )で解決しなきゃいけなかったんですね。
勉強になりました。ほんと感謝してます。
>>602 お疲れさん!! よかったね。
>取引先がしょうもないマルチボリュームの文字列データを送ってくる
何形式なのCSVだったらインポート定義上で文字列から数値へ
変換インポート変換できるんでないの?
>>604 エクセルファイルで、まったく別種のリストを何種類か重ねた表です。
つまり、1から10行目までは顧客別料金表、11行目から20行目
までは商品リスト、みたいに違うリストが何種類かマルチボリュームとして
重なってるので、4列目を数値にしようとか3列目は文字列にしよう
とかって一概にはできないのです。料金表の3列目に値段が入ってて
も、商品リストでは商品名が入ってたりするので、アクセスに取り込んで
からクエリーでリストの種類ごとに分割しなきゃいけないのです。。。(鬱
>>572 >ある程度、クエリの操作に慣れたら、デザインビューで開いて、表示→SQLビューで見てみろ。
>選択クエリなら「SELECT〜」で始まって、抽出条件があれば「WHERE〜」、並び替えを指定してれば
>「ORDER BY〜」といったところがあるだろ。
>で、「INSERT INTO〜」なら追加クエリだ。今回出てこないが「UPDATE〜」なら更新クエリ。
ありがとうございます。勉強してみます。
>>605 それはそれはご苦労なこって…
まぁ一時的なものならしょうがないんでしょうが、継続的になるようでしたら
取引先にも考えてもらっほうがいいのではないでしょうか?
Excelのマクロでsheetを一枚追加して「質問」さんが利用しやすいものを
提案するとか?
※これ以上はスレ内容とは違うもので終了
アクセス97で作ってきたものを、アクセス2000に変換しました。 案の定、コンパイルエラーが出ます。 少しずつ直そうとしたところ、動くのです。 前回はエラーメッセージが出まくりのイベントプロシージャは何も言ってこない。 逆にものすごーく不安になってます。 大丈夫だった。のでしょうか? 何かデカーイ落とし穴があるとか?
すみませんが、四捨五入はどうするんでしょうか? 365を370に 321を320にしたいのですが、ROUND関数は#Errorがでます。
>>609 詳しくは知らないけど、桁数に負の数がつかえないっぽいので
0.01かけてRound、最後に100かけて戻すという方法を使ってる。
結局、Round([個数]/10)*10 にしました。どうもです。 自分で関数作るのは無理ッポなんで・・・(悲
612 :
名無しさん@そうだ選挙にいこう :02/06/20 15:41
複数の出納簿をAccessで作るように言われたのですが、今まではExcelで出納簿の数 だけシートを作って、それぞれに「日付」「摘要」「収入」「支出」「残高」の列を作り、 「残高」の列のセルには数式(=1つ上の「残高」+「収入」+「支出」)を入れて いました。 Accessで作る場合、 トータルの残高であれば、=(「収入」フィールドの合計)−(「支出」フィールドの合計) で、フォーム上などにに表示できると思うのですが、出納取引ごとに残高を表示して おきたい場合は、どうすればよいのでしょうか? 日付順に入力していくとはかぎらないので、テーブルに「残高」フィールドは持たない 方がよいのでは、と思っているのですが... ご教示お願いします。
>609-611 RoundはExcelの関数でAccessの関数じゃないよ。 Accessのヘルプでも見れるけど。あまりオススメできないです。 負の数がなければ、1の位を四捨五入する場合は fix(([数値]*0.1)+0.5)/0.1 こんな感じでできるよ。 負の数があったら Fix(([数値]*0.1)+0.5*Sgn([数値]))/0.1 でできます。 上記の式で0.1が入っているところ桁を変えれば、四捨五入の桁数を 変えられるよ。こんな感じ Fix((328.58*10)+0.5)/10 → 328.6
>612 表示しておきたいってどういう事ですか? 表示するだけなら、そのデータが入ってるテーブルを、日付で グループ化して集計するクエリつくって、それを表示させれば いいと思います。 それとも、データ入力フォームに残高を表示させたいの? この場合は、フォームにデータを入力したらすぐに表示が反映される ようにフォーム上で計算させる必要があるけど。
あるフィールドにおいて、英数字がある場合は半角に変換する(他は そのまま。すでに半角の英数字もそのまま。)という処理をマクロで やるにはどうすればよいでしょうか?
具体的には ”東京都世田谷区・・・7−6 グランドマンション202号室”みたいなのを ”東京都世田谷区・・・7-6 グランドマンション202号室”というようにした いのです。 色々考えたのですが、方法が思いつきません。 お願いします。
>615-616 マクロじゃなくてできるんじゃないかな? StrConv関数をヘルプで調べてみましょー。
618 :
名無しさん@そうだ選挙にいこう :02/06/20 17:03
>しろ さん ム板、マ板、ビーソフ板でよくお目にかかりますね。 Strconvだと グランドマンション ▽ グランドマンション ヒラガナまで半角になりますよね?
>>617 できました。
ありがとうございました。
こんな簡単にできるなんて・・・。^^;
>618 そ、そうだ。カナも半角になっちゃうね。(^_^;)スマソ >ム板、マ板、ビーソフ板でよくお目にかかりますね。 最近仕事があまり忙しくないので・・・ナイショ! >619さん 618さんのおっしゃる通りになっちゃうけど、だ、大丈夫でしょうか??
>615-620 とりあえず変換したいということであれば 「置換」メニューで0〜9までやるのはどう? ただし自動化はできないのと10回やらないといけないけど... 糞レススマソ。
622 :
名無しさん@そうだ選挙にいこう :02/06/21 12:14
今あるデータだけ変換できればいいなら、いったんエディタに吐き出して 変換してから戻す。
623 :
名無しさん@そうだ選挙にいこう :02/06/21 14:38
名前フィールドで「山田 太郎」のように、間に必ず全角スペースが存 在しなければならず、スペースがない時に警告(メッセージボックス) を出したいわけなんですが、この場合、どのような条件式を書いたらよ いのでしょうか?
624 :
名無しさん@そうだ選挙にいこう :02/06/21 14:46
>623 名前フィールドのExitイベントに if Instr(Trim(コントロール名.Value),' ')=0 then msgbox"全角スペースを入力してください" Cancel=True End if これでイイ。
>>624 ありがとうございました。
助かりました。
626 :
名無しさん@そうだ選挙にいこう :02/06/21 18:09
特定のフォームを使う際、オートコレクトの「2文字目を小文字にする」というチェ ックを常に外した状態にしたいわけですが、マクロか何かでこれを指定する方法はあ りますか?(外れている場合はそのまま)
627 :
名無しさん@そうだ選挙にいこう :02/06/21 18:24
とりあえずオートコレクトでVBAのヘルプをひいてみるのだがやー
>>620 > 618さんのおっしゃる通りになっちゃうけど、だ、大丈夫でしょうか??
レスが遅れました。
大丈夫ではなかったのですが、上司が「なら全角で統一しろ」というので
そのようにしました。英数字だけ半角にする方法はわからないままですが
、とりあえず問題ありません。
ありがとうございました。^^
Dim db As DAO.Database Dim rs As DAO.Recordset すみません、ここの解説をお願いしたいのです。ヘルプを見ましたが、載ってませんでした。 一行目、二行目は変数を宣言しているのはわかります。 DAO.Databaseと、DAO.Recordset ここがわかりません。これは一体なにをやっているのでしょうか?
>>628 なんだ、終わらせちゃったの?(w
変換元文字列から変換済文字列を生成する関数を作ればできますよ。たぶん。
VBAの範疇でそれっぽいのは作れましたよ。
1.変換元文字列の頭から順に一文字取り出す
2.全角英数字か全角ハイフンか判定する
3.判定結果が真ならば半角文字に変換、偽ならばなにもしない
4.変換処理後の文字を連結して変換済文字列を生成
のような骨子で考えれば、難しくはないと思うのです。
631 :
名無しさん@そうだ選挙にいこう :02/06/22 02:19
>>629 DAO.Databaseとはデータベース型といって、どのデータベース
(具体的にはMDBファイルなど)を操作するのかを設定するのに使う
変数の型。
DAO.Recordsetとはレコードセット型といって、どのレコードセット
(具体的にはテーブルや選択クエリの実行結果など)を操作するのか
を設定するのに使う変数の型。
つまり、あるデータベースファイルの、あるテーブルからデータを
読み出したいという場合、この場合のdbという変数にデータベース
ファイルの在処を指定し、rsという変数にテーブルの在処を指定す
る(実際には少々複雑なのだけど、簡単に言うとこんなところ)。
具体的にはたとえば、
Set db = DBEngine.Workspaces(0).OpenDatabase("D:\test.mdb")
Set rs = db.OpenRecordset("TABLE1")
この場合、D:\test.mdbというデータベースファイルを開き、その中
のTABLE1というテーブルを開いている。
あとは、rsというレコードセット変数を使って、そのテーブルから
データを読み出したり、テーブルにデータを書き込んだりできる。
>>630 数字とハイフンだけなら文字コードを拾うっていう手もあるかも。
633 :
名無しさん@そうだ選挙にいこう :02/06/22 09:23
>632,630 自前で関数組むんなら、 Like で拾った方が早いだろ、絶対。 "*[0-9]*" あるいはReplace関数だな。こっちも楽勝だと思う。Strcompと併用 すりゃー便利。 >631 詳解な説明だし、ただしいと思うんだけど、>629=352って そーゆーレベルで悩んでいるんじゃないと思います。 >352 >Dim db As DAO.Database これが変数宣言してるってのが分かってるならそれでヨシ。 DAO. って時点で多分Ac2Kか。 Ac2K以降、データベースの接続方法を明示して変数宣言する 必要が出てきました。つまり、 DAO. ってのはAc97と同等の接続方法をあえて使用する、と 言っており、通常はDAO. の部分は省略もできます。 省略した場合、ADOという接続方法が標準で採用されることに なります。 データベース変数を宣言する場合は、 変数名 AS 接続方法.変数の型 これが文法になります。 # >ヘルプを見ましたが、載ってませんでした # 探し方が足りないです。Googleで探すと驚くほど沢山の資料が # あるので、この台詞を免罪符代わりに使うのは止めましょう。 # およそ多くのコミュニティで敬遠されると思いますので。
>>633 > 自前で関数組むんなら、 Like で拾った方が早いだろ、絶対。
> "*[0-9]*"
> あるいはReplace関数だな。こっちも楽勝だと思う。Strcompと併用
> すりゃー便利。
具体的な例を示していないと同意できないわな。
636 :
名無しさん@そうだ選挙にいこう :02/06/22 23:32
MS Projectのガントチャートやタスク表示する機能をMS Access側で利用出来ないものでしょうか?
>>636 基本的にはできるはず(Access97、Project98でやった)。ただ、昔は
メモリがきつくてまともに動かなかった。今はXPとかだと制限が少しは
緩和されてるはずだからましかな?
AccessからProject叩くより、Project側からAccessのデータひっぱるほ
うが楽だと思うが・・・
MDBファイルを開いたと同時にメニューバーを非表示にするには Application.CommandBars.ActiveMenuBar.Enabled=False に何を付け加えたら良いでしょうか?
.Visible=False(勘)
640 :
名無しさん@そうだ選挙にいこう :02/06/23 23:19
642 :
名無しさん@そうだ選挙にいこう :02/06/24 02:00
643 :
名無しさん@そうだ選挙にいこう :02/06/24 10:38
Office XP でaccessつかってるんですが、今日マクロの修正を しようと思い、VBE開いたらかけた覚えがないのにロックかかってて修正できないんです。 これってどうやって解除すればいいんでしょうか?
>>641 うーん、それでばっちですね!ありがとうございます^^
とあるフィールドをYes/No型にして、テキストボックス に検索結果で表示させたときに、このフィールドをコントロール ソースで設定したのですが、-1や0と表示させるのでは無しに、 -1の場合は"未" 0の場合は"済"と表示させるように したいのですが、どうしたら良いでしょうか?
>>641 ごめんなさい、やっぱメニューバー出てきます・・・
なんででしょう?
住所録のデータをアクセスに取り込んだときに、列が 分かれてしまいました。以下のように。 ID 住所 番地 住所の後ろに番地をくっつけて一つの列に するにはどうすればいいんでしょうか?Excelでは =CONCATENATE(文字列1[,文字列2])を使えば良かったですが。
649 :
名無しさん@そうだ選挙にいこう :02/06/25 03:43
>>648 文字列1と文字列2を&でつないで,クエリにして、
それを元にしてテーブルを作成したらだめかね?
もっといい答えが返ってくると思われなのでまつべし。
>>645 ヘルプを見るとカスタム書式を設定できます。
「;"A";"B"」
A=Yes、True、または On の代わり
B=No、False、または Off の代わり
では…
651 :
名無しさん@そうだ選挙にいこう :02/06/25 09:15
>>648 >649 が一番カンタンかつ確実な方法だ。
更新クエリを作成しても良い。
ただ、もともと一つの住所だったわけでしょ?
Accessに取りこむときに一つのままでくっつけておくように、
できなかったの?設定イジってみた?
はじめまして。ACCESSの初心者でVBも触った事が無く市販マニュアルで悩んでいる者です。 どうか良いアドバイスをお願い致します。 やりたい事はTBLの一覧を画面表示させてその内1件の選択で該当データの詳細を表示させたいと 思っています。現在の知識ではFORMでTBL内容一覧を表示させる迄は判りますが、その後1件だけ 選択する方法(チェックボックス?)、選択したTBLのKEYを次の詳細画面表示用FORMへ受け渡し 次の詳細画面を表示する?のかと思いますが方法が判りません。 合わせて、この処理は複数台のPCで実行する予定です。 作成方法を素人の私にご教示宜しくお願い致します。
VBAのコードを書いている時にふと気が付いた事。コードの所々で数字が全角になってやがる。 はて?俺は全角の英数字が嫌いなので半角に統一しているはずだが・・・。改めて修正してみた時にわが目を疑った。 なんと半角で入力しているにもかかわらず、コードビルダが勝手に全角に直しやがる。しかもFEPをOFFにしてても。 ざけんなー!!!色々と試してみた。Office2000にSR-1を適用してみるとか。作りかけのmdbファイルを 新規作成したmdbファイルにインポートしてみるとか。別のmdbファイルのコードに貼り付けてみるとか。 原因がワカラン。判るのは、このmdbからコピったり、インポートしてきたのは軒並みダメということ。 どうするよ・・・また作り直しか?かなわんがなしかしこれ。
655 :
名無しさん@そうだ選挙にいこう :02/06/25 12:26
特定のレコードを選択するには、該当レコードにフォーカスを合わせる。 選択したレコードのキーを次の詳細画面表示用FORMへ受け渡すには、OpenArg引数を使う。
>646さん それは何かが間違ってます。おそらく1でカスタムバーを作ったときに 「メニューバー」じゃなくて「ツールバー」を作っちゃったのでしょう。 次に起動時の設定で、作ったメニューバーを設定させるようになってますか? >641をきちんとやるとできるはずですよ。ガンガレ!
アドバイス有難うございました。 使用方法は全く判りませんが、マニュアルと格闘してみます。 引き続き、不明点が発生しましたらアドバイスを宜しくお願い致します。
>645さん それはフォームですか?フォームならこのようにしてみては? AAA: 未、済のフィールド名(コントロールソース連結) BBB: 未、済を表示するフィールド名(非連結) CCC: 検索を実行するボタン AAA は可視を「いいえ」に設定しておきます。 BBB はコントロールソースに =IIF(AAA=-1,"未","済") などの関数を入れておきます。 CCC はイベントプロシージャの検索のコードの最後に Me!BBB.Requery とします。 他にもましな方法があると思うけど、これが簡単かも。
>654さん そういうこと偶にありますね。アルファベットを勝手に大文字に変えていたり。 直しても気づくと元の間違った状態に戻ってるし。 何かどこかの設定を記憶したままになってるのでしょう。 私は、こんな風にしてみたら直りました。 例(本当はabcにしたい) If abC=1 Then ↓ If abccc=1 Then ’余計な文字をいれて書きなおす。 この後、保存→最適化したりして、しばらくこのままにしておきました。 しばらくたって、おもむろに元に戻すと、abCにならなくなりました。 ご参考まで。
>653さん サブフォームについて調べてみてください。 モジュールなど使わずに、おっしゃってることができるかもしれません。 ヒントは一つのフォームに、テーブルの一覧を表示させる帳票フォームと 詳細を表示させる単票フォームを配置し、リンク用のテキストボックスを 使って連結させます。 やってみてわからないところがあったら具体的に書いてみてください。 もう少し、細かい説明ができますので。ガンバレ!
>>658 しろさんにレス付けるのも何だけど…
フォームだったら
>>650 でいいんではないでしょうか?
>661 わーい。ぜんぜん気づいてなかった。スンマソン・・・ ま、こんなやりかたもあるちゅー事で。
>>662 実いうと
>>645 氏の質問がなければオイラも知らなくて
しろさんの方法でやってたんです。(トホホ
650さん。 いえ、私も大変勉強になりました! こういう所はいろんな方のいろんな方法を知ることができるので 大変参考になります。ありがとうございます。
しろさん、どうもアドバイス有難うございます。 現在作成済みのTBLが以下の体系になっています。 例えば受注TBLが親で受注明細TBLが子(1:nの関係)のTBL登録FORMにはサブフォームを 使用して両TBLを登録する事は出来ました。 一覧表示用の帳票FORMから該当KEYの選択で、このFORMにLINKさせたいのですが可能でしょうか? (サブフォームから選択されて表示されるFORMにもサブフォームが有る形になるのでは?と思います) それと、しろさんの言われているLINK用テキストボックスで連結と有りますが マウス操作だけでも可能になるのでしょうか? どうぞ宜しくお願い致します。
>>665 杉作殿どーも分かりづらいのですが…
一覧表示させたいテーブルのはどういうものなの?
例えば)受注コード/受注先/…のように書いてくれないかなぁ
一覧表示しなくてもコンボボックス等でのそのテーブルの特定フィールドをキーにして
詳細テーブルをサブフォーム表示するのではダメなのでしょうか?
判りづらい表現で申し訳有りません。 作業の流れについて詳しく言いますと 1.665に記載したTBLを新規登録FORMで登録します。 2.その登録で作成されたTBLに受注先、発送日付が有りTBLの修正時に該当日付の データを登録されたTBLより一覧で表示させ(受注、受注明細の親子両TBLより表示)、 選択したデータを修正画面(新規登録と同様な画面)用FORMで修正/削除をしたいのです。 確かにメニューも作成していてKEYを指定して修正釦のクリックで修正画面が表示され 修正をするようにしていますが該当日付の一覧表示より選択しても、この修正画面に 移りたいのです。
>>667 一覧から・・・ってのは、データシートビューからってことかな?
あんまりかっこよくはないけど、データシートビューのどっかの
テキストボックスにダブルクリック時のイベントでもつけて、OpenForm
でフィルタかけるってのはどうだろう?
>>667 >該当日付の一覧表示より選択して
このくだりで疑問なのは新たに現れる修正・削除画面(フォーム)は一覧表したテーブルと同じ
レコードになるわけですよね。
また、一覧表示のレコードの一部(例えば受注コード等)をクリックした場合に修正・削除画面(フォーム)が
開かれると考えていいのでしょうか?
一覧表示フォームの特定のフィールド(抽出条件の対象)にカーソルをおいた状態で
同一覧表示の元テーブルを利用した選択クエリーを作成し「抽出条件」に
その対象となる一覧表示フォームの特定のフィールドを設定するばよいかと…
後はフォームを作るなりしてください。
但し、書き換えられた(削除された)データを一覧表示に反映されるためには再表示(リクエリー)が必要になる
かと思われます。
小暮明さん。有難うございます。 そうですね。該当のKEYを表示させて、そのテキストボックスでのイベントを 指定すれば楽かなと思いますが、小暮さんの「OpenFormでフィルタを掛ける」と言う意味が 理解出来ません。合わせて関連しているかもしれませんがKEYを次のFORMへ渡す方法は どうなるのでしょうか?最初のOpenArg引数と関係してくるのでしょうか? 全くVBを知らないので申し訳有りませんが宜しくお願い致します。
OpenArgsを使ったほうが見栄えはよいのですが、呼び出し側 受け取り側双方で設定が必要となるので、シロートさんには DoCmd.Openformでフィルタ条件を指定する方法を説明してま す。詳しくはOpenFormのHelp見てください。
access95,97 から2000以上へのモジュール変換ソフトなどありませんか?
すぎさくさんは、まだVBのレベルに達してなさそうなのですが・・・。 >665 2つのフォームを連結するのは、VB使わなくてもできますよ。 ただ、使いやすいかどうかは別です。使いやすくカスタマイズするには VB使った方がいいですが、とりあえず、簡単にできる方法です。 お望みの事が全て果たせるかどうか判りませんが・・・。 「表示フォーム」にリスト形式の「帳票フォーム」と詳細表示の 「単票フォーム」を配置する事はできましたね? 「帳票フォーム」のデータと「単票フォーム」のデータを連結させるための キーになるデータがありますよね?ID番号とか・・・ (これがないと、できませんので)これを仮に「ID番号」とします。 そうしたら 「表示フォーム」のあいている所に非連結のテキストボックスを配置してください。 そのテキストボックスのコントロールプロパティに =帳票フォーム!ID番号 と書いてください。 これで、このテキストボックスには、帳票フォーム内のID番号が表示されます。 このテキストボックスの名前を「リンクデータ」とつけたとします。 次に「表示フォーム」の「単票フォーム」のサブフォームプロパティの 「リンク親フィールド」の欄に、先ほど作ったテキストボックスの名前を書きます。 リンクデータ これで、「単票フォーム」が「帳票フォーム」のデータとリンクするようになりました。 できたら、「帳票フォーム」の任意の行にカーソルを合わせると、その行 の詳細の内容が単票フォームで表示されます。 データの削除は帳票フォームでできます。 データの修正は単票フォームで出来ます。 データの追加は・・・追加フォームは別に作った方がいいかも。(^_^;) 最後に、先ほど作った「リンクデータ」というテキストボックスのプロパティの 「可視」を「いいえ」に設定しましょう。これで見えなくなります。 がんばれー。
>673 一部訂正。真ん中辺り > そのテキストボックスのコントロールプロパティに ↓ 「そのテキストボックスのコントロールソースプロパティに」 です。失礼しました。 > 650改め"くろ" さん。 な、なんか似たコテハンですね。(・∀・)どうぞよろしく。
>>649 ありがとうございます!ですが、&でつなぐにはどこに&を
入力すれば良いのでしょうか?バカですみません・゚・(ノД`)・゚・。
>>651 いいえ、元々別の列に分かれておりました。CSVで取り込むときに
カンマを削れなかったのですが、削り方があるのですか?
>675 649さんがおっしゃってるのは、すなわち下記のようなことです。 クエリはわかりますか? ID 住所 番地 の入ったテーブルを使ってクエリを作ります。 クエリのデザインビューを見ると、左端に「フィールド」とかかれた所が あります。フィールド名が入るところです。 その行の空いてる所に、 新住所:[住所] & [番地] と入力します。 データシートビューで見ると住所データと番地データが繋がってます。 そのクエリをテーブル作成にして、新しくテーブルを作ればよいと言う事です。 これ以上簡単に書くのは難しいので、Accessの本などでクエリの勉強を された方がいいと思います。ガンガレ-!!
>>676 うおーやったー。僕にも分かるように書いてくださって
ありがとうございます。無事に出来ました。もっと本を読んで
皆さんのご迷惑にならないように頑張ります。( ´∀`)
>677 よかったね。あの文章でわかってくれてよかった。(´д`) つーか、もちっと勉強してクリー。
しろさん、くろさん、どうも有難うございました。 お礼が遅くなり申し訳有りませんでした。 まだまだ、お二人の言われている事、完全に理解は出来ない部分も有りますが お二人のアドバイスとマニュアルとを合わせて頑張ってみます。 また不明点が発生しましたら、宜しくお願い致します。
顧客に対していつどのような取引を行ったかを記録しています。 「顧客名」、「取引日付」、「取引内容」etc...というフィールドをもつテーブルがあります。 このテーブルから顧客名ごとに最終取引日付とその内容を表示したいと考えています。 単に顧客名をグループ化の集計を使った場合、最終取引日付は出せるのですが、 それに対する取引内容を表示させることができません。 クエリでなくてもかまわないのですが、何か良い方法はないでしょうか?
あげ忘れ
>>679 杉作殿のメアドは有効なものなの?
仮に作ったmdbを送ってあげようか?
>>680 「取引内容」を集計方法を「最後」にしてみたらいかが?
>>683 それだと、テーブルに入った順の最後が表示されるようです。
クエリで並び替えを行っても変わりありません。
入力し忘れて順番が必ずしも日付順ではないのでその方法では実現できません。
>>684 そのようですね(スミマセン
では、クエリーで「顧客名」「取引日付」(集計の「最大」)のものを作って
そのクエリーと元テーブルでクエリー2を作って「顧客名」「取引日付」を結合させては
どうでしょうか?
くろさん、有難うございます。 >杉作殿のメアドは有効なものなの? >仮に作ったmdbを送ってあげようか? お心使いに感謝します。自分の勉強にもなりますので宜しくお願い致します。 メアドは有効ですから安心して下さい。
すみません、確か過去スレにあったと思うのですが見つけられなかったので 質問させてください。 テーブルで日付を和暦で表示するにはどこでどう設定すれば良いのでしょうか?
687 表示する対象の書式をggg e年m月d日にする。 書式がなければVBAかSQLでFormat()を使って文字列に変換する。
>>685 ありがとうございます。
その方法でできました。
>>688 ありがとうございました。
早速やってみました。困ってたので本当に助かりました。
糞はここですかね?
しろさん、くろさんのおかげで2つのFORMをLINKさせる事に成功しました。 どうも有難うございました。 そこで次に又問題が発生しましたので申し訳有りませんが再度アドバイスを お願い致します。 内容は以前にも話ましたが受注TBL(親)受注明細TBL(子)の繋がりを持つTBLの レコードの削除をするFORMを作成しています。これは親の削除で親、子の両方が 削除(これは受注TBLと受注明細TBLをリレーションシップで関連付けして いるから)される機能になっています。 これに追加で子のみ削除する機能を追加したら子のみ削除はいいのですが 親:子が1:1の場合は子の削除で親も削除する必要が出て来ました。 1:1のケースのみ親子両方削除する為のアドバイスをお願い致します。
>692 すぎさくさん 親テーブルのデータを削除しちゃうんですか?見えなくするだけでなく? 主テーブルのデータをなくしちゃうってあまりお勧めしません。 間違って消しても元に戻せないし。使わないデータだというフラグを立てる等 の処理をお勧めします。まあ設計内容にもよるので場合によると思いますが。 もしも見えなくするだけでよいなら、親テーブルと子テーブルをつないだ 状態のクエリを作って、それを親のデータを表示させるコントロールソース に使えばいいでしょう。 子テーブルにデータが無くなれば表示されなくなるので。 データを見えなくするだけでなく、削除したいなら削除クエリを作って マクロに組み込むと言う方法はどうでしょう? マクロなら少し本などを読んで勉強すれば出来ると思いますよ。 いずれにしても、削除してその場でデータの状況をフォーム上に反映 させたいのなら、データを削除した時に親フォームにRequeryしたほうが いいでしょう。 もう少し自分で作ってみて、少し判らない所を整理されてから質問された 方がいいですよー。
694 :
名無しさん@そうだ選挙にいこう :02/06/26 22:15
ノースウインドのサンプルデータベースで、NorthwindCSを実行したらSQLサーバに作成しました、となってしまいました。 これはどういうものなのでしょうか?削除できないのでしょうか?
695 :
名無しさん@そうだ選挙にいこう :02/06/27 08:47
先輩方々、Accessを初めて日の浅い若輩な私にご教授ください。 顧客管理のDBで、注文明細をサブフォームで作りました。 "発注名"や"数量"、"単価"、"金額"と言った項目が並びます。 −ここからが質問になりますが、"発注名"以下の各入力が数量等は異なりますが 数十単位で、だいたい決まった内容を入力します。(まったく同じでは無いです。) 数が少なければ、毎々必要分を入力しますが 数が多いので、困っております。 なにか良い知恵を授けて頂ければ幸いです。
696 :
名無しさん@そうだ選挙にいこう :02/06/27 08:54
>数が少なければ、毎々必要分を入力しますが >数が多いので、困っております。 データって、あらかじめ入力済みのものをどっかからインポートして 来るってパターン以外は、1個1個入力する必要が有ると思うよ。
>>692 おはようございます。
1.「受注TBL(親)」に対して「受注明細TBL(子)」が1つの場合もあり、複数の場合がある。
2.「受注TBL(親)」の削除でリンクされた「受注明細TBL(子)」も削除できるものはできている。
3.「受注明細TBL(子)」が複数の場合の一部を削除するものはできている。
4.「受注明細TBL(子)」が1つの場合は「受注TBL(親)」も削除するものを作りたい。
でよろしいですか?
「4」は「1」の方法をとればよいのではないでしょか?
う〜んなんか違うのかなぁ〜?
杉作殿の文章ではイメージがわきづらい
>>695 1. "発注名"のテーブルを単独で作成しそのフィールドに"既定数量"を作る
2.注文明細をサブフォームでの "発注名"はこのテーブルを使ってコンボボックスでの入力に変更
3.マクロで"値の代入"を作成(マクロ1とする)
「アイテム」にサブフォーム上の"数量"を指定し、「式」に"発注名"コンボのColumn(1)を指定する
4. "発注名"のプロパティのイベント"更新後処理"に3の"マクロ1"を指定する
で出きると思う。
この方法では"発注名"を選択または入力された段階で"数量"に"既定数量"が
代入されます。
>696 さっそくのレス、ありがとうございます。 インポートの案も想像をしてみたのですが、私の現在のスキルでは具現化する事ができません。 申し訳ございませんが、このあたりの解説を頂ければ助かります。
>698 詳しいレス、ありがとうございます。 前文を書いている最中に、行き違いになってしまいました。 教えて頂いた方法をよく読んで研究してみます。
>698 この方法だと、コンボボックスで省力化は出来ても やはり一つ一つ入れる形になってしまいます。 私の説明がマトを得てなかったかもしれませんのですみません。 "発注名" , "数量" , "単価 " , "金額" a1 , 3 , 1200 , 3600 a2 , 1 , 1000 , 1000 ・ ・ r7 , 5 , 3000 , 15000 と、よく例題にもありそうな内容ですが この "発注名"が、1度に数十項目の入力があり そして内容的にも、ほぼ同じ物が入ります。 >696様のご案内にもあります、テンプレートより追加・変更を行なったほうが 早いのかと考えてみたのですが、先に書きましたように 私のスキルでは、具体的な手段が分かりません。 申し訳ございませんが、もう少し力を貸して頂ければ幸いです。
>>701 ごめんなさい。勘違いしてたようですね…
1."セットコード"、"発注名"、"数量"、"単価"、"金額"というサブフォームと同様の
新規テーブル(テーブルAとする)を作成
2.以下のようにデータを作成
> "セットコード" ,"発注名" , "数量" , "単価 " , "金額"
> A , a1 , 3 , 1200 , 3600
> A , a2 , 1 , 1000 , 1000
> A , ・
> A , ・
> A , r7 , 5 , 3000 , 15000
3."テーブルA"の編集用フォーム(フォームAとする)を作成
(このフォームがテンプレートになります)
4."テーブルA"より元テーブルへ"セットコード"以外を追加するクエリー(クエリーAとする)を作成
5.マクロの「クエリーを開く」で"クエリーA"を指定(マクロAとする)
6."フォームA"上にコマンドボタンを作成し、「クリック」に"マクロA"を設定
では、いかがでしょう
追伸 "セットコード"は後で別のセットを追加するときに便利かなって思って付けたけど なくても可。("セットコード"で呼び出すのに…)
>702 いえいえ、うまく説明できずこちらこそ申し訳ないです。 それと度々の解説、とても感謝です。 この後、教えて頂いた方法を試してみます。 親切にありがとうございました。
705 :
名無しさん@そうだ選挙にいこう :02/06/27 12:28
発注名を入力した段階で 前のデータをコピーしてくればいいのではないか そして必要なところだけ修正する。
くろさん、どうも判りづらい内容で申し訳有りません。 >697でくろさんが記載されている内容で正解です。 ですが、私の考えとして追加機能を持たせたいと思っているのです。 明細単位の削除で親:子が1:1の場合に子を削除したら親も一緒に削除を したいのです。 (勿論くろさんの言われるとうり1:1なら最初から親を削除でいいのですが・・・)
>>706 「受注明細TBL(子)」の「受注TBL(親)」とのリンクキーになるものを
クリックしたら「受注TBL(親)」テーブルの削除クエリー(クリックしたもの
が抽出条件になるような)作成し、それが実行されるようにしたらどうでしょうか?
この間送ったmdbのクエリーを削除クエリーにするような感じかなぁ?
わかりました。 やってみます。有難うございました。
709 :
名無しさん@そうだ選挙にいこう :02/06/27 14:40
初心者です。。。基本的なことなのですが教えてください。 在庫の集計表を作っています。 カテゴリ毎の集計と、更にその合計(要は全部の合計) を1つのクエリで作成できるのでしょうか? カテゴリ毎については、本とかにも出ていましたので簡単に できました。 ただ、その表示だと、全合計ってのが出せないのですが 何かよい手はありますでしょうか? よろしくお願いします。
710 :
名無しさん@そうだ選挙にいこう :02/06/27 14:53
カテゴリ1 3300 カテゴリ2 2000 カテゴリ3 1000 全合計 6300 といったイメージなのですが。。1つのクエリでは無理がありますでしょうか??
>>709 ひとつのクエリーでは無理だとおもいます。
"全合計"の利用手段はなんですか?
フォームやレポートであれば無理に"全合計"をクエリーで抽出しなくても
フォームやレポート上で表示できますよ。
また、レポートに限っていえばカテゴリー毎の合計(小計)もウィザードで
簡単に表示できますが…
712 :
名無しさん@そうだ選挙にいこう :02/06/27 16:02
>711 ありがとうございます。 Excelからのスタートなので、どうもまだクエリのイメージが つかめてませんでした。 『無理』ときいて何となくイメージがつかめました。 単シーケンスというイメージなのですね。 フォームの方は勉強してみます。ありがとうございました。
713 :
名無しさん@そうだ選挙にいこう :02/06/27 16:09
画像の表示について教えてください。 フォームの中に、テーブル中の画像を表示することを 考えています。 テーブルの型をテキストにして、実際のファイルを記述すると うまく表示できるようになりました。 ただ、できれば、テーブルの型をハイパーリンクにしたいと 考えています。(これはデータの入力の楽さと、テーブルからでも 画像が呼べることからです。 しかし、同じフォームで実行するとエラーとなってしまいます。 デバッグ情報見るとファイル名の前と後に #がついているようです。 これを回避する方法は無いでしょうか? よろしくお願いします。
714 :
名無しさん@そうだ選挙にいこう :02/06/27 16:46
データアクセスページではまっています。。
Win2000 のPro にIISを入れました。
IIS経由でWeb等は参照できます。
次に、Access2000でデータアクセスページを
ウィザードに従って作りました。
単に内部のデータを表示する奴です(下にツールバー
みたいのがついた奴)
それをHtmlで保存しました。
これをローカルのPC経由で見ると(c:\inetpub\wwwroot\xxx.htm)
きちんと表示されます。
でも、IIS経由 (
http://PCname/xxx.htm )だと
真っ白です(タイトル等の文字は出ます)
何故でしょう?本とか見ると問題なくできているようなのですが。
何か設定の変更が必要なのでしょうか?
難しい。。。
715 :
名無しの自営業 :02/06/27 18:08
質問です 今現在、在庫管理のフォームを製作しております。 この際、在庫のテーブルに後から修正を掛けるべく修正フォームを作りました。 伝票単位に明細を設け、それを追加クエリで在庫テーブルに入れる形を取っております。 修正の際には、この明細も一緒に変更しないと請求の動きがおかしくなってしまうので、 明細テーブル変更→在庫テーブルも変更 ってなってくれれば嬉しいのですが。。。 どーもうまくいかないです つーか自分の知識不足でうまいこといかないだけですが。。。
>715 テーブルの構造がサッパリわからないのでご説明にくいのですが、 単純に考えると、明細テーブルも、在庫テーブルも両方追加されるように アクションクエリーすればいいと思いますけど。そういう事でなく??
バカな質問ですみませんが、作成したコンボボックス内を ↓キーでプルダウンさせるにはどうすればよいのでしょうか? 現在は、タブと同じく次の項目に移ってしまいます。
718 :
仕様書無しさん :02/06/27 21:21
>>717 Alt+↓キーでプルダウンさせられるよ。
719 :
名無しさん@そうだ選挙にいこう :02/06/27 23:30
>>717 あとは、そこにフォーカス(カーソル)が行ったら自動的にコンボボックス開くコードもあるよ。
ヘルプ見ると載ってるはず。
720 :
名無しさん@そうだ選挙にいこう :02/06/28 09:29
今度、Access97から同XPにアップするのですが 97で作ったmdbは問題なく変換(?)出来るのでしょうか? 以前"しろ"さんが「Access使い集合!」のほうで関数(Choose/Switch)が引っかかると いっていた覚えがあるのですが…
>720 はい、私です。 97→2002は変換はできますが、問題が無いとは限りませんです。 ない場合もあるかも。 OSがWindows2000以上の場合は、クエリで使用している Choose/Switchこの二つの関数の戻り値がおかしくなります。 ちなみに私は変換時にエラーを起こしたのか、他にも動かなくなった クエリがいくつかありました。 SQLを新規に開いてコピーしたら治りましたが、コンバート後に詳細な 動作確認をする事をオススメします。
>>721 そうそうにご本人からレスありがとうございます。
動作確認を充分にするように心掛けます。
一昨日の1:1時の受注明細TBL(子)の削除で受注TBL(親)も削除をしたいと言いましたが 上手くいきません。申し訳有りませんがアドバイスを宜しくお願いします。 手順は以下の形で実施しました。 1.削除クエリで 親TBLのみ表示させ条件も無しでは勿論削除OKです。 2.これに親と子TBLの不一致クエリを作成し親子でアンマッチの受注 (親TBLのKEY)を求め削除クエリに追加しました。 3.削除クエリのフィールドに受注b指定して削除クエリを実行させると 「削除するレコードを含んだテーブルを指定してください」とのエラーが 表示されhelpには「削除するレコードのあるテーブルの名前をしていない」と 有りました。 (削除クエリのフィールドに*を指定して削除クエリを実行させると 「指定されたテーブルから削除できませんでした」とのエラーになり helpには「データベースが読取り専用なので削除権限を設定しろ」と 有りました。) 3.の対応策のアドバイスをお願いします。 それと、不一致クエリに変わる他の方法としてDcountを見つけたのですが 上手く使えません。 1.やりたい事は「受注明細クエリよりFORMの受注bニ同一bフ数を求める」です。 2.Dcount("[受注明細クエリ]![受注]","[受注明細クエリ]", "[受注明細クエリ]![受注] = [受注]") 3.結果は条件指定にも拘らず全件がカウントされてしまいます。 何故でしょうか?
>723 DCount使わなくてもできます。 ヘルプなどでパラメータクエリを調べてみてください。 ヒントは、抽出条件に Forms![受注明細]![受注] などと書くことでできます。 ちなみに、 Dcount("[受注明細クエリ]![受注]","[受注明細クエリ]", "[受注明細クエリ]![受注] = [受注]") この式違ってます。ヘルプを良く見てください。 DCount("フィールド名","テーブル名","条件式")です。 []で囲んだり、わざわざ[受注明細クエリ]![受注]のようにする必要はありません。 各フィールドと、テーブルの正式名称だけ書いて置けばいいのです。 だから、[]はいらないです。下記のようになります。 Dcount("受注","受注明細クエリ", "受注 = 1") では、頑張ってください。
もう一つ質問させてください。 Access97のmdb内のテーブルをAccess2002でリンクする事は 可能なのでしょうか?
しろさん、アドバイス有難うございました。 1日悩んだのが、あっと言う間に解消されました。 しろさんにはお世話ばかり掛けていますが、本当に助かっています。 (素人なもので、関数使用時に式ビルダを使用するのですが[]とかクエリの フィールドを選択するとクエリとフィールドが自動的に 表示されるので、そのまま使用していました。ビルダに頼ってばかりではダメなのが 良く判りました。)
>726 すぎさくさん 沢山悩むのって大変だけど大事だと思います。私も最初はそうだったし。 悩まないですぐ教わっても覚えないですよね。 悩んでる時は大変だけど、それが上達の近道だと思いますよ。 頑張って下さいね。 あと、使いやすい本を一冊くらい持っておくといいと思います。 私的なオススメは「Access2000表現百科500」という本です。 技術評論社の出している奴です。(もう持ってたらすみません) でも自分に合うかどうか見極めてから買ってね。
730 :
名無しさん@そうだ選挙にいこう :02/06/29 00:08
Access2000を使っております。 ADOとDAO、どちらを覚えたほうが良いのでしょうか?ADOXというのは、ADOの進化版でしょうか?
731 :
名無しさん@そうだ選挙にいこう :02/06/29 01:25
Access2000で質問です。VBAを勉強中です。 ヘルプをでデータベースを作成するコードを見て、そのまま打って見ました。 Sub() Dim cat As New ADOX.Catalog←ここ。 Dim tbl As New ADOX.Table Set cat.ActiveConnection = CurrentProject.Connection tbl.Name = "新規テーブル" tbl.Columns.Append "氏名", adVarWChar, 50 cat.Tables.Append tbl End sub これを実行すると、矢印のところでユーザ定義型は定義されてません。 とエラーが出て、typeで宣言しろ、と書いてるのですがこの宣言の仕方がわかりません。 また、参照設定のダイアログボックスをだしてチェックボックスをオンにしてないとエラーになります。 と出ていたので、ボックスのデータオブジェクツは全てオンにしました。 すると、他のプロジェクトで使われています。と出てしまいました。 これを正しく実行するにはどうしたらよいのでしょうか?宜しくおねがいいたします。
732 :
名無しさん@そうだ選挙にいこう :02/06/30 01:49
>637 遅レスでスイマセン Project & Access連携について、情報ありがとうございます。 やっぱり同じこと考えている人いるもんですね? Project側からAccessを利用する方が良いとの事ですが あくまでAccessが主体なので、チャート表示などの部分だけ都合よく Projectを利用したかったのです。 それにOfficeDeveloperで作成してランタイム版を配布したいというのもあります。 ちなみにAccess側にはどのようにすれば利用出来るのでしょうか?
クエリを使ってクエリ・・・ということを延々と繰り返していたら、 メガテンの2身合体をしているような感じがしてきた・・・。 漏れだけ?
>731 「参照設定」を確認してみてください。
735 :
名無しさん@そうだ選挙にいこう :02/06/30 19:33
会社の労働組合の引去り表をアクセスで作りたいのですが、 何か参考になるフリーソフトはありますでしょうか? Vectorで探してみたんですがありませんでした・・・
736 :
名無しさん@そうだ選挙にいこう :02/06/30 23:35
>>734 確認して、DAOとADO関係をオンにしたら、他ので使われています、と出てしまったのです。
>728 しろさん、アドバイスどうも有難うございます。 現在書籍は3冊持っていますが初歩的な物ばかりで「Access2000表現百科500」と いう本は持っていません。早速本屋でチェックしてみます。 先週末で例の子と親が1:1の時、子の削除で親も削除する事についてですが 1.Dcountは教えて頂いた式でOKになり、該当受注bノ紐付く明細bフ数を求める事が 出来ました。 2.しかしDcount式が入っているテキストボックスの値が子の削除で更新されない 現象が発生し、対応策が判らずSTOPしてしまいました。 但し一旦FORMを終了させ再度開くと更新はされています。 (因みに明細bヘサブフォーム、Dcountのテキストボックスはメインフォームに 有りますがメインフォームの再表示とかをする必要が有るのでしょうか? もし有ればアドバイスをお願いします) 3.Dcountを未使用でも可能とのアドバイスで削除クエリを動くようにと思い パラメータクエリのヘルプを見たりしたのですが進展が有りません。 親と子TBLの不一致クエリで求めた受注bナ親を削除と思うのですが以前も お話したように削除クエリに不一致クエリの条件を追加すると「削除する レコードを含んだテーブルを指定して下さい」のMSGが表示されSTOPしてしまいます。 こちらも何かアドバイスが有りましたら宜しくお願い致します。
>>730 ADOX のXはExtendedだから「拡張した」ってことかな。
ADOでカヴァーしきれなかったDAOの機能を概ね代替するもの(完全ではない)。
対MDBだけならDAOでよい。
他のDBの使用も視野に入れるならADOを覚えておいたほうが良い。
>>736 オンにしたものをココに列挙きぼん。
添削しちゃる。
先日は、くろ様をはじめいろいろな方からご指南頂きありがとうございました。 お蔭様で前に進む事ができ本当に感謝いたします。 それとまた質問をして恐縮ですが、2点ほどご教授頂ければ幸いです。 一つ目は、氏名より名字だけを抜き出し 表示・印刷をしたいと考えております。 名前との間に、現在データとして半角or全角スペースが入っております。 二つ目は、データシート書式の様に表が詰まった形で印刷をしたいのですが 入力項目が多く、段組と表現したらよろしいのでしょうか 2段(2列)にして 多くの情報を載せたいと考えております。 以上の事柄ですが、手元の参考書では紐解く事ができず煮詰まっております。 良い知恵を授けて頂けますでしょうか。 よろしくお願い申し上げます。
>740 一つ目 InStrでスペースが左から何文字目に入っているか数えて Left関数でそれより前の文字数分取得する。 二つ目 レポートのページ設定の3つ目のタブにある「レイアウト」 この「行列設定」列数を2にしてみてはいかが?
742 :
名無しさん@そうだ選挙にいこう :02/07/01 11:35
アクセス97で、レポート上に複数あるテキストボックスの文字の行間や文字間隔 をフォームからそれぞれ設定できるようにしたいのですが。 フォームの入力用テキストボックスは、テーブル側でメモ型に設定してあります。 名前はタイトル、本文1、本文2などとなっています。
>>740 一つ目
→Mid 関数を使ってみてはどうでしょうか?(使い方はヘルプを見てチョ)
二つ目
→オートレポートで仮に作って自分で成形するしかないのかな?
私の場合(Access97)なので上のようにしてます。つーかこれしか知らない…
プリンタがA3対応であり、A3での表示が可能ならばA3で作成して
A4等に縮小して印刷という手もあるけど…
お力になれない…(鬱
げっしろさんが答えてるの…743は無しにして しかもMid 関数じゃ出来ないね…(鬱
745 :
AAA AMERICA AUTOMATIC ASOCIATION :02/07/01 11:45
デジタル、インターネット等IT関連は使い方次第で、個の力を何倍もの力に変えることが可能です。
費用対効果で他の媒体にこれより優れたものは無いでしょう。
それを船井幸雄やハーバード大学での講義さえある21世紀型流通の姿ともいわれるMLM
に活用してみましょう。それは長い目で見ても、素晴らしいネットワークビジネスといえます。
最先端のITを駆使するネットワークビジネスは、在庫をもつ必要がなく、
製造メーカーの製品を直接広める形態をとるものです。
製造会社の製品であると同時にIT部門を持ち、面倒なことはすべてお任せです。
HPを通じて、興味のある人がメールで問い合わせてくるので、
低価格、高品質な製品に関することなどを説明すれば済むのです。
何人かの識者が書籍等で発言しているように、
流通コストを消費者に還元して製品を広めるというこのシステムは、
人間的かつ将来有効なシステムを創っていける可能性の大きいものだと感じます。
実際、アメリカでは、全商品の30%がMLMです。
有名な大会社AT&T、GM、マスターカードなども採用しだしています。
興味のある人には、ぜひ以下のホームページも御覧ください。
http://ailove22.fc2web.com/lpd/index.html
さっそくのレス、ありがとうございます。 >741 一つ目 名字ですので、何文字目かを決め打ちができないので 教えて頂いた方法は、手段として取りにくいです。 二つ目 ご案内頂いた方法は、印刷処理の段階で行なう方法だと解釈しましたが 説明不足でしたが、サブフォームに入れた項目が多くこちらを段組みに そしてそれを貼ったメインフォーム込みで印刷を行ないたいと思っております。 私の言葉が足らず、申し訳ございませんでした。 >743 一つ目 続いてのレスで、話を打ち消されておられますので 案内のMid 関数は違うのですね。 ただ向学のため、一度ヘルプを見てみます。 二つ目 ご案内の方法は、一つ一つ移動し貼っていく方法でしょうか。 やはり単純に、Excelのようは表を作るのは難しいのでしょうか。 本を見ても何故か出ていなかったので不思議には思っておりました。 ただ一つ目の氏名より、名字のみを抜き出す方法は "スペース"入力を基準に VBAの処理で可能なのかと想像してみたのですが 私の力では、とても解を導く事ができません。 また良いアイデアがありましたら、知恵をお授けください。
>>746 >名字ですので、何文字目かを決め打ちができないので
>教えて頂いた方法は、手段として取りにくいです。
いやいやしろさんの方法で出来るでしょう
Mid 関数の方が「何文字目かを決め打ちが…」で
引っかかるはずです。
>746 ??なんですか?一つ目も二つ目も、問題なく出来そうですが。 一つ目 InStrで何文字目か決め打ちする必要なくなるでしょ? 二つ目 それぞれのサブフォームで2列印刷の設定をすればできるのでは? とりあえず、やってみては?
>747 すみません、ご指摘がありがとうございます。 スペースの場所が、InStr で分かるのですね。 しろ様がせっかくご教授頂いていましたのに 書かれておりました内容をしっかり読み取っておりませんでした。 お詫びと改めてお礼申し上げます。
>748 二つ目の話しですが、ファイル−ページ設定−レイアウトを見ておりましたが この設定では無かったのでしょうか。 Acess2000を使用しておりますが、プロパティにはこう言った項目が見当たりませんでしたので そちらのほうを見たのですが、私の見当外れだったようです。 手取り足取りになって誠に恐縮ですが、どの画面設定を触るとご案内の項目が出てくるのでしょうか。 恐れ入りますが、改めてよろしくお願い致します。
>>748 "しろ"さん、こんちは
695氏の件、Left関数を使ってクエリーで表記するとき、
以下の場合
[式1]:Left([商品名],[式2])
[式2]:InStr([商品名]," ")-1
としたら
式1→#Error
式2→2または3
となるのですが…どーして?
商品名
たらこ のり付
しゃけ ふりかけ付き
昆布 なし
おかか のり付き
752 :
名無しさん@そうだ選挙にいこう :02/07/01 14:07
>>739 ありがとうございました。アクセスが使えればいいので、DAOを勉強します。
>751 こ、こんにちは、くろさん。私限定ですか・・・(^_^; ええと、私がやると下記どれもエラーにならないのですが・・・。 Null値がない事を仮定してですが・・・。 式1: InStr([商品名]," ")-1 式2: Left([商品名],[式1]) 式3: Left([商品名],InStr([商品名]," ")-1) あっ!バージョンはなんですか? ちなみに、私は今97でテストしてます。 もしかしたら、InStrの値が文字列で返って来ていたりしませんか? Val(InStr([商品名]," ")-1) こうして実行したらどうなりますか?
754 :
名無しさん@そうだ選挙にいこう :02/07/01 14:30
>>739 どれをオンにしたらいいのか良くわからなかったので、関係ありそうなものを全部オンにしました。
Microsoft ActiveX Data Objects2.5Library
Microsoft ActiveX Data Objects Recordset2.5Library
Microsoft DAO2.5/3.5 Compatibility Library
Microsoft DAO3.51 Object Library
Microsoft DAO3.6 Object Library
Microsoft DAO3.51 Object Library
Microsoft ADO Ext. 2.5 for DDL and Security
>750 私の言ったのは、おっしゃる通り、ファイル−ページ設定−レイアウトの部分です。 出力時に段組になってればいいのではないの?デザイン時から段組にしたいって事ですか? サブレポートで、レイアウトの設定を2列にしておくと、メインのレポートを プレビューしてもサブレポートの部分が2列になりますが、それではダメですか? ・・・もしかして、全然やりたい事と違う事言ってたりして・・・
>>753 そうそうにレス、アリガトォやんす
いやーウチもAccess97なんだけど…
> もしかしたら、InStrの値が文字列で返って来ていたりしませんか?
これは数値で返ってるんですよ
[式2]:InStr([商品名]," ")-1
ビューモードにしたとき右寄せになってるので「Val」は関係ないようで…
(ちなみにValでテストはしましたが数値で返ってる)
でも
[式1]:Left([商品名],[式2])は
ビューモードにしたとき左寄せで「#Error」が返ってくる
どうもLeft関数(ちなみにRight関数も)がいかれてるみたい…
う〜んAccessが吹っ飛んだのかなぁ?
>750 連続スマソ 印刷したいって言う事だったので、当初から「レポート」の話をしていたのですが、 よく見ると途中から「フォーム」になってますね。フォーム画面を出力したいの? フォームでも同じ事が出来そうな気がしますが、やった事無いのでなんともいえません。 どういう風に2列にしたいんですか?
>742 文字間隔?一文字ずつの間隔ですか?Wordみたいなの? それはちょっと厳しいと思います。 Excel等のテキストボックスと同じように考えていたらいいと思うのですが、 見出しと、本文の間隔の設定とかだったらできますが、 全体の文字の間隔というのはムリじゃないでしょうか。 できるとしたら、一文字ずつを別々のテキストボックスに入れて、それぞれの テキストボックスの場所を指定するとか意味不明な事をやらないといけない気がします。 私が知らないだけかもしれませんが・・・。 見出しと、本文の間隔の設定をVBAでやる場合も、数値で上からと左からの位置を 指定するという物になるので、結構カスタマイズしないとユーザに使いやすい物には 中々ならないんじゃないかと思いますけど。。。がんばって出来たら教えて〜。
>755 度々のレス、恐れ入ります。 内容は、出力時に段組みになっておれば問題無いございません。 >サブレポートで、レイアウトの設定を2列にしておくと、メインのレポートを これは、別々の設定が出来るのですか? てっきり [ファイル−ペ… の方法ですと、メイン/サブの区別無く すべての印刷書式の設定だと把握しておりました。 ご指示の方法は、個別の設定が出来そうでしたのでその方法が分かればと 改めて先程書きました。
>756 くろさん 下記のどれかで治るかも・・・。 1.MDBファイル再起動 2.最適化 3.修復 4.別の新規MDBでテストしてみる 5.Accessのみ上書き再インストール 6.Officeのクリーン再インストール こんな感じ。
>757 フォームでもレポートでもどちらでも構いません。 ただサブのみ段組設定の方法がやはり謎です。 メイン/サブの個別設定方法をご指南頂ければ 後は、繰り返し試し自分で努力します。
>759 >761 段組にしたいサブレポートをデザインビューで開く ↓ ページ設定 ↓ レイアウトを設定してOK ↓ サブレポートを保存して閉じる ↓ メインレポートをプレビューで見る ↓ (゚д゚)ウマー
>763 ページ見ました。便利そうですね。意味は合ってますよ。 この方が汎用のプロシージャを作ってらっしゃるという理由は、需要はあるけど 実際に作るのはカナリ面倒だからです。 自分で作る場合は文字列操作関数などを駆使して頑張って作るしかないです。 このモジュールを頂いてカスタマイズするなりして使ったらいいんじゃないでしょうか? カスタマイズしなければコピーするだけですから、それがいちばん簡単な方法だと思いますよ。
>>760 何度もスミマセン。
1〜3はやってみました。
4についてはこのMDB自体はテスト用なのでやりません。
(他のMDBではOKだったので、このMDBが変なのでしょうね)
お付き合いありがとうございました。
695氏の
>>746 のコメントからすると
>ご案内頂いた方法は、印刷処理の段階で行なう方法だと解釈しましたが
>説明不足でしたが、サブフォームに入れた項目が多くこちらを段組みに
>そしてそれを貼ったメインフォーム込みで印刷を行ないたいと思っております。
>私の言葉が足らず、申し訳ございませんでした。
フォームをそのまま印刷すると読めるのですが…そうなの?
"しろ"さんは「レポート」でのお答えをしているようですよ
ですから
>>757 のコメントは変ですよ。
自分がフォームで表示したいのか、レポートで表示したいのかを示さないと
ちなみにフォーム(サブフォームも含む)での2段データシート表示は出来ないと
思います。
ですから、"しろ"さんの
>>762 の方法でフォーム上にコマンドボタンなどを
用いて「レポート」をプレビューしたらどうでしょうか?
折々レスを頂きありがとうございます。 >762 具体的な方法ありがとうございます。 さっそくやってみます。 >766 基本的には、当初に書きました様に 多くの情報を載せる為の 段組印刷の方法をお伺いしました。 その中で、現段階ではサブ "フォーム"を利用した状態でしたので 文中にその様に書きましたが 印刷での手法でしたので サブ"フォーム/レポート"に集約して改めてお伺いし直しました。 ただ私の表現不足で、誤解を生じた事のお詫びと 懇切丁寧なコメントを頂いた事、お礼申し上げます。
769 :
名無しさん@そうだ選挙にいこう :02/07/02 01:11
Accessによるアプリ開発について、研修からあるアルバイト もしくは実務的なスクール(資格取得が目的ではない) はありませんか?
今度、サーバにデータベースを置いて各クライアントが作業(オペレート)した データをサーバに格納するようなものを作ることになったのですが… (今まではスタンドアローンでの作成ばかり) (概要) 1.会計データベースMDB (とはいっても毎月3000〜4000件ほどで、過去1ヶ月分保持) 2.勘定コード表MDB 3.クライアント作業用MDB (複数、会計データベースのテーブルと勘定コード表テーブルをリンク) 以上のような場合に サーバにすべてのMDBを置いてクライアントにはショートカットで渡す。で問題ないでしょうか? 「3」についてはデータ入力用の「一時テーブル」に入力後、終了時に「1」のテーブルにデータを 転送するようになると思うのですが…
>770 使う人数や、使用頻度にもよるけどあんまりよくないと思う。 使う人数と、使用頻度はどうなってますか?
誰も答えないので・・・ >754 DAOを使うなら Microsoft DAO2.5/3.5 Compatibility Library Microsoft DAO3.51 Object Library Microsoft DAO3.6 Object Library Microsoft DAO3.51 Object Library このうちバージョンの一番高い Microsoft DAO3.51 Object Library だけ。使わないなら、チェックする必要なし。 ADOを使う場合 Microsoft ActiveX Data Objects2.5Library Microsoft ActiveX Data Objects Recordset2.5Library Microsoft ADO Ext. 2.5 for DDL and Security この中で使うものだけにチェック。 Microsoft ActiveX Data Objects2.5Library だけでいいと思うけど、内容によるかな。 判らなかったら、一つずつチェックして、デバックしてうまくいかなかったら 別のをチェックするなどして検証してみるといいかも。
>772に追加 >754 Microsoft ActiveX Data Objects2.5Library これよりもっとバージョンの高いのがあるはずだから、あれば そちらに付けた方がいい。 同じ物で違うバージョンの物にいくつもチェックする事は出来なくて、 一つにつき一つだけチェックね。
>>771 しろさん、席を外していたのですみません。
クライアントは8名ほどです。
毎日その内の何人かが20〜50件ほどのデータを入力します。
>774 くろさん サーバにあるエンドユーザが使用するファイルは直接触らせず、そのコピーを 各ローカルマシンに格納しそれを使用させるようにした方がいいです。 その際、できればエンドユーザ用のファイルはMDE形式にした方がいいでしょう。 同じDBを複数人で使用する場合、一人のユーザの変な使い方で (DBを終了させずに、PCの電源切っちゃったりとか・・・(-_-;)) 他に使用している人に影響が出る可能性もあります。 また、サーバに置いてあるエンドユーザ用のDBを改善するとき等も気兼ねなく 出来ますし。 エンドユーザ用のファイルをローカルマシンに配置して、そのショートカットから 起動させるようにしておけば、万一誰かのDBが破損しても、サーバからコピー してくればいいだけなので安心です。 ファイルの構成ですが、テーブルだけが格納されているデータファイルと その他もオブジェクト(フォーム、レポート、モジュール等)は完全に別の ファイルになるようにした方がいいと思います。 くろさんのおっしゃっているのは、1と2のファイルがデータファイルとなり 3だけに、テーブル以外のものが入っているという事で、上記の構成と 同じですよね? (長くなるので、2つに分けます。)
775の続きです >774 くろさん 私も似たような事やった事あります。経理関係のもので、データ数はそれほど 多くはないのですが、数人が同時に使用する可能性のあるものでした。 この時は、サーバに 1.テーブルのみが格納されているもの 2.エンドユーザ使用のフォーム、モジュール、レポート等が入っているもの の2種類を使用し、さらに、2については、MDE形式にしてありました。 このファイルは、私の方で頻繁にバージョンアップをしていました。 各ローカルマシンには、バッチファイル又はVBSファイルを置き、これを 実行するだけでバージョンアップできるという風にしてありました。 …といっても、元ファイルの上書きコピーとかショートカットを作成していた だけですが。このためエンドユーザは、サーバの何処に元ファイルが存在して いるかは知らなかったと思います。 (探せば判るのですがそういうスキルの人がいなかったので) 最初に配布する場合も、サーバにVBSファイルを置いておき、それを実行させる だけでインストールできるようにしてありました。 エンドユーザのマシンを新しくした場合などメンテナンスが楽になります。 なお1のファイルについては毎日バックアップを取っていました。 Accessは・・・あまり信用できないので。(^^ゞこれもVBSでやってました。 長文スマソ・・・
777 :
名無しさん@そうだ選挙にいこう :02/07/02 17:14
>>773 ありがとうございました。助かりました。うまく動かすことができました。
>>775-776 丁寧な説明ありがとうございます。
>同じDBを複数人で使用する場合
ここでいうDBとはエンドユーザ(クライアント)のことでしょうか?
エンドユーザ(クライアント)のMDB(MDE)は利用者分作成しようと思っています。
(部内での利用なのでメンテにはすぐ対応できるので…)
ただ、利用者分作成することは無駄なのでしょうか?
>エンドユーザ用のファイルをローカルマシンに配置して
この部分なのですが、エンドユーザ用のファイルをローカルマシンに配置してしまうと
メンテナンスする場合、エンドユーザがいない(休暇等)と変更するのに手間がかかると
思うのですが…
>>776 の1.2についてはそのような設計にするつもりです。
さて、最後にもう一つ質問なのですが…
>各ローカルマシンには、バッチファイル又はVBSファイルを置き、これを
>実行するだけでバージョンアップできるという風にしてありました。
VBSファイルってなんでしょうか?すごく厨房な質問なのでしょうけど
マジでわかんないんです(涙
>778 くろさん >ただ、利用者分作成することは無駄なのでしょうか? 利用者分作成?なぬ?ナゼ利用者分作成?コピーするだけでなく? > エンドユーザ用のファイルをローカルマシンに配置してしまうと > メンテナンスする場合、エンドユーザがいない(休暇等)と変更するの > に手間がかかると思うのですが… 元ファイルはサーバに置いておいて、メンテナンスはそのファイルを修正します。 ユーザには、ローカルマシンにファイルをコピーして使ってもらいます。 ユーザにコピーさせるのは説明も色々面倒なので、バッチファイル等を 実行するだけですむようにしておく、という処理したら楽ですよ。 という事なんですが、うーむ、説明が難しい。。。 もちろん、このやり方が最良というわけでもないでしょうけど・・・。 長くなりそうなので捨てアド書いてくだされば、メールしますよ? VBSファイルはアクセスとは関係ないです。混乱させてたらスミマセン。 VBAができれば、そんなに難しくないです。 メモ帳に Msgbox "てすと" とか書いて、text.vbs と言う名前で保存してみてください。 このファイルをダブルクリックするとメッセージボックスがでます。 よくメールのウィルスとかに使われてる奴です(^^ゞ
>>779 度々どうもです。
>利用者分作成?なぬ?ナゼ利用者分作成?コピーするだけでなく?
勘違いしてました。しろさんの言っているのがMDBを1つで複数同時利用と思ってしまったので…
>長くなりそうなので捨てアド書いてくだされば、メールしますよ?
メール欄の捨てアドとりましたので宜しくお願いします。
781 :
名無しさん@そうだ選挙にいこう :02/07/02 19:28
よろしくお願いします。 アクセス2000を使用しています。 日程テーブルからのクエリ<開始日> <終了日> <実施日数:DareDiff("d",開始日,終了日)>と 日付テーブルからのクエリ<日付(1ヶ月分)> <日:day(日付)> この2つのクエリを<開始日>←<日付(1ヶ月分)>の形でリレーションを組んだクエリを基にしてクロス集計クエリを組みます。 行見出しに<開始日> 列見出しに<日:day(日付)>、フィールドデータが<実施日数:DareDiff("d",開始日,終了日)>です。 これは、その月の何日が開始日で実施日数が何日であったかが一目でわかる工程表のようなものです。 これを基にレポートやフォームを作成すると、当然ですが開始日に実施日数(数字)が入ったものになります。 これを数字では無く、実施期間の日ごとに○(記号)が入るグラフのようにしたいのです。 アクセスのグラフ機能で試みましたが、どうしても作成できません。 やはり、エクセルを使うしかないのでしょうか? それとも、全然違う方法があるのでしょうか? 分かる方がおりましたら是非お教えください。
質問です。 ACCESS2000でテーブルをテキスト変換マクロで区切り記号付き エクスポートしてCSVファイルを作成したのですが、Excelで開 いて見てみると、あるメモ型のフィールドの内容が途中で切れて しまっています。 Excelの入力規則もチェックしましたが、セルの文字数の制限は されていませんし、途中で切れてしまった文の続きを手動で打つ と普通に入力できます。 ただ、ACCESSからエクスポートすると、いつも同じ場所で切られ てしまうのです。これは何が原因なのでしょう? また、どうすれば解消できるのでしょう? どうぞよろしくお願いします。
>781 781さんがおっしゃってるのは、月次のカレンダに 実施期間を ←→ とか 実施日に ○ とか、そういう事がしたいんですよね? だと、Accessのグラフでは無理です。集計クエリでできると 思いますが結構メンドクサイ。私も期間をカレンダ形状のものに示す というグラフを作った事がありますので、できない事はないです。 ただ、グラフウィザードのような物は使えませんので、ユーザ定義関数や DAOを駆使して作る事になります。 個人的な意見で申し訳ないのですが、Accessのグラフはカスタマイズ しにくく、使いにくいのでほとんど当てにしてないです。 私が知らないだけかもしれないですが・・・。 Excelの方がキレイなグラフが作れる事は確実です。Excelで問題ない のなら、そちらをオススメします。 >782 そのメモのフィールド内にある文字列が改行されてるなんて事は ないですよね?セルの行の高さを広くしたらでてきたりしませんか? はずしていたらスミマセン。。。
>しろさん CSVでは改行が使えませんので、改行は入れないように気をつけていますし、 セルは折り返して全部表示させていますので、見間違いの類いではないので す。 う〜ん・・・
>>782 ,784
作成されたCSVをメモ帳で開いても当該フィールドは切れているのでしょうか?
切れているのならAccess側の問題でしょうし、そうでなければExcel側の問題と
なると思いますが…
>くろさん 作成されたCSVファイルをメモ帳で開いて見ましたが、やはりEXCELで見た 箇所と同じところで切れています。 1つのセルにエクスポートできる文字数に限界があるとかですかねぇ〜
>>786 ううむさん
メモ帳で開いても箇所と同じところで切れているとなると
Access側のエクスポートに問題があると思います。
(ちなみにAccess97では問題ありませんでした)
では、当該テーブルをマクロを使わずに直接書き出してみては
どうてしょう?
Access97だと当該テーブル名で右クリックすると現れるメニューで
「名前を付けて保存/エクスポート」を選択し、現れたダイアログで
「外部ファイルまたはデータベース」のチェックを確認しOKを押して…以下省略
これでも同様(切れている)のCSVがエクスポートされるのであれば
Accessのオプション設定で何かそのような設定を出来るところがあるのでは
ないでしょうか?
(2000もっている人答えてあげてください)
>くろさん 手動で書き出したところ、うまくいきました。 原因はわからないままですが、とりあえずこの方法でやっていくことにします。 どうもご丁寧にありがとうございました。 おかげで助かりました。
789 :
始めたばかり :02/07/04 00:28
教えてください。 テーブル、フォームは何となく分かるのですが、 リレーション、クエリが本を読んでも理解できません。 簡単にわかりやすく教えていただけませんか。 テーブルの中でお客コードを入れたら お客名が自動入力されたり、 個数と単価を入れたら自動で 金額計算されるようにできるのでしょうか。 上記の事はクエリでやる物なのですか。 わかりにくくてすみません。 お願いします。
すみません寝させていただきます。
relation 【発音】rile'i∫n、【@】リレイション、【変化】《複》relations、【レベル】2 【名】 関係{かんけい}、つながり、関連{かんれん}、相関{そうかん}、間柄{あいだがら}、親戚、親族、縁故{えんこ}、陳述{ちんじゅつ}、交渉{こうしょう}、話
query 【発音】kwi'эri、【@】クイアリー、クウィアリー、【変化】《動》queries | querying | queried、【レベル】6 【他動】 〜を疑う、疑問を挟む、問う、問いただす 【名-2】 《コ》クエリー ◆データベースへの検索要求のこと。 【名】 疑い、疑問{ぎもん}、疑念{ぎねん}、質問{しつもん}、疑問符{ぎもんふ}
>>789 本を読んで理解できない(文章読解能力が無い)ヤツに対して、
文字レスで理解せしめるのは無理だと思う
789はAccessの前に日本語の勉強をするのが、Access理解への近道と思われ
>>788 ううむさん、よかったです。
それがOKでしたら、「テキスト エクスポート ウィザード」に従って
進めたと思います。
設定を進めた最後で「完了ボタン」をクリックする前に「設定ボタン」が
あると思うのでこちらをクリックしてください。
**のエクスポート定義というダイアログが開かれますので、そこで「保存ボタン」を
クリックし保存して下さい。
※これでこのテーブル仕様のエクスポート定義が保存されました。
OKボタンをクリックし、もう一度「テキスト エクスポート ウィザード」を完了させてください。
次に書かれた「マクロ」の「テキスト変換」の「定義名」をいま保存したものを選択して
ください。
たぶんこれで書かれた「マクロ」からエクスポートされたCSVも問題なくなると思います。
しろ様 解凍ありがとうございます。 レスが遅れてすいませんでした。 質問の件でですが、実はアクセスのみで作成できました。 それも、関数もDAOも使用せずにです。 発想の転換と言うかなんと言うか・・・ 方法なのですが、もう1つマスタテーブルを追加しました。 テーブルの構成は<日>フィールドと<丸>フィールド。 <日>1 <丸>○ <日>2 <丸>○○ <日>3 <丸>○○○ という具合に31セットのレコードを作ります。 日程テーブルの<実施日数>フィールドと<日>をリレーションを組んでクエリ→クロス集計します。 行見出しに<開始日> 列見出しに<日:day(日付)>、フィールドデータが<丸>です。 当然ですが、数字で表示されていた実施日数の代わりに、その数分の丸が表示されます。 これをもとにレポートを作成するのですが、○が表示されるソースのテキストボックスの書式を背景透明にし、横に非常に長くします。 それを同じ間隔づつずらしながら横に重ねて並べていくと、なんと!それらしいものが出来上がります^^;;; あとは、罫線ですが、それにあわせて引きました。 なぜか0.001ミリまで調節できるアクセスのレポート機能ならではの荒業でした・・・ (アクセスってレポート機能だけは充実してるんですよねえ・・・・) 仕上がりですが、思った以上に良くて満足しています。 ありがとうございました。
>795 おお、凄いですね。面白いですね。こちらも大変勉強になりました。 どうもありがとうです。 荒業だろうと邪道だろうとちゃんとできてちゃんと動けば、 とりあえずOKですよね!
798 :
2ch銀行 :02/07/04 13:37
ニチャンギンコウ という文字列と 10000 というという数値データの入ったテーブル 銀行名 引落額 ニチャンギンコウ 0000010000 があり、この二つをクエリーの演算フィールドで合体して ニチャンギンコウ 00000100000 という連続した文字列を出力させたいのですがどのような関数を使えばよい のでしょうか? ニチャンギンコウ と 0000010000の間のスペースは半角20文字から ニチャンギンコウの半角文字数を引いた数の分だけスペースを空けたい のです。 ヘルプなどを見ながら下記のようなものを書いて試したのですが LenBは未定義というエラーメッセージがでてしまいました。 また右端のformatの中の書式0000000000は自動的に0が一個に変化してしまい ます。 データ: [銀行名] & "" & Space$(20-LenB([銀行名]))&""&format([引落額,0000000000]) お手数かけてすいませんが、教えてください。
>798 format関数の使い方が微妙に間違ってます。 よくヘルプを見てみましょう。 ヒント [ ]
800 :
2ch銀行 :02/07/04 14:19
>>799 あ、すいません。上記は下記間違いで
format([引落額],0000000000)と入れてみました。
それでクエリーの単独フィールドで
金額変換:format([引落額],0000000000)
と入れたら、やっぱり自動的に
金額変換:format([引落額],0)
という風に0がひとつに変化してしまいます。
なんとか0000010000という表示に変えたいのですが。
>799 それでもやっぱり format関数がおかしいよ。おしいんだけどなー ヘルプのformat関数の使い方をよーく見るべし ヒント " "
802 :
2ch銀行 :02/07/04 15:02
>>801 あぅ! 00000100000になりました! すいません。へたれなミスでした。
これでformatは解決しました。ありがとうございます。
あとは
データ: [銀行名] & "" & Space$(20-LenB([銀行名]))&""&format([引落額,0000000000])
の前半部分なのですが、こっちはなんかいい方法ないでしょうか?
>802 よく見たらビミョーに変ですね、その式は。 使ってる関数はOKなんだけど使い方がおかしい。 & "" & Space$(20-LenB([銀行名])) &""& 1. & "" & が何故ついているかわからない。 2. Space$(20-LenB([銀行名]) ここは何を計算させたいのか考え直す必要アリ。 Len や Space などの式をバラして考えてみてください。 式を一辺に作ろうとせず落ち着いて考えれば出来そう。あと少しだから。 ガンガレ!
804 :
名無しさん@そうだ選挙にいこう :02/07/04 15:27
>802 クエリでは、式ビルダに出てくる関数と自作関数以外はエラーになるぞ。 どうしてもLenB()使いたかったら、標準モジュールにFunctionとして定義しな。
805 :
2ch銀行 :02/07/04 15:43
あ、formatのミスを直したらLenのエラーも出なくなりました。 しろさん、ありがとう。
806 :
名無しさん@そうだ選挙にいこう :02/07/04 23:43
質問です。 テーブルの重複レコードを抽出し、重複したデータごとに「単価」や「売上」 などの数値を合計して表示させたいのですがどうすればいいのでしょうか? 当方、ACCESS2000を使用しています。初心者です。 いまいち上手く説明できなくてわけのわからない文になった・・・
>いまいち上手く説明できなくてわけのわからない文になった・・・ そのお言葉の通り意図してることがはっきり見えません。
>806 重複クエリウイザードでクエリ作ってそれをもとにしたクエリを作って グループ化でなんとかならんかね? ならんようならもすこし詳しくね。
809 :
名無しさん@そうだ選挙にいこう :02/07/05 16:18
>806 つーか、たんなる集計クエリなんじゃない?アンタの言いたいことは。
質問なのですが テーブルの製造記号フィールドには、 abc-efg 、 abc-hij、opq-stu などのハイフンで2つに区切られたレコードがあります パラメータクエリみたいな感じで abc と入力すれば abc-efg と abc-hij のような頭3文字abcが一致するレコードだけが抽出表示されるようにしたいのですが 可能でしょうか? よろしくお願いします。
>>811 レスありがとうございます
本を読んでなんとかワイルドカードまでは辿り着いたのですが
できれば、ACCESSはじめての方でも頭3文字を入力してボタンを押せば
条件にあったレコードだけが表示されるようにしたいのです
フォーム上で頭3文字を入力して、隣にクエリを実行するマクロボタンを作り
ボタンを押すと結果がでるようにできればと考えているのですが
このやり方が可能ならば、クエリにどんな式を入れればいいのでしょうか?
813 :
名無しさん@そうだ選挙にいこう :02/07/06 00:00
SELECT * FROM テーブル WHERE 製造記号コード LIKE [コードの頭3文字] & "*"
814 :
名無しさん@そうだ選挙にいこう :02/07/06 05:00
FAQかもしれませんが、質問させてください。 名前 クラス 得点 偏差値 朴 1 65 李 1 70 金 1 53 洪 2 82 黄 3 59 上のようなデータベースがあります。 これで各生徒ごとに偏差値を出したいのですがどうすればよいのでしょう? クラス内での偏差値と、全体から見た偏差値との両方を出したいのです。 とりあえずAccessについてのサイトなどを一通りみて回ってみたつもりなんですが、 わからなかったので質問させてもらいました。 「ここ見りゃ、わかんだろ、ボケ」とか「この本買えばわかるだろ?」 というようなレスでも構いませんので、お願いします。
>>814 クエリでフィールドに
偏差値:偏差値を計算する式
>>813 おおぉ、なるほどありがとうございました。
>812 パラメータクエリについて調べてみてください。
guest guest
>>815 えーと、その偏差値を求める式って言うのがわからないのですが・・・。
それとも、自分で調べろってことでしょうか。
まあ、自分でも調べてみるつもりですが、
引き続き
「ここ見りゃ、わかんだろ、ボケ」とか「この本買えばわかるだろ?」
というようなレスでも構いませんので、お願いします。
ヘルプをひけ>814
>>819 んなもんAccessとは全く関係ないだろうが。
中学か高校の数学で習うから検索しろ、ぼけ。
質問です。 あるクエリをHTML形式でエクスポートする際に そのHTMLソースをどこか任意のフォーム上テキストボックスかテーブルフィールドに 流しこませる事は可能でしょうか? できればHTMLを添付ファイルではなくHTMLメールとしてそのまま送信したいもので こんなことを考えています。 アドバイスよろしくお願いします。
823 :
名無しさん@そうだ選挙にいこう :02/07/06 19:48
>>819 偏差値→10*点数-平均/標準偏差+50
標準偏差はヘルプを参考。
んー、まあいろいろレスついてるけど・・・。
まあ自分でやれって感じですか。
>>823 いちいち親切にありがとうございます。
>>814 それが人に聞く態度か?
塾の先生だろ。いい加減にしろ。
>>814 だってアンタ、ヘルプに載ってることをここでいちいち説明しても仕方ないだろ。
827 :
823(352) :02/07/07 11:54
>>824 俺も塾の講師でここで色々聞いたけど、ヘルプを使いこなせることが大事なんだよ。
自分で色々やるのが大事なの。
なんだかいろいろレスついてますね。ちょっと嬉しかったりします。
>>826 ヘルプにのってましたっけ?
標準偏差とかなら載っていたかもしれませんが。
>>825 とりあえず何に対して怒ってるんですか?
調べればわかるようなことをいちいち聞いているから?
826さんのような怒り方なら納得できますが、
825さんは何に対して怒っているのかよくわかりません。
それから私は別に塾の先生じゃありません。
点数を例としてあげたのはそのほうがわかりやすいからというだけです。
>>827 そうですね。一応、わからないときには最初はヘルプをひくようにしては
いるし、それでわからなかったのでここで質問してみたんですが、
なんだかそれはあまり適当な方法ではなかったようで。
標準偏差とかなら載っていたかも。かも。かも。ふーん。
830 :
名無しさん@そうだ選挙にいこう :02/07/07 18:34
>828 >825は欲求不満なんで気にしないように。 >814の質問は偏差値の出し方がわからないのか、クエリの使い方がわからないのか不明だ。 ポイントを絞ったほうがアンタにもいいと思うが。
DAOについての質問です。出力するDAOの練習をしています。 テーブルを元にしてフォームを作成しました。フィールドは 「生徒氏名」 「英語」 「数学」 「国語」 「合計得点」 「順位」 です。 合計得点フィールドと、順位フィールドは非連結で、それいがいは、テーブルがソースになっています。 DAOでフォームから、「英語」「数学」「国語」の得点を取得し、「合計得点」フィールドに出力したいのです。 で、こんな感じになりました。 'クリック時に合計を出す。 Private Sub 合計_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = Forms!順位フォーム.Recordset With rs Do While rs.EOF = False .Edit !合計 = rs!英語 + 数学 + 国語 .Update .MoveNext Loop .Close End With Set db = Nothing Set rs = Nothing End Sub 実行すると、フィールドを更新できません、と出てしまいました。 そこで、一度値を保存していかなくてはならないのかと思い、変数sumを宣言し、そこに一度値を格納してから sum = rs!英語 + 数学 + 国語 rs!合計 = sum としてみましたが、それでもダメでした。 フィールドから取得した値をいじってフィールドに表示する。というのはダメなのでしょうか? できれば、そのフィールドの値を使って、レポートを作りたいのです。ご教授お願いします。
>>831 フォームに表示したいなら
レコード移動時のイベントに
[合計]=[英語] + [数学] + [国語]
ただし単票フォームじゃないとかっこわるいです。
れぽーと印刷する時はフォーマット時のイベントに
同様にかけば良かったはず
あらかじめクエリーで合計をだしておいて、それをレコードソースにするのが一番いいかも
>>832 ありがとうございます。あらかじめ出しておくというのはできるのですが、
VBAでどうやって、フォームやテーブルに結果を出力するのかがわからなくて練習中です。
やってみます。
>>832 たびたびすみません。移動時のイベントにどのように書けばよいでしょうか?
835 :
名無しさん@そうだ選挙にいこう :02/07/07 20:31
rst.EditとかくとEditにエラーが出て、メソッドまたはデータメンバがみつかりません。と出てしまいます。 Access2000では使えないということでしょうか?参照設定でADOとDAO関係にはチェックがいれてあります。 ヘルプを参照しても、関連付けがされてないと出てしまい、参照することができません。 これは、インストールミスでしょうか。似たようなものでEditmodeというメソッドがあったので使ってみましたが、 それでも動きませんでした。どうすればよいでしょうか?教えてください。
836 :
名無しさん@そうだ選挙にいこう :02/07/07 20:42
>>835 Microsoft DAO 2.5/3.5 Compatibillty Library
これを追加ではないでしょうか?
>>828 >825さんは何に対して怒っているのかよくわかりません。
825じゃないが、
>>824 の
>いちいち親切にありがとうございます。
には私もむかつきましたが。
838 :
名無しさん@そうだ選挙にいこう :02/07/07 21:05
>>836 追加したら、この名前はすでにあるモジュール、プロジェクト、オブジェクトライブラリで使われています。
と出てしまいました。
他のデータベースを、別のサイトで落として実行してみたのですがそれはちゃんと動くんです。
Editが使われているのに。そのファイルのとおりに参照設定を設定してみましたが、
なぜか、私の作ったデータベースでは、editでひっかかってしまいます。
839 :
名無しさん@そうだ選挙にいこう :02/07/07 21:25
>>838 私のはこれだけでした。
Visual Basic For Application
Microsoft Access 9.0 Object Library
Utilitty
OLE Automation
Microsoft Visual Basic for Application Extensibillity 5.3
Microsoft DAO 2.5/3.5 Compatibillty Library
840 :
名無しさん@そうだ選挙にいこう :02/07/07 21:48
>>839 Utilitty
これはなかったのですが、全部同じ様にチェックしてみました。
でもダメでした。他に同じ様な症例のかたいらっしゃいませんか?
開発も終盤に入り、いよいよ印刷部の作成となったのですが、Reportに RecordsetCloneが無いとは知りませんでした。(AC97)。 不可視なテキ ストボックスを作って切り抜けたのですが、本当はもっと良い解決法あ るんでしょうか?
842 :
名無しさん@そうだ選挙にいこう :02/07/07 23:35
>839 Access2000ならDAOは3.6じゃない?
843 :
名無しさん@そうだ選挙にいこう :02/07/07 23:41
>841 ところで、どんなことしたいんだい? もっと具体的にやってることかかないと、「もっと良い解決法あるんでしょうか?」 って言われてもねぇ。
>>834 Private Sub Form_Current()
End Sub
>831 足し算の所のrs!が抜けてるからと言う事はないですか? 下記のように修正してやってみてください。 With rs Do While .EOF = False .Edit !合計 = !英語 + !数学 + !国語 .Update .MoveNext Loop .Close End With ※使用前にスペースは消す事。
合計は非連結・・・
>846 おお!!?そうですね! >831 DAOはソースのデータを直接修正する物なので データフィールドの無い物はデータの内容の修正できませんよ? ※しろさんが書き込みできませんので「くろ」が代筆させていただきました。
>>830 すいません、自分で解決できました。
こんなこと他人に聞くまでもなかったかもしれません。
確かに甘えた気持ちがあったかもしれませんね。
>>837 辞書をひけばわかるけれど、いちいちという言葉には
ひとつひとつとか、すべて漏らさずにとかの意味がありますが、
「むかつく」ような意味はないと思います。
わざわざと書けばよかったのでしょうか。
そういう態度がむかつかれてるってことに気づけないんだろうなぁ。
850 :
名無しさん@そうだ選挙にいこう :02/07/08 17:03
>>845 ダメでした。どうしても出来ません。
>>847 ああ、なるほど!
データフィールドが無いものということは、テーブルにデータフィールドとして、
合計。が無くてはだめということですね?
ADOではフォームはいじれないので、どちらにしろ、新しくテーブルを作ったほうがいいのですね。
ありがとうございました。
順位を出したい項目が5個あったら、それぞれテーブルを作って5個作る、というのは間違ってないのでしょうか?
851 :
名無しさん@そうだ選挙にいこう :02/07/09 01:07
すいません。 お願いしたのですが、 選択クエリーの集計オプションで、 先頭、または最後を「日付」の先頭、または最後 にしたいのですが、どうしてもオートナンバーIDの 先頭、または最後になってしまうのです。 マニュアル本などでは表示結果の、、となっているので 列順番を入れ替え&並べ替え等して表示結果を 替えてみてもやっぱりだめです。 わかるかたいらしたらお願いします
ちなみに97です。
853 :
名無しさん@そうだ選挙にいこう :02/07/09 10:23
>851 そのグループの中で一番古い日付にしたいときは「最小」を選んだほうがいい。 集計クエリにオートナンバーIDのフィールドは、入れないほうがいいそ。
854 :
850です。 :02/07/09 11:39
Private Sub 順位算出ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Database Dim isave As Integer Dim lcnt As Long Dim lorder As Long Set db = CurrentDb Set rs = db.OpenRecordset("Tテスト順位", OpenTable) isave = 100 lcnt = 0 Do While rs.EOF = False rs.Edit lcnt = lcnt + 1 If rs!英語 <> isave Then lorder = lcnt isave = rs!得点 End If rs!英語順位 = lcnt rs.Update rs.MoveNext Loop Set db = Nothing Set rs = Nothing End Sub テーブルのデータをもとにして、上のVBAを作成したのですが、EOFにメソッド、またはデータメンバがみつかりません とエラーが出てしまいます。何が原因なのでしょうか?
855 :
名無しさん@そうだ選挙にいこう :02/07/09 12:46
>854 VBエディタのがめんで、ツール−参照設定で Access97なら「Microsoft DAO3.5 Object Library」、2000なら DAO3.6のチェック付いてるか確認しろ。 isaveの初期値に100を入れるのは止めろ。一件目が100点の時おかしくなるそ。 それから、Loopの直後にClose入れとけよ。 あと、このテーブルって英語の得点が降順である保障はあんのか?
>>854 >Dim rs As DAO.Database
だうと。
Dim rs As DAO.Recordset
とおもわれ。
857 :
850です。 :02/07/09 13:35
>>855 ありがとうございました。解決しました。
closeは、db.closeでいいのでしょうか?
isave = 999にしました。
降順にするやりかたは、いま勉強中なのです。VBAに組み込むSQLがいまいちわからなくて・・・・・・
レスありがとうございました。
858 :
850です。 :02/07/09 13:36
>>856 そこは直してるときに気づきました・・・・・(恥)
ありがとうございます。
859 :
名無しさん@そうだ選挙にいこう :02/07/09 14:01
>857 > closeは、db.closeでいいのでしょうか? このモジュールのあるMDBの中にあるテーブルなら rs.Closeだけでいい。 SQLはとにかく選択クエリをSQLビューで見ることだ。
>853さま 有難うございました。 説明不足でした。 例えば 顧客基本情報クエリー(テーブル)から 選択クエリーの今回DM発送クエリーを作り 選択されたレコードの中から電話番号やメールアドレスなどをグループ化して 一番日付の新しい住所(や電話番号)を選択しかつお買いあげ合計金額を計算する(これは”合計”でいいんですよね) できないものかと思いまして、、。 方法がありましたらお教えください
861 :
850です。 :02/07/09 14:30
>>859 ありがとうございました。頑張ってみます。
>860 例えば、顧客番号(グループ化)と日付(最大)とお買いあげ合計金額(合計)で一つクエリを作っておく。 新しいクエリで顧客基本情報クエリー(テーブル)とと先程のクエリを選んで、 日付と顧客番号を共に結んでおく。 これで、一番日付の新しい住所が取り出せると思うが。 もっとも一人の顧客で一番日付の新しい日に二つの住所があったりしたら更に工夫が必要だが・・・。 頑張ってみ。
有難うございます。 頑張ってみます
有難うございました。 コツをつかみました。 いろいろ応用できそうです
先日はなにかとアドバイスを頂きありがとうございました。 まだまだ経験の浅い私の所でも、access-DBを立ち上げる事ができました。 その立ち上がったDBですが、使い出すと機能向上のリクエストが出たのですが まだ私のスキルでは、解決の道が開けず止まっております。 −本題ですが、先日 >695の質問に対し >702 の方法を伝授頂きました。 その別途立ち上げたテンプレートフォームの内容をCopy&Pasteを手で行なっていますが これをコマンドボタンのみで、所定のフォームにテンプレートの内容を自動で 入れることは可能でしょうか? 賢人のお知恵を貸して頂ければ幸いです。
>865 コピーしたいデータを選んで、それを追加クエリーで入れるような操作を コマンドボタンに組み込んでやるのはいかがですか? 例えば、 下記がテンプレートだとして、 ”ID" "セットコード" ,"発注名" , "数量" , "単価 " , "金額" 1 , A , a1 , 3 , 1200 , 3600 2 , A , a2 , 1 , 1000 , 1000 3 , A , ・ 4 , A , ・ 5 , A , r7 , 5 , 3000 , 15000 上記のID番号の部分をクエリーの条件のところに指定するような 追加クエリーをつくり、必要なデータだけを追加するという方法です。 全く見当違いでしたらスミマセン。
>866 こんにちは、アドバイス頂きありがとうございます。 まだaccessを十二分に触っていませんでしたので 追加クエリーという方法は、気付きませんでした。 さっそく、教えて頂いた方法が実情にマッチしているか試してみます。 結果を含め、また後で報告します。
>866 教えて頂いた追加クエリーを元にいろいろ試してみましたが、 サブフォーム内に目的のデータを流し込む事が私のスキルでは出来ませんでした。 もちろん私もこの前後のHelpファイルを紐解きますが もう少し手法について解説頂ければ、経験の浅い者として とてもありがたいです。 お手数をお掛けしますが、よろしくお願い致します。
教えてください。。。 フォームから、データ入力する際に、 前レコードと同じ値だったら(例えば日付とか) Ctr+F7を押すと、いちいち同じ値を打たなくても、 前レコードの値が出てくると聞いていたのですが、 Ctr+F7を押すと、フォームの枠が選択されてしまいます。 これは、どういう現象なんですか? また、何かのボタンを押した場合、全レコードが出てくるように する方法はありますか? よろしくお願いします。
>>869 >Ctr+F7を押すと
Ctrl+7じゃねぇか?(しらんけど。
>>868 A.本データテーブル
B.セットデータテーブル
C.仮入力テーブル
メインフォームでセットの選択コンボボックス(名前をSetとす)を作成
Bテーブルから追加クエリー抽出項目にメインフォームの「Set」を指定しでCテーブルにセットを追加するものを作成(Setクエリーとす)
メインフォームに「Setクエリー」が実行されるコマンドボタンを作成
Cテーブルをメインフォームのサブファームにする
サブフォーム修正追加後にAテーブルに追加する
872 :
名無しさん@そうだ選挙にいこう :02/07/13 13:23
初歩的なことですみません。 ACCESSでは日付/時刻型にミリ秒単位の数値は格納できるのでしょうか? 当方ACCESS97で書式を定義してみたりして色々とやってみているのですが、 うまくいきません。2000、2002では対応しているのでしょうか? ご存知の方よろしくお願いします。
>872 格納できない。日付/時刻系関数もミリ秒をサポートしてないんで、 どうしてもデータとして管理したいのであれば、別フィールドにミリ秒を置いて DATE型のフィールドへの繰上げ/繰り下げを自前で行うしかない。
874 :
名無しさん@そうだ選挙にいこう :02/07/14 00:42
取引先の口座を管理したいんだが、 入力フォームで銀行名をリストボックスで選択すると 隣のフォームにその銀行の支店一覧がリストボックスで表示されるには どうしたらいいんだろうか。 銀行名のテーブルと支店名のテーブルをそれぞれ用意したんだが どうもうまく関連付けられない。
>>874 関連づけはリレーションシップで。
それぞれに銀行IDというフィールドを作って結びつけるとか。
隣のフォームって別のフォームがあるの???
そうでなければクエリを銀行名で支店を抽出するクエリを作って
銀行名を選んだあとにクエリ実行
876 :
名無しさん@そうだ選挙にいこう :02/07/14 02:22
VBAでフォームのコントロールの指定に変数を使いたいのですが、出来ますか? 具体的にいうと、月報のフォームを作りたいのですが抽出条件がかなり(20以上)あるので Me.名前1 = 配列(1) Me.名前2 = 配列(2) . . Me.名前12 = 配列(12) とすると行数が多くなるため for i = 1 to 12 Me.名前i = 配列(i) next i というように記述したいのです。 なお、名前iは、名前1、名前2....名前nというようにつけています。
Me.Controls("名前" & i ) = 配列(i)
878 :
名無しさん@そうだ選挙にいこう :02/07/14 04:50
別々のテーブルに入ってる2つのフィールドにあるデータを、 1つのフィールドに合体させることって、できますか? 世帯主名簿テーブルと、その家族名簿テーブルがあるんですが、 人名だけの一覧を作りたいです。
879 :
名無しさん@そうだ選挙にいこう :02/07/14 05:53
>>878 ACCESSのヘルプで、
クエリ−SQL クエリの作成−SQL クエリとその使用方法−ユニオン クエリ
でどうでしょう?
>>879 丁寧なご返答、ありがとうございます!できました!!
ヘルプに載ってたんですね、調べ方が足りず面目ないです。
SQL すら良く分かっていなかったので、
作るのに時間がかかってしまいましたが、
ほとんどヘルプに書いてありました。ますます面目ない。。。。
精進しまっス。
>877 有難うございます。
>>873 ありがとうございます。やっぱり無理なんですね。
EXCELではユーザー定義で対応できていたので、ACCESSでも何か方法があるはず
と思っていました。。
残念ですけど、表示用にはテキスト型で格納し、演算用には873さんのおっしゃ
る方法か、全て秒数に変換して数値型で格納することにします。
>871 おはようございます。手法についてご伝授ありがとうございます。 それと週末を挟み、お礼を申し上げるのが遅くなり申し訳ございませんでした。 追加クエリーをサブフォームにデータを流し込むのは順序を変えると 変えると可能になると言う事は気付きませんでした。 このあと、教えて頂いた方法を実践してみます。
>>870 ctrl + F7 です。
すみません。
何かのボタンを押した場合、直前に入力した値が出てくるように
する方法はありますか?
の間違えでした。
教えてちゃんですみませんが、よろしくお願いします。
質問なのですが ロータスからインポートしそのまま売上データのテーブル を作りたいのですが 日時のフィールドをテキスト型から日時/時刻型に変えたい のですが(そのまま変えるとデータが消えてしまいます) 何かよい方法はないでしょうか、レコード数は5千くらいです。 よろしくお願いします。
仕事でWindowsXP + Office2000(Access2000抜き)+ Access97を使うことに なったのですが、レポート上で日付表示していた部分の書式がおかしくなって しまいました。Windows95上のAccess97でレポートの書式を見ると ggge"年"m"月"d"日" なのですが、WindowsXP上のAccess97で書式を見ると ggge\m"月"\d になってます。WindowsXP上のAccess97でggge"年"m"月"d"日"を入力しプレビュ ーしても状態が変わらず、デザイン画面に戻るとggge\m"月"\dに戻ってしまいます。 漢字の「日」という文字はどうやっても表示されないみたいです。文字コードの 問題なんですかねー。もう一台同じ構成で使っているPCがあるのですが、そちらでは 上手く表示できています。ある日突然表示が治ったそうで、特別何をやったわけでは ないということです。 どなたか情報をお持ちではないでしょうか。色々調べたのですが見つからなくて困っ ております。
>886 1.コンパネの地域と言語が日本、日本語になってるか? 2.空のMDBをつくってそのレポートや関連するテーブル/クエリをインポートしてみる。 ところで、 > 仕事でWindowsXP + Office2000(Access2000抜き)+ Access97を使うことに の時、Access97からインストールしてんだろうな?
>>885 ロータスから持ってきた状態でその文字列型のフィールドにはどのように
日付のデータが入っていますか?
"2002/07/16" とか 平成14年7月16日 とか。
クエリでLeft/Mid/InStr/Lenの各関数を使って定型な書式に変換、Cdate関数で
日付型に変換して、そのクエリをテーブル作成クエリにするなり、更新クエリにするなり。
>887 地域設定は日本で、Office2000から入れてます。で色々試したところ レポート上のテキストボックスの書式設定だとダメで、コントロール ソースに format(Date(),"ggge""年""m月d日") とやるとできました。この書式は"ggge年m月d日"と入力したら自動的に こう変更されてしまいました。ちょっと書きかえればいいんで、これは これで解決なんですけど、なんでおかしくなるのかが分からないのは 気持ち悪いなー。
コンボボックスの値リスト追加についてお願いします。下記のようなプログラムを作成し参照先のテーブルに 値が無い時は、追加されるようにしました。 Private Sub 所属中学校名_NotInList(NewData As String, Response As Integer) Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim ret As Integer 'メッセージを表示 Response = acDataErrContinue ret = MsgBox("入力した項目はリストにありません. " _ & "リストに追加しますか?. ", _ vbYesNo + vbQuestion, "リスト作成") Select Case ret Case vbYes' Case vbNo Me!所属中学校名 = Null Exit Sub End Select '接続 Set cn = CurrentProject.Connection 'T中学校名マスタを参照 Set rs = New ADODB.Recordset rs.Open "T中学校名マスタ", cn, adOpenKeyset, adLockOptimistic '追加 rs.AddNew "T中学校名マスタ", NewData '終了 rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing '再クエリー Me!所属中学校名 = Null Me!所属中学校名.Requery End Sub ところが、コンボボックスにリストに無い値を入力してエンターキーを押しても、普通に次のレコードへ移動してしまいます。 どこが間違っているのか全くわかりません。エラーも出ません。 どこがおかしいのか、教えていただきたいのです。宜しくお願いします。
891 :
名無しさん@そうだ選挙にいこう :02/07/16 14:38
似たようなVBAがあったのでコピペします。 当方VBAの知識なし。 Private Sub 提出先ID_NotInList(NewData As String, Response As Integer) Dim OutList As String Dim db As Database Dim rs As Recordset OutList = 提出先ID.Text Set db = CurrentDb Set rs = db.openrecordset("取引先マスター", dbopentable) rs.AddNew rs!提出先 = OutList rs.Update rs.Close db.Close 提出先ID.RowSource = "SELECT [取引先マスター].[提出先ID], [取引先マスター].[提出先] FROM 取引先マスター;" 提出先ID.Text = OutList End Sub
892 :
コギャル&中高生 :02/07/16 16:12
>>888 レスありがとうございます
日時は01,06,16って形です
クエリでLeft/Mid/InStr/Lenの各関数を使って定型な書式に変換、Cdate関数で
日付型に変換して・・・・・う〜ん、がんばってみます。
894 :
名無しさん@そうだ選挙にいこう :02/07/17 03:07
質問します、宜しければアドバイスお願いします。 生徒情報システムをAccessで作りたく考えています。 現在1万件程度の生徒情報があります。1年間で300件程度増えると思います。 これまでは1台のパソコンだけで生徒住所程度の簡単なものをAccess2000で作って 使っていました。 今後システムを新しく作り変えて生徒の住所等の基本情報と成績、テスト結果、 小テスト結果、卒後の進路などデータベース化したく検討中です。 それらをLANでつないだ3台のパソコンからデータ更新・追加したいのですが、 どのような方法をとれば良いか悩んでおります。 (関係ないですがこれについての予算はほとんどとれない状況です) パソコンOSは3台ともWinXPホームでLANを組む予定です。 その内1台をサーバーと見なしてそのサーバーだけにDBデータを置いて運用します。 Accessのバージョンは2000か2002どちらかをこれから準備する予定です。 私は簡単なVBAを使った事がある程度で、1つのデータを複数台から同時更新させる というのも初めての試みなのですが、新しく作り変えるシステムでは MSDEを利用して1台のサーバーにデータを置き、サーバー含めた3台で更新作業を 行うようにするのが良いのかな、と考えてます。MSDE使った事はないのですが。 このような運用方法で特に問題ないでしょうか? (複数台から同時更新と言っても極端な頻度ではないですが時間が重なると思います) また、3台で使うため、通常のAccessを3本購入すれば良いだけでしょうか? それともAccessの上位バージョン(?)などを準備しなければならないでしょうか? 宜しくお願いします。
>>893 1回だけなら , を / に置換してから、テーブルのデータ型変更でも
なんとかなるかな?
データ型の変更ができなかったら、もう一つ新規にフィールドを作成して
(元のテキスト型フィールドを「日付1」、新規に日付/時刻型のフィールドを
「日付2」とするね)
更新クエリを作成、「日付2」の「レコードの更新」にCdate([日付1])として
クエリを実行。
毎日とか毎月とかで定期的にやるなら、
Cdate(Left([日付1],2) &"/"& Mid([日付1],4,2) &"/"& Right([日付1],2))
かな。元が 2文字 区切り1文字 月2文字 区切り1文字 日2文字 場合ね。
今回はいらないみたいだけど、月と日が1文字か2文字が不定な場合とかは
(01,6,16とか02,12,1とか02,1,1の場合ね)
Instrで区切り文字が何文字目か出してそこまでが年、1つ目の区切り文字以降を
対象にInstrで区切り文字探して、その間が月、残りが日とかやらないといけないね。
年:Left([日付1],InStr([日付1],",")-1)
月:Mid([日付1],InStr([日付1],",")+1,InStr(InStr([日付1],",")+1,[日付1],",")-(InStr([日付1],",")+1))
日:Mid([日付1],InStr(InStr([日付1],",")+1,[日付1],",")+1)
もうちょっと綺麗に作れそうなもんだけど。
>Left/Mid/InStr/Lenの各関数を使って
って前に書いた手前、必要なさげだけど書いて見たよ。
896 :
893です :02/07/17 18:00
>>895 おぉ、細かいフォローまでありがとうございます
01,6,16とか01,06,16などの桁の違う日時表示もあったのですが
更新クエリを作成、「日付2」の「レコードの更新」にCdate([日付1])として
クエリを実行〜のやり方で成功しました(ACCESS2000です)
888さんのやさしい文体に惚れてしまいそうです(*´Д`*)ハァハァ
お世話になりました。
897 :
名無しさん@そうだ選挙にいこう :02/07/17 21:56
docmdメソッドについてお願いします。 更新クエリを二つつくりました。その更新クエリをコマンドボタンを押したら動くように docmd.openquery"更新クエリ1" docmd.openquery"更新クエリ2" としました。問題なく動くのですが、これだと、更新してもよろしいですか?というメッセージが2つ出てしまいます。 これを、一回だけにすることはできないでしょうか? 更新クエリは共に同じテーブルからデータを抽出しています。学年2を3に、1を2にするという処理です。 ご指導よろしくおねがいします。
898 :
名無しさん@そうだ選挙にいこう :02/07/17 22:03
アクセス2000を使っております。 マクロあるいはVBAでテーブルのフィールド名を変更する方法はありますか?
>890さん コードを詳細に検証したわけではないのですが、 入力チェックのプロパティは「はい」になっていますか? シングルステップで実行して、おかしな動きをしているところが 特定できませんか? >894さん 「1年間で300件程度増える」というものでしたらMSDEに手を出さず Accessだけで単体でつくっても問題ないように思います。 1つのAccessにはデータテーブルのみを格納し、別のMDBにフォームや モジュールなどを置くという形式になります。 「簡単なVBAを使った事がある程度」であるなら、MSDEよりも、 Accessだけで作られた方が楽だと思います。 もちろん、勉強にもなるからMSDEで作りたい!という事でしたら 問題ないですが・・・。 Accessはインストールする分購入しておけば問題ないです。 >897さん 片方のクエリに Docmd.SetWarnings False を使ってはいかがでしょう?詳細はヘルプをご覧下さい。 >898さん マクロでは知りませんが、VBAではできます。 でもDAOを使う必要があります。 テーブルじゃなくてクエリでよければ、簡単に見せかけのフィールド名は 変えられますね。
900 :
クワトロ=バズーカ :02/07/17 23:21
質問があるのですがお願いします。 現在Macのファイルメーカーで営業先リストを作っています。 これをWinのアクセスに切り替えたいのですが、リストの取り込みなど を簡単に行う方法はあるのでしょうか? というか、そもそもファイルメーカーとアクセスでデータのやり取りは 出来るのでしょうか・・・?
連続スマソ >897さん よく見たら、更新してるのはこれだけですか? 「学年2を3に、1を2にするという処理」 もしそうなら、クエリが2つもいらないです。IIFを使って一度のクエリで 済みますよ? はずしていたらスミマセン。
>900さん ファイルメーカは使った事無いのでわからないですが、 CSV形式に落とせませんか? 多分できるんじゃないかなぁ・・・判らないけど・・・ CSVだったらAccessで取り込めますから、探してみてください。
>>899 ありがとうございました。すみませんプロパティがあるなんて気づきませんでした。出来るようになりました。
904 :
名無しさん@そうだ選挙にいこう :02/07/18 00:00
>>901 レス2つもありがとうございます。おっしゃる通りの処理です。IIF関数というのを初めて聞いて調べてみたのですが
IF関数と何が違うのか、いまいちわかりません。真、偽を返すのであれば、IFでも同じではないのでしょうか?
教えていただけないでしょうか?
更新クエリの抽出条件に IIf([学年]=1,2,9) と書いてみたのですが、動きません。
選択クエリの抽出条件に同じ様に書いてみましたが、うごきませんでした。
ヘルプを見ると、演算コントロールの "ControlSource/コントロールソース" プロパティに次の式を入力します。
と書いてあるのですが、これはどこにあるのでしょうか?
質問ばかりでもうしわけございません。宜しくお願いいたします。
>904 > 抽出条件に IIf([学年]=1,2,9) と書いてみたのですが、動きません。 書くところが違う。フィールドに書くべし。 IF関数はAccessには存在しない。(VBAもしくは、Excelでしか使えないよ。)
>904さん ??IIF関数ですよ? 「演算コントロールの "ControlSource/コントロールソース" プロパティに」 なんて書いてありますか? コントロールソースとかは、クエリでは使わないです。 フォームとかレポートで使います。 IF関数はExcelの関数です。Accessでは使えないです。 「学年2を3に、1を2にするという処理」 なのに IIf([学年]=1,2,9) この式の意味がわからないです。 この式だと、学年が1の時は2、そうでなかったら9?? 再度IIF関数をヘルプで調べてみてください。
907 :
初心者です :02/07/18 00:38
しょうもない質問ですいませんが、全然分からないので教えてください。 現在、私が勤務している会社で、スタッフの属性をまとめたDBをテーブルで作成しています。 (氏名、年齢、血液型、通勤時の最寄駅 等) こいつを元に、「適任者検索フォーム」なるものを作成し、当フォームのテキストボックス に入力した値を元に、クエリーに値を代入して該当するレコードを抽出しようと思っています。 (クエリーでの抽出条件には[forms]![適任者検索フォーム]![(フィールド名)]を予め指定。) 例えば、ここで「血液型」と「通勤時の最寄の駅」のテキストボックスを「適任者検索フォーム」 に設定し、クエリーに入力値を移送して抽出しようとした場合、【O型で東京駅】の人を検索する ならば使用できるんですが、【O型のみ】や【東京駅のみ】の人を検索しようとした場合、テキス トボックスに入力していない側の検索条件が空白で設定されてしまう為、0件となってしまいます。 そこで、検索条件を指定していない方について、クエリーの検索条件に指定している[forms]![適 任者検索フォーム]![(フィールド名)]を参照しないようにする方法があれば教えてくださいませ。 他の方法もあるとは思いますが、これしか知らないので宜しくお願い致します。
>>907 "*" & [forms]![適任者検索フォーム]![(フィールド名)] & "*"
のように、アスタリスク(*)を使うといいんじゃない?
909 :
名無しさん@そうだ選挙にいこう :02/07/18 00:56
>>905 >>906 レスありがとうございます。IF関数は最初からなかったんですね。
>>しろさん、ヘルプを開いて、質問のところにIIFと入れるとNz関数、IIF関数の使用例、AccessBasicコードの〜
というのが出てきます。IIF関数の使用例をクリックすると
IIf 関数の使用例
次の使用例では、IIf 関数を使って [合計] フィールドを評価し、その値が 100,000 以上の場合は "以上" という文字列を、
100,000 未満の場合は "未満" という文字列を表示します。
演算コントロールの "ControlSource/コントロールソース" プロパティに次の式を入力します。
= IIf([合計] > = 100000, "以上", "未満")
と出てきてしまいます。ヘルプが壊れているのでしょうか?ちょくちょくおかしくなることはあるのですが・・・・・・。
式に、ついては、入力ミスでした。すみませんでした。
>907 >908さんの "*" & [forms]![適任者検索フォーム]![(フィールド名)] & "*" 頭にLikeもつけるべし。 Like "*" & [forms]![適任者検索フォーム]![(フィールド名)] & "*"
>909 壊れては無いと思います。元々変なのです。仕方ないです。 私の見てるのとバージョンが違ったのでしょう。スミマセン。 905さんの言うように、抽出条件に入れてもダメです。 クエリのデザインビューでフィールド名が入っている個所に 関数を入れて下さい。 IIF([学年]=1,2,IIF([学年]=2,3)) または Switch([学年]=1,2,[学年]=2,3) とやってみてください。
>>909 更新クエリの場合、[学年]フィールドの抽出条件は、
×IIf([学年]=1,2,9)
○1 or 2
レコードの更新に、[学年]+1
にすれば良いから、IIF関数は不要だと思うが。
>>907 さん、910さん
出来ました。本当に有難う御座いました。
迷惑ついでにもうひとつだけお願いします。
今回の場合はテキスト型の場合は可能だと思いますが、数字型がからむ場合は
どうしたらよいのでしょう。
たとえば、「年齢」(数字型)の場合、○○才以上といった検索条件にしようとした
場合は >=[forms]![適任者検索フォーム]![年齢] で行おう
と考えていますが、テキスト型のフィールドと並存させる場合に年齢を未入力とした
い時は、どうしたらいいのでしょうか?
重ね重ね申し訳ありません。
>>897 読み返していて気づいた点を。余計なお世話かもしれないけど。
中学校か高校か分からないけど、3年生を除外するために、
更新クエリ実行前に削除クエリを使う必要があるよね?
オプションをいじって警告Msgを出ないようにして、
Msgboxで、条件分岐するようにしたらどう?
>>913 Nz関数を使えば、Nullのときに0とできるよ。
>>915 ありがとうございます。
ちなみにNz関数はクエリーのフィールド名の個所に
Nz([forms]![適任者検索フォーム]![年齢])
といった感じでよかったですか?
>>916 ちと違うかな。検索条件でしょ?
0歳以上を全部拾うためには、
>=Nz([forms]![適任者検索フォーム]![年齢],0)
#第2引数は不要かな?
>>917 すいません。勘違いしてました。 ところで、検索条件に入力しても、Nz関数が認識してくれません。 (nzのまま) 会社のはAC2000ですが、今、家で試しているのは AC97なのでそのせいなのでしょうか? (でもHELPには出てきました。) くだらない質問ですいません。
919 :
WinMEのバグ? :02/07/18 10:19
えと、Access2000から吐き出したExcelシートをマクロで開こうということで Shell("Excel C:\DataPath\日本語ファイル名.xls") っつーマクロを書きました。(パスやファイル名は変数使ってごたごたやったりますが(^^;) これでWin98でもWin2000でも動いたのですが、何故かWinMeでだけ動いてくれません。 もしかしたら%名前欄%かもしれませんが、もし何か情報をお持ちの方がいらっしゃればアドバイスをお願いします(拝)
920 :
名無しさん@そうだ選挙にいこう :02/07/18 12:06
>>911 >>912 >>914 レスありがとうございました。すみません、バージョンを書くという初歩的なことを忘れていました。2000です。
これからやってみます。ありがとうございました。
メッセージボックスで分岐する方法は考えたのですが、そうすると、アクセスから出されるボックスと、自前のボックス
でダブルになっちゃうので、考え中です。アクセス側から出てくれるから、いいかなと思ったのですが・・・・。
921 :
名無しさん@そうだ選挙にいこう :02/07/18 12:07
>>914 すみません、読み落としていました。オプションでいじれるんですね。
では、自前のボックスを用意したいと思います。
こういう大事なボタンは、設計する上で簡単に押せるところに置かないほうがいいのでしょうか?
メインメニューに堂々とおいてあるのですが・・・・
>>919 Shell("Excel C:\DataPath\日本語ファイル名.xls")
Excel.exeではないでしょうか?
923 :
コギャル&中高生 :02/07/18 12:34
>912 その通りでした!頭固くなってるらしいな・・・ フォローThanks!です
>>924 ありがとうございました。
>>912 さんの言う通りにやってみました。
でも、いま作っているものは3年生は必要ないので、結局IIFで2年生は”卒”と入れることにしました。
レス下さったみなさん、大変勉強になりました。ありがとうございました。
926 :
名無しさん@そうだ選挙にいこう :02/07/19 00:07
教えて下さい。 クエリにて日付のフィールドを五日毎とか一週間毎に グループ化したいのですが、どうしたら良いのでしょうか?
>>926 自分なら剰余で判断する
ExcelならQuotient関数でいいが、Accessにはないので
Int([日付]/5)
×剰余 ○除数
がいしゅつかもしれませんが… 「生年月日」フィールドに入力すると 「年齢」フィールドに年齢が出るようにしたいのですが… どうも分かりません。 教えてください。
>>929 前に生年月日からの日数を取得し
365.25で割って切り捨てというのを聞いたことがありますが、
もっと正確に出る方法があれば私も知りたいです。
>929-930 1.DateDiffでとりあえず年数の差だけ計算し、 2.「月日」の部分だけを今日と比較して、誕生月日が今日より後だったら 上記1で出た年数から-1をする と言う関数を作ってます。 もっといい計算方法があるかもしれないけど、ご参考まで。
Access2000です 宛名ラベルを作成 レポートのデザインビューで住所とかの文字配置を 均等割付したところ、印刷時に右端が一部欠けてしまいます。 直す方法はありますでしょうか?
933 :
929の初心者 :02/07/19 11:32
>931 ああ…ありがとうございます。
>931,934 ありがとうございます
936 :
名無しさん@そうだ選挙にいこう :02/07/19 16:19
教えてください。 同じレコードのフィールドで最大値を探して そのレコードの別のフィールドに出すには どうしたらよいでしょう。 算数 国語 理科 社会 MAX A君 70 80 90 65 90 B君 80 75 95 80 95 のようなイメージです(実際の項目は全然違うんですが) どなたかよろしくお願いします。
937 :
名無しさん@そうだ選挙にいこう :02/07/19 17:07
Access2000です。 テキストを管理するために科目区分テーブルを 科目区分CD 科目区分名 1 WORD 2 EXCEL という感じで作成し、テキスト管理テーブルを テキストCD テキスト名 科目区分CD 101 WORD問題集 1 102 WORD参考書 1 201 EXCEL問題集 2 202 EXCEL参考書 2 のように作成し、クエリ・フォームをを作成してます。 ふたたびWORDのテキストを入力するときに科目区分CDに1を 入れるとテキストCDに103とはいる方法は無いでしょうか
>936 データのサンプルと情報が少ないのでなんともいえませんが、 恐らくテーブルの構造に問題がありそうですね。 もし、この例でいう科目にあたる部分の種類の数が少ないなら (この例の算数、国語、理科、社会...のように数種類しかないなら) テーブルを作り直したほうがいいでしょう。 そうしないと、以降も苦労しますよ。 名前 点数 科目ID A君 70 1 A君 80 2 A君 90 3 A君 65 4 B君 80 1 B君 75 2 B君 95 3 B君 80 4 こんな風に作り変えた方がよいです。 ご質問の件についても、DAOが使えるのでしたら何とかできますが、 クエリで行うのであれば、面倒でもアクションクエリを使って、 上記のような形式にテーブルを修正してからグループ化するのが 良いと思います。 他にもっとマシな考えのある方フォローお願いします。 >937 DMax関数を使ってみてはいかがでしょう?
>>927 お答えありがとうございます。
しかしバカなのか良く分かりません、、、。
意味不明の数字が出てきます。
>>939 あ、意味不明の数字なのは当然だよ。
1900年1月1日=2(だったと思う)として、
1900年1月2日=3
・
・
・
2002年7月20日=37458だから、(Excelとは1違うみたい)
Int([日付]/5)は、順に0、0、・・・7491となるはず。
先週、教えて頂いた方法を元に私なりに咀嚼して先に進もうと考えたのですが 結局行き詰まってしまいました。 ◎構築概要 顧客管理DBで、顧客通し番号(オートナンバー)をベースに各伝票の顧客番号に 一対多のリレーションを組み、その伝票をサブフォームにて内容を入力するようにしています。 そして伝票内容が項目多数で且つ、ほぼ同様内容を記入する為 既に記入済みの雛形(テンプレート)をコマンドボタンで 入力すべき(伝票)サブフォームに内容を送り、省力化をしたいと考えております。 ※DBの構築イメージとしては、顧客一人一人がバインダー各1冊に相当し 中に閉じられた用紙1枚1枚がサブフォームです。 その用紙は記入すべき各項目が決まった定型フォーマットです。 (実DBと若干違い、問題点だけクローズアップしています。) ◎現時点の問題点 雛形を追加クエリーで、サブフォーム元のテーブルに内容を加える事は出来ましたが リレーションの内容が反映されず、顧客番号が空欄の伝票テーブルになり 結果、現在開いているサブフォームに表示がされない状況です。 定型フォーマットの種類を"セットコード"として、選択可能になったりと 教えて頂いた手法で、関連した問題の外堀を埋めることは出来ましたが 本丸をどうしても私の技量では、クリアする事ができませんでした。 誠に恐れ入りますが、改めて賢人の方々のお知恵をお貸し頂けますでしょうか。 よろしくお願い申し上げます。
942 :
名無しさん@そうだ選挙にいこう :02/07/22 09:27
>940 フォローです。 > 2002年7月20日=37458だから、(Excelとは1違うみたい) Excelはロータス互換のため、「1900/2/29」が存在してたと思う。
しろさん、レスありがとうございます。 データは会社の他部署からもらったものなのですが、 種類が少ないので、教えていただいた通り、 アクションクエリで組みなおしてやってみます。
教えてください。。。 フォームから、データ入力する際に、 前レコードと同じ値だったら(例えば日付とか) Ctrl+F7を押すと、いちいち同じ値を打たなくても、 前レコードの値が出てくると聞いていたのですが、 Ctrl+F7を押すと、フォームの枠が選択されてしまいます。 これは、どういう現象なんですか? また、何かのボタンを押した場合、前レコードに入力した値が出てくるように設定 する方法はありますか? よろしくお願いします。
946 :
名無しさん@そうだ選挙にいこう :02/07/22 14:42
アクセス97 帳票作成フォームをつくってます 印刷位置や文字のサイズなどを設定する設定テーブルがあります(このテーブルは常に一行しか使わないです。違う 帳票を出す時は上書きになります。) で、それとは別に追加クエリで設定を保存する設定保存テーブルをつくっています その設定保存テーブルから設定テーブルへレコードを移す方法がわからないです。 誰か知恵を授けてください。 帳票名から保存設定を引っ張ってこれたらよいのですが。
947 :
名無しさん@そうだ選挙にいこう :02/07/22 15:42
2000です。教えてください。 時間が入っているフィールドを 集計クエリで合計したのですが、 24時間を越えると0:00に戻ってしまいます。 多分、根本的なところを間違えているとは思うのですが、 原因を自力で探せませんので、 どなたかお願いします。
>>940 確かにそんな数字が出ます。
しかし日付表示で出てこないのかな、、。
ピボットグラフビューなら週で分けられる
のに、何故フォームに付けるグラフには
日のグループ化が出来ないんだろう、、。
当座は、日付/時刻形式を数値形式に直して 24倍して対応できました。 もっとベターな方法があれば教えてください。
>>948 頭が固いね。
日付表示で出るわけないジャン。
質問なのですが、ACCESS97で テーブルAから作成したクエリの実行結果をいじると元のテーブルAのデータも 変わってしまうのですが、これを防ぐためにクエリの結果画面をいじられないように したいのですができるのでしょうか・・ お願いします。
>>951 クエリのプロパティのレコードセットをスナップショットにすると・・・
>>952 ママ(*´∀` *) ・・ありがとう・・・
>>950 ムムムもちろん教えて頂いた方法では
日付表示は出ないのは分かるんだけど、、。
>>954 日付表示といわれても、週単位なら、第○週と言えるけど、
5日単位はなんと言えば良いんだ?
集計期間: Format(Int([日付]/5)*5+1,"ge/m/d") & "〜" & Format((Int([日付]/5)+1)*5,"ge/m/d")
で、無理矢理日付表示する?
956 :
名無しさん@そうだ選挙にいこう :02/07/23 12:10
質問です。 accessの TABコントロールのように、明細が表示されている時、 その明細を複数行選択して、違う行に移動させたいのですが、 できるのでしょうか?
>946 更新クエリは? >947 日付時刻型はそうなってしまうので、数値型扱いにして 計算するしかない。 >956 移動って順序を変えると言う意味? Sort用の番号を入れるフィールドを作って、そこの番号を書き換えて ソートしなおすと言うのは?
958 :
名無しさん@そうだ選挙にいこう :02/07/23 15:58
アクセス97でコンボボックスに表示された値をサブフォームから検索するにはどうすればよいですか?
フォームを右上の×で閉じられないように右上の3つを消したいのですが こんな事できますかね? 変な説明ですいません・・・
検索ではなくてフィルタをかけるやりかたでもいいです よろしくねがいます >959 デザインビューで「フォーム」のプロパティでそれぞれ「なし」にする
961 :
名無しさん@そうだ選挙にいこう :02/07/23 17:10
こんにちは。 XP Pro (IIS 5.0) +Access 2002 を使用して MSDE + ASP のプログラムを作成しています。 会社で途中まで作ったものを家でも動かしたいのですが どうもうまく行きません。 本にもなかなか移行のことは書いていません。 基本的には会社での作成ですので、家のPCでは 動作確認等ができればよいと思っています。 PC名等は、会社と家では異なりますが、OS等は同じです。 やり方をご存知の方いらっしゃったら教えてください。 (参考になるWebでも構いません) 1)ADP ファイルと、データ上で使っている画像ファイル等を家のPCにコピー →これで一応Accessではオープンできます。 ただ、当然ASPではDBに参照できません。 2)SQLのEnterprize Managerで登録してみようとする。 →同じ名前(xxx.adp)でやってみたのですが、ファイルを置いたフォルダを 聞かれません。この辺が既に怪しそうです。。。 何か根本的に間違っているのでしょうか? よろしくお願いします。
>>945 ありがとうございました!!
謎が解決しました。
ボタンに Me![設定保存のサブフォーム].Form.Filter = "帳票名= " & Me![帳票選択] & "" これでおしいとこまでいけるんですが 「帳票選択」がコンボボックスになってます 実行すると「パラメータの入力」ボックスが表示され、そこにテキストを入れると サブフォームにフィルタがかかります
自己解決しました
965 :
名無しさん@そうだ選挙にいこう :02/07/23 19:08
>>961 「テーブル」「ビュー」「ダイアグラム」「ストアドプロシージャ」
はadpファイルには保存されない。
まずは会社でadpファイルを開いて[ツール]-[データベースユーティリ
ティ]にある「バックアップ」を使い、xxx.datという名前で保存する。
この中に作ったテーブルなどが保存される。
家ではadpファイルを開いて[ツール]-[データベースユーティリティ]
にある「元に戻す」を使って、xxx.datからMSDEのデータベースに復元
する。これで完了。
なお、バックアップがうまくできない場合は、[ファイル]-[接続]で
サーバ名を(local)に変えれば大丈夫(localの左右の括弧も必要)。
966 :
名無しさん@そうだ選挙にいこう :02/07/23 19:14
>>961 会社と家とでMSDEサーバ名が異なる場合は、家のPCで、MSDEの
「クライアントネットワークユーティリティ」を使って、会社と同じ
名前を「サーバ別名」として登録してしまう手がある。これ結構便利。
例えば会社のサーバ名がserver、家ではmypcの場合、
サーバ別名:server
サーバ名:mypc
ポート番号:1433(もしかしたら自動設定ができるかもしれん)
これで、serverという名前が家のPCでも使えるのでいちいち接続設定
をやり直す必要がなくなる。
967 :
名無しさん@そうだ選挙にいこう :02/07/23 19:19
>>965 >>966 ありがとうございます。
まだ会社なので、これからバックアップ取って早速家でチャレンジしてみます。
うまくいったら報告します。
969 :
名無しさん@そうだ選挙にいこう :02/07/23 19:24
>>965 一つ(念のため)確認させてください。
結局、adpファイルとバックアップするdatファイルの両方が
必要ということですよね。
後半で書いてある『家ではadpファイルを開いて。。。』というのは
会社で作ったADPファイルをメディアに落して持って行き
それを開いた上でということですよね(空のadpファイルを作ってという
ことではないですよね)
うまくいけばよいのですが。
970 :
名無しさん@そうだ選挙にいこう :02/07/23 20:04
>>969 もちろん両方必要です。
DAT : 「テーブル」「ビュー」「ダイアグラム」「ストアドプロシージャ」
ADP : 「フォーム」「レポート」「ページ」「マクロ」「モジュール」
971 :
名無しさん@そうだ選挙にいこう :02/07/23 20:07
>>970 ありがとうございます。
ひっくるめて持って帰ってやってみます。
972 :
名無しさん@そうだ選挙にいこう :02/07/23 22:51
良スレあげ
973 :
名無しさん@そうだ選挙にいこう :02/07/23 23:22
>>970 家に帰ってきました。コピーしてきたADPファイルを読み込もうとすると
「xxx(会社PC名)上のデータベースyyyに接続できません。データベースが存在し、
サーバが実行中であることを確認してください。」
と表示されてしまいます。
新規に作成すると無事動くので、サーバが実行中で無いということは無いです。
>>966 さんのアドバイスに従って、サーバ別名に会社のPC名 (ポート番号は自動)
を設定し、再起動もしたのですがやっぱりだめです。。。
バックアップまで行かないのですが、、、何か手がありますでしょうか?
よろしくお願いします。
974 :
名無しさん@そうだ選挙にいこう :02/07/24 00:50
データ型がテキスト型のまま、数字が入力された時だけ「¥」や「,」の入る 通貨表示をさせたいのですが、どうしたら良いのでしょうか? .
>>974 何のためにそんなことする必要があるんだ?
DBの基本を理解しろ。
976 :
名無しさん@そうだ選挙にいこう :02/07/24 01:06
>>973 家のMSDEにデータベースファイルがないのなら、Accessプロジェクト
を新規作成して、
プロジェクト名・・・適当でよい
データベース名・・・会社のものと統一
とすれば、とりあえず会社のものと同じ名前のデータベースが作成
される。
次に会社から持ち帰ってきたADPファイルを開いて、「元に戻す」を
実行。
これで大丈夫なはず。
977 :
名無しさん@そうだ選挙にいこう :02/07/24 01:12
>975 質問を変えて、金額と「未納」を同じテキストボックスに表示させるにはどうすれば良いのでしょうか? .
>>977 何のためにそんなことする必要があるんだ?
DBの基本を理解しろ。
980 :
名無しさん@そうだ選挙にいこう :02/07/24 02:10
>978 金額と文字を一緒に入力や表示をさせたい事って今まで無かったのでしょうか? .
>>980 978は実務を知らないヒッキー君だから聞いても無駄!
>>980 同じテキストボックスにする必要を感じたことはありませんが?
テーブルになぜ文字を一緒に格納する必要があるの?
金額フィールドと未納フィールドでも作れ。
>>977 「未納」=金額が0円(もしくはNull)なんだから、IIFを使え!
そうすれば通貨型で済む
984 :
名無しさん@そうだ選挙にいこう :02/07/24 03:01
>983 「未納」以外に「領収済み」とか他の文字も入るので・・・・・ .
>>984 「請求金額」=「収納金額」の時「領収済み」と表示させ、
「請求金額」< 「収納金額」の時「超過」みたいな感じでは無理なの?
無理なら、IsNumeric辺りで判定して、Format関数を使うという手もあるけど、
数値が文字列と認識されるなど、演算上の問題が発生するのでお薦めはしないよ。
986 :
名無しさん@そうだ選挙にいこう :02/07/24 03:38
>985 ありがとうございます。 他の文字も入るので、上の方法は使えないですが そのフィールドは表示と印刷だけなので、下の方法は良いので どのように準備すれば良いのでしょうか? VBAとか関数とか引っ込んでしまうぐらいの初心者なのでお願いします ゚・(´Д⊂・゚・ .
987 :
名無しさん@そうだ選挙にいこう :02/07/24 09:14
>>976 おはようございます。アドバイスありがとうございます。
既に会社に来てしまったので、家で適当に作ったものを持ってきて試しています。
少し分からないので教えてください。
>家のMSDEにデータベースファイルがないのなら、Accessプロジェクト
>を新規作成して、
>プロジェクト名・・・適当でよい
>データベース名・・・会社のものと統一
>とすれば、とりあえず会社のものと同じ名前のデータベースが作成
>される。
これはできました。新しいADPを作ればよいということですね(白紙の) ・・(A)
>次に会社から持ち帰ってきたADPファイルを開いて、「元に戻す」を
>実行。 ・・・(B)
これが分からないのですが、このADPがうまく開けません
>>973 と表示されてしまいます。
無理やり未接続なら開けますが
ただ、 B開くとAが閉じてしまいます。。。どうやって元に戻すというのを
やればいいのでしょうか?
元に戻すというのは ツール→データベースユーティリティ→SQLデータベースの復元
でよいのでしょうか?
質問ばかりですいません。よろしくお願いします。
988 :
名無しさん@そうだ選挙にいこう :02/07/24 10:50
>>987 >ツール→データベースユーティリティ→SQLデータベースの復元
その通りです。(私は2000を使ってるので少し違うみたいだ)
もしダメなら、ADPファイルを開いてみて、エラーが出てもとりあ
えず無視。そして[ファイル]-[接続]を開いて、サーバ名を(local)
に変更。その後、SQLデータベースの復元を実行してみると接続
できるかもしれませんが・・・
989 :
名無しさん@そうだ選挙にいこう :02/07/24 10:52
それから、(A)は、家のMSDEに新規データベースを作るために一時的に 必要なだけで、作り終わったらゴミ箱にポイして構いません。 で、(A)を閉じて、今度は(B)を開いて・・・ということです。 説明不足でスマソ
990 :
名無しさん@そうだ選挙にいこう :02/07/24 11:00
質問です。 accessの TABコントロールのように、明細が表示されている時、 その明細を複数行選択して、違う行に移動させたいのですが、 できるのでしょうか? マウスで、ドラッグして、行の順序を変えたいのですが、できませんか?
>990 >accessの TABコントロールのように、明細が表示されている時、 タブコントロールでそんなできんような。タブオーダーの話かね? タブオーダーの並べ替えのように並べ替えたいと。 ん〜普通にはむりぽ。まず、データベースは表計算と違って、 「並び順を保持しない」わけだ。で、並び順をクエリの並べ替えで指定しないと 表示しなおすたびに並び順が変わると思ってた方がいい。 だから、Accessの仕様には選択してドラッグすると並び順を入れ替える、なんて 機能は実装されてない。実装する意味がないからね。 で、ど〜してもそんな機能が欲しいなら、VBAをゴリゴリ書いてなんとかしろって こった。たとえば、 テーブルに「並び順」フィールドを作って、現在の並び順で間を100ぐらい空けて データを作成。フォームのレコードソースを「並び順」を並び順にしたクエリを指定。 フォームに置いた「並び順用選択」ボタンのクリック時のイベントで レコードの主キーを配列の変数に入れる。で、配列の何個目まで使っているか を保持する変数に1って入れる。ここにもう数字が入っていたらその数字+1を入れて そのインデックスの配列に主キーを入れる。 でフォームに置いた「並び順用この下に入れる」ボタンを押した時、配列に入って いる主キーのレコードの「並び順」を「並び順用この下に入れる」ボタンを押した レコードの「並び順」より大きくて、次に大きい「並び順」より小さい数にする。 その後、DAOかなんかで、「並び順用この下に入れる」ボタンを押したフィールド以降の レコードの並び順を100ぐらいに広げる。 って書いても自分でも良くわかんないや。まあがんばれ。
ADPと一緒にxxx.MDFも持ち帰ってアタッチする。db_attachだっけ?
993 :
テーブルの値の規定値について :02/07/24 13:05
すいませんが、おしえてください。 下記のようなテーブルで、主キーであるID番号の列の値の規定を 日付と事業所が合体した文字列にしたいのですが、そういう方法 ってありますでしょうか? ID番号(主キー) 日付 事業所名 20020720 2002/7/20 本店 20020723 2002/7/23 東京支店 ID番号のプロパティの規定値のところに format([日付],"yyyymmdd")&""&[事業所] のような感じで入れようと試みたのですが、式ビルド画面では [日付]も[事業所]も選択できず、困ってました。 お手数かけてすいませんが教えてください。
994 :
名無しさん@そうだ選挙にいこう :02/07/24 15:08
順位付けVBAに関してお願いします。回数ごと、学年ごとに順位付けをして テーブルに格納する下記のVBAを作成したのですが更新できません、といわれて止まってしまいます。 バージョンは2000です。なにか良い方法がありましたら、ご教授お願いいたします。 Dim db As DAO.Database Dim rs As DAO.Recordset Dim fldNo As Field Dim flddata As Field Dim count As Integer Dim sql As String Dim jhozon As Integer Dim juni As Integer sql = "" sql = sql & " SELECT" sql = sql & " T2002年度生徒名簿マスタ.学年," & vbCrLf sql = sql & " Tテスト順位.英語," & vbCrLf sql = sql & " Tテスト順位.英語順位" & vbCrLf sql = sql & " FROM Tテスト順位 INNER JOIN T2002年度生徒名簿マスタ ON Tテスト順位.生徒氏名 = T2002年度生徒名簿マスタ.生徒氏名" & vbCrLf sql = sql & " where Tテスト順位.第X回 = " & Forms![F選択フォーム]![cmb回数] "And T2002年度生徒名簿マスタ.学年 =" & Forms![F選択フォーム]![cmb学年] & vbCrLf sql = sql & " ORDER BY Tテスト順位.英語 DESC;" Set db = CurrentDb Set rs = db.OpenRecordset(sql) Set fldNo = rs.Fields("英語順位") Set flddata = rs.Fields("英語") If rs.BOF = False Then rs.MoveLast rs.MoveFirst Do Until rs.EOF rs.Edit ←ここで止まってしまう。 count = count + 1 If flddata <> jhozon Then juni = count jhozon = flddata End If fldNo = juni rs.Update rs.MoveNext Loop rs.Close End If db.Close count = 0 Set rs = Nothing Set db = Nothing
>993 入力をフォームで行うようにして、そのとき作成。
996 :
名無しさん@そうだ選挙にいこう :02/07/24 15:21
>>988 >>989 コメントありがとうございます。
会社にはOfficeXPが1台しかなく、もう1台の2000とのやりとり(2000形式)で
やってみました。
うまく行っているようです。ありがとうございまいた。
ただ1つだけ確認させください。
1)MSDEに新規データベース作成
→これはうまく行きました。
2)その後ダミーのADPは捨て、本物のADPを未接続で立上げ
→これもOK
3)その後、1)で作成したデータベースに接続
★このとき、接続はできるのですが、一旦作成されていたテーブルが消えてしまいます。
これは問題ないのでしょうか?
その後、datファイルからリストアすると復元はされます。
ただ、簡単なテーブルしかまだ作っていないので、3)で消える(一覧からは無くなる)というのが
問題ないのか心配です。
どなたかのコメントで、テーブルはadpに入っているということをアドバイスいただきましたが
新規データベース(名前は一緒)に接続時に何かデータが欠落するということはないでしょうか?
とりあえずASPで、データの内容を参照するのはOKでした。
よろしくお願いします。
>994 Helpより >次のような場合に Edit メソッドを使用するとエラーが発生します。 >カレント レコードが未定義の場合。 >Connection、Database、または Recordset オブジェクトが読み取り専用で開かれている場合。 >レコードに更新可能なフィールドがない場合。 >Database または Recordset を別のユーザーが排他モードで開いている場合。(Jet ワークスペースの場合) >カレント レコードが含まれているページを別のユーザーがロックしている場合。(Jet ワークスペースの場合) んでさ>Connection、Database、または Recordset オブジェクトが読み取り専用で開かれている場合。 このへん怪しくないかな?変数sqlをクエリで開いて編集できる?
999 :
名無しさん@そうだ選挙にいこう :02/07/24 17:32
a
1000 :
名無しさん@そうだ選挙にいこう :02/07/24 17:33
1000げっゅう
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。