SQL文の連結がうまくいかずエラーが発生しています

このQ&Aのポイント
  • SQL文の連結に関するエラーが発生し、解決できません。デバッガーのような機能を使えないため、ソースコードの問題を特定するのが難しいです。ASPのデバッグについても質問し、自分ひとりでも問題を解決したいと考えています。
  • SQL文生成プログラムで、「Microsoft OLE DB Provider for SQL Server (0x80040E14) '.' 付近に不適切な構文があります。」というエラーメッセージが表示されています。ソースコードを提供し、アドバイスを求めています。
  • ASPのデバッグ方法について質問しています。VB6.0やVBAでは、ソースコード中のエラー箇所を特定するためにデバッガーを使用することができましたが、ASPではそれができないため問題が解決できません。自分ひとりでも成果を上げたいと希望しています。
回答を見る
  • ベストアンサー

SQL文の連結が、うまくいきません

いつもお世話になっております。  現在、SQL文生成プログラムを作成しているのですが  エラーメッセージ 「Microsoft OLE DB Provider for SQL Server (0x80040E14)  '.' 付近に不適切な構文があります。」  表示されて、どうしても解決出来ません  ソースを記載しますのでアドバイス頂けないでしょうか?  デバッガーみたいな事をさせてしまい、本当に申し訳ありません  開発者自分一人(ほぼ初めて)で、どうにも進みませんでしたので  お願いいたします。  ※--ASPのデバッグに関して  もう一つお聞きしたいのですが (出来ればこちらの質問も答えてくださると幸いです)  皆さんは、ASPのデバッグをどの様に行っていますか?  VB6.0やVBAの場合は、ソースが不完全やエラーでも  「F8」を押して、ソースの途中まで稼働させて  「現在格納されている変数の中身」等を確認して 割とエラー解決もスムーズに出来ましたが、ASPではそれが出来ないため  難航しています(Line*** と エラーメッセージだけを頼りに)  皆さんはASPの場合、どの様にエラー解消されていますか?  (どうにかして、自分一人でも安定して成果をあげていきたいので)  我流でも結構ですので、是非アドバイスお願いします SQL生成ソース '--SQL生成  strSQL = "select * from STA040, STA500M7"  '--SQL作成(抽出場合分け)  if check = "Day" then   strSQL = strSQL + "where STA500M7.CODE040 = STA040.CODE"  '--期日空白処理   Blank_out J_days_st,N_days_st,M_days_st,J_days_ed,N_days_ed,M_days_ed  '--受注日BetWeen   if J_days_st <> "" and J_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 BETWEEN " & J_days_st_sql & " and " & J_days_ed_sql & " "  '--受注日start○,End×   Elseif J_days_st <> "" and J_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 >= " & J_days_st_sql & " "  '--受注日start×,End○   Elseif J_days_st = "" and J_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_1 <= " & J_days_st_sql & " "  '--受注日start×,End×   Elseif J_days_st = "" and J_days_ed = "" then   End if  '--納期BetWeen   If N_days_st <> "" and N_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 BETWEEN " & N_days_st_sql & " and " & N_days_ed_sql & " "  '--受注日start○,End×   Elseif N_days_st <> "" and N_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 >= " & N_days_st_sql & " "  '--受注日start×,End○   Elseif N_days_st = "" and N_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_3 <= " & N_days_st_sql & " "  '--受注日start×,End×   Elseif N_days_st = "" and N_days_ed = "" then   End if  '--見積日BetWeen   If M_days_st <> "" and M_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 BETWEEN " & M_days_st_sql & " and " & M_days_ed_sql & " "  '--見積日start○,End×   Elseif M_days_st <> "" and M_days_ed = "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 >= " & M_days_st_sql & " "  '--納期start×,End○   Elseif M_days_st = "" and M_days_ed <> "" then    strSQL = strSQL + " and STA500M7.YYMMDD_10 <= " & M_days_st_sql & " "  '--納期start×,End×   Elseif M_days_st = "" and M_days_ed = "" then   End if 'strSQL = strSQL + "order by sta500m7.code ASC" 'strSQL = "select * from STA040,STA500M7 where STA500M7.CODE040 = STA040.CODE and STA500M7.YYMMDD_3 >= " & hiduke & " " 'strSQL = strSQL + " order by sta500m7.code DESC;"    End if    '↓ここがエラーだと表示されます(おそらくSQLが問題かと)    Set objRS = objCon.Execute(strSQL)'レコードセットのオープン  アドバイスお願いいたします

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

  • ベストアンサー
  • bitsu
  • ベストアンサー率34% (39/113)
回答No.1

whereの前に半角スペース入れてもダメですか?

ohs40952
質問者

お礼

出来ました!! ありがとうございます!! こういうミスは本当に無くしたいです 気をつけていきます。 本当にありがとうございました! 感謝!

関連するQ&A

  • 文字の連結がうまくいかない

    CString SQL_st; CString SQL_and; CString SQL_end; CString SQL_update; SQL_st = "update mac3data set read_flg = 1 where (seq >= "; SQL_and = ") and (seq <= "; SQL_end = ")"; SQL_update = SQL_st + st_seq + SQL_and + en_seq + SQL_end; 上記のように連結して実行すると、SQL_update には、 update mac3data set read_flg = 1 where (seq >= 1.00 までしか入っていません。 SQL_and 以後の文字が連結できません。 どこに問題があるのでしょうか? st_seq には、1.00 en_seq には、89.00 が入っています。

  • 【Access2003】クエリで動作するSQLがVBAで動作せず困っています。

    下記のソースを実行したところ、「パラメータが少なすぎます。2を指定してください。」というエラーが表示されました。 エラーが発生する箇所は「db.Execute strsql」です。 しかし、このstrsqlに書かれているSQL文をクエリで実行した所、問題なく動作しました。 なんとなく、クエリでは書けるものの、VBAでは書きない所があるのかなと思ったのですが、どのように修正すればよいか分かりませんでした。 その為、上記の現象について、ご教示いただける方がいらっしゃいましたら、よろしくお願いします。 【VBA】 Private Sub btn_Click() Dim db As DAO.Database Dim ws As DAO.Workspace Dim str As String Set ws = DBEngine.Workspaces(0) Set db = CurrentDb ' トランザクション開始 ws.BeginTrans strsql = "INSERT INTO T_W ( W_DAY )" strsql = strsql & "SELECT T_M.M_DAY" strsql = strsql & " FROM T_M" strsql = strsql & " WHERE (((Left([T_M].[M_DAY],4) & Mid([T_M].[M_DAY],6,2) & Right([T_M].[M_DAY],2))" strsql = strsql & " Between IIf(Nz([Forms]![F_1]![text_str])='',0,[Forms]![F_1]![text_end])" strsql = strsql & " And IIf(Nz([Forms]![F_1]![text_str])='',99999999,[Forms]![F_1]![text_end])))" strsql = strsql & " ORDER BY T_M.M_DAY" db.Execute strsql ws.CommitTrans End Sub 【フォーム:F_1】 テキストボックス:text_str テキストボックス:text_end コマンドボタン:btn 【データベース:T_M】 フィールド名:M_DAY    値  :2001/01/01    値  :2001/01/02    値  :2001/01/03 (以下略) 【データベース:T_W】 フィールド名:W_DAY    値  :なし よろしくお願いします。

  • プログラム(SQL他)質問です

     予約時間表をつくってのですが、 思うようにデータベースからデータを取ってくることが出来ません。 お願いします、教えてください。 今の状態では10時から11時の予約を表示しようとすると、10時だけではなく、11時のマスも埋めてしまいます。表は1~15日までの日の行(i)と、9~19時までの、時間列(j)からなっています。 DBの方は、年(yyyy)、月(MON)、日(DAY)、開始時間(A_TIME)、終了時間(B_TIME)会社名(CP)です。 必要な情報があれば、教えて下さい。 よろしくお願いします。 . i = 1 . For i = 1 To 15 Step 1 <TR><TD>@{i}日</TD> . For j = 9 To 20 Step 1 .pSQL = "SELECT * FROM kaigi1_tbl " .pSQL = pSQL & "WHERE YYYY = '" & today_nend & "' AND " .pSQL = pSQL & "MON = '" & mm & "' AND " .pSQL = pSQL & "DAY = '" & i & "' AND " .pSQL = pSQL & "((A_TIME <= '" & j & "') AND (B_TIME >= '" & j & "'))" .SQL pSQL .if ( WB_DETAIL_CODE = "100" )Then <TD><FONT>(空白)</FONT></TD> .elseif (j = 12)Then <TD><FONT>(空白)</FONT></TD> .else . STAT = 0 . LoopFetch . COMP = DBGetCol(6) . End Fetch . if (COMP = "n") THEN <TD><FONT COLOR="#FF0000">■</FONT></TD> . elseif (COMP = "h") THEN <TD><FONT COLOR="#0099FF">■</FONT></TD> . end if .end if . Next j </TR> . Next i

  • VBA IF文をCASE文にしたいのですが

    お尋ねします。VBAで以下のようなIF文をCASE文に書き換えたいのですが、うまくいきません。 どなたかアドバイスをいただけないでしょうか。 よろしくお願いします。 部分だけ抜き出していますが、文字列が日本語かどうかを判定しています。 CD = Asc(strNm) If CD >= -30561 And CD <= -26510 Then    '漢字(第一水準)"   i = i + 1 '文字数記録 ElseIf CD >= -26415 And CD <= -5468 Then   '"漢字(第二水準)"   i = i + 1 ElseIf CD >= -31936 And CD <= -31850 Then  '"カタカナ"   i = i + 1 ElseIf CD >= -32097 And CD <= -32015 Then  '"ひらがな"   i = i + 1 ElseIf CD >= -1444 And CD <= -949 Then    '"漢字(その他)"   i = i + 1 End If

  • クエリにSQL文を書き込みたい

    アクセス2000にてソフト開発しています Q受注グラフというクエリがあります。 データが毎月変化するので、これにVB内に記述したSQL文を書き込みたいのですが、どの様にすれば いいのでしょうか ちなみにSQL文は下記です。 SQL = "SELECT JS.受注年月, JS.部署名, JS.当月受注実績 AS 当月, " & _ "(JY.請負1*10000) AS " & m当月 & ", (JY.請負2*10000) AS " & m翌月 & ", (JY.請負3*10000) AS " & m翌々月 & ", " & _ "FORMAT((JS.受注達成率*100),""###.#"") AS [受注達成率(%)]" & _ "FROM T受注実績集計 AS JS INNER JOIN (T受注予定集計 AS JY INNER JOIN 部署コード AS BC ON JY.部署コード = BC.施工部署コード) " & _ "ON (JY.部署コード = JS.部署コード) AND (JY.実績年月 = JS.受注年月)" & _ "WHERE JS.受注年月 = '" & m実績月 & "'" & _ "ORDER BY BC.部署コード;" 宜しく御願いします

  • SQL分のWHERE句について

    SQLのWHERE句について ================================== ABC :入力値(2又は5バイトの可変) T.テーブル.フィールド:ABCが格納されているテーブル(格納すると同時に5桁になります。) 例:01(入力値)⇒01000(格納値) ================================== 参照時のWHERE句の作成の仕方を教えてください。 ※検索値が2桁の場合は、格納値5桁の前方2桁一致でHITさせます。  また5桁の場合は、格納値5桁の全一致です。 今考えているのでは、 IF ABC <> "" THEN IF LenB(ABC) = 2 THEN SQL_WHERE = SQL_WHERE & "AND (LEFT(T.テーブル.フィールド,2) = '" & ABC & "' )" ELSEIF SQL_WHERE = SQL_WHERE & "AND (T.テーブル.フィールド = '" & ABC & "')" END IF END IF です。 宜しくお願いします

  • EXCEL2003 VBAでのSQL文について

    「'#'付近に不適切な構文があります。」 というエラーが出ます。 ソースは以下の通りです。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Set cn = CreateObject("ADODB.Connection") cn.CommandTimeout = 0 cn.Open SRC_SQL Dim dateTarget_s As Date Dim dateTarget_e As Date dateTarget_s = CDate(Format$(dateTarget, "yyyy/mm/dd")) dateTarget_e = CDate(Format$(DateAdd("m", 1, dateTarget), "yyyy/mm/dd")) '指定年月(全て) strSql = "SELECT SUM(現金金額), SUM(クレジット金額), SUM(割引金額), SUM(出庫台数)" strSql = strSql & " FROM " & TBL_TEST strSql = strSql & " WHERE 物件NO = '" & p_strBukNo & "'" strSql = strSql & " AND 日付 >= #" & dateTarget_s & "#" strSql = strSql & " AND 日付 < #" & dateTarget_e & "#" Set rs = CreateObject("ADODB.Recordset") rs.Open strSql, cn - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - どこがおかしいでしょうか? イミディエイトウィンドで見る限りは、私には原因がわかりませんでした。 よろしくお願いします。

  • SQL文がかけません

    次のようなテーブルが有ります client_code , client_name, closed_day , receipt(入金額) ,sales(今月請求額) ,collection_date入金予定月 1 , aaa  , 201804 , 10000 , 30000 , 201806 1 , aaa  , 201805 , 20000 , 40000 , 201807 1 , aaa  , 201806 , 30000 , 50000 , 201808 2 , bbb  , 201804 , 40000 , 50000 , 201805 2 , bbb  , 201805 , 50000 , 60000 , 201806 2 , bbb  , 201806 , 60000 , 70000 , 201807 3 , ccc  , 201804 , 70000 , 30000 , 201807 3 , ccc  , 201805 , 80000 , 40000 , 201808 3 , ccc  , 201806 , 90000 , 50000 , 201809 ・ ・ ・ ここから下のような表を作りたいと思っています。 6月入金管理表 会社コード , 入金予定額 , 売上月 , 実績入金額 1 , aaa , 30000  , 201804 , 30000 2 , bbb , 60000 , 201805 , 60000 3 , ・ ・ こんな感じで各月での入金予定額(aaaの場合2ヶ月前の請求額、bbbは1ヶ月前) と、実際の入金額を比較したいと思っています。 しかし、SQL文がまったくわかりません。 SELECT 文中にCASE WHENを使って頑張ってみたんですが 1 , aaa , 30000  , 201804 ,  0 1 , aaa ,  0   , 201806 , 30000 のように、2行に分かれてしまいます。 現在のSQL文は汚いですが以下の感じです。 SELECT client_code , client_name , closed_day, CASE WHEN collection_date ='2018/06' THEN sales ELSE 0 end as '入金予定額' , CASE WHEN closed_day ='2018/06' THEN receipt ELSE 0 end as '入金額' FROM Data WHERE closed_day ='2018/06' OR collection_date ='2018/06' GROUP BY client_code , client_name ,closed_day , collection_date ,sales ,receipt ORDER BY client_code どなたかお助けください

  • ASPからのSQL文でエラーが発生

    ASPでoracleのデータを集計しようとしたところ、SQL文でエラーが発生してしまいました。 (ORA-00911: 文字が無効です。) 同じSQL文を「SQLPlus Worksheet」で実行してみたら、問題なく実行できました。 エラーの原因を教えてください。 SELECT CASE WHEN 処理CD = '1' AND 集計F = 'Y' THEN '1Y' WHEN 処理CD = '1' AND 集計F <> 'Y' THEN '1N' END AS kubun, COUNT(連番) AS kensu SUM(金額) AS kingaku FROM aaa WHERE 日付 = '200701' GROUP BY CASE WHEN 処理CD = '1' AND 集計F = 'Y' THEN '1Y' WHEN 処理CD = '1' AND 集計F <> 'Y' THEN '1N' END kubun毎に金額の合計値などを集計したいというような感じです。 よろしくお願い致します。

  • SQL文を教えてください

    初心者です。 SQL文を教えてください。 バージョンはOracle 9.2です。 SELECT LTRIM(TO_CHAR(SEQ_PB_TYOHYO.NEXTVAL,'00000000')) AS NO_TYOHYO ,TO_CHAR(SYSDATE,'YYMMDD') AS DT_SYORI ,TO_CHAR(SYSDATE,'HH24MISS') AS TM_SYORI ,UM.CD_TOKCOD ,TM.RN_TOKUI ,SUM(DECODE(HM.CD_HSYUCD,'000001',UM.SU_URIAGE)) ,SUM(DECODE(HM.CD_HSYUCD,'000001',UM.KN_URIAGE)) ,SUM(DECODE(HM.CD_HSYUCD,'000002',UM.SU_URIAGE)) ,SUM(DECODE(HM.CD_HSYUCD,'000002',UM.KN_URIAGE)) ,/* 以下省略(000012まである) */ From URIMEI UM ,TOKMAS TM ,HINMAS HM Where (UM.KB_NYURYO = 1 Or UM.KB_NYURYO = 3) And UM.KB_DATA = 1 And (UM.KB_URINYU = 1 Or UM.KB_URINYU = 2 Or UM.KB_URINYU = 3) And UM.DT_URINYU >= CONCAT(W_Date1,'01') And UM.DT_URINYU <= TO_CHAR(Last_Day(W_Date2),'YYMMDD') And UM.CD_TOKCOD = TM.CD_TOKCOD(+) And HM.CD_HSYUCD = UM.CD_HSYUCD(+) GROUP BY HM.CD_HSYUCD; SQLスクラッチパットにて実行すると 「ここでは順序番号は使用できません」と言うエラーメッセージが出ます。 で、上から5行消して実行すると実行結果が返ってくるのです。 こういう場合はどうしたらよろしいでしょうか?