注册 登录
编程论坛 VB6论坛

[求助:]如何在VB中计算ACCESS数据某字段的值

xo1437404152 发布于 2014-03-31 17:48, 3640 次点击
请教各位高手,假设在数据库里有一表A,字段1,字段1有1,2,3......,我想实现2-1,3-2,4-3....依次类推,并把计算结果写入到表A里的另一个字段2中,该如何写?
19 回复
#2
vbvcr512014-03-31 19:25
简单.不知道你采用什么来连接access.控件还是adodc对象?
#3
owenlu19812014-03-31 20:07
没看明白需求,能否详细点?
#4
xo14374041522014-03-31 23:44
adodc对象连接的,
我的意思就是说,计算表A中字段X一列数据,让这列数据的下一个减去上一个数据,计算结果赋给字段Y,字段X有数据:
id 字段X 字段Y
1    1     (2-1的值)
2    2     (3-2的值)
3    3     (4-3的值)
...............
要计算2-1的值写入字段Y
#5
owenlu19812014-04-01 08:15
最后一个数值怎么处理?
#6
xo14374041522014-04-02 12:15
最后一个数值不变,直接放到字段2中的最后一个
#7
owenlu19812014-04-02 12:44
方法1:循环计算
Rs.Open "Select * from A order by [ID]",Conn,1,1
If Not Rs.EOF then
    Rs.MoveFirst
    ID = Rs.Fields("ID")
    ID_Val = Rs.Fields("字段1")
    Rs.MoveNext
    Do while not Rs.EOF
        Conn.Excute("Update A Set [字段2] = " & Rs.Fields("字段1")-ID_Val & " where [ID] = '" & ID & "'")
        ID = Rs.Fields("ID")
        ID_Val = Rs.Fields("字段1")
        Rs.MoveNext
    Loop
    Conn.Excute("Update A Set [字段2] = [字段2] where [ID] = '" & ID & "'")
EndIf
Rs.Close

方法2,:建立临时表C
Select * into C from (Select [ID],[字段1],IIF(IsNull[字段2],[字段1],[字段2]-[字段1]) as [字段2] from (Select A.[ID],A.[字段1],B.[字段1] as [字段2] from A left join A B on B.[ID]=A.[ID]+1))
删除表A, 重命名C为A
#8
xo14374041522014-04-02 13:20
按照方法输,提示“对象不支持该属性和方法或方法”
#9
owenlu19812014-04-02 14:13
出错行是?
要先引用ADO 并定义 Dim Conn As New ADODB.Connection, Rs As New ADODB.Recordset

Private sub Command1_Click
RsMain.CursorLocation = adUseClient
Rs.Open "Select * from A order by [ID]",Conn,1,1
If Not Rs.EOF then
    Rs.MoveFirst
    ID = Rs.Fields("ID")
    ID_Val = Rs.Fields("字段1")
    Rs.MoveNext
    Do while not Rs.EOF
        Conn.Excute("Update A Set [字段2] = " & Rs.Fields("字段1")-ID_Val & " where [ID] = '" & ID & "'")
        ID = Rs.Fields("ID")
        ID_Val = Rs.Fields("字段1")
        Rs.MoveNext
    Loop
    Conn.Excute("Update A Set [字段2] = [字段2] where [ID] = '" & ID & "'")
EndIf
Rs.Close
End sub
#10
xo14374041522014-04-02 14:40
出错行是: Conn.Excute("Update A Set [字段2] = " & Rs.Fields("字段1")-ID_Val & " where [ID] = '" & ID & "'")
RsMain.CursorLocation = adUseClient‘这行是什么意思?
#11
owenlu19812014-04-02 15:16
Sorry,拼写错误
是Conn.Execute
#12
xo14374041522014-04-02 17:03
测试代码后,出错“RsMain.CursorLocation = adUseClient”“要求对象”???
#13
owenlu19812014-04-02 19:45
Rs.CursorLocation = adUseClient
#14
xo14374041522014-04-02 21:15
只有本站会员才能查看附件,请 登录

我把字段改了一下需要的名字,提示这个错误?该怎么么改?

[ 本帖最后由 xo1437404152 于 2014-4-2 21:22 编辑 ]
#15
xo14374041522014-04-02 22:39
在线的版主帮助我一下啊
#16
xo14374041522014-04-02 22:53
我实在搞不明白了
#17
xo14374041522014-04-02 23:10
恳请版主再帮忙解释一下
#18
xo14374041522014-04-02 23:25
我找到问题所在了,呵呵,谢谢owenlu1981版主对我的帮助,非常感谢!
#19
小小熊布鲁斯2014-04-07 16:17
RsMain.CursorLocation = adUseClient‘这行是什么意思?
这行是指定客户端游标
#20
vbvcr512014-04-08 10:30
直接进行算术运算的话,数据类型要设置为整型或精度型.连接和记录集都要预先定义。

[ 本帖最后由 vbvcr51 于 2014-4-8 10:35 编辑 ]
1