1

このコードをAccess2010データベースに使用していて、SQLステートメントの構文に問題があるようですが、ステートメントを正しくフォーマットする方法を一生理解できません。よろしくお願いします!

qdf = db.CreateQueryDef("Company_State_Q")

Dim strSQLSearch As String


strSQLSearch = "SELECT [Company Information].Company_Name, " & _
"[Company Information].Industry" & _
"FROM Company Information" & _
"WHERE [Company Information].State ='" & stateV & "'" & _
"ORDER BY [Company Information].Company_Name;"



qdf.SQL = strSQLSearch
4

1 に答える 1

12

あなたは使用する必要があります...

Debug.Print strSQLSearch 

...strSQLSearch文字列を作成した後のコードで。次に、イミディエイトウィンドウで文字列を表示できます(Ctrl+を使用してそこに移動しますg)。

イミディエイトウィンドウから、の値stateVを「CA」に設定し、次のように文字列をテストしました。

stateV = "CA" : ? "SELECT [Company Information].Company_Name, " & _
"[Company Information].Industry" & _
"FROM Company Information" & _
"WHERE [Company Information].State ='" & stateV & "'" & _
"ORDER BY [Company Information].Company_Name;"
SELECT [Company Information].Company_Name, [Company Information].IndustryFROM Company InformationWHERE [Company Information].State ='CA'ORDER BY [Company Information].Company_Name;

完成した文字列を実際に確認すると、strSQLSearch複数の問題を簡単に見つけることができます。

  1. IndustryFROMする必要がありますIndustry FROM
  2. FROM Company Informationする必要がありますFROM [Company Information]
  3. InformationWHEREする必要がありますInformation WHERE
  4. 'CA'ORDERする必要があります'CA' ORDER

SELECTステートメントのセクション間に改行を使用することを検討してください。dbエンジンは、スペースではなく改行に完全に満足しています。また、ステートメントを1つの長い行としてではなく、いくつかの短い行として読む方が簡単な場合があります。

Dim strSQLSearch As String
strSQLSearch = "SELECT ci.Company_Name, ci.Industry" & vbCrLf & _
    "FROM [Company Information] AS ci" & vbCrLf & _
    "WHERE ci.State ='" & stateV & "'" & vbCrLf & _
    "ORDER BY ci.Company_Name;"
Debug.Print strSQLSearch

また、コードの最初に...

qdf = db.CreateQueryDef("Company_State_Q")

DAO.QueryDefオブジェクトである必要があるため、キーワードをqdf使用して割り当てる必要があると思います。Set

Set qdf = db.CreateQueryDef("Company_State_Q")
于 2012-07-06T00:37:43.173 に答える