0

私は従来のASPとそれを介したデータベースアクセスを使用してきました。使用しているデータベースはMySQLです。ASPページはIIS7で実行されています。2つのASPページを開発しました。まず、これが動作するスキーマです-

書籍=(b_id、タイトル、ページ、価格、p_id)

出版社=(p_id、名前、国)

Bookのp_idは、Publisherからの外部キーです。

ここで、1つのスクリプトで、Publisherにレコードを追加するときに、最初に同様のレコードが存在するかどうかを確認し、存在する場合はそれをユーザーに報告します。そのスクリプトは正常に機能します。

しかし、Bookにレコードを挿入する他のスクリプトでは、最初に、指定された発行元が存在するかどうかを確認します。しかし、何らかの理由で、それはまったく機能しません。つまり、Publisherテーブルをクエリしてすべてのレコードを比較のために取得すると、RecordSetオブジェクトのRecordCountプロパティは-1を返します。

両方のスクリプトでエラーがないか徹底的にチェックしましたが、エラーはありません。

同じ目的の同じコードが一方では機能せず、もう一方では機能するのはなぜですか?

作業コード-

flag = false
temprs.Open "select country from publisher where name='" & pubname & "'", conn
if temprs.RecordCount <> 0 then
    do while not temprs.EOF
        if temprs.fields("country") = pubcountry then
            flag = true
            exit do
        end if
        temprs.MoveNext
    loop
end if

上記のコードのループに入ります。

そして、機能していないコード-

q = "select p_id from publisher where name='" & bookpub & "'"
prs.Open q, conn
pins = false
if prs.RecordCount > 0 then
    pid = prs.fields("p_id")
    pins = true
end if

ここで、prs.RecordCountは-1を返します。すべての変数は、コードの前半で薄暗くされています。

4

1 に答える 1

2

recordcountを使用せずに同じ結果が得られる別のソリューションを提供できますか:

q = "select p_id from publisher where name='" & bookpub & "'"
prs.Open q, conn
pins = false
if not prs.eof then
    pid = prs("p_id")
    pins = true
end if
于 2012-11-30T08:28:54.720 に答える