• ベストアンサー

ASP+アクセスでのSQLコメントについて

SQL文にコメントを入れたいのですが、下記エラーになります。下記コードでSQL文にコメント入れる方法を教えてください。 Microsoft JET Database Engine (0x80040E14) SQL ステートメントの後に文字が見つかりました。 SELECT * FROM sqltable where idnum like 'hoge';-- SELECT * FROM sqltable where idnum like 'hoge'--; を試して両方同じエラーでした。 Dim objCon Set objCon = Server.CreateObject("ADODB.Connection") objCon.Mode=1 objCon.ConnectionString = Server.MapPath("db1.mdb") objCon.Provider = "Microsoft.Jet.OLEDB.4.0" objCon.Open strSQL = "SELECT * FROM sqltable where idnum like 'hoge';--" SET result = objCon.Execute(strSQL) objCon.Close Set objCon = Nothing 環境は以下のようになります。 WinXP+IIS5+Access2003

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

  • ベストアンサー
  • rename
  • ベストアンサー率33% (2/6)
回答No.2

データベースはAccessを使用しているのですね。 であれば、コメントは記述できません。 ^^^^^^^^^^^^^^^^^^^^^^^^^ Accessを開いて、クエリで、 SELECT * FROM sqltable where idnum like 'hoge';-- を実行してみてください。 「SQL ステートメントの後に文字が見つかりました。」というエラーが出るはずです。 ASPとか関係なく、SQL文に問題があるのです。 ちなみに、 SQL-ServerやOracleではSQL文の中にコメントが書けます。 ASPで実行しても問題なく動きます。

cybert
質問者

補足

rename様 ご回答ありがとうございます。 >コメントは記述できません。 との事ですが、もしよろしければ ご回答頂いた情報が記載されている、 サイト名や書籍があれば教えて頂けますでしょうか?

その他の回答 (2)

回答No.3

> >コメントは記述できません。 > との事ですが、もしよろしければ > ご回答頂いた情報が記載されている、 > サイト名や書籍があれば教えて頂けますでしょうか? 問題はそこなんですか? VBScript のコメントとして記述するって話じゃなくて・・・ であれば、Access のヘルプのどこにも「クエリにコメントを記述できる」って書いてない。 ってのが理由になりませんか?

cybert
質問者

補足

問題はそこなんですか? そうなんです。 >SQL文にコメントを入れたいのですが・・・ と質問に書いたように、SQL文に書きたかったのです。 >であれば、Access のヘルプのどこにも「クエリにコメントを記述できる」って書いてない。 なるほど、納得できました。 アクセスは少し特殊とはいえコメントが使えないのは、 不思議に思ってしまったので。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちくわ。 えっと。。。? 普通に、「コメント文を書き込みたい」んですか。。。? SELECT * FROM sqltable where idnum like 'hoge' だったら、 「sqltableから、idnumがhogeと部分一致しているレコードを取ってくるSQL文です」とかのコメントを。。。 ですか??? SQL文にコメント。というよりは、ASPにコメント。ですよね。 ASPのコメント文は「'」で書きますので strSQL = "SELECT * FROM sqltable where idnum like 'hoge';" 'sqltableから、idnumがhogeと部分一致しているレコードを取ってくるSQL文です でコメントになると思いますよ-w-

cybert
質問者

補足

すいません言葉が足りませんでした。 プログラム内ではなく、SQL文に書きたいのです。 すいませんでした。 PS,通常SQLでは、コメントは--で書くと認識していますが、これは今回の環境でも変わりませんよね?

関連するQ&A

  • ASPでのSQLインジェクション対策

    ASPにて、ADOでAccessにアクセスする際にSQLインジェクション対策はどのようにしたらよいでしょうか。 現状は以下の様にしています。(name)は画面から受け取ったパラメータです。 Set aConn = CreateObject("ADODB.Connection") aConn.Provider = "Microsoft.Jet.OLEDB.4.0" aConn.ConnectionString = Server.MapPath("DB.mdb") aConn.open SQL = "SELECT A FROM TBL WHERE NAME = " & name ...... 宜しくお願いします

  • ASPからSQLサーバーへ接続できない

    色々な質問を見たのですが 環境などの違いもあり解決できず 困っています。 環境は1台のPC(W2000)にIIS+SQLサーバー2005デベロッパーエディションとか言うテスト用のバージョンをインストールしています。 また SQLサーバーはWindows認証を使っています。 SQLサーバーにマネジメントエキスプレスで接続して システムデータベースにPLEMIAというデータベース名を作り テーブルのシステムテーブルにpure_kihonというテーブルを作っています。 ASPにて試験的につないでみようと思い Dim objCon Set objCon = Server.CreateObject("ADODB.Connection") objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "Data Source=(local);" & _ "Initial Catalog=PLEMIA;" & _ "Integrated Security=SSPI;" objCon.Open strSQL = "SELECT * FROM [pure_kihon]" objRS.Open strSQL, objCon, 3 こうした場合  objCon.Open のところで引っかかり Microsoft OLE DB Provider for SQL Server (0x80004005) [DBNETLIB][ConnectionOpen (Connect()).]SQL Server が存在しないか、アクセスが拒否されました。 と出てしまいます。 SQLサーバー自体は稼働しているようなんですが 何がいけないのか よく分かりません。 どなたか解決策などご教授頂けると幸いです。 よろしくお願いします。

  • ASPでRecordCountが使用できない

    Accessの100件のデータを10行づつブラウザに表示したいのですが、rs.PageCount、rsRecordCountなど色々と試しましたが正しい結果が得られず 困っています。 rs.AbsolutePage、Rs.PageSizなども試してみましたが、やはり結果は-1しか返されません。 Set db1=Server.CreateObject("ADODB.Connection") db1.Provider="Microsoft.Jet.OLEDB.4.0" db1.ConnectionString=Server.MapPath("../master.mdb") db1.Mode=1 db1.Open ' Set rs1=Server.CreateObject("ADODB.Recordset") Rs1.Pagesize = 5 ' keyword = "ABC" ' SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'" Set Rs1=db1.Execute(SQL1a) Response.Write rs1.PageCount このようなリストで試しています。よき方法があれば是非 教えて下さい。 最終的にはSQL 7.0に置き換える予定です。 宜しく、お願いします。

  • ASPでRecordCountが使用できない(2)

    前回、指示をされた内容ででテストを試みましたがやはり、結果は-1 Set db1=Server.CreateObject("ADODB.Connection") db1.Provider="Microsoft.Jet.OLEDB.4.0" db1.ConnectionString=Server.MapPath("../master.mdb") db1.Mode=1 db1.Open ' Set rs1=Server.CreateObject("ADODB.Recordset") Rs1.Pagesize = 5 ' keyword = "ABC" ' SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'" Set Rs1=db1.Execute(SQL1a) Rs1.CursorType = adOpenKeySet intP = Rs1.RecordCount Response.Write "RecordCount = " & intp & "<BR>" MSDNの説明でRecordCountなど参照しましたが理解不足でしょうか ? 宜しく、お願いします。

  • VBscriptでAccessに接続。PCで結果が異なる。

    VBscriptでAccessに接続。 PC1ではDBの検索結果が表示されますが PC2では表示されません。 PC1はWindows XP Pro IIS Access 2000 PC2はWindows server 2003 IIs Access 2000 当然ながらソースは同じです。 プログラムの問題でしょうか。 それともなにか設定の問題でしょうか。 VBscript 部分 <% '========================================================================================================== Dim objCon Dim objRS Dim strSQL '======================================= dim objfs dim strFDIRNAME Set objFS = Server.CreateObject("Scripting.FileSystemObject") strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 '======================================= '##### コネクションオブジェクトの生成 ##### Set objCon = Server.CreateObject("ADODB.Connection") '##### 接続用パレメータの設定 ##### objCon.Provider = "Microsoft.Jet.OLEDB.4.0" Set objRS = Server.CreateObject("ADODB.Recordset") '##### MDBの絶対パス指定 ##### objCon.ConnectionString =strFDIRNAME & "\" & "meibo.mdb" '##### コネクションのオープン ##### objCon.Open '##### SQLの作成 ##### strSQL = "select DISTINCT 社員名 from TABLE " '##### レコードセットのオープン ##### objRS.Open strSQL, objCon, 3 Recnm=objRS.RecordCount Do Until objRS.EOF %> <OPTION value="<%=objRS("社員名").value%>"><%=objRS("社員名").value%></OPTION> <% '##### 次のレコードを参照 ##### objRS.MoveNext Loop end if %> <% '##### コネクションのクローズ ##### objCon.Close '##### コネクションオブジェクトの解放 ##### Set objCon = Nothing '================ %>

  • ASPでSQL Serverへアクセス

    お世話になります。 ASPでSQL Serverにアクセスしているのですが、 strSQL = "select * from data" dataの部分(テーブル)を全角文字のテーブル指定にするとエラーが発生します。どのように記述すればいいのでしょうか?

  • SQL-Server 6.5で最初の数行を抽出するには?

    SQL-Server 6.5で最初の数行を抽出するにはどのようにすればよろしいでしょうか? Oracleの場合、 SELECT * FROM TABLE_NAME WHERE ROWNUM <= 10; JETの場合、 SELECT TOP 10 * FROM TABLE_NAME; ですが、これをSQL-Serverで行う場合をご教授下さい。

  • ASP更新・変更ができない

    毎々お世話になってます。 ASP(VBScript)で更新・変更ができないのです。 db.Execute(StrSQL) 部分でエラーになり、 //db.Execute(StrSQL) を使用しない状態にするとエラーは出ませんが、更新・変更ができません。 <% //DB接続 Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "DBQ=" & Server.Mappath("dbname.mdb") // 1. SELECT文:SELECT * FROM テーブル名 // 2. INSERT文:INSERT INTO テーブル名 (フィールド名) VALUES (値) // 3. UPDATE文:UPDATE テーブル名 SET フィールド名=値 // 4. DELETE文:DELETE * FROM テーブル名 //データ変更 //--- 追加する文字列を変数にセット --- uID = Request.Form("uID") uTYPE = Request.Form("uTYPE") uNAME= Request.Form("uNAME") uMNAME = Request.Form("uMNAME") //--- データ変更SQL --- SQLstr = "UPDATE " & tablename & " SET " SQLstr = SQLstr & "[uID]=#" & uID & "#," SQLstr = SQLstr & "[uTYPE]=" & uTYPE & "," SQLstr = SQLstr & "[uNAME]=" & uNAME & "," SQLstr = SQLstr & "WHERE ID=" & uID //--- データ追加実行 --- db.Execute(StrSQL) //DB接続解除 ObjConn.Close Set ObjConn = Nothing %>

  • Access2000のADOのレコードセットに先頭一致SQLを指定できない

    お世話になっています。 さて、住所録があって、その住所の先頭と一致するレコードをSQLで抽出してその結果をレコードセットに代入したいのですが。 SQLは "SELECT 住所録.住所 FROM 住所録 WHERE 住所録.住所 Like '" & str住所検索 & "*';" というような感じです。(もうちょっといろいろあるけど) それで、 rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText rstはADOのレコードセットで、strSQLには上記のSQL文が代入されています。str住所検索には、検索したい住所の一部が代入されています。 これを実行すると、レコードセットにレコードが抽出されません。 WHERE句を 住所録.住所 = '" & str住所検索 & "';" と完全一致にすると抽出します。 しかし、全部の住所が一致するレコードを集めたいわけではないので、これでは困ります。 ちなみに、クエリーで実行するとちゃんと集まります。 なんとか、レコードセットにあいまい検索の抽出結果を代入できないでしょうか? ADOのレコードセットにはLike演算子は使えないのでしょうか? よろしくお願いいたします。

  • ASPでボタンクリック時にフォームのリフレッシュ

    こんばんわ。 質問です。 ASPで作成した質問ページに表示されている質問の回答と、テキストボックスに入力されている文字列をリフレッシュしたいです。 質問の回答は、ラジオボタンをチェックしてあります。 そして、このあと、ADO接続で、SQLサーバーに接続して、テキストボックスに入力されていた文字列を選択し、文字列がDB内にあれば、その文字列をテキストボックスに再表示します。 以下のようなコードを書きましたが、何も表示されません。 <% Dim objCon Dim objRS Dim strSQL Dim strUserID Dim strOCD 'フォーム内のリフレッシュを行いたい ' コネクションオブジェクトの生成 Set objCon = Server.CreateObject("ADODB.Connection") Set objRS = Server.CreateObject("ADODB.Connection") ' コネクションストリングの設定 objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=id;" & _ "Password=pw;" & _ "Data Source=server1;" & _ "Initial Catalog=data1" ' コネクションのオープン objCon.Open strUserID = obj.uerID.value set strSQL = "Select ID, dnum from emp Where CorpId='"& obj.userID.value &"'" 'レコードセットのオープン objRS.Open strSQL, objCon, 3 'EOF が True になるまで繰り返し Do Until objRS.EOF if objrs.RecordCount=0 then Msg "正しいIDを入力してください! Insert correct ID ! " else obj.ID.value = strSQL("txtid") obj.dnum.value = strSQL("txtdnum") end if '次のレコードを参照 objRS.MoveNext Loop 'コネクションのクローズ objCon.Close ' コネクションオブジェクトの解放 Set objCon = Nothing %> ご教示いただけると、幸いです。

専門家に質問してみよう