ASP 與ADO 在Web 數 據 庫 查 詢 中 的 應 用 (轉)

worldblog發表於2007-12-14
ASP 與ADO 在Web 數 據 庫 查 詢 中 的 應 用 (轉)[@more@]

 



---- * 具 體 實 現

---- 查 詢 主 頁 面 為 港 澳 證 件 信 息 查 詢, 對 應 程 序 為gacx.as
p, 查 詢 結 果 以 兩 種 方 式 顯 示, 一 種 是 顯 示 主 要 信 息- 港
澳 證 件 信 息 查 詢 結 果 列 表, 對 應 程 序 為gacxlb., 一 種 是
顯 示 全 部 信 息- 港 澳 證 件 信 息 查 詢 結 果, 對 應 程 序 為gacx
xq.asp, 如 果 查 詢 條 件 不 能 滿 足 時, 還 將 顯 示 一 個 提 示 頁
面, 告 訴 用 戶 不 存 在 滿 足 條 件 的 結 果, 這 由 程 序gacxts.as
p 完 成。

---- 首 先 根 據 客 戶 提 供 的 數 據 庫 和 要 求 查 詢 的 各 項 建 立
查 詢、 查 詢 結 果、 查 詢 結 果 列 表 頁 面, 還 要 給 出 一 個 簡
單 的 提 示 界 面, 告 訴 用 戶 不 存 在 滿 足 條 件 的 結 果, 請 重
新 查 詢, 這 些 工 作 可 以 用FrontPage 98 完 成, 整 個 頁 面 應 該
做 到 簡 潔 大 方, 主 題 鮮 明。 程 序 代 碼 在 Visual Inter
Dev 下 編 寫。

---- 下 面 處 理 編 碼 數 據 庫zd.f 中 的 內 容。 從 下 圖 中 可 以
看 到 有 很 多 帶 下 拉 框 的 選 項 例 如" 性 別"、" 出 生 地" 等, 這
些 選 項 的 內 容 都 是 從zd.dbf 數 據 庫 中 提 取 出 來 的, 這 正 是
本 程 序 數 據 庫 處 理 過 程 中 的 一 個 閃 光 點( 這 一 部 分 是 由
陶 則 民 工 程 師 設 計 並 實 現 的), 因 為 有 的 選 項 內 容 很 多
, 例 如 出 境 口 岸 有101 項 之 多, 你 雖 然 也 可 以 用< > <
option >...< /option >< /select > 格 式 在HTML 頁 面 中 把 各 個 選 項
列 舉 出 來, 但 那 將 給 程 序 的 維 護 帶 來 很 大 麻 煩, 一 旦 編
碼 數 據 庫 的 內 容 有 變 動, 程 序 也 將 不 得 不 作 很 多 修 改,
而 且 帶 下 拉 框 的 選 項 都 是 在zd.dbf 中 編 碼 了 的, 往 主 數 據
庫 中 輸 入 數 據 時 這 些 選 項 都 只 輸 入 編 碼, 但 顯 示 時 卻 不
能 顯 示 編 碼, 必 須 把 編 碼 對 應 的 漢 字 顯 示 出 來。 這 段 程
序 代 碼 如 下( 以 性 別 為 例):

< %
Set Conn=Server.Creat("ADODB.Connection")
Conn.Open "GACX"
Set RS =Conn.Execute("Select BC,
MC From zd Where BC Like "se%"")
Response.Write "< SELECT SIZE=1 NAME="SEX" >"
Do While Not RS.EOF
response.write "< option
value=RS(0) >" &RS(1)
Rs.MoveNext
L
Response.Write "< /SELECT >"
RS.Colse
Conn.Colse
% >
---- 其 中,zd.dbf 包 含 兩 個 字 段MC、BC,MC 表 示 待 編 碼 項, 如
男、 女,BC 表 示 編 碼, 如 性 別 編 碼 的 前 兩 位 為"se", 男 用"se
1" 表 示, 女 用"se2" 表 示。

----     數 據 庫 查 詢 中 最 重 要 的 是 如 何 取 得 查 詢 條 件。
本 例 中 要 查 詢 的 項 可 以 分 為 兩 類: 一 類 是 輸 入 的text 類 型
的 查 詢 條 件, 另 一 類 是 從 下 拉 框 中 選 出 來 的 項, 在 處 理
時 就 要 區 分 對 待,text 類 型 的 查 詢 條 件 很 好 處 理, 例 如 姓
名, 我 給 輸 入 的 內 容 命 名 為"xm", 如 果 輸 入 的 查 詢 項 不 為
空 時 就 增 加 一 個 查 詢 條 件"NAME=Request.Form("xm")" 即 可; 下
拉 框 的 處 理 要 復 雜 得 多, 當 下 拉 框 選 中 一 項 時, 例 如 性
別 選 中 男, 下 拉 框 中 輸 入 的 是"se1", ( 但 反 映 在 數 據 庫 中
時 為"SEX=1", 因 為 數 據 庫 中 輸 入 字 典 中 帶 編 碼 的 項 時 只
輸 入 編 碼), 就 是 要 查 詢"SEX=se1" 的 項, 處 理 時 要 把"se1" 中
的"1" 提 取 出 來, 這 裡 只 須 用 到 一 個 函 數mid 即 可, 查 詢 條
件 為"SEX =mid("se1",3,1)", 即 從 數 據 庫 中 查 找SEX=1 的 項, 並
把 所 有 滿 足 條 件 的 項 不 重 復 地 列 舉 出 來。

---- 查 詢 結 果 的 顯 示 就 很 容 易 了, 只 須 把 查 詢 結 果 的 每
條 記 錄 按 列 表 的 方 式 顯 示 出 來 即 可, 注 意 在 顯 示 查 詢 結
果 時 要 顯 示 編 碼 對 應 的 漢 字, 就 是 到 字 典 中 去 找 編 碼 為
"se"&"1" 的 項 所 對 應 的 編 碼 值, 程 序 如 下:

< table border="1" width="95%"
bordercolor="#C0C0C0" cellspacing="0" cellpadding="0"
bordercolorlight="#C0C0C0"
bordercolordark="#C0C0C0" height="60" >
  < tr >
   < td width="9%" align="center"
height="1" >< p align="center" >
姓 名< /td >
    < td width="12%" align="center"
height="1" > 檔 案 號< /td >
   < td width="6%" height="1" >
< p align="center" > 性 別< /td >
   ......
 < /tr >
   < %i=1% >
   < %While Not RS.EOF % >
   < tr >
     < td width="9%" align="center"
height="1" >< %=RS ("name")% >< /td >
     < td width="12%" align="center"
height="1" >< %=RS ("dang")% >< /td >
     < td width="6%" height="1" >< %=Func
("se" & RS("sex"),GACX)% >< /td >
       ......
     < /tr >
     < %RS.MoveNext% >
     < %i=i+1% >
   < %WEnd% >
   < /table >
---- 其 中,Func ("se" & RS("sex"),GACX) 是 個 函 數, 實 現 從 數 據
源 中 取 得 編 碼 所 對 應 的 漢 字 的 功 能。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993070/,如需轉載,請註明出處,否則將追究法律責任。

相關文章