SQL文の連結がうまくいかずエラーが発生しています
- 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)'レコードセットのオープン アドバイスお願いいたします
- ohs40952
- お礼率13% (3/23)
- Microsoft ASP
- 回答数1
- ありがとう数8
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
whereの前に半角スペース入れてもダメですか?
関連する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 が入っています。
- ベストアンサー
- C・C++・C#
- 【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 値 :なし よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- プログラム(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
- ベストアンサー
- Visual Basic
- クエリに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 どなたかお助けください
- ベストアンサー
- SQL Server
- 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毎に金額の合計値などを集計したいというような感じです。 よろしくお願い致します。
- ベストアンサー
- Oracle
- 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行消して実行すると実行結果が返ってくるのです。 こういう場合はどうしたらよろしいでしょうか?
- 締切済み
- その他(データベース)
お礼
出来ました!! ありがとうございます!! こういうミスは本当に無くしたいです 気をつけていきます。 本当にありがとうございました! 感謝!