Access VBA質問箱 IV

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

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


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

【6050】Re:クエリの抽出条件
発言  まっち  - 05/8/26(金) 12:58 -

引用なし
パスワード
   ▼クロ さん:
SELECT 株価.会社コード, 会社情報.会社名, 株価.年月日, 株価.終値
FROM 会社情報 INNER JOIN 株価 ON 会社情報.会社コード = 株価.会社コード
WHERE (((株価.会社コード) Like "[Forms]!「F_抽出条件]![txt会社コード]") AND ((株価.年月日) Between "[Forms]![F_抽出条件]![txt開始日]" And "[Forms]![F_抽出条件]![txt終了日]"));

これでいいのでしょうか?
・ツリー全体表示

【6049】Re:クエリの抽出条件
回答  クロ  - 05/8/26(金) 12:50 -

引用なし
パスワード
   6042の投稿は試してますか?
会社コード、開始日、終了日をF_抽出条件フォームに入れて開いたまま
例)1212/200001/200012
でクエリを実行しても「データ型うんねん」のエラーが出ますか?

そのクエリを「SQLビュー」にしてコピペしていただけませんか?
・ツリー全体表示

【6048】Re:クエリの抽出条件
発言  まっち  - 05/8/26(金) 12:35 -

引用なし
パスワード
   ▼クロ さん:
>株価テーブルの年月日(数値型)にはどのようには入ってますか?
>1.株価テーブルを開いてこの値が欄の右寄りか左寄りか?

右寄りで200001です。
・ツリー全体表示

【6047】Re:クエリの抽出条件
回答  クロ  - 05/8/26(金) 12:32 -

引用なし
パスワード
   株価テーブルの年月日(数値型)にはどのようには入ってますか?
1.株価テーブルを開いてこの値が欄の右寄りか左寄りか?
2.200001(2000年01月の意)のように入っているか
 違う場合はどのように入っているか?
・ツリー全体表示

【6046】Re:クエリの抽出条件
発言  まっち  - 05/8/26(金) 12:16 -

引用なし
パスワード
   ▼クロ さん:
うーーーん。。「データ型が一致しません」と言われました(;0;)どうしてでしょう。新規作成して保存したフォームを開いて、「開始日」と「終了日」に数値を入力。そして、Enter押しても何も変わりませんが良いのですか?
難しいです・・。
・ツリー全体表示

【6045】出来ました!!
質問  サチチ  - 05/8/26(金) 12:00 -

引用なし
パスワード
   ▼小僧 さん:

すみません。フォームの名前にスペースが入っていたようで・・。
とったら、キチンと動きました〜!!
ありがとうございます。

さて、午後の授業をお願いします。m(__)m
・ツリー全体表示

【6044】勘違い?
質問  サチチ  - 05/8/26(金) 11:53 -

引用なし
パスワード
   ▼小僧 さん:

勘違い?していた様です。。
テキストBOXに2000とか入れるのですね?
2000と入れたら、パラメータ入力というのが出て『Forms!結果表示.txt年』
に再度2000と入れたら、値が変わりました。
txt年と、パラメータと2回入力するのですよね?2回入力するのなら、
OKでした!!
・ツリー全体表示

【6043】Re:フォームの値をパラメータクエリに
発言  小僧  - 05/8/26(金) 11:52 -

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

>フォームのtxt年の所に、数字がでるのですよね?
>何も出ません・・・詳細欄は何もいじってません。

いや…txt年に「1990」と入れると「1990」年から3年分、
       「1991」と入れると「1991」年から3年分のデータが

出るはず…なのですが…。
・ツリー全体表示

【6042】Re:クエリの抽出条件
回答  クロ  - 05/8/26(金) 11:47 -

引用なし
パスワード
   う〜ん。根本的に何か違うような…

グラフを作成するためには、先ずそれに見合うテーブル/クエリが
必要です。

今回の場合はクエリ(抽出条件付き)を利用してグラフを作成したいのですよね。

まずは、新規作成でフォームを作成します。
新しいフォームのダイアログで「デザインビュー」を選択してOKしてください。
この状態でテキストボックスを3つ作ってください。
1つめのテキストボックスを選択状態で右クリックし、「プロパティ」を選択し
ます。プロパティが現れますので「その他」タブの「名前」
「txt会社コード」としてください。
同様に2つ目は「txt開始日」、2つ目は「txt終了日」としてください。
それぞれのラベルや配置は適宜に変更してください。
これを「F_抽出条件」として保存します。
このフォーム(F_抽出条件)を開いて、会社コードを入れて、開始日と終了日に
も200001のような形式で値を入れてください。最後の「終了日」を入れ終わった
ら、Enterキーを押してください。
フォームはこのまま開いたままにしておきます。

クエリの抽出条件を以下に変更してください。
会社コードの抽出条件に
[Forms]![F_抽出条件]![txt会社コード]
年月日の抽出条件に
Between [Forms]![F_抽出条件]![txt開始日] And [Forms]![F_抽出条件]![txt終了日]
としてください。

この状態でクエリをデータシートビューにするとフォーム(F_抽出条件)で指定した
レコードが表示されますか?
まずはここまで…

※テーブルの「年月日」には「200001」のように値が入っているという仮定です。
 違うなら、どのように入っているか書いてください。
・ツリー全体表示

【6041】Re:フォームの値をパラメータクエリに
質問  サチチ  - 05/8/26(金) 11:32 -

引用なし
パスワード
   ▼小僧 さん:

(ToT)出来ませーん。

>フォーム「結果表示」のフォームヘッダを広げて、
>テキストボックス「txt年」を配置して下さい。

ここは、3年目の横に作ればいいのですか?作りました。
でもって、名前をtxt年。
イベントの更新後に
>Private Sub txt年_AfterUpdate()
>  Me.Requery
>End Sub
を貼り付けさせてもらいました。[イベント プロシージャ]にしてあります。


>「クエリ3年」をいじります。
いじりました。記入していただいたものを貼り付けました。

フォームのtxt年の所に、数字がでるのですよね?
何も出ません・・・詳細欄は何もいじってません。
・ツリー全体表示

【6040】Re:クエリの抽出条件
回答  まっち  - 05/8/26(金) 11:27 -

引用なし
パスワード
   ▼クロ さん:
メールの書き方まで指導していただいて有難いです。
「パラメータの入力」というダイアログボックスは、グラフウィザードの「完了」ボタンを押した後自動的に現れるのではないのですか?本当に何も分かっていなくてすみません。
・ツリー全体表示

【6039】任意のレコードのみを抽出
質問  たんけん  - 05/8/26(金) 11:26 -

引用なし
パスワード
   はじめまして。よろしくおねがいします。

フォームで社員のリストを表示し、リストで選択された社員の情報のみをExcelにエクスポートしたいのですが、
 ・リストで選択された社員のみを表示する
 ・クエリで表示されるすべての情報をエクセルにエクスポートする
ということは掲示板を見てなんとか出来たのですが、この2つを組み合わせて行う方法がわかりません。


'リストで選択された社員のみを表示する

  Dim ctl As Control
  Dim varItem As Variant
  Dim strWhere As String
  Dim strQuery As String
  Dim MyFile As Variant

  Set ctl = Me!lst_Select
  If ctl.ItemsSelected.Count = 0 Then
    If MsgBox("社員が選択されていません。全員抽出しますか?" , _
               vbQuestion + vbYesNo) = vbNo Then
      Me!lst_Select.SetFocus
      Exit Sub
    End If
  Else
    For Each varItem In ctl.ItemsSelected
      If strWhere = "" Then
        strWhere = "'" & ctl.ItemData(varItem) & "'"
      Else
        strWhere = strWhere & ",'" & ctl.ItemData(varItem) & "'"
      End If
    Next
    strWhere = "[社員コード] In (" & strWhere & ")"
  End If
 
  strQuery = "Q_社員情報抽出"
  DoCmd.OpenQuery strQuery, acNormal, acEdit
  DoCmd.ApplyFilter strQuery, strWhere

'クエリで表示されるすべての情報をエクセルにエクスポートする
  MyFile = "c:\社員情報.xls"

  Set Fso = CreateObject("Scripting.FileSystemObject")
  DoCmd.TransferSpreadsheet acExport, _
          acSpreadsheetTypeExcel9, strQuery, MyFile, True

となっています・・・

アドバイスをお願いします。
・ツリー全体表示

【6038】フォームの値をパラメータクエリに
回答  小僧  - 05/8/26(金) 11:07 -

引用なし
パスワード
   ▼サチチ さん:

>お願いします!そうそう、フォームでは、1年目・2年目・3年目の縦計と
>横計も出したいなーなんて・・・。

まぁ、順々にやっていきましょう。

フォーム「結果表示」のフォームヘッダを広げて、
テキストボックス「txt年」を配置して下さい。

次に「クエリ3年」をいじります。

現在のパラメータは [年度を入力] ですが、
ここを Forms![結果表示].[txt年] とします。(2箇所ありますよね)

PARAMETERS Forms![結果表示].[txt年] Long;
TRANSFORM Count(T_疾病管理.ID) AS 人数
SELECT T_疾病管理.診断名, T_疾病管理.ms_msg
FROM T_疾病管理
GROUP BY T_疾病管理.診断名, T_疾病管理.ms_msg
PIVOT (Left(T_疾病管理.管理開始,4)-Forms!結果表示.txt年)+1 & '年目'
In ('1年目','2年目','3年目');


テキストボックス「txt年」の値をパラメータとして
「txt年」が変化する度にフォームの値が変えるのが目的なのですが、
このままですと見た目が更新されません。

「txt年」の更新後処理に

Private Sub txt年_AfterUpdate()
  Me.Requery
End Sub

とコードを記述して下さい。

テキストボックスの値を変える度に件数が変わるようでしたら成功です。
長くなりましたが、まずはここまで…。


>先生!よろしくお願いします。

先生なんて言うと授業料取りますよ(笑)
・ツリー全体表示

【6037】OKです!
質問  サチチ  - 05/8/26(金) 10:42 -

引用なし
パスワード
   ▼小僧 さん:

順調です!台風の去った、晴天。このまま、順調に行くことを願って・・・。

お願いします!そうそう、フォームでは、1年目・2年目・3年目の縦計と
横計も出したいなーなんて・・・。
それと、インポートの件も・・・。

ちなみに、1年目・2年目の表示は、その年の表示は出来ないのですよね?
2000年・2002年など1年間があいたり、何年から3年だっけ?と思っちゃうかしら?
なんて、思ったので。欲張りすぎてはいけないので、出来なければ、OKです。

先生!よろしくお願いします。
・ツリー全体表示

【6036】Re:数値のみ入力したい場合
お礼  Seri  - 05/8/26(金) 10:30 -

引用なし
パスワード
   ▼YU-TANG さん:
>▼Seri さん:
>>ご意見ありがとうございます。
>
>ということは、後出し NG 路線を変える気は無い、ということですね。
>ま、何をもって使いやすいとするかは人それぞれなので、それも良い
>でしょう。
>
>前回のレスにも書いたとおり、入力規則で対応する方法は分かりません
>ので、後はフォームの [エラー時] イベントを使うくらいでしょうか。
>
># ヘルプの使用例そのまんまですが。
>
>Private Sub Form_Error(DataErr As Integer, Response As Integer)
>
>  Const conInvalidDataType = 2113
>  Dim strMsg As String
>
>  If DataErr = conInvalidDataType Then
>    Response = acDataErrContinue
>    strMsg = "数値を入力してください。"
>    MsgBox strMsg
>    ActiveControl.Undo
>  End If
>
>End Sub
>
>それでは、頑張ってください。

ありがとうございます。がんばります。
・ツリー全体表示

【6035】Re:クエリ3年動きました!!
回答  小僧  - 05/8/26(金) 10:29 -

引用なし
パスワード
   ▼サチチ さん:

>感動!!動きました!!

おぉ、これで先にすすめますね。

ではクエリ3年を元にフォームを作ってみましょう。

Access のオートフォーム機能をそのまま使います。
「オートフォーム:表形式」、元になるテーブル/クエリ「クエリ3年」

フォームの名前を「結果表示」とでもしておいて下さい。

このフォームは開く度に「年度を入力」ときかれる感じになると思います。
このままだと不便ですので、ここまでできたら次のステップへ…。
・ツリー全体表示

【6034】Re:クエリの抽出条件
回答  クロ  - 05/8/26(金) 10:09 -

引用なし
パスワード
   ▼まっち さん:
引用が変ですよ?相手の引用は「>」がひとつ(基本)
自分の文章はこの引用マークは要りません。

>「グラフ期間」フォームを作成すると、グラフ作成の段階でパラメータの入力と
>いうダイアログボックスが表示され、そこで[開始日]に200001[終了日]に
>200012と入力するはずなんですが・・。パラメータの入力というダイアログボッ
>クスが表示されません。

パラメータクエリを作成するなら

会社コード Like[会社コードを入力してください(あいまい検索可)]

年月日 Between[開始日を入力ください]And[終了日を入力してください]

とクエリの条件を変更してください。

[Forms]![グラフ期間]![会社コード]はフォームを指定しています。
そのフォームの「会社コード」や「開始日」「終了日」が入ってないとダメですよ。
・ツリー全体表示

【6033】クエリ3年動きました!!
質問  サチチ  - 05/8/26(金) 9:59 -

引用なし
パスワード
   ▼小僧 さん:

感動!!動きました!!あきらめかけてたのですが、
まだ、がんばれそうです。

まだ、ゴールじゃなかったのですよね。。
その後の、ご指導お願いします。
・ツリー全体表示

【6032】Re:毎年の集計について
発言  小僧  - 05/8/26(金) 9:54 -

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

>先ほどの件に追加です。件数を3件にしてみたら、出来ました!!

うーむ、レコード数の問題でしたか。
もう1種類 SQL を組んだので試してみてください。

先ほどのSQLと動作は同じなのですが、少し変えてみました。

PARAMETERS [年度を入力] Long;
TRANSFORM Count(T_疾病管理.ID) AS 人数
SELECT T_疾病管理.診断名, T_疾病管理.ms_msg
FROM T_疾病管理
GROUP BY T_疾病管理.診断名, T_疾病管理.ms_msg
PIVOT (Left(T_疾病管理.管理開始,4)-[年度を入力])+1 & '年目'
In ('1年目','2年目','3年目');

こちらのSQLで動くと良いのですが…。
・ツリー全体表示

【6031】Re:毎年の集計について
質問  サチチ  - 05/8/26(金) 9:38 -

引用なし
パスワード
   ▼小僧 さん:

先ほどの件に追加です。件数を3件にしてみたら、出来ました!!

しかし、今現在の106422件のデータでは、複雑な〜というエラーが
出てしまいます。件数が多すぎるとダメなんでしょうかね?
・ツリー全体表示

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