发表于:2003-08-04 16:11:00
楼主
用ODBC将FIX数据写入ACCESS中
我的不骤为:
一、在c:\Access目录下建一ACCESS数据库(fix.mdb),包含三个表SQLLIB,SQLCMD,和自定义的数据表DATA
三个表的字段如下:
1)SQLLIB的字段如下:
1,sqlname:text(20)
2,sqlcmd: text(100)
2)SQLCMD的字段如下:
1,td: datatime
2, node: text(8)
3, tag: text(30)
4, sqlname: text(8)
5, fix_err: text(100)
6, sql_err: text(250)
7, prog_err:text(50)
3)DATA的字段如下:
1,tag: text(20)
2,des: text(20)
3,val: text(20)
在SQLCMD中输入一个记录: sqlname="INST1"
sqlcmd="INSERT INTO DATA(TAG,DES,VAL) VALUES(?,?,?);"
数据库建好后,在控制面板的ODBC中定义[系统DSN]为TEST
二、在FIX的SCU中定义ODBC(我用的是fix32(老版本6.10)演示版)
1)在SCU的TASK添加WSQLODC.EXE (我用的是fix32(老版本6.10)演示版无该文件,
朋友给我一个6.15的,运行时一个错误提示(Error opening TOV file:sqlerr)但能运行)
2)在SCU的SQL的 SQL longin Information 中设置:
1.Database Type: Access
2.User Name: (没有添内容空白)
3.Password: (没有添内容空白)
4.Database Identifier: test
3)在SCU的SQL的 SQL Task configuration 中设置:
1.SQL Support: Enable
2.Backup Files Primary: c:\Access ,Secondary: c:\access
3.Relational Database中设置:
3.1 Database ID: test
3.2 SQL cmd table: SQLLIB
3.3 Error Log Table: SQLERR
4.Error msg to screen: checked
5.Debug msg to Screen: checked
当然要保存了
三、运行DBB.exe,在FIX的数据库里定义SQT1与SQD1
1.设置SQT1:
1.1 Tag Name: SQT1 Next Block:SQD1
1.2 Date Filters Start Date: ALL End Date:NONE
1.3 SAC Parameters: Initial Mode: Manual , Start Block On Scan:checked
Scan Time:1
1.4 Time Events:(没有添内容空白) End Time:(没有添内容空白) Event Period:00:00:05
1.5 Block Events: Event Tag:(没有添内容空白) Confirm Tag:(没有添内容空白)
1.6 Event Type: Change of value
SQL Trigger Block(page2)中配置如下:
1.7 SQL Name: INST1
1.8 Database ID: test
1.9 Command Type:SQL cmd
1.10 Select Parameters: Single row
2)设置SQD1
2.1 Tag Name: SQD1 Next Block: (没有添内容,空白)
2.1 Security Areas: NONE Alarm Areas: All
3.1 Tag.field Drirction Reset to:
1>AX.A_TAG OUT NONE
2>AX.A_DESC OUT NONE
3>AX.A_CV OUT NONE
AX 是我随意定义的一个TAG
四、在Draw中设置
1。放一命令按钮[start],Edit command 如下:
DECLARE #MY_NUM STRING
#MY_NUM ="AUTO"
SETVAL FIX:SQT1.A_AUTO #MY_NUM
我让它去触发SQT1
2。放一命令按钮[stop],Edit command 如下:
DECLARE #MY_NUM STRING
#MY_NUM ="MANL"
SETVAL FIX:SQT1.A_AUTO #MY_NUM
我让它停止SQT1
问题是:
1。执行后fix数据库什么记录也没有,也没发现有错误(我不知道怎样调试)
iFIX(3.0也是演示版)我也试了结果一样,请各位大师帮忙
2。向access数据库定时写数据,用命令按钮[start]合适吗?,有好办法吗?
五、我用dde的步骤如下:
1.用fix32(老版本)的dde做server(运行DMDDE.exe)
2.用vb做客户端,结点名为:fix
vb的text控件设置为:linktopic="DWDDE|DATA",linkMode="1",linkItem="fix32.fix.AX.a_cv"
问题是:
为什么连接后出现"?E2302" 后变为"?E1914",请各位大师帮忙