کوئری (ADO Query)
در این بخش «کوئری ADO» را یاد می گیریم. «کوئری (Query)» یعنی درخواست داده با شرط. «SQL» زبان پرس وجو است. مثل فیلتر کردن لیست دانش آموزان بر اساس حرف اول نام.
نمایش داده انتخابی با شرط شروع نام
اینجا شرکت هایی را می خواهیم که نامشان با A شروع می شود. اول اتصال بده. سپس با SQL فیلتر کن. بعد جدول را بساز.
<%
Dim conn
Dim rs
Dim x
Dim sql
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT CompanyName, ContactName FROM Customers WHERE CompanyName LIKE 'A%'"
rs.Open sql, conn
%>
<table border="1" width="100%">
<tr>
<% For Each x In rs.Fields %>
<th><% Response.Write 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
%>
فیلتر کشور ثابت: فقط مشتریان اسپانیا
حالا فقط کشور Spain را نشان می دهیم. شرط برابر می گذاریم. سپس مانند قبل جدول می سازیم.
<%
Dim conn2
Dim rs2
Dim y
Dim sql2
Set conn2 = Server.CreateObject("ADODB.Connection")
conn2.Provider = "Microsoft.Jet.OLEDB.4.0"
conn2.Open "c:/webdata/northwind.mdb"
Set rs2 = Server.CreateObject("ADODB.Recordset")
sql2 = "SELECT CompanyName, ContactName FROM Customers WHERE Country='Spain'"
rs2.Open sql2, conn2
%>
<table border="1" width="100%">
<tr>
<% For Each y In rs2.Fields %>
<th><% Response.Write y.Name %></th>
<% Next %>
</tr>
<% Do Until rs2.EOF %>
<tr>
<% For Each y In rs2.Fields %>
<td><% Response.Write y.Value %></td>
<% Next %>
<% rs2.MoveNext %>
</tr>
<% Loop %>
<%
rs2.Close
conn2.Close
%>
ساخت فیلتر پویا توسط کاربر
می خواهیم کاربر کشور را انتخاب کند. اول لیست کشورها را می گیریم. سپس با ارسال فرم، جدول نتیجه را می سازیم.
<%
Dim conn3
Dim rs3
Dim country
Dim sqlList
Set conn3 = Server.CreateObject("ADODB.Connection")
conn3.Provider = "Microsoft.Jet.OLEDB.4.0"
conn3.Open "c:/webdata/northwind.mdb"
sqlList = "SELECT DISTINCT Country FROM Customers ORDER BY Country"
Set rs3 = Server.CreateObject("ADODB.Recordset")
rs3.Open sqlList, conn3
country = Request.Form("country")
%>
<form method="post">
انتخاب کشور
<select name="country">
<% Do Until rs3.EOF %>
<% If rs3.Fields("Country") = country Then %>
<option selected><% = rs3.Fields("Country") %></option>
<% Else %>
<option><% = rs3.Fields("Country") %></option>
<% End If %>
<% rs3.MoveNext %>
<% Loop %>
</select>
<input type="submit" value="Show customers" />
</form>
<%
rs3.Close
If country <> "" Then
Dim rs4
Dim sqlData
sqlData = "SELECT CompanyName, ContactName, Country FROM Customers WHERE Country='" & country & "'"
Set rs4 = Server.CreateObject("ADODB.Recordset")
rs4.Open sqlData, conn3
%>
<table width="100%" cellspacing="0" cellpadding="2" border="1">
<tr>
<th>CompanyName</th>
<th>ContactName</th>
<th>Country</th>
</tr>
<% Do Until rs4.EOF %>
<tr>
<td><% = rs4.Fields("CompanyName") %></td>
<td><% = rs4.Fields("ContactName") %></td>
<td><% = rs4.Fields("Country") %></td>
<% rs4.MoveNext %>
</tr>
<% Loop %>
</table>
<%
rs4.Close
End If
conn3.Close
%>
گام های عملی
- اتصال ADO بساز. مسیر دیتابیس درست باشد.
- SQL بنویس. شرط مناسب را اضافه کن.
- رکوردست را باز کن. تا آخر حلقه بزن.
- هدر و سطرها را چاپ کن. مرتب و خوانا.
- منابع را ببند. حافظه را آزاد کن.
نکته: «فیلتر (Filter)» یعنی محدود کردن نتایج با شرط مشخص.
هشدار: برای امنیت فرم، از پارامترسازی استفاده کن. از اتصال رشته ای خام پرهیز کن.
برای ادامه، صفحه نمایش داده ADO و بخش مرتب سازی ADO را ببین.
جمع بندی سریع
- کوئری ADO با SQL فیلتر می کند.
- LIKE برای الگوها کاربرد دارد.
- شرط برابر، انتخاب دقیق می دهد.
- فرم، فیلتر پویا می سازد.
- همیشه اتصال ها را ببند.