私は従来の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を返します。すべての変数は、コードの前半で薄暗くされています。