发新话题
打印

[高级] 利用ADO创建、读取Access数据库示例代码-2

利用ADO创建、读取Access数据库示例代码-2

在<<输出数据到Excel示例代码>>教学篇中,老师不厌其烦地帮我解决了用公式读取自建的Excel的大难题,心中无限感激!但由于Excel受容量的限制,老师要求用Access数据库来替代Excel。见
http://bbs.fjfox.com/viewthread. ... ghlight=&page=2第35楼~38楼的贴子,尤其是36楼。
当时由于我无法自建Access数据库。现在经过长期摸索,初步能建成Access数据库了。但是又面临着新的问题,就是怎样才能读取Access里的数据呢?于是就想到了老师另一教学文章<<利用ADO创建、读取Access数据库示例代码>>,异想天开地、想当然地改动了几条语句,自以为就可以读出数据来了。可是读出来的全部是收盘价,但Access里根本又没有收盘价的数据。真是太不自量力了!下面将公式、Access(里面象征性地选了几只股票做例子)、显示的图型上传。恳请老师给予指教。衷心感谢!!!
附件: 您所在的用户组无法下载或查看附件

TOP

接上楼

附件: 您所在的用户组无法下载或查看附件

TOP

向南客老师致歉

再次拜请南客老师的"师"不知怎么漏写了,决非有意.在此向南客老师道歉,对不起,请老师原谅!

TOP

南客老师,多么恳切地期望能再次得到您的无私帮助啊!

TOP

引用:
闲人 于 2004-9-28 22:26 写道:
南客老师,多么恳切地期望能再次得到您的无私帮助啊!
诚请南客老师.

TOP

mdb 数据库中数据的序列与股票中 K 线的序列位置不一样

TOP

请教老师,怎么样才能使它们的序列一样呢?恳请老师出手相助。十二万分感谢!!!

TOP

引用:
闲人 于 2004-9-30 00:32 写道:
请教老师,怎么样才能使它们的序列一样呢?恳请老师出手相助。十二万分感谢!!!
:clap::clap::clap:

TOP

思路上,应该是将前面的
fy:=YEAR; fm:=MONTH; fd:=DAY;
带入 VBS 计算,而后与数据文件的第一位的日期比较,再对应取值

TOP

TOP

..............

TOP

心急如焚啊。请二位老师不吝赐教!谢谢啦!!!

TOP

自己为什么不先检查清楚呢?
其中:
复制内容到剪贴板
代码:
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
看看这几个表,是否不对?

处理正确后,
将前面判断先去掉
复制内容到剪贴板
代码:
  '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   
这样就应该可以看到从第一个 K 线开始的数据
而后再来考虑前面说的时间对应问题

TOP

加入对日期判断对应取数据
复制内容到剪贴板
代码:
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;

TOP

数据
附件: 您所在的用户组无法下载或查看附件

TOP

使我多日悬起来的心今日终于得以落下。在此多多感谢hx817老师!在此也请老师多多保原谅,并非我偷懒,我也曾绞尽脑汁,苦思冥想,终不得要领,只因那么一点点醋,晃荡不起来,黔驴技穷了,所以不得已才麻烦老师。我也知道老师也非常忙,又在节假日中,我也十分不好意思.在此再次感谢hx817老师,谢谢!!!:cool:

TOP

不是说你 偷懒,而是不够细心
看了你的回帖,说明 第 13 楼 提的问题你自己还是没发现
看你公式中的原码
复制内容到剪贴板
代码:
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率 ‰")
vl(i)=Rs.Fields("当日强度")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
修改后的
复制内容到剪贴板
代码:
vo(i)=Rs.Fields("主力仓位(万股)")
vh(i)=Rs.Fields("仓位比率‰")
vl(i)=Rs.Fields("当日强度%")
vc(i)=Rs.Fields("智能体检(分)")
vv(i)=Rs.Fields("量比")
另外
原这句 if Rs.RecordCount=Last+1 then 是判断数据的记录数是否与 K 线序列值相等
所以要先取消

Rs.MoveNext 这个是数据库中指针的移动

新增部分完成对日期的判断
复制内容到剪贴板
代码:
    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

TOP

看了老师对公式的剖析,让我获夷非浅.我要好好地珍藏!老师的精神更值得我们大家学习!再次谢谢老师!!!

TOP

我要好好地珍藏!

TOP

Sorry
近期事情多,来得少了,没看到贴子。
HX817解决得很好呀:)

TOP

引用:
南客 于 2004-11-3 19:00 写道:
Sorry
近期事情多,来得少了,没看到贴子。
HX817解决得很好呀:)
南客老师您真是太客气了,要说Sorry的是我,一而再再而三地麻烦老师。HX817老师也给了我很大的帮助,确实从心底里非常感谢二位老师。
      我心中有一个忧虑始终挥之不去,请见
引用:
http://bbs.fjfox.com/viewthread.php?tid=11082&highlight=&page=3
第56楼的帖子,还请老师多多费心。拜谢了!!!

TOP

没有第 15 楼:  的源码呢,我看到一段是零以下的是什么呀????

TOP

D

TOP

论坛有你更精彩,谢谢,辛苦了,感谢你的辛勤劳动!

TOP

发新话题