VBAを使ってアクセスのフォームでデータ入力用の一覧を表示する方法

このQ&Aのポイント
  • VBAを利用してアクセスのフォームでデータ入力用の一覧を表示しようとしています。
  • 初めは正常に動作していたのですが、昇順にソートする必要があるためにエラーが発生しました。
  • 質問者は初心者であり、正しい書き方がわからないために困っています。
回答を見る
  • ベストアンサー

アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いまし

アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いました。 最初はORDER以降がなくWHEREからの()もなくて,組ID="&Me.C組で動いていたのですが,番号で昇順にする必要ができて,以下のように書くと一覧が表示できなくなりました… 書き方に間違いがあると思うんですが,初心者のためわかりません… どなたかご教授お願いいたします。 Private Sub Form_Open(Cancel As Integer) Me.生徒氏名.RowSource = "SELECT T_生徒.生徒ID, T_生徒.組ID, T_生徒.組, T_生徒.番号, [姓]+[名] AS 生徒氏名, T_生徒.性 FROM T_生徒 WHERE (((組ID) = & Me.C組)) ORDER BY T_生徒.番号 acs" End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • tohru999
  • ベストアンサー率49% (76/154)
回答No.2

Me.生徒氏名.RowSource = "SELECT T_生徒.生徒ID, T_生徒.組ID, T_生徒.組, T_生徒.番号, [姓]+[名] AS 生徒氏名, T_生徒.性 FROM T_生徒 WHERE T_生徒.組ID = " & Me.C組 & " ORDER BY T_生徒.番号 asc" で、どうでしょうか?

wakusan
質問者

お礼

ありがとうございます。解決しました。勉強になりました。今後に役立てます。

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

>書き方に間違いがあると思う そこに着目していながら先へ進めないのは確認の仕方がわからないってこと?。 確認の仕方がわからなければ、 また同じように行き詰ったら質問しなければ先へ進まないってことになり、 答えだけ聞いて終わらせるやり方は考えることしないので、あまりお勧めしません。 1)Me.生徒氏名.RowSource に文法誤りのない状態のSQLでできているか、確認。 2)SQLが問題ないなら、 実行させている箇所を確認。 「できない」ってことはそこが実行されていないこともある。 FORM_OPENであっているか。FORM_LOADとの違いを確認。 3)「RowSource」を変えるだけでいいのか。 使い方が間違っていないか確認。 こういう観点でできるところありますか?。

wakusan
質問者

お礼

 ご教授ありがとうございます。いろいろと調べてはみたのですが,文法にまだまだなれてなくて勉強不足でした。

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.1

ORDER BY T_生徒.番号 acs じゃなくて ORDER BY T_生徒.番号 asc では?

wakusan
質問者

補足

早速の回答ありがとうございます。 直してみましたが,まだ表示できません… すいません…

関連するQ&A

  • 値集合ソースの切替をVBAで

    あるフォームを、「開き方によって、フォーム上のコンボボックスの値集合ソースを切替える」のをVBAでやりたいのですが、 Private Sub Form_Open(Cancel As Integer) If Me.OpenArgs = "A" Then Me!氏名検索.RowSource = "SELECT 講師.氏名, 講師.フリガナ, 講師.ランク FROM 講師 WHERE (((講師.ランク) = Like '*A'))ORDER BY 講師.フリガナ;" ElseIf Me.OpenArgs = "B" Then Me!氏名検索.RowSource = "SELECT 講師.氏名, 講師.フリガナ, 講師.ランク FROM 講師 WHERE (((講師.ランク) =Not Like '*A'))ORDER BY 講師.フリガナ;" End If End Sub (実際は折り返していません) とすると、コンボボックスをクリックした時にエラーとなり クエリ式'(((講師.ランク)= Like '*A'))'の構文エラー:演算子がありません。 と表示されます。間違い箇所を教えて下さい。

  • アクセスのフォームで

    アクセスのフォームで、品番一覧というテーブルを基にした、F品番一覧というフォームがあります。 ヘッダー部に検索するコンボボックスがあり、品番一覧テーブルの品番を参照しています。 検索ボタンを押すと、コンボボックスの内容に当てはまるものが、フォームの詳細部に一覧として表示させる様にしたのですが、品番に"50#1"や"50#2"という#を使い、1と2を分けている物があるのですが、コンボボックスで、この#が付いた物で検索すると検索結果がなにも表示されません。#が付いていない物はちゃんと一覧が表示されます。 #が付いている場合でもちゃんと表示するにはどの様にしたら良いですか?テーブル側の#を取り除く事はできません。 検索ボタンのコードは Private Sub 検索_Click() Dim strFilter As String, strExp As String, aryOpe As Variant If Not IsNull(Me.txt氏名) Then strFilter = strFilter & " AND 品番 Like *" & Me.品番一覧 & "*" End If Me.Filter = Mid(strFilter, 5) If strFilter = "" Then Me.FilterOn = False Else Me.FilterOn = True End If となっています。 うまく説明できなくてすいませんが、誰か教えて頂けませんか? よろしくお願いします。 End Sub

  • ACCESS VBA 一覧から別フォームを開きたい

    顧客管理をしようとしています。 表形式のフォームで一覧を表示させています。 一覧の詳細セクションに「詳細」というボタンをつけていて、 すべての行に、詳細ボタンを表示させています。 この詳細ボタンを押したら、この顧客カード(単票形式のフォーム)を開きたいと思っています。 現在、下記の記述をしていますが、 「抽出条件でデータ型が一致しません」とのエラーメッセージが出ます。 どこを修正したら良いかわかりません。 わかる方、よろしくお願いいたします。 現在の記述 Private Sub コマンド29_Click() If Me.NewRecord Then MsgBox "新規レコードから詳細情報を表示することはできません。" Else DoCmd.OpenForm "顧客フォーム", , , "顧客ID='" & 顧客ID & "'" End If End Sub

  • サブフォーム用のテーブルのデータで検索をしてマスタフォームに表示したい。

    Access2000での質問です。 T_マスタ(氏名ID・氏名)・T_サブ(氏名ID・データ年・データ種類)というテーブルから F_マスタ・F_サブというフォームを作成し、 F_マスタの中にサブフォームとしてF_サブを入れています。(氏名IDでリンク) F_検索というフォームを作成し、 データ年・データ種類で検索するようにしました。 この結果を、F_マスタで表示したいのですが、 F_マスタはT_マスタから作成されているため、検索結果が 希望するものではなくなってしまいます。 F_サブでみればきちんと検索されているのですが、 それでは氏名がみれないので。。。 このようなことはできるのでしょうか? F_検索の検索ボタンのコードです。 ------- Private Sub コマンド1_Click() Dim SQL As String Dim WhereCond As String Dim condNendo As String Dim condSyurui As String 'データ年 If Me!データ年.Value <> "" Then condNendo = "(T_サブ.データ年 like '*" & Me!データ年.Value & "*')" WhereCond = WhereCond & " AND " & condNendo End If '種類 If Me!データ種類.Value <> "" Then condSyurui = "(T_サブ.データ種類 like '*" & Me!データ種類.Value & "*')" WhereCond = WhereCond & " AND " & condSyurui End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "F_サブ", acNormal, , WhereCond End Sub ------- *上記の「F_サブ」を[F_マスタ」で開くようにしたいのです。 宜しくお願いします。

  • アクセスの"検索"について

    いつもお世話になっています。 Accessのフォームにて、任意の郵便番号をテキストボックス(1)に入力し"検索ボタン"を押すと、 該当する住所がフォーム上のリストボックス(2)に一覧が表示され、 その中から任意の番号を1件選んで新たなテキストボックス(3)へ代入出来る、というようなシステムを作りたく考えております。 郵便番号は"郵便番号一覧"というテーブルにまとめており、 加えてクエリ( "Q_郵便番号")で郵便番号、住所等の項目を連結しています。(フォームも作成済みです) ただ、現在"検索ボタン"を押すと、全郵便番号が検索され、 もちろん郵便番号を選択するような事も出来ない状態で、構文作りに難航しています。 アイディアをお持ちの方、構文の作成についてご指南頂けますと幸いです。 現在、作成途上のVBAは下記の通りです。 Private Sub Form_Open(Cancel As Integer) 'リストボックスのプロパティの設定 With Me.(2) .RowSourceType = "Table/Query" .ColumnCount = 5 .ColumnWidths = "2.5cm;2cm;4.5cm;15cm" .BoundColumn = 1 .RowSource = "" End With Me.郵便番号検索.SetFocus End Sub Private Sub 検索ボタン_Click() '住所の検索 Me.(2).RowSource = "Q_郵便番号" Me.(2).Requery End Sub

  • データの入力を簡略化したい

    次のようなソフトを探しています。 データベースを構築するさい、たとえば ひとつめのテーブル(教室テーブルとする)に ID, 教室名 1, A組 2, B組 3, C組 とあって、もうひとつのテーブル(生徒テーブル)に、 教室ID, 生徒名 1, 山田 1, 田中 2, 鈴木 3, 斉藤 とあるとすると、山田さんと田中さんはA組。鈴木さんはB組、斉藤さんはC組にいることになります。 このふたつめの生徒テーブルにデータを入力していくさい、 わざわざ組テーブルから該当するIDを探して教室を指定しなくてはなりません。 この作業を簡略化することができるソフトを探しています。 つまり、IDではなく教室名で指定できるように、ふたつのテーブルを合体して作業できるようにしたいのです。 大変分かり難い文章だと思いますが、もし理解していただける方がおりましたら、アドバイスをお願いします。

  • Accessで家計簿

    いま下記URLをもとに家計簿を作成しております。 http://cropcrusher.web.infoseek.co.jp/shufuden/windowsfolder/accessx/acs.html#acs00 しかし「変数を抽出条件に用いるクエリ」の部分がうまくいかずこまっています。 以下作成ソース 【Form】 Option Compare Database Private Sub Calendar_GotFocus() Me.Calendar.Visible = True Me.Calendar.Value = Date End Sub Private Sub Calendar_Click() Me.年 = Year(Me.Calendar.Value) Me.月 = Month(Me.Calendar.Value) Me.日 = Day(Me.Calendar.Value) End Sub Private Sub 小分類名_Click() Forms!支出入力フォーム!小分類名.RowSource = "大分類毎小分類" End Sub Private Sub 大分類名_Change() Dim Cls1 As String Cls1 = "" Cls1 = Forms!支出入力フォーム!大分類名.Value Call 大分類で小分類(Cls1) End Sub 【モジュール】 Option Compare Database Function 大分類で小分類(Cls1) Dim dbs As Database, qdf As QueryDef, strSQL As String Set qdf = Nothing DoCmd.Close acQuery, "大分類毎小分類" DoCmd.DeleteObject acQuery, "大分類毎小分類" Set dbs = CurrentDb strSQL = "SELECT 小分類名 FROM 分類関連マスタ WHERE 大分類名" & "=" & Chr$(34) & Cls1 & Chr$(34) & ";" Set qdf = dbs.CreateQueryDef("大分類毎小分類", strSQL) End Function クエリは毎回作成されているのですが、 Private Sub 小分類名_Click() Forms!支出入力フォーム!小分類名.RowSource = "大分類毎小分類" End Sub の部分がうまくいっていないのか、クリックしてもコンボボックスになにも表示されません。長々と申し訳ありません。 もしよろしければどなたか教えてください、宜しくお願いします。

  • 【VBA】フォームの作り方

    サークルの活動管理表を作っています。 以下のようなエクセルの一覧に 「フォームでテキストを入力→ピボットテーブルで集計」 の流れです。 役職にはR,Tなどのアルファベットが5種類ほど入ります。 エクセル上ではこんな形でデータベースになっています。 ここに追加していくためのフォームです。 年 月 日 氏名ID 氏名 役職 区分ID 区分 金額

  • ACCESSを活用して商品変動を追いたい(別2)

    こちらのベストアンサーについて、 http://okwave.jp/qa/q8783133.html 以下は氏名、電話番号をKEY(該当者の一致条件)としていましたが、電話番号のみにした場合、いただいた構文がどこが変わるのでしょうか。 こちらは、氏名、電話番号がKEY(これを電話番号だけをKEYにしたい)。 ↓ SELECT T1.受付日, T1.受付日-T2.受付日 AS 切り替え, T1.氏名, T1.電話番号, T1.商品コード, T1.商品名, T1.数量, T1.価格 FROM (SELECT Q1.* FROM ★★ AS Q1 INNER JOIN (SELECT 氏名, 電話番号 FROM ★★ GROUP BY 氏名, 電話番号 HAVING Min(商品コード & 商品名)<>Max(商品コード & 商品名) ) AS Q2 ON Q1.氏名=Q2.氏名 AND Q1.電話番号=Q2.電話番号 ) AS T1 LEFT JOIN (SELECT DISTINCT Q1.受付日, Q1.氏名, Q1.電話番号 FROM ★★ AS Q1 INNER JOIN (SELECT 氏名, 電話番号 FROM ★★ GROUP BY 氏名, 電話番号 HAVING Min(商品コード & 商品名)<>Max(商品コード & 商品名) ) AS Q2 ON Q1.氏名=Q2.氏名 AND Q1.電話番号=Q2.電話番号 ) AS T2 ON T1.氏名=T2.氏名 AND T1.電話番号=T2.電話番号 AND T1.受付日>T2.受付日 WHERE T2.受付日 Is Null OR (T2.受付日= (SELECT Max(受付日) FROM ★★ WHERE 氏名=T1.氏名 AND 電話番号=T1.電話番号 AND 受付日<T1.受付日) AND Exists (SELECT 1 FROM ★★ WHERE 受付日=T2.受付日 AND 氏名=T1.氏名 AND 電話番号=T1.電話番号 AND 商品コード & 商品名<>T1.商品コード & T1.商品名)) ORDER BY T1.氏名, T1.電話番号, T1.受付日;

  • ユーザーフォーム

    こんばんは。 またまた教えていただきたく思います。ユーザーフォームにリスト ボックスをセットし、シート(商品一覧)のa2からy10までを表示 させたいのですがcまでしか表示できません。宜しくお願いします。 Sub リスト読み込み() Dim myDCount As Long, myDRange As String Worksheets("商品一覧").Activate myDCount = Worksheets("商品一覧").Range("b1").CurrentRegion.Rows.Count + 1 myDRange = "a2:y" & myDCount ListBox1.ColumnCount = 3 ListBox1.ColumnWidths = "60;60;60" ListBox1.RowSource = myDRange End Sub

専門家に質問してみよう