奇狐社區論壇
在這個頁面顯示本主題全部的 4 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救]可以幫我看一下嗎? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=11567)


由 pili 在 2009-05-21 13:20 發表:

[求救]可以幫我看一下嗎?

附件含Access檔和VBS讀取碼...
但公式讀取access資料表的內容一直無法顯示出來...
不知道是哪邊出錯....
麻煩哪位好心的幫我看看囉...


原碼如下:
fa:=close*0;
fb:=fa;
fc:=fa;
fd:=fa;
fe:=fa;
fy:=year;
fm:=month;
fd:=day;
<%
va=ffl.vardata("fa")
vb=ffl.vardata("fb")
vc=ffl.vardata("fc")
vd=ffl.vardata("fd")
ve=ffl.vardata("fe")
vy=ffl.vardata("fy")
vm=ffl.vardata("fm")
vd=ffl.vardata("fd")
n=ffl.vardata("n")

Const Jet3x = 4
Const Jet4x = 5
FileName="d:\chiefox\user\Test.mdb"
TableName="Test"
On Error Resume Next
ReadTable FileName,TableName

Sub ReadTable(FileName,TableName)
Dim Conn,RS
Set Conn=CreateObject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open FileName
Set Rs=CreateObject("ADODB.Recordset")
Rs.CursorType = 3
Rs.LockType = 3
Rs.Open TableName, Conn
Rs.MoveFirst
Last=ubound(va)
if Rs.RecordCount=Last+1 then
for i=0 to Last
va(i)=Rs.Fields("買方前五大部位數")
vb(i)=Rs.Fields("買方前十大部位數")
vc(i)=Rs.Fields("賣方前五大部位數")
vd(i)=Rs.Fields("賣方前十大部位數")
ve(i)=Rs.Fields("全市場部位數")
Rs.MoveNext
next
End if
Set Rs=Nothing
Set Conn=Nothing
End Sub

ffl.vardata("fa")=va
ffl.vardata("fb")=vb
ffl.vardata("fc")=vc
ffl.vardata("fd")=vd
ffl.vardata("fe")=ve
%>
買方前五大:fa;
買方前十大:fb;
賣方前五大:fc;
賣方前十大:fd;
全市場部位數:fe;


由 cgjj 在 2009-05-22 08:58 發表:

if Rs.RecordCount=Last+1 then
想一想這行的寫法的適當性及其造成的影響


由 pili 在 2009-06-03 11:24 發表:

試了好久還是沒有辦法...
麻煩版主在幫忙看一下...
到底問題出在哪邊???
感謝...

fa:=close*0;
fb:=fa;
fc:=fa;
fd:=fa;
fe:=fa;
fyear:=year;
fmonth:=month;
fday:=day;
<%
va=ffl.vardata("fa")
vb=ffl.vardata("fb")
vc=ffl.vardata("fc")
vd=ffl.vardata("fd")
ve=ffl.vardata("fe")
vyear=ffl.vardata("fyear")
vmonth=ffl.vardata("fmonth")
vday=ffl.vardata("fday")
n=ffl.vardata("n")

Const Jet3x = 4
Const Jet4x = 5
FileName="d:\chiefox\user\Test.mdb"
TableName="Test"
On Error Resume Next
ReadTable FileName,TableName

Sub ReadTable(FileName,TableName)
Dim Conn,RS
Set Conn=CreateObject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open FileName
Set Rs=CreateObject("ADODB.Recordset")
Rs.CursorType = 3
Rs.LockType = 3
Rs.Open TableName, Conn
Rs.MoveFirst
Last=ubound(va)
for i=0 to Last
vdate=DateSerial(vyear(i), vmonth(i), vday(i))
if vdate>Rs.Fields("日期") then
Rs.MoveNext
end if
if vdate=Rs.Fields("日期") then
va(i)=Rs.Fields("1")
vb(i)=Rs.Fields("2")
vc(i)=Rs.Fields("3")
vd(i)=Rs.Fields("4")
ve(i)=Rs.Fields("5")
Rs.MoveNext
else
va(i)=0
vb(i)=0
vc(i)=0
vd(i)=0
ve(i)=0
end if
next
Set Rs=Nothing
Set Conn=Nothing
End Sub

ffl.vardata("fa")=va
ffl.vardata("fb")=vb
ffl.vardata("fc")=vc
ffl.vardata("fd")=vd
ffl.vardata("fe")=ve
%>
Test1:fa;
Test2:fb;
Test3:fc;
Test4:fd;
Test5:fe;


由 cgjj 在 2009-06-03 11:46 發表:

想想看

奇狐K棒數 和 您資料庫 Test.mdb 的資料長度和起止時間
是不太可能完全一致的

這段存取資料庫的程序, 也沒有檢查資料庫結尾的機制

這兩個關鍵沒處理好, 都是致命的錯誤

把 On Error Resume Next 這行先去掉吧
這行會讓錯誤隱蔽不顯示出來
無法得知程序處理過程中有無錯誤

可善用 msgbox 來顯示訊息偵錯


全部時間均為台灣時間, 現在時間為02:40
在這個頁面顯示本主題全部的 4 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.