闲人 2004-9-27 21:36
利用ADO创建、读取Access数据库示例代码-2
在<<输出数据到Excel示例代码>>教学篇中,老师不厌其烦地帮我解决了用公式读取自建的Excel的大难题,心中无限感激!但由于Excel受容量的限制,老师要求用Access数据库来替代Excel。见
[url]http://bbs.fjfox.com/viewthread.php?tid=2519&highlight=&page=2[/url]第35楼~38楼的贴子,尤其是36楼。
当时由于我无法自建Access数据库。现在经过长期摸索,初步能建成Access数据库了。但是又面临着新的问题,就是怎样才能读取Access里的数据呢?于是就想到了老师另一教学文章<<利用ADO创建、读取Access数据库示例代码>>,异想天开地、想当然地改动了几条语句,自以为就可以读出数据来了。可是读出来的全部是收盘价,但Access里根本又没有收盘价的数据。真是太不自量力了!下面将公式、Access(里面象征性地选了几只股票做例子)、显示的图型上传。恳请老师给予指教。衷心感谢!!!
闲人 2004-9-27 23:01
向南客老师致歉
再次拜请南客老师的"师"不知怎么漏写了,决非有意.在此向南客老师道歉,对不起,请老师原谅!
闲人 2004-9-28 22:26
南客老师,多么恳切地期望能再次得到您的无私帮助啊!
闲人 2004-9-29 21:56
[quote][i]闲人[/i] 于 2004-9-28 22:26 写道:
南客老师,多么恳切地期望能再次得到您的无私帮助啊! [/quote]
诚请南客老师.:clap::clap::clap:
hx817 2004-9-29 22:27
mdb 数据库中数据的序列与股票中 K 线的序列位置不一样
闲人 2004-9-30 00:32
请教老师,怎么样才能使它们的序列一样呢?恳请老师出手相助。十二万分感谢!!!:cool::clap::clap::clap:
闲人 2004-10-1 12:27
[quote][i]闲人[/i] 于 2004-9-30 00:32 写道:
请教老师,怎么样才能使它们的序列一样呢?恳请老师出手相助。十二万分感谢!!!:cool::clap::clap::clap: [/quote]
:clap::clap::clap:
hx817 2004-10-2 22:21
思路上,应该是将前面的
fy:=YEAR; fm:=MONTH; fd:=DAY;
带入 VBS 计算,而后与数据文件的第一位的日期比较,再对应取值
gusi 2004-10-4 23:35
:clap::clap:
gusi 2004-10-4 23:38
..............:thinking:
闲人 2004-10-5 20:14
心急如焚啊。请二位老师不吝赐教!谢谢啦!!!
hx817 2004-10-5 20:35
自己为什么不先检查清楚呢?
其中:
[code]
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
[/code]
看看这几个表,是否不对?
处理正确后,
将前面判断先去掉
[code]
'if Rs.RecordCount=Last+1 then
for i=0 to Last
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
Rs.MoveNext
next
'End if
[/code]
这样就应该可以看到从第一个 K 线开始的数据
而后再来考虑前面说的时间对应问题
hx817 2004-10-5 22:04
加入对日期判断对应取数据
[code]
fc:=CLOSE;fo:=fc;fl:=fc;fh:=fc;fv:=fc;
gpdm:=STKLABEL; scdm:=MARKETLABEL;
fy:=YEAR; fm:=MONTH; fd:=DAY;
<%
vo=ffl.vardata("fo")
vh=ffl.vardata("fh")
vl=ffl.vardata("fl")
vc=ffl.vardata("fc")
vv=ffl.vardata("fv")
gpdm=ffl.vardata("gpdm")
scdm=ffl.vardata("scdm")
vy=ffl.vardata("fy")
vm=ffl.vardata("fm")
vd=ffl.vardata("fd")
n=ffl.vardata("n")
Const Jet3x = 4
Const Jet4x = 5
FileName="user\a2000.mdb"
TableName=scdm & gpdm
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(vc)
for i=0 to Last
vdate=DateSerial(vy(i), vm(i), vd(i))
if vdate>Rs.Fields("日期") then
Rs.MoveNext
end if
if vdate=Rs.Fields("日期") then
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
Rs.MoveNext
else
vo(i)=0
vh(i)=0
vl(i)=0
vc(i)=0
vv(i)=0
end if
next
Set Rs=Nothing
Set Conn=Nothing
End Sub
ffl.vardata("fo")=vo
ffl.vardata("fh")=vh
ffl.vardata("fl")=vl
ffl.vardata("fc")=vc
ffl.vardata("fv")=vv
%>
主力仓位:fo,linethick0;
仓位比率‰:fh;
当日强度:fl;
智能体检分:fc;
量比:fv;
[/code]
闲人 2004-10-5 23:20
使我多日悬起来的心今日终于得以落下。在此多多感谢hx817老师!:cool:在此也请老师多多保原谅,并非我偷懒,我也曾绞尽脑汁,苦思冥想,终不得要领,只因那么一点点醋,晃荡不起来,黔驴技穷了,所以不得已才麻烦老师。我也知道老师也非常忙,又在节假日中,我也十分不好意思.在此再次感谢hx817老师,谢谢!!!:cool::cool::cool::clap::clap::clap:
hx817 2004-10-5 23:38
不是说你 偷懒,而是不够细心
看了你的回帖,说明 第 13 楼 提的问题你自己还是没发现
看你公式中的原码
[code]
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率 ‰")
vl(i)=Rs.Fields("当日强度")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
[/code]
修改后的
[code]
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
[/code]
另外
原这句 if Rs.RecordCount=Last+1 then 是判断数据的记录数是否与 K 线序列值相等
所以要先取消
Rs.MoveNext 这个是数据库中指针的移动
新增部分完成对日期的判断
[code]
for i=0 to Last
vdate=DateSerial(vy(i), vm(i), vd(i))
if vdate>Rs.Fields("日期") then //如果K线日期大于数据库日期,跳指针
Rs.MoveNext
end if
if vdate=Rs.Fields("日期") then //如果K线日期等于数据库日期,取数据
......
Rs.MoveNext
else //否则,数据为 0
......
end if
next
[/code]
闲人 2004-10-6 21:05
看了老师对公式的剖析,让我获夷非浅.我要好好地珍藏!老师的精神更值得我们大家学习!再次谢谢老师!!!:cool::clap:
kjyhao 2004-10-7 18:12
我要好好地珍藏!
leguox 2004-10-14 00:15
写的很精彩啊
leguox 2004-10-14 00:20
很精彩啊
南客 2004-11-3 19:00
Sorry
近期事情多,来得少了,没看到贴子。
HX817解决得很好呀:)
闲人 2004-11-5 21:31
[quote][i]南客[/i] 于 2004-11-3 19:00 写道:
Sorry
近期事情多,来得少了,没看到贴子。
HX817解决得很好呀:) [/quote]
南客老师您真是太客气了,要说Sorry的是我,一而再再而三地麻烦老师。HX817老师也给了我很大的帮助,确实从心底里非常感谢二位老师。
我心中有一个忧虑始终挥之不去,请见[quote]http://bbs.fjfox.com/viewthread.php?tid=11082&highlight=&page=3[/quote]第56楼的帖子,还请老师多多费心。拜谢了!!!
liws 2005-8-27 20:54
没有第 15 楼: 的源码呢,我看到一段是零以下的是什么呀????
joneslee 2005-10-28 11:19
D
njkyzy 2006-2-18 14:18
论坛有你更精彩,谢谢,辛苦了,感谢你的辛勤劳动!
页:
[1]