เขียนดักด้วย if (rs.bof and rs.eof) then แต่มีข้อมูล ทำไมเข้าเงื่อนไขนี้ตลอดเลยครับ
ตัวอย่างการตรวจสอบ recordset ว่ามีจริงหรือไม่(ไม่ใช่คิดเอง)
https://www.w3schools.com/asp/ado_display.asp
Code (ASP)
<!DOCTYPE html>
<html>
<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers"
rs.Open sql, conn
%>
<table border="1" width="100%">
<tr>
<%for each x in rs.Fields
response.write("<th>" & x.name & "</th>")
next%>
</tr>
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop
rs.close
conn.close
%>
</table>
</body>
</html>
ประวัติการแก้ไข 2020-07-20 15:13:40
Date :
2020-07-20 15:12:11
By :
PhrayaDev
if rs.recordcount = 0 then สีแดงเปรียบเทียบแบบนี้เหรอครับ
มันเป็นการกำหนดค่า 0 ให้กับ rs.recordcount หรือเปล่า
ควรจะเป็นแบบนี้หรือเปล่า
if rs.recordcount == 0 then
แต่ก็อีก bof กับ eof มันจะเกิด ก็ต่อเมื่อ มีการเลือน indicator ของ ตัว pointer
แต่ทีนี้ ตรงไหนคือคำสั่งเลื่อน indicator ล่ะ
bof จะ on เมื่อ indicator เลือนไปที่จุดเริ่มต้น เรคคอร์ดแรก
eof จะ on เมื่อ indicator เลือนเลยเรคคอร์ดสุดท้าย
ประวัติการแก้ไข 2020-07-20 16:58:46 2020-07-20 17:08:25
Date :
2020-07-20 16:58:16
By :
Chaidhanan
ตอบความคิดเห็นที่ : 6 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-07-20 17:14:05
รายละเอียดของการตอบ ::
ทำยังไงก็เข้า if ตลอดเลยครับ ทั้งที่ก่อนหน้านี้ใข้งานปกตินะครับแสดงข้อมูลได้ปกติ
Code (VB.NET)
<% response.expires = -1500 %>
<%
session.lcid = 1033
set conn = server.createobject("adodb.connection")
conn.open "Provider=SQLOLEDB;Data source=.;initial catalog=broadcast;uid=broadcast;pwd=broadcast11;"
set rs = server.createobject("adodb.recordset")
set conn2 = server.createobject("adodb.connection")
conn2.open "Provider=SQLOLEDB;data source=svh14-mta;initial catalog=hr;uid=broadcast;pwd=broadcast11;"
yy = datepart("yyyy",date())
mm = datepart("m",date())
mm = right( "00" & mm, 2)
dd = datepart("d",date())
dd = right( "00" & dd, 2)
today = yy & "-" & mm & "-" & dd
site = request.querystring("site")
if site <> "" then
Hosp = "S" & site
else
ip = request.servervariables("remote_addr")
ip = left(ip,5)
set wshnetwork=nothing
if (ip = "10.11") or (ip = "10.21") or (ip="10.12") then
'if (computer_name = "SVH") then
Hosp = "S1"
else
Hosp = "S2"
end if
end if
sql = "Select * from masbrdcs where brdcs_dte2 >= Convert(varchar(10), getdate(), 120) and (brdcs_hos_id ='" & Hosp &"' or brdcs_hos_id ='S') Order by left(upd_dte,4) desc,right(left(upd_dte,7),2) desc, right(upd_dte,2) desc, brdcs_id desc"
rs.open sql, conn , 1 , 3
If (rs.bof and rs.eof) then
response.write "ขณะนี้ไม่มีหัวข้อข่าวในฐานข้อมูลเลย. "
response.End
end if
%>
<table width="98%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td background="/news/image/bg-hd-brdcs.jpg" valign="bottom"><img src="/news/image/lower-left-bullet.gif" width="10" height="10" align="bottom"></td>
<td background="/news/image/bg-hd-brdcs1.jpg"><img src="/news/image/hd-broadcast.gif" width="167" height="51"></td>
<td background="/news/image/bg-hd-brdcs.jpg" valign="bottom" align="right"><img src="/news/image/lower-right-bullet.gif" width="10" height="10"></td>
</tr>
</table>
Date :
2020-07-20 17:34:48
By :
mossyz
sql = "Select * from masbrdcs where brdcs_dte2 >= Convert(varchar(10), getdate(), 120) and (brdcs_hos_id ='" & Hosp &"' or brdcs_hos_id ='S') Order by left(upd_dte,4) desc,right(left(upd_dte,7),2) desc, right(upd_dte,2) desc, brdcs_id desc"
order by ยาวไปนะครับ มีค่าเท่ากับ
Order by left(upd_dte, 10) desc, brdcs_id desc
ลองเปลี่ยน การเขียน sql statement ใหม่ดูครับ
Code (VBScript)
sql = String.Concat( _
"Select * from masbrdcs", _
" where brdcs_dte2 >= Convert(varchar(10), getdate(), 120)", _
" and (brdcs_hos_id ='", Hosp , "' or brdcs_hos_id ='S')", _
" Order by left(upd_dte, 10) desc, brdcs_id desc")
Date :
2020-07-20 19:43:10
By :
Chaidhanan
ขอบคุณพี่ๆทั้งคู่ครับ เดี๋ยวผมลองแก้ดูครับ ยอมรับเลยผมโง่มาก T^T
Date :
2020-07-21 09:05:12
By :
mossyz
Load balance : Server 00