1
ค่า rs.recordcount ของ mssql--asp เป็นลบ 1
เฉพาะเมื่อมีการเรียกฐานข้อมูลในโหมด ADO เท่านั้น จึงจะมีจำนวนบันทึก เมื่อใช้ขั้นตอนที่เก็บไว้ คุณต้องใช้ select count(*) จาก table_name เพื่อนับด้วยตนเอง .
? นี่เป็นสิ่งที่ผิด ขั้นตอนการจัดเก็บสามารถเปิดได้ด้วย ado เช่น rs.open "exec SomeProc", conn, 1, 3 วิธีแก้ปัญหาของฉันคือ rs.open sql,conn,1,1 เพื่อแก้ไขปัญหานี้
2
โดยปกติแล้วผู้คนจะใช้สองวิธีต่อไปนี้เพื่อดำเนินการคำสั่ง SQL:
ตั้งค่า Rs=Conn.Execute(SqlStr)
และ
ตั้งค่า Rs=Server.CreateObject("ADODB.RecordSet")
Rs.Open SqlStr,Conn,CursorType,LockType
(วิธีวัตถุ RecordSet โปรดดูที่นี่)
เนื่องจากเคอร์เซอร์ชุดระเบียนเริ่มต้นคือเคอร์เซอร์เซิร์ฟเวอร์
Rs.CursorLocation = adUseServer
ดังนั้นให้ส่งกลับ Rs.RecordCount=-1
ควรเปลี่ยนเคอร์เซอร์เซิร์ฟเวอร์เป็นเคอร์เซอร์ไคลเอนต์
Rs.CursorLocation = adUseClient
Rs.Open SqlStr, Conn, CursorType, LockType
rs.cursortype
แอตทริบิวต์จำนวนระเบียนประเภทเคอร์เซอร์
-
ForwardOnly 0 (ค่าเริ่มต้น) ส่งกลับ -1
คีย์เซ็ต 1 จำนวนบันทึกที่ถูกต้อง
ไดนามิก 2 -1 หรือจำนวนเรคคอร์ดไม่ถูกต้อง ขึ้นอยู่กับแหล่งข้อมูล
จำนวนระเบียนที่ถูกต้องคงที่ 3
ดังนั้น Rs.CursorLocation = 3
Recordset.support("ชื่อคุณสมบัติ") สามารถใช้เพื่อทดสอบว่าคุณสมบัติได้รับการสนับสนุนหรือไม่
http://www.dwww.cn/new/20051128112149636.html
3
ตั้งค่า oRs = Server.CreateObject("ADODB.RecordSet")
หรือเปิด sSql, oConn, 1, 1
หากต้องการอ่านข้อมูล
มิฉะนั้นให้ใช้ Select Count(*) As RecordCount From [table]
oRs("RecordCount") เพื่อรับ
หรือใช้ Do While Not oRs.Eof
RecordCount = จำนวนระเบียน + 1
วนซ้ำ
4ฐานข้อมูลของฉันเชื่อมต่อดังนี้:
strconn = "DRIVER=ไดรเวอร์ Microsoft Access (*.mdb);DBQ=" & Server.MapPath("bbs.mdb")
ตั้งค่า conn = server.createobject("adodb.connection")
conn.open strconn
sql = "เลือก * จากช่องว่าง"
ตั้งค่า rs=createobject("adodb.recordset")
rs.open sql,conn,1,1
แต่มีชุดบันทึกส่งคืนจริงและสามารถแสดงผลได้