数据库中,有一表:abc
表中有数据
abc.A   abc.B   abc.C
若A、B经过修改了C没有做修改,而C=A-B
现在为使数据C的数值正确,做一个按键更新C
请各位指点一下~~~另,若有abc和bcd表
表中有abc.a ,abc.b 和bcd.a ,bcd.b理应要相同的,但经过数据的不同修改后
可能abc.a的数据与bcd.a的不同了,abc.b的数据与bcd.b的也不同了
这种情况又如何更新呢?

解决方案 »

  1.   

    做一个按键更新C
    -----------------
    update abc set c=A-B
      

  2.   

    第2个问题在对abc.a 和abc.b做修改的同时,也对bcd.a 和bcd.b,以保持数据的一致性
      

  3.   

    to faysky2() 做一个按键更新C
    -----------------
    update abc set c=A-B
    程序显示“缺少语句结束”
    可以详细点吗?
    ----------------------------------------
    Private Sub Redo_Click()
        update abc set c=a-b
    End Sub
    ------------------------------------
    ???????
      

  4.   

    上面给的只是简单的sql语句,在vb里的应该这样写:
    需要引用ADO("工程"/"引用"/Microsoft ActiveX Data Object 2.X Library)
    Private Sub Redo_Click()
        Dim cn As New ADODB.Connection
        'Access库的连接
    '    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Test.mdb;Jet OLEDB:DataBase password=12345;"
    '    如果是MSSql库,这样连接:
        '混合验证方式的连接:
        'cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登陆用户名;Password=登录密码;Initial Catalog=数据库名;Data Source=服务器别名/IP"
        '集成验证的连接:
        cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=服务器别名/IP"
        cn.Open
        cn.Execute ("update abc set c=a-b")
        cn.Close
        Set cn = Nothing
    End Sub
      

  5.   

    哈,第一个问题已经解决`~~~
    Thanks~如果第二个问题,bcd是以abc为主体的,即,无论bcd修改得如何,最终都以abc为准,又如何做呢(麻烦可以详细一点,呵~~~CaiNiao一只,不好意思)
      

  6.   

    这样,如果bcd里有数据
    -----------------
    a        b                  c
    张一    xxxx              bbbbbbbbb
    张一    yyyy              fdfdfd
    李二    zzz               fffffffffffff
    王四    34343             434
    王四    343               434
    王四    34r3              434
    伍五    4343             43434
    -----------------------
    abc里有数据
    ----------------------
    a       b
    张一    1
    李二    2
    王四    3
    ---------------
    *注:abc里的数据b是自动编号的!要将bcd里的a数据分组
    然后更新到abc里的a中如何实现呢?
      

  7.   

    还是不大清楚你的具体要求bcd里现有数据
    -----------------
    a        b                  c
    张一    xxxx              bbbbbbbbb
    张一    yyyy              fdfdfd
    李二    zzz               fffffffffffff
    王四    34343             434
    王四    343               434
    王四    34r3              434
    伍五    4343             43434
    -----------------------
    abc里现有数据
    ----------------------
    a       b
    张一    1
    李二    2
    王四    3更新后,bcd和abc的数据分别为??
      

  8.   

    更新后
    abc里的数据是:
    ---------------------
    a       b
    张一    1
    李二    2
    王四    3
    伍五    4
    -----------------------
    *注:由于bcd里出现的“伍五”abc里是没有的
    而系统要自动识别“伍五”的存在与否,如果存在,则不需要改动
    如果不存在,则要在abc中加入伍五的名称,而且b要接着连号...(已说明,abc里的b是自动编号的)
      

  9.   

    可以不一样,当我最顶楼的是废话就OK了:P
      

  10.   

    insert into abc select b.aa from bcd b where b.a not in( select a.a from  abc a)
      

  11.   

    上面的b.a写成b.aa了,改为下面的:
    insert into abc select b.a from bcd b where b.a not in( select a.a from  abc a)
    这个只是写成了sql语句,具体应用到vb里,像上面的做法一样就可以了
      

  12.   

    好像出现错误:“至一有一个参数没有指定”
    这样吧
    以上的bcd改为B     abc改为A
    bcd中的a改了x      abc中的a改为y b改为z
    再麻烦给出~~~:P
      

  13.   

    insert into A(y) select T2.x from B T2 where T2.x not in( select T1.y from  A T1)
    其中T1和T2为别名,不用管它们
      

  14.   

    B表:
    列1       列2                 列3
    张一    xxxx              bbbbbbbbb
    张一    yyyy              fdfdfd
    李二    zzz               fffffffffffff
    王四    34343             434
    王四    343               434
    王四    34r3              434
    伍五    4343             43434
    -----------------------
    A表:
    列1     列2
    张一    1
    李二    2
    王四    3更新后的结果:
    A表:
    列1     列2
    张一    1
    李二    2
    王四    3
    伍五    4
    sql语句(把B表中A表不存在的记录插入到A表里,因为A表的列2是自增的,所以插入数据时,不用给它指定值):insert into A表(列1) select T2.列1 from B表 T2 where T2.列1 not in( select T1.列 from  A表 T1)
      

  15.   

    语句已经正确了,但问题又产生了
    如果A表中的列1是有索引且已设定了不重复的呢?
    因为B表中是有重复,但要求A表名称不能重复的~~~
      

  16.   

    加上distinct关键字,就可以得到不重复的insert into A表(列1) select distinct T2.列1 from B表 T2 where T2.列1 not in( select T1.列 from  A表 T1)
      

  17.   

    给份了
    小弟再有一个问题,呵~~~
    如果B表的列2要以A表的列2为准呢?
    即:
    ==========================================
    B表:
    列1       列2                 列3
    张一    xxxx              bbbbbbbbb
    张一    yyyy              fdfdfd
    李二    zzz               fffffffffffff
    王四    34343             434
    王四    343               434
    王四    34r3              434
    伍五    4343             43434
    -----------------------
    A表:
    列1     列2
    张一    1
    李二    2
    王四    3更新后的结果一:
    A表:
    列1     列2
    张一    1
    李二    2
    王四    3
    伍五    4
    =======================================
    先得出结果一,再求以下结果:
    B表:
    列1       列2                 列3
    张一    1              bbbbbbbbb
    张一    1              fdfdfd
    李二    2              fffffffffffff
    王四    3              434
    王四    3              434
    王四    3              434
    伍五    4              43434
      

  18.   

    表B的列2不是自增列的话,可以这样写:
    update b set b.列2= a.列2 from 表B b join 表A a on b.列1= a.列1
      

  19.   

    to faysky2()
    你语句中的“b”、“a”
    分别是?!表B、表A 还是 列2、列1 ?按你语句,运行时出现“语法错误”
      

  20.   

    update b set b.列2= a.列2 from 表B b join 表A a on b.列1= a.列1
    -----------------------------------------
    语句中的"b"、"a"分别是表B和表A的别名,整个语句是将表B的列2更新,使得列2的数据与表A对应的列2一样
      

  21.   

    还不明白别名是什么反正我这样改了update 表B set 表B.列2= 表A.列2 from 表B 表B join 表A a on 表B.列1= 表A.列1
    按语句,运行时出现“语法错误”
      

  22.   

    用的是Access 97数据库,问题还没有解决~Help~~~