出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

エラーになってしまいます   ぴーぽさん [2002/02/26 18:58:49] [1745]
  SQL="単なる文字列"   北岳さん [2002/02/27 7:36:10] [1747]
    ありがとうございました!   ぴーぽさん [2002/02/27 9:08:23] [1748]
      SQL文のデバッグ   北岳さん [2002/02/27 9:49:31] [1749]
        Re:SQL文のデバッグ   ぴーぽさん [2002/02/27 14:56:46] [1752]
          Re:SQL文のデバッグ   北岳さん [2002/02/27 15:48:18] [1754]
            Re:SQL文のデバッグ   ぴーぽさん [2002/02/28 0:52:56] [1766]
      Re:ありがとうございました!   arikさん [2002/02/27 9:55:45] [1750]

[1745] エラーになってしまいます
投稿者:ぴーぽさん 2002/02/26 18:58:49
こんばんわ
現状aspで検索ツール作成しています
しかし、下記のようなエラーがでてしまうのです。

アプリケーションが要求した名前、または数値インデックスに対応するオブジェクトがコレクションで見つかりませんでした。

/union/invoice/result1.asp, 行 18
なにが行けないのでしょうか?
一応教科書にしたがって書いてるつもりです
ご教授頂ければ幸いです

<html>
<head><title>状況検索</title></head>
<body>
<h1>検索結果</h1>
<%
flag=False
Set rs=Server.CreateObject("ADODB.Recordset")
Set db=Server.CreateObject("ADODB.Connection")
db.Open "invoice"
SQL="SELECT * FROM cargo "
If Request("code")<>"" Then
If flag=False Then SQL=SQL & "WHERE ("
SQL=SQL & "((cargo.code)='" & Request.Form("cord") & "') "
flag=True
End If
If Flag=True Then SQL=SQL & ")"
%>
<td nowrap><%=rs("code")%></td>
<td nowrap><%=rs("name")%></td>
<td nowrap><%=rs("Com") & "部"%></td>
<td nowrap><%=rs("ad")%></td>
<td nowrap><%=rs("sheetNo1")%></td>
<td nowrap><%=rs("sheetNo2")%></td>
<td nowrap><%=rs("sheetNo3")%></td>
<td nowrap><%=rs("sheetNo4")%></td>
<td nowrap><%=rs("sheetNo5")%></td>
<td nowrap><%=rs("sheetway")%></td>
<td nowrap><%=rs("sheetinvoce date")%></td>
<td nowrap><%=rs("packing date")%></td>
<td nowrap><%=rs("delively date to ocs")%></td>
</tr>
<tr>
<td nowrap>
</td>
<td><%=rs("plac")%></td>
<td></td>
</tr>
<%%>
</table>
</body>
</html>

[1747] SQL="単なる文字列"
投稿者:北岳さん 2002/02/27 7:36:10
rs.open SELECT * FROM cargo WHERE ( 〜),db,3,3
というのが、検索を実際に実行させる命令文(複数あるうちの1タイプ)です。

SQL="SELECT * FROM cargo WHERE ( 〜)"
でも
ABC="SELECT * FROM cargo WHERE ( 〜)"
でも同じですが、この部分では単に文字列を書いているだけです。

この文字列ができあがったら、
rs.open SQL,db,3,3 ・・・(*)
または
rs.open ABC,db,3,3
により実際の検索が行なわれ、その後、

rs("code")
などで抽出結果を参照できます。

提示されたサンプルには、検索実行の命令行(*)が見当たりません。

[1748] ありがとうございました!
投稿者:ぴーぽさん 2002/02/27 9:08:23
北岳さま
ありがとうございました。
ご指導頂きました個所の修正でエラー表示は出なくなりました。
しかし、検索した時に全部のレコードが表示されてしまいます。
コードというもので検索したいのですが、そこに田中といれて検索します。
ところが田中以外の山田までブラウザ表示されてしまうことがわかりました。
未熟ゆえ、いまだにその原因がわかりません。
たびたびで申し訳ございませんが、ご指導お願いできませんでしょうか?
よろしくお願いいたします。

[1749] SQL文のデバッグ
投稿者:北岳さん 2002/02/27 9:49:31
rs.open SQL,db,3,3 
の1行上に
 
response.write "<br>SQL=" & SQL
response.end
 
を挿入してみて下さい。
SQL文の中の Request.Form("cord") の位置に、文字列田中がちゃんと入っていますか?
----------------
flag=False
If flag=False Then SQL=SQL & "WHERE ("
では、SQL文中にWHERE という文字は出て来ない理屈ですが、
do until rs.eof〜loop がないため最初の1件しか出ない筈なのに山田も出るとのこと、
また、</table>があって<table>もないことから、
抜粋表示されていると推測され、スクリプトについては何とも言えません。

[1752] Re:SQL文のデバッグ
投稿者:ぴーぽさん 2002/02/27 14:56:46
> rs.open SQL,db,3,3 
> の1行上に
>  
> response.write "<br>SQL=" & SQL
> response.end
>  
> を挿入してみて下さい。
挿入しました。
すると画面上は
SQL=SELECT * FROM cargoとしか表示しません
田中はACCESSの指定レコードの中に入っています。

> SQL文の中の Request.Form("cord") の位置に、文字列田中がちゃんと入っていますか?
> ----------------
> flag=False
> If flag=False Then SQL=SQL & "WHERE ("
> では、SQL文中にWHERE という文字は出て来ない理屈ですが、
> do until rs.eof〜loop がないため最初の1件しか出ない筈なのに山田も出るとのこと、
> また、</table>があって<table>もないことから、
> 抜粋表示されていると推測され、スクリプトについては何とも言えません。
>
基本的にはここはエディタで突っ込んだときに生成されたのだと思われます。
何かまだまだ不具合があるのかもしれません。
何とぞご指導下さいますようよろしくお願いします

[1754] Re:SQL文のデバッグ
投稿者:北岳さん 2002/02/27 15:48:18
これでいかがでしょう。(検証していませんが)
ここではnameで検索してみました。
 
----1.htm---
<html><body>
<form action="2.asp" method="post">
<input type="text" name="name" value="田中">
<input type="submit" value="送る">
</form>
</body></html>
 
 
---2.asp---
<html><body>
<H2>検索条件:*<%= Request.Form("name") %>*</h2>
<% If Request.Form("name")="" Then '●
%>
<p>検索条件がありません。
</body></html>
<% response.end
end if '●
'-------------------
Set rs=Server.CreateObject("ADODB.Recordset")
Set db=Server.CreateObject("ADODB.Connection")
db.Open "invoice"
SQL="SELECT * FROM cargo "
'部分一致
SQL=SQL & "WHERE cargo.name LIKE '%" & Request.Form("name") & "%'"
'完全一致
'SQL=SQL & "WHERE cargo.name='" & Request.Form("name") & "'"
rs.open SQL,db,3,3
if rs.RecordCount<1 then '■
%>
<p>該当する積荷はありません。
</body></html>
<%
db.close
set db=nothing
response.end
end if '■
%>
<table>
<%
do until rs.eof
%><tr>
<td nowrap><%=rs("code")%></td>
<td nowrap><%=rs("name")%></td>
</tr>
<%
rs.MoveNext
loop
rs.close
db.close
set db=nothing
%>
</table>
</body></html>

[1766] Re:SQL文のデバッグ
投稿者:ぴーぽさん 2002/02/28 0:52:56
度重なるご指導まことにありがとうございます。
明日ご指示いただいたソースで一度検証してみます

> これでいかがでしょう。(検証していませんが)
> ここではnameで検索してみました。
>  
> ----1.htm---
> <html><body>
> <form action="2.asp" method="post">
> <input type="text" name="name" value="田中">
> <input type="submit" value="送る">
> </form>
> </body></html>
>  
>  
> ---2.asp---
> <html><body>
> <H2>検索条件:*<%= Request.Form("name") %>*</h2>
> <% If Request.Form("name")="" Then '●
> %>
> <p>検索条件がありません。
> </body></html>
> <% response.end
> end if '●
> '-------------------
> Set rs=Server.CreateObject("ADODB.Recordset")
> Set db=Server.CreateObject("ADODB.Connection")
> db.Open "invoice"
> SQL="SELECT * FROM cargo "
> '部分一致
> SQL=SQL & "WHERE cargo.name LIKE '%" & Request.Form("name") & "%'"
> '完全一致
> 'SQL=SQL & "WHERE cargo.name='" & Request.Form("name") & "'"
> rs.open SQL,db,3,3
> if rs.RecordCount<1 then '■
> %>
> <p>該当する積荷はありません。
> </body></html>
> <%
> db.close
> set db=nothing
> response.end
> end if '■
> %>
> <table>
> <%
> do until rs.eof
> %><tr>
> <td nowrap><%=rs("code")%></td>
> <td nowrap><%=rs("name")%></td>
> </tr>
> <%
> rs.MoveNext
> loop
> rs.close
> db.close
> set db=nothing
> %>
> </table>
> </body></html>
>

[1750] Re:ありがとうございました!
投稿者:arikさん 2002/02/27 9:55:45
> Request.Form("cord")
> Request.Form("code")
書き間違いでしょうか。



TreeBBS For ASP V.0.1.3
Program By YasNet