0

ClassicASPを使用してSQLServer2000データベースからレコードをフェッチしています。これは私が使用したコードです。

ASPコード:

<form name="search" method="post" onsubmit="return attention();">
<table width="60%" border="0" cellpadding="2" cellspacing="0" style="margin:0 auto">
<tr>
    <td colspan="2"><h1 style="color:#003399;">Search for Certificate of Analysis</h1></td>
</tr>
<tr>
    <td valign="bottom">Product number <sup style="color:#EE0000;font-size:1.3em">*</sup></td>
    <td valign="bottom">Lot number</td>
</tr>
<tr>
    <td width="30%" valign="top">
        <input type="text" name="input1" size="20"/>
    </td>
    <td valign="top">
        <input type="text" size="20" name="input2"/> 
        <input style="background-color:#ffffff;border:0px;cursor:pointer" size="10" type="submit" name="sub" value=">>" />
    </td>
</tr>

</table>
<%
    if request.Form("sub") <> "" then
    Dim fname, lname
    fname= request.Form("input1")
    lname= request.Form("input2")
    session("n") = fname & lname
    sql = "Select * from search where cat_no_batch_no LIKE '"&request.Form("input1")&"%' OR cat_no_batch_no='"&session("n")&"'"
    rs.open sql, con, 1, 2
    if rs.eof then

    response.write("Please provide a valid Cat No.")    

    else



            do while not rs.eof
        %>
            <table border="1" cellpadding="5" cellspacing="0" width="60%" style="margin:0 auto; border-collapse:collapse;border-color:#999999">
            <tr>
                <td width="50%"><%=rs("cat_no_batch_no")%></td>
                <td width="10%">Click to open <a target="_blank" href="http://localhost/search1/<%=rs("pdf_path")%>"><%=rs("cat_no_batch_no")%></a></td>
            </tr>
            </table>

        <%
            rs.movenext
            loop
        end if
    rs.close
    end if
%>
</form>

上記のLIKEステートメントは期待どおりに機能し、同様の カタログ番号を含む複数のレコードを表示します。最初の入力ボックスに猫番号を入力し、別のボックスにロット番号を入力すると、問題が発生します。CatNo .とLotNumberを指定したので、表示する出力は1つのレコードだけである必要がありますが、複数のレコードが表示されます。

より明確にするために画像を提供しました。

  1. 下のこの画像では、製品番号として6106021を入力しているため、2つのエントリが表示されます。 ここに画像の説明を入力してください

  2. この画像では、製品番号として6106021 、ロット番号として218111を入力しました。これは、1ではなく2つのエントリを表示します。これが問題です。ロット番号は一意であり、猫番号は同じである可能性があるため、1つのエントリが表示されます。 ここに画像の説明を入力してください

4

2 に答える 2

2

あなた自身にあなたの質問を読んで、あなたが言っていることについて考えてください:

あなたは、「猫番号とロット番号を指定したので、表示する出力は1つのレコードだけである必要があります」と述べています。

しかし、SQLでは次のように記述しますwhere cat_no_batch_no LIKE '"&request.Form("input1")&"%' OR cat_no_batch_no='"&session("n")&"'

キーワードはAND対ORです

あなたの心の中であなたは両方の条件が真でなければならないと考えています、しかしあなたの質問はそうではないと言います。両方の条件を真にしたい場合は、AND演算子を使用する必要があります。

Naokiは何かに取り組んでいます。指定されている基準に応じて、SQLを変更する必要があります。

于 2012-12-19T06:03:53.687 に答える
1

「ロット番号」が提供されているかどうかに応じて、2つの別々のSQLクエリを記述できると思います。コードは次のようになります。

if lname = "" then
    sql = "Select * from search where cat_no_batch_no LIKE '"&request.Form("input1")&"%'" 
else
    sql = "Select * from search where cat_no_batch_no LIKE '"&session("n")&"%'"
end if

これがお役に立てば幸いです

于 2012-12-19T05:46:02.150 に答える