よろしくお願いいたします。
フォーム画面にボタンとテキストボックスを用意して、
hogeFrom とhogeToとしたテキストボックスに検索条件を入力し、
ボタンを押下すると、accessで作ったテーブル(ChargeInfo)のデータ(接続文字列)を使って、
SQLサーバにあるテーブル”hogehogeCountry”の内容を取得し、フォーム上のリストに反映されるようにしたいです。
何度か同様の質問をしておりますが、一から自分で書いたコードのため、エラーが出るたびに進めなくなり、解決するたびに新しいエラー内容を記載し、再質問をさせていただいております。
(こういった投稿の仕方が違反であれば、教えていただければ幸いです)
本件では、
** strSql = "SELECT ID, COL1 FROM ChargeInfo WHERE ID = 1"
objCon.ConnectionString = strSql (ConnectionStringは接続文字列を指定するものなので、これではエラーになります)
の部分についてお伺いします。**
ConnectionStringに接続文字列を使って、データベースに接続することはできるようになったのですが、
その接続文字列を、コードに直接記述せずに、上記strSqlのように変数として使いたいのです。
今回チャレンジしているのは、
SQLサーバーへ接続する接続文字列を同一アクセスファイル内のテーブルに格納し、それを呼び出すSQL文を、本質問内容のものにしています(strSql)。
しかし、ConnectionStringを使うと、直接接続文字列を代入はできますが、その文字列を参照するSQL文を入れた変数を代入するとエラーになります。
ConnectionStringには、文字列を直にしか?入れられないようなので、
どのように記述をすればよいのかがまだ私のレベルでは実現できません。
つまり、
・アクセスのテーブルに接続文字列を格納(格納場所は、 "SELECT ID, COL1 FROM ChargeInfo WHERE ID = 1" 変数はstrSqlとしたい)
・そのstrSqlを、ConnectionString(または他の方法でも) **に使い,SQLサーバにあるテーブルの内容を取得したい。
**
・リストに表示したいデータは、SQLサーバの”hogehogeCountry”に格納されている **
・SQLサーバへの接続文字列は、同一Accessファイル内のテーブルに格納していて、**strSqlとして使用したい **
・汎用性を高めるため、接続文字列は直接コードに書かず、**Accessのテーブルに格納して呼び出して使いたい **
・コード内にあるように、ConnectionStringの使用にこだわっているわけではなく、望む結果になるのであれば他の方法でもかまわない
といった感じです。
現在記述しているコードは以下です。
可能であれば、他にも構文的におかしいところがあればご教示いただけると幸いです。
Private
1' On Error GoTo Err_データ取得_Click 2 3Dim invFrom As Variant 4Dim invTo As Variant 5 6invFrom = Me.invoiceFrom.Value 7invTo = Me.invoiceTo.Value 8 9 If IsNull(invoiceFrom) And IsNull(invoiceTo) = True Then '検索条件が未入力の場合 10 11 MsgBox "検索条件を指定してください" 12 Exit Sub 13 14 15 End If 16//(もしテキストボックスのいずれか(もしくは両方)に、検索条件として値が入っていた場合) 17以下より実現したい内容と、そのコード。 18・データを取得してリスト表示 19・データは、SQLサーバの”hogehogeCountry”に格納されている 20・SQLサーバへの接続文字列は、同一Accessファイル内のテーブルに格納していて、strSqlとして使用する 21 22 If Not IsNull(invoiceFrom) Or IsNull(invoiceTo) = True Then 'いずれかが入力されている場合 23 24 25 26’データをリストに表示 27Dim objCon As New ADODB.Connection 28Dim objRs As New ADODB.Recordset 29Dim strSql As String 30 31 Set objCon = Application.CurrentProject.Connection 32 33 strSql = "SELECT ID, COL1 FROM ChargeInfo WHERE ID = 1" 34 35 **objCon.ConnectionString = strSql **//ここでエラー 36 objCon.Open 37 objRs.Open "hogehogeCountry", objCon, adOpenKeyset, adLockOptimistic 38 39 //前回の回答者様からのアドバイスにより下記のようなコードも試していますが、”パラメーターが少なすぎます”とエラー 40 41' Set DB = CurrentDb() ' 42' SQLCommand = "SELECT ID, COL1 FROM ChargeInfo WHERE ID = 1" ' 43' Set q1 = DB.OpenRecordset(SQLCommand) ' 44 45 46 47 Set Me.Recordset = objRs 48 49 objRs.Close 50 objCon.Close 51 52 Set objRs = Nothing 53 Set objCon = Nothing 54 55 End If 56```。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/11 08:01