質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

2543閲覧

Access VBA 指定したデータの取込を実施し、機能としてフォームに実装したい

nekomura

総合スコア132

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2016/03/09 10:38

よろしくお願いいたします。
フォーム画面にボタンとテキストボックスを用意して、
hogeFrom とhogeToとしたテキストボックスに検索条件を入力し、
ボタンを押下するとaccessで作ったテーブル(ChargeInfo)のデータが以下の条件でフォーム上のリストに反映されるようにしたいです。

サンプルコードなど無い中でコーディングし、またコンパイルエラーも出てしまいます。
これが正しいのかもよくわかりません。
散々検索もしたのですが、いまいちうまくいかず、有職者の皆様にご教示いただければと思い投稿しました。

また、下記の設問③はコード未記入です。

よろしくお願いいたします。

①検索条件の「hogeFrom 」または「hogeTo」のいずれかが入力されていることを確認する。
いずれも未入力の場合「検索条件を指定してください。」のメッセージ
いずれかが指定されている場合、②以降の処理を実施する。

②検索条件を基に、テーブルデータよりデータ件数を取得する。
取得件数が500件を超える場合、「検索条件を指定してください。」のメッセージ
取得件数が500件以下の場合、③以降の処理を行う

③検索条件を基に、テーブルデータよりデータ件数を取得する。リストへ表示する。(編集不可)
Fromのみ指定時 hoge No >= '<入力値>'
Toのみ指定時 hoge No <= '<入力値>'
FromとTo指定時 hoge No >= '<入力値>' and hoge No <= '<入力値>'

Private Sub データ取得_Click()
On Error GoTo Err_データ取得_Click

Dim hogeFrom As Integer
Dim hogeTo As Integer

hogeFrom = Me.hogeFrom .Text
hogeTo= Me.hogeTo.Text

If IsNull(hogeFrom And hogeTo) Then \\\'検索条件が未入力の場合 MsgBox "検索条件を指定してください" End If If Not IsNull(hogeFrom Or hogeTo) Then \\\'いずれかが入力されている場合

Dim strSql As String

strSql = "SELECT ID 1 value FROM ChargeInfo" \\\ 'accsessのテーブルデータより接続文字列取得

Dim objCon As New ADODB.Connection \'ここでコンパイルエラー
Dim objRs As New ADODB.Recordset

objCon.ConnectionString = strSql.Value objCon.Open objRs.Open "tbmCountry", objCon, adOpenKeyset, adLockOptimistic Set Me.Recordset = objRs End If If objRs >= 500 Then MsgBox "検索条件を指定してください" End If

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Dim objCon As New ADODB.Connection \'ここでコンパイルエラー

ADOへの参照設定は済んでいますか?
もしまだなら以下を参考に設定してみてください。

Microsoft Visual Basic での ADO の使用

投稿2016/03/09 13:40

nabe3

総合スコア345

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekomura

2016/03/10 00:59

nabe3様 Dim objCon As New ADODB.Connection ご指摘のおかげで、上記箇所のコンパイルエラーは消えました。 設定参照は以前行ったつもりでしたので、気にとめていなかったのですが ご指摘いただいたので確認したところチェックが外れていました。 助かりました、ありがとうございます。 その後、他の箇所でコンパイルエラーが出たので、再度コードを練り直して また質問をさせていただくかと存じます。 また機会があればご教示ください。
nabe3

2016/03/10 03:48

小出しで申し訳ないですがまだ数点修正が必要な点がありますので追加で書かせていただきます。 接続先が同一アクセスファイル内のテーブルだと思いますので、 接続設定は次のように書き換えられます。 前) strSql = "SELECT ID 1 value FROM ChargeInfo" objCon.ConnectionString = strSql.Value objCon.Open 後) Set objCon = Application.CurrentProject.Connection レコードの取得方法は次のように書き換えます。 (ここで初めてtbmCountryというテーブルが現れるのが?です。) 前) objRs.Open "tbmCountry", objCon, adOpenKeyset, adLockOptimistic 後) Dim strSql As String strSql = "SELECT hoge_No, COL1 FROM ChargeInfo WHERE hoge_No = 1" objRs.Open strSql, objCon, adOpenKeyset, adLockOptimistic 上記[strSql =]の部分で、 > Fromのみ指定時 hoge No >= '<入力値>' > Toのみ指定時 hoge No <= '<入力値>' > FromとTo指定時 hoge No >= '<入力値>' and hoge No <= '<入力値>' を表現します。 結果が正しくとれているかどうかは、 Debug.Print objRs.RecordCount & " レコード" Debug.Print "取得結果:" & objRs.Fields(1).Value などとすると確認ができます。
nekomura

2016/03/10 07:18

nabe3 様 前半の部分で試行錯誤しており、やっとご指摘いただいた追記の修正点のところに今から取り掛かります。 追記いただいた点、まさに私が不明に思っていた点であり、とても参考になります。 ご丁寧にありがとうございます。 こちらをもとに、続きを作成していく所存ですのでまた、質問内容を練り直して再質問をするかもしれません。 よろしくお願いいたします。 また、頂いた内容に対して以下の返答をさせていただきますが、 何か不明点がございましたら再度ご教示願えますか。 >接続先が同一アクセスファイル内のテーブルだと思いますので、 はい、そうです。 そしてこの中には後述しますtbmCountryというテーブルへの接続文字列が格納されています。 >ここで初めてtbmCountryというテーブルが現れるのが?です。 vbaの文法にまだ不慣れのため、おかしな書き方をしています、すみません。 tbmCountryは、SQLサーバーにあるテーブルデータです。
guest

0

formからの取得結果をsqlのwhere句としてstrSqlの末尾に連結すりゃいいんじゃないすかー?

投稿2016/03/09 11:30

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekomura

2016/03/10 01:15

tkturbo様 ご回答感謝いたします。 現在、 objCon.ConnectionString = strSql.Value ← strSql の部分にチェックがつき コンパイルエラー:修飾子が不正 との表示が出ています。 ご教示いただいた内容なのですが、この objCon.ConnectionString = strSql.Value  の、strSqlの末尾にwhere句を連結ということでしょうか。 また、左辺に対しこの右辺はおかしいという事になりますか。 理解がまだ浅く、回答の真意をうまく汲み取ることができず申し訳ありません。 可能であれば、今一度ご教示いただければ幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問