Dim conodbc As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim STRSQL As String
Dim LastValue As Integer
Dim CurValue As Integer
Set conodbc = New ADODB.Connection
On Error Resume Next
conodbc.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial
Catalog=HY_tlx;Data Source=10.16.52.1" '连接字符串
conodbc.Open '打开连接
Set adoRS = New ADODB.Recordset
STRSQL = "SELECT * FROM HY_digital_data " _
& "WHERE (HY_digital_data.digital_data_code = strTAG ) ORDER BY HY_digital_data.Time DESC"
'SQL语句,查询该标签历史纪录
adoRS.Open STRSQL, conodbc, adOpenKeyset, adLockOptimistic, adCmdText '打开纪录
LastValue = adoRS.Fields(3).Value '读取标签上一次的纪录值
CurValue = System.FindObject("FIX32.FIX." & "D" & strTAG & ".F_CV") '标签当前值
If CurValue <> LastValue Then '标签当前值与上一次的值作比较,判断是否相等
adoRS.AddNew '增加纪录
adoRS!digital_data_code = strTAG
adoRS!digital_data_state = CurValue
adoRS!Time = Now
adoRS!ship_code = "001"
adoRS.Update '更新纪录
End If
adoRS.Close '关闭纪录
conodbc.Close '关闭连接
Set conodbc = Nothing '释放对象
Set adoRS = Nothing程序在执行到if 语句前都可以正常进行,但是就是在增加记录时,增加不了,就是SQL中没有记录。请问这是怎么回事啊?
Dim adoRS As ADODB.Recordset
Dim STRSQL As String
Dim LastValue As Integer
Dim CurValue As Integer
Set conodbc = New ADODB.Connection
On Error Resume Next
conodbc.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial
Catalog=HY_tlx;Data Source=10.16.52.1" '连接字符串
conodbc.Open '打开连接
Set adoRS = New ADODB.Recordset
STRSQL = "SELECT * FROM HY_digital_data " _
& "WHERE (HY_digital_data.digital_data_code = strTAG ) ORDER BY HY_digital_data.Time DESC"
'SQL语句,查询该标签历史纪录
adoRS.Open STRSQL, conodbc, adOpenKeyset, adLockOptimistic, adCmdText '打开纪录
LastValue = adoRS.Fields(3).Value '读取标签上一次的纪录值
CurValue = System.FindObject("FIX32.FIX." & "D" & strTAG & ".F_CV") '标签当前值
If CurValue <> LastValue Then '标签当前值与上一次的值作比较,判断是否相等
adoRS.AddNew '增加纪录
adoRS!digital_data_code = strTAG
adoRS!digital_data_state = CurValue
adoRS!Time = Now
adoRS!ship_code = "001"
adoRS.Update '更新纪录
End If
adoRS.Close '关闭纪录
conodbc.Close '关闭连接
Set conodbc = Nothing '释放对象
Set adoRS = Nothing程序在执行到if 语句前都可以正常进行,但是就是在增加记录时,增加不了,就是SQL中没有记录。请问这是怎么回事啊?
解决方案 »
- 一个文本文档,超难读
- 函数声明,编译错误Only comments may appear after End Sub, End Function, or End Property
- 如何读取设置屏幕X坐标?
- 时钟怎么实现?
- ADO問題﹐在線
- 我的程序为什么在98下连接不到数据库服务器而在2000下可以?
- 如何确定一个表中某个int型的字段的最大值(多人同时操作时)
- 我想找出存在与执行文件目录下的所有的EXE文件,用什么好呢?
- VB编写的ERP源程序出售
- 请问谁有类似foxmail或outlook express的程序源代码,VC或VB的
- 服务器将ACCESS数据库的SQL查询结果传给客户端
- vb做的控件放在网页里,控件有2个界面(有前后关系),怎么样切换这2个界面啊?
***********************
这里设断点,看能运行到这里不
然后就不知道怎么回事了 。
我怀疑
STRSQL = "SELECT * FROM HY_digital_data " _
& "WHERE (HY_digital_data.digital_data_code = strTAG ) ORDER BY HY_digital_data.Time DESC" 这样带有 WHERE 打开SQL数据库时,不能进行写操作。不知道这种想法对不对?
注意,这里的 strTAG 是什么
System.FindObject("FIX32.FIX." & "D" & strTAG & ".F_CV")
这里又是什么呢?我不知道你是什么意思,只是猜测这里有问题!
HY_digital_data 是数据库中一个表,digital_data_code是表中某一列名。表一共有四列:
Time、digital_data_code、digital_data_state 和 ship_code System.FindObject("FIX32.FIX." & "D" & strTAG & ".F_CV") 这条语句可以忽略比如我另外进行了测试,预先存储了一条记录如下:
adoRS!Time = Now
adoRS!digital_data_code = “011010”
adoRS!digital_data_state = 1
adoRS!ship_code = "001"
然后,修改代码如下:
adoRS.Open STRSQL, conodbc, adOpenKeyset, adLockOptimistic, adCmdText '打开纪录
LastValue = adoRS.Fields(3).Value '读取标签上一次的纪录值即digital_data_state的值
CurValue = 0 '令其值与数据库中值不一样
If CurValue <> LastValue Then '标签当前值与上一次的值作比较,判断是否相等
adoRS.AddNew '增加纪录
adoRS!digital_data_code = “011010”
adoRS!digital_data_state = CurValue
adoRS!Time = Now
adoRS!ship_code = "001"
adoRS.Update '更新纪录
End If
adoRS.Close '关闭纪录
conodbc.Close '关闭连接
Set conodbc = Nothing '释放对象
Set adoRS = Nothing很明显,CurValue 不等于 LastValue,这是应该在数据库中记录CurValue值了,但是数据库中没有任何变化。不知道为什么
& "WHERE (HY_digital_data.digital_data_code = strTAG ) ORDER BY HY_digital_data.Time DESC"
********************************************************************应该改成
STRSQL = "SELECT * FROM HY_digital_data " _
& "WHERE (HY_digital_data.digital_data_code = '" & strTAG & "' ) ORDER BY HY_digital_data.Time DESC"
STRSQL = "SELECT * FROM HY_digital_data " _
& "WHERE (HY_digital_data.digital_data_code = ‘011010’ ) ORDER BY HY_digital_data.Time DESC"然后按照第6楼,我改好的代码进行了测试,还是不行。
是不是按照这种方式打开的SQL数据库不能进行“写”操作 ?
因为我直接将STRSQL 换成HY_digital_data 进行“写”操作时,是正常的。
这一句加断点检查一下那个STRSQL里的内容,和 adoRS.Fields(3).Value 的值
试过,不知怎么回事,打印出STRSQL中的值,明显跟所要写进数据库中的值不一样,但是结果就是写不进数据库,真是郁闷。
& "WHERE (HY_digital_data.digital_data_code = strTAG ) ORDER BY HY_digital_data.Time DESC"*********************************************************************这里加where有问题,有条件查询到的数据,以这个为基础再添加记录就有与数据库中现有数据冲突的可能,可能系统不让添加。
如果把where去掉可能会添加
adoRS!digital_data_code = “011010”这句不应该加,看你这里似乎是作为修改条件的。