English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請問一下各位先進,
我目前用VB6在撰寫一個功能,
是用OpenDatabase的方式開啟一個.mdb的檔案來進行資料編輯,
資料庫中有兩個資料表A跟B如下所示(兩資料表皆不只這三個欄位):

................A.......................................B
起點.....迄點.....IRI...........起點.....迄點.....IRI
...0...........1..........5...............0...........7..........-
...1...........2..........2...............7..........10.........-
...2...........3..........7..............10.........18.........-
...3...........4..........6..............18.........22.........-
...4...........6..........3..............22.........31.........-
依此類推

A資料表的起迄點是以1為單位接續排列,
B資料表的起迄點則沒有固定單位但也是接續排列,
而IRI則是不固定的數字。

今天我需要依據B資料表的起迄點(0-7或7-10或10-18...),
去A資料表中以A的起迄點為基準去搜尋IRI值,
(例如當B是0-7,A中就要搜尋0-1,1-2,...,6-7的IRI值)
將其加總後除以B中迄點減去起點的值(7 - 0 = 7),
搜尋並計算過後的IRI值在寫入B的IRI欄位中,
(例如0-7搜尋計算IRI後為6.4,則B在起點0迄點7那筆資料的IRI就是6.4)
不曉得這樣應該要怎麼寫呢?
因為頗為急迫,希望有先進大大們可以幫幫我~~>"<

2006-12-30 18:49:26 · 1 個解答 · 發問者 盆子 3 in 電腦與網際網路 程式設計

修正一下,A資料表起點4的時候迄點是5。
因為不能用空白編排,所以只好用"..."代替^^||

2006-12-30 18:51:23 · update #1

W.J.S.大大,那如果說我今天B資料表的起點跟迄點都要先轉換成整數以後再進行查詢的話,應該要怎麼做呢?

PS:"RsB.Edit"那邊偵錯顯示"找不到方法或資料成員"耶>"<

2006-12-31 18:39:10 · update #2

6.4那個值也是我隨意假設的,
那現在不管6.4,我將4-5的IRI假設為3,5-6假設為4,6-7假設為7
這樣計算出來的將會是5.67
希望有大大可以幫我解決~>"<

2006-12-31 19:19:47 · update #3

W.J.S.大大謝謝你^^

我的信箱是ps0186kimo@yahoo.com.tw

2007-01-02 11:14:02 · update #4

1 個解答

'你並無提供4~5,5~6,6~7之IRI值供測試,所以我不知道6.4是如何跑出來的?但若依你現有數據(5+2+6+7+3)/7也不等於6.4,故以下程式我不敢說一定正確
圖片參考:http://tw.yimg.com/i/tw/blog/smiley/36.gif

Private Sub Command1_Click()
Dim DB As Database, RsA As Recordset, RsB As Recordset, S$

Set DB = OpenDatabase(資料庫路徑, 0, 0)
Set RsB = DB.OpenRecordset("B")
If RsB.RecordCount Then
RsB.MoveFirst
Do Until RsB.EOF
S = "Select Sum([IRI]) As SumIRI From A Where [起點] Between " & RsB("起點") & " And " & RsB("迄點") & _
" And [迄點] Between " & RsB("起點") & " And " & RsB("迄點")
Set RsA = DB.OpenRecordset(S)
If Not IsNull(RsA("SumIRI")) Then
RsB.Edit
RsB("IRI") = RsA("SumIRI") / (RsB("迄點") - RsB("起點"))
RsB.Update
End If
RsB.MoveNext
Loop
End If
DB.Close
Set RsA = Nothing: Set RsB = Nothing: Set DB = Nothing
End Sub



2007-01-02 00:34:09 補充:
因為我看你說是使用OpenDatabase,那應該就是用DAO吧?RsB.Edit是正確的語法不應該有誤,在這裡不好補充,你把信箱給我,我把專案傳給你

2007-01-03 14:18:59 補充:
已經寄出到ps0186kimo@yahoo.com.tw

2006-12-31 12:29:22 · answer #1 · answered by W.J.S. 7 · 0 0

fedest.com, questions and answers