兩資料庫在同一頁面的無縫輸出 (轉)

worldblog發表於2007-08-16
兩資料庫在同一頁面的無縫輸出 (轉)[@more@]

例項說明:
公司有新舊兩部分產品分別以不同形式存在兩個中,由於兩資料表的結構上有較大差異,不便於兩資料庫(表)的合併。
本例在不改動資料庫(表)的情況下,實現在同一頁面的無縫輸出。

程式碼如下,沒做太多的註釋

file name simple.

dim Page
dim NeedPage '存放需求頁碼數
dim NeedRecord '存放需求記錄數
dim NextPage '翻頁標誌變數
dim PageSize

NextPage=False
PageSize=15
%>

<!--html程式碼區--&gt

page=request.querystring("page")
if page="" then page=1
if not(isnumeric(page)) then page=1
if page<1 then page=1
page=int(page)
 
%>

<!--html程式碼區--&gt
 
Call GetData(Page)
Call FillData(NeedPage,NeedRecord)
%>

<!--html程式碼區--&gt


0 then%><<<<
>>>>

<!--html程式碼區--&gt

Function GetData(Page)
Dim LPRCount '存放資料集分頁後最後一頁的記錄數
Dim i '迴圈記數器
'從MAD.m中獲取資料集
Set conn1=Server.Create("adodb.connection")
Set rs1=Server.CreateObject("adodb.recordset")
conn1.open "provr=.jet.oledb.4.0;data ="&server.mappath("DData1.mdb")
1=" * from DTable1"
rs1.open sql1,conn1,1,1
If rs1.EOF or rs1.BOF Then
 NeedPage=1
 NeedRecord=PageSize
Else
 rs1.PageSize=PageSize
 '記錄集頁碼數大於需求頁碼
 If rs1.PageCount>Page Then
 rs1.AbsolutePage=Page
 i=0
 Do While Not rs1.EOF And (i Call DataOutput("Detail1",rs1("id"),rs1("Field1"),rs1("Field2"),rs1("Field3"))
 rs1.MoveNext
 i=i+1
 L
 NeedPage=Page-rs1.PageCount
 NeedRecord=0
 End If

 '記錄集頁碼數等於需求頁碼
 If rs1.PageCount=Page Then
 rs1.AbsolutePage=Page
 i=0
 Do While Not rs1.EOF And (i Call DataOutput("Detail1",rs1("id"),rs1("Field1"),rs1("Field2"),rs1("Field3"))
 rs1.MoveNext
 i=i+1
 Loop
 LPRCount=i
 NeedPage=0
 NeedRecord=PageSize-LPRCount
 End If

 '記錄集頁碼數小於需求頁碼
 If rs1.PageCount LPRCount=rs1.RecordCount-(rs1.PageCount-1)*PageSize
 NeedPage=Page-rs1.PageCount
 NeedRecord=PageSize-LPRCount
 End If 
End If
'關閉記錄集
rs1.close
conn1.close
Set rs1=nothing
Set conn1=nothing
End Function

Function FillData(NeedPage,NeedRecord)
'填補頁面剩餘記錄行,並設定下翻頁標記變數
Dim i '迴圈記數器
Dim MoveStep '記錄集移動步長

'需求頁碼小於零(不需要填補)
If NeedPage<0 Then
 NextPage=True '啟用下翻頁標記
Else
 '從new.mdb中獲取記錄集
 Set conn1=Server.CreateObject("adodb.connection")
 Set rs1=Server.CreateObject("adodb.recordset")
 conn1.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("DData2.mdb")
 sql1="select * from DTable2"
 rs1.open sql1,conn1,1,1
 If rs1.EOF Then
 NextPage=False '關閉下翻頁標記
 Else
 '需求頁碼為零(僅當需求記錄數不為零時,填補頁面剩餘記錄行)
 If NeedPage=0 Then
 If NeedRecord=0 Then '不需填補頁面剩餘記錄行
 NextPage=True '啟用下翻頁標記
 Else
 '填補頁面剩餘記錄行
 i=0
 Do While Not rs1.EOF And (i Call DataOutput("Detail2",rs1("id"),rs1("Field1"),rs1("Field2"),rs1("Field3"))
 rs1.MoveNext
 i=i+1
 Loop
 If rs1.RecordCount>NeedRecord Then
 NextPage=True '啟用下翻頁標記
 Else
 NextPage=False '關閉下翻頁標記
 End If
 End If
 End If
 
 '需求頁碼大於零
 If NeedPage>0 Then
 MoveStep=(NeedPage-1)*PageSize+NeedRecord '計算記錄集移動步長
 If rs1.RecordCount<=MoveStep Then '記錄集不夠
 '出錯處理
 Else
 rs1.Move MoveStep
 i=0
 Do While Not rs1.EOF And (i Call DataOutput("Detail2",rs1("id"),rs1("Field1"),rs1("Field2"),rs1("Field3"))
 rs1.MoveNext
 i=i+1
 Loop
 
 If rs1.RecordCount>(MoveStep+PageSize) Then
 NextPage=True '啟用下翻頁標記
 Else
 NextPage=False '關閉下翻頁標記
 End If
 End If
 End If
 End If
 '關閉記錄集
 rs1.close
 conn1.close
 Set rs1=nothing
 Set conn1=nothing
End If
End Function

Function DataOutput(url,id,field1,field2,field3)
'生成頁面記錄行
Response.Write "

"
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write " "
Response.Write "
"&field1&""&field2&""&field3&"
"
End Function
%>

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

相關文章