- ベストアンサー
Accessで家計簿を作成する方法
- Accessを使用して家計簿を作成していますが、変数を抽出条件に用いるクエリの部分がうまくいかず困っています。
- クリックしてもコンボボックスに何も表示されず、うまくいっていないようです。
- 解決策を教えていただけると助かります。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>教えていただいたとおりにプログラムを修正してみたのですが、やはり小分類名欄のコンボボックスに表示がでてきません。。 あらら、失礼しました。m(_ _)m プログラム上は問題ないと思うので、他に原因が有るかも・・・ (ちなみに、プログラムはAccess2000で動作確認しました。) >Me!小分類名.RowSource = strSQL この行の前に下記のように一行追加して、SQL文の内容を確認して見て下さい。 MsgBox strSQL Me!小分類名.RowSource = strSQL 出来れば、そのSQL文で新規のクエリを作ってみて、正常か確認してください。 クエリ → 新規作成 → デザインビュー 「テーブルを表示」のウインドウは [閉じる] 表示 → SQLビュー でSQL文を直接記述できます。 >なにか小分類名のプロパティで変更しなければないらない箇所があるのでしょうか 小分類名のコンボボックスで確認するのは 書式 列数 1 書式 列幅 空白 データ 値集合タイプ テーブル/クエリ データ 値集合ソース SELECT [小分類名] FROM 分類関連マスタ; これくらいでしょうか。 値集合ソースの初期値は無くても構わないですが、 取り合えず上記のように入れてみて、全ての小分類名が出るか確認してみて下さい。 >それともなにかデータ側の問題なんでしょうか・・ データの方で確認していただきたいのは、 SELECT [小分類名] FROM 分類関連マスタ; 上記のSQL文でレコードが選択されるかどうかです。
その他の回答 (2)
- venzou
- ベストアンサー率71% (311/435)
#1です。1つ説明を忘れていました。これも細かいことですが・・・ >"=" & Chr$(34) & Cls1 & Chr$(34) & ";" この部分のChr$(34)は " ダブルクオーテーションですが、 "= """ & Cls1 & """;" この様に文字列中に入れるときは2つ重ねて "" と書きます。 また、SQL文中の文字列は ' で括ってもいいので、 "= '" & Cls1 & "';" と書いても良いです。 こちらの書き方が一般的だと思います。 "=" & Chr$(34) & Cls1 & Chr$(34) & ";" これも間違いではないですので、お好みで。
- venzou
- ベストアンサー率71% (311/435)
リンク先も拝見しましたが、書いた方も苦労されてた様ですね。 うまく行かないのはやり方を間違えているからです。(^^; RowSourceで参照しているクエリを削除して作り直すのは良くないです。 修正案: ------------------- >Private Sub 小分類名_Click() 使いません。削除 >Private Sub 大分類名_Change() 使いません。削除 「変更時」、ではなく、「更新後処理」のイベントの方が良いので。 >Function 大分類で小分類(Cls1) 使いません。削除。 大分類名の更新後処理のイベントプロシージャを追加 Private Sub 大分類名_AfterUpdate() Dim Cls1 As String Dim strSQL As String Cls1 = "" & Me!大分類名.Value If Cls1 <> "" Then strSQL = "SELECT 小分類名 FROM 分類関連マスタ WHERE 大分類名 = """ & Cls1 & """;" Else strSQL = "SELECT 小分類名 FROM 分類関連マスタ;" End If Me!小分類名.RowSource = strSQL End Sub ------------------- この様に、小分類名.RowSource に直接SQL文を入れることが出来ます。この方が正常に動くと思います。 ついでに、フォーム内では、Me で自分自身のフォームを参照できます。 Forms!支出入力フォーム → Me >Cls1 = Forms!支出入力フォーム!大分類名.Value 細かいことですが、大分類名.Value が Null の場合にエラーになります。 Cls1 = Nz(Me!大分類名.Value,"") とするか、 Cls1 = "" & Me!大分類名.Value こんな感じで Null 対策が必要です。
お礼
こんなに長い質問に対し、ご回答頂き、 さらにソースまで書いていただき 本当にありがとうございます。 教えていただいたとおりにプログラムを修正してみたのですが、やはり小分類名欄のコンボボックスに表示がでてきません。。 なにか小分類名のプロパティで変更しなければないらない箇所があるのでしょうか・・・それともなにかデータ側の問題なんでしょうか・・
お礼
正常に動いてくれました!!何から何まで、ありがとうございました。 原因はプロパティの、 データ 値集合タイプ テーブル/クエリ でした。 元URLでプロパティ側の データ 値集合タイプ データ 値集合ソース は空にしたというような記述があったのでその通りにしていました^^; いままでオラクル、xml、js、asp等のコードベースものしかやってなかったので、こういった画面ベースのものは逆にとっつきにくいですが、勉強と思って完成まで頑張りたいと思います。 本当にありがとうございました!