Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


310 / 500 ページ ←次へ | 前へ→

【7021】データの抽出について
質問  くやっち  - 05/12/27(火) 19:24 -

引用なし
パスワード
   Access初心者なんですが、データの抽出を行いたいのです。
内容はテーブルに

店名  品名1   品名2   品名3   品名4
東京  みかん   りんご
大阪  りんご   バナナ   ぶどう   みかん
札幌  バナナ   みかん   りんご

となっているとします。
条件を「みかん」とした場合に、東京、大阪、札幌のレコードを、
条件を「りんご」とした場合に、東京、札幌のレコードを抽出できるようにしたいのですが、どのようにすればよいでしょうか?

品名には順不同でデータが入ります。また、品名を一つにする等はできません。
・ツリー全体表示

【7020】プリント時に印刷されないヘッダー部
質問  みつ  - 05/12/27(火) 16:54 -

引用なし
パスワード
   WinXP
Access2002です。

レポートのページヘッダーについて教えて下さい。
幾つかのレポートで発生する時があるのですが
ページヘッダーのテキストボックスやラベルが
プレビュー時は問題なく見えているのですが
プリント時に印刷されない場合があるのです。
そして少し印刷されないコントロールの大きさを
変更したりすると印刷されるという現象があります。
特に印刷時拡張や印刷時縮小などのプロパティは
デフォルトのままです。
Accessのバグということなのでしょうか。
・ツリー全体表示

【7019】Re:フォームから次のフォームに行くには
発言  小僧  - 05/12/27(火) 15:56 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。
すみません。ちょっと当方の勘違いがありましたので訂正です。

>下端に、レコード:|▲ ▲|がないフォームは連結ではないのですね。

こちらの勝手な想像でグレーアウト(表示はされていますが、灰色で選択できない状態)
になっているのかな、と思っていました。

▲のボタンの有無は、連結フォーム、非連結フォームに関わらず
フォームのプロパティにある「移動ボタン」によって表示・非表示を切り替える事が可能です。

連結フォーム、非連結フォームは

・フォームのレコードソース
・フォーム上に配置されたコントロール(テキストボックスやコンボボックス等)の
 コントロールソース

の有無によって変わります。

(コントロールソースが設定されている = 連結している)


WhereCondition で設定したものは、レコードソース対してフィルタを掛ける事なります。
ヘルプにも書いてあるのですが、SQL の Where 句に相当するものです。

例えば FORM01 から レコードソースが T_Temp に設定されている FORM02 に対して、
WhereCondition を "店コード = '" & 店コード & "'" として開くという事は、

SELECT * FROM T_Temp Where 店コード = Forms![FORM01]![店コード]

という SQL (クエリ)を基にフォームを開く事と同じとなります。
・ツリー全体表示

【7018】Re:フォームから次のフォームに行くには
お礼  にしもり  - 05/12/27(火) 12:17 -

引用なし
パスワード
   ▼小僧 さん:
すみません。
下端に、レコード:|▲ ▲|がないフォームは連結ではないのですね。
自分のは連結だと思っていました。
実際、下端にレコード:|▲ ▲|がないのに連結であるフォームをみたことがあるのですが。。
FORM02が連結フォームでない場合にもFORM02を希望どおり動かすことはかなり難しいそうですね。
もっとべんきょうしてから質問すべきだと自分で思いました。
失礼しました。
・ツリー全体表示

【7017】Re:フォームから次のフォームに行くには
発言  小僧  - 05/12/27(火) 10:51 -

引用なし
パスワード
   ▼にしもり さん:
おはようございます。

>DoCmd.OpenForm "FORM02", , , "店コード = '" & 店コード & "'"

は、

>>・FORM01 を帳票フォームで作成(連結フォーム)
>>・FORM02 を単票フォームで作成(連結フォーム)

という前提の元に提示させて頂いたコードですので、
FORM02が連結フォームでない場合まで動く訳ではありません。


>なお、いまわたしが問題にしているFORM02を直接開こうとすると、
>Forms!FORM02!CODE とダイアログボックスが出ます。
>ただしそこに1000と入れても希望のとおりに表示されません。

こちらは FORM02 の作りがどうなっているかが解りませんので当方には解りかねます。
FORM02がどのような作りになっているかが鍵になると思いますよ。
・ツリー全体表示

【7016】Re:フォームから次のフォームに行くには
質問  にしもり  - 05/12/27(火) 10:16 -

引用なし
パスワード
   ▼小僧 さん:
最適化してもだめでした。

FORM02をウィザードでつくったと申しましたが正確ではありませんでした。
テスト的にウィザードで作りました。
ウィザードでつくるとフォームの下端に、レコード:|▲  ▲|というのがでますよね。
いまわたしが問題にしているFORM02は、ウィザードでつくったものでなく手でつくったもので、
したがってレコード:|▲  ▲|はなく、当該レコードだけを表出させるというものです。

なお、いまわたしが問題にしているFORM02を直接開こうとすると、Forms!FORM02!CODE とダイアログボックスが出ます。
ただしそこに1000と入れても希望のとおりに表示されません。

問題はこのことと関係あるでしょうか?

また店コードは数値ではありません。
・ツリー全体表示

【7015】Re:フォームから次のフォームに行くには
発言  小僧  - 05/12/26(月) 15:12 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

店コードが 「1000」のレコードが存在しない、という訳ではなさそうですね…。

こちらの環境(Ac2002、WinXP)ですと、問題なく表示されます。
(ダブルクリック時に設定してあります。)

Private Sub 店コード_DblClick(Cancel As Integer)
  DoCmd.OpenForm "FORM02", , , "店コード = '" & 店コード & "'"
End Sub


もし、店コードが数値型でしたら、
  DoCmd.OpenForm "FORM02", , , "店コード = " & 店コード
とされてみて下さい。

また、色々とテストをしているうちに MDB の挙動がおかしくなる場合があります。
その場合は、

まず最適化を試す。
だめでしたら新規 MDB にテーブル、フォーム等全て移す。

などを試してみて下さい。
・ツリー全体表示

【7014】Re:フォームから次のフォームに行くには
質問  にしもり  - 05/12/26(月) 14:44 -

引用なし
パスワード
   ▼小僧 さん:
おっしゃるとおりにしました。
店コード='1000'という風にでます。
しかしFORM02には何も表示されません。
どうすればよいですか。
・ツリー全体表示

【7013】Re:フォームから次のフォームに行くには
発言  小僧  - 05/12/26(月) 13:15 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

>FORM02作成時にウィザードをつかったのですがそれがいけないでしょうか?

いえ、それはないと思われますよ。


>抽出条件として使えていない気がします。

という事ですので、FORM02に細工をして確認してみましょう。

FORM02 の「読み込み時」のイベントに

Private Sub Form_Load()
  MsgBox Me.Filter
End Sub

と記述してみましょう。

元のフォームからどのような条件でFORM02が開いたのかが確認できると思われます。
・ツリー全体表示

【7012】Re:フォームから次のフォームに行くには
質問  にしもり  - 05/12/26(月) 12:49 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

「,」をひとつ追加しました。
が、FORM02がひらいたあと、何も情報が表示されません。
素人かんがえですが、表形式で表示されている店コードを、クリックして次の単表形式で表示する際に
抽出条件として使えていない気がします。
FORM02作成時にウィザードをつかったのですがそれがいけないでしょうか?

なお質問の2点はわかりました。
ありがとうございました。

>2) は変数を使っているだけですので、1) と中身は一緒です。
中身は同じですね。

>この状態で TAB キー を押したり、Enter キー を押す事で入力が完了した事になり、
「確定」するということですね。


・ツリー全体表示

【7011】Re:フォームから次のフォームに行くには
発言  小僧  - 05/12/26(月) 11:15 -

引用なし
パスワード
   ▼にしもり さん:
こんにちは。

>>DoCmd.OpenForm "FORM02", , "店コード = '" & 店コード & "'"
>stDocName、stLinkCriteriaを宣言しているものがありました。

ごめんなさい。「,」が一つ足りていませんね。

1) DoCmd.OpenForm "FORM02", , , "店コード = '" & 店コード & "'"

2) stDocName = "FORM02"
  stLinkCriteria = "店コード = '" & 店コード & "'"
  DoCmd.OpenForm stDocName, , , strLinkCriteria

2) は変数を使っているだけですので、1) と中身は一緒です。


>具体的にはどういう意味でしょうか?

テキストボックスに「123」という値を書き込むとします。
「1」「2」「3」と入力した状態( 3 のとなりにカーソルがある状態)ですと、
ユーザがまだ入力を完了していない事になりますので、値は「Null」です。

この状態で TAB キー を押したり、Enter キー を押す事で入力が完了した事になり、
テキストボックスの値は「123」として認識されます。
・ツリー全体表示

【7010】Re:フォームから次のフォームに行くには
質問  にしもり  - 05/12/26(月) 8:55 -

引用なし
パスワード
   ▼小僧 さん:
一度できたとおもったのに、また出来なくなってしまいました。

>テキストボックスの値が確定しないと店コードは空のままです。(Null値)
>一度フォーカスをテキストボックス以外に移して値を確定させてから
>クリックを行ってみてください。

とは、具体的にはどういう意味でしょうか?
・ツリー全体表示

【7009】Re:フォームから次のフォームに行くには
質問  にしもり  - 05/12/25(日) 22:43 -

引用なし
パスワード
   ▼小僧 さん:
こんばんは。
連休中に何とかできました。
質問がございます。

(1)小僧さんのアドバイスにしたがうとこうなります。

Private Sub フィールド1_Click()
On Error GoTo Err_フィールド1_Click

 DoCmd.OpenForm "FORM02", , "店コード = '" & 店コード & "'"

Exit_フィールド1_Click:
  Exit Sub

Err_フィールド1_Click:
  MsgBox Err.Description
  Resume Exit_フィールド1_Click
  
End Sub

(2)ですがいろいろ見た教本には、stDocName、stLinkCriteriaを宣言しているものがありました。
実はそれでも出来ました。

Private Sub フィールド1_Click()
On Error GoTo Err_フィールド1_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "FORM02"
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_フィールド1_Click:
  Exit Sub

Err_フィールド1_Click:
  MsgBox Err.Description
  Resume Exit_フィールド1_Click
  
End Sub

(1)と(2)ではそれぞれどういう利点があるのでしょうか?

なお、まぎらわしいのでsubプロシージャの名前は店コードでなくフィールド1にしました。
・ツリー全体表示

【7008】Re:Accessにて!
お礼  初心者 しのぶ  - 05/12/23(金) 8:41 -

引用なし
パスワード
   ありがとうございます。やってみますね。何かありましたら
またお願い致しますm(__)m
・ツリー全体表示

【7007】Re:Accessにて!
回答  Gin_II  - 05/12/23(金) 0:59 -

引用なし
パスワード
   >1.をおおもとにし、2.〜5.のテーブルを繋げたいのですが、どうすればよいですか?

クエリで、各テーブルを選択して、結合してやればいいと思いますが、
何か問題が発生しますか?
・ツリー全体表示

【7006】Accessにて!
質問  初心者 しのぶ  - 05/12/22(木) 11:24 -

引用なし
パスワード
   会社で「個人情報」(住所や取得資格や教育履歴・・・などなど)を登録するDBを作成しています。下記の場合はどうしたらよろしいでしょうか?

1.「基本情報T」・・・社員の氏名、IDNo.、部署名などを登録
   ↑
  おおもとになるテーブル

2.「資格取得T」・・社員の取得した資格のテーブル(1社員に対し、何件ものデータがある)
3.「職務経歴T」・・入社時からの職務経歴(1社員に対し、何件ものデータがある)
4.「教育履歴T」・・入社時からの教育履歴(1社員に対し、何件ものデータがある)
5.「考課情報T」・・報酬に関わる評価の情報(1社員に対し、何件ものデータがある)

1.をおおもとにし、2.〜5.のテーブルを繋げたいのですが、どうすればよいですか?
社員のIDNo.をすべてのテーブルに入れてあるのですが、それをリレーションシップで繋ぐだけでよいのでしょうか?
1.のプロパティでサブデータシートを指定してみましたが、1つのテーブルしか繋げなくて。複数繋ぐ方法とかありますか?
説明が下手で意味が通じるかどうかぁ・・・。どなたかわかる方教えて下さい。
・ツリー全体表示

【7005】Re:エクスポート
回答  たぬき  - 05/12/21(水) 18:22 -

引用なし
パスワード
   ▼まのえ さん:
>こんにちわ。
>VBA初心者です。
>
>メインフォーム上からサブフォーム(クエリ結果)を「ファイル名を指定して保存」のようなエクスポートがしたいのですが、どなたか知っている方がいましたらお願いします。
>
>'DoCmd.TransferSpreadsheet
>上記の意味もよくわかりません。
>
>宜しくお願い致します。

バージョンがかかれていないのでよくわかりませんが
名前を付けて保存のような「ダイアログ」を使いたい
とのことだと思います。
古いACCESSだと残念ながらそれを簡単にできま
せん。
ただ、
1.Excelコンポーネントの利用
2.Windows API の利用
で実現可能です。
1は使用するマシンにExcelがインストールされてい
ることが前提です。
2は多少難しい方法です。

http://www.accessclub.jp/samplefile/samplefile_217.htm
http://homepage1.nifty.com/MADIA/vb/API/GetSaveFileName.htm
などをご覧になってください。

DoCmd.TransferSpreadsheetはExcelのような表計算の形で出力
します。
例えば以下のように書きます。
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
"Q_Excel", savefilename, True
似た命令でDoCmd.TransferTextがありますがこちらはテキスト形式
で出力します。

がんばってください。
・ツリー全体表示

【7004】Re:並べ替えについて
お礼  keisuke  - 05/12/21(水) 16:48 -

引用なし
パスワード
   ▼Gin_II さん:
ありがとうございます。
できました!!
・ツリー全体表示

【7003】エクスポート
質問  まのえ  - 05/12/21(水) 13:58 -

引用なし
パスワード
   こんにちわ。
VBA初心者です。

メインフォーム上からサブフォーム(クエリ結果)を「ファイル名を指定して保存」のようなエクスポートがしたいのですが、どなたか知っている方がいましたらお願いします。

'DoCmd.TransferSpreadsheet
上記の意味もよくわかりません。

宜しくお願い致します。
・ツリー全体表示

【7002】Re:並べ替えについて
回答  Gin_II  - 05/12/21(水) 13:33 -

引用なし
パスワード
   >Private Sub コマンド84_Click()
>  Me.OrderBy = "氏名 DESC"
  Me.OrderByOn = True
>End Sub

が必要だったような気がします。
・ツリー全体表示

310 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084685
(SS)C-BOARD v3.8 is Free