我有一个Access的数据库A 
其中表名为x1 
表中有一个字段y1 
还有一个MSSQL的数据库B 
其中表名为w1  
其中有一个字段s1 
现在的问题是: 
怎么将(Access)y1字段中的值写入(MSSQL)s1 ?并且s1的值随y1的值的变动而变动?

解决方案 »

  1.   

    --在Access查询中,如何用SQL访问SQL Server中的表?
    多种方式:1、用链接表。2、用传递查询。3、直接在本地查询串中指定连接信息即可,如下:select * from Orders in [ODBC][ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=Northwind]INSERT INTO 目标库表名 (字段列表) IN ODBC[ODBC;Driver=SQL Server;Server=服务器名或IP;Uid=sa;Pwd=密码;database=数据库名]
    SELECT 字段列表
    from Access本地表
    传递查询和链接表,两者工作原理不同:1、传递查询:将需要查询到本地的数据的SQL语句写在传递查询中,执行后,只返回符合查询条件的数据。2、链接表:打开链接表时,返回所连接SQL Server表的全部数据。
    要导入表中的数据,需要先创建DSN。-->控制面板
    -->管理工具
    -->数据源 (ODBC)
    -->选择“文件DSN”页
    -->添加
    -->选择最后一行:SQL Server
    -->指定数据源名称,只要好记即可
    -->指定要连接的服务器名或IP,本机可以用.
    -->选择SQL Server混合验证,输入用户和密码
    -->更改默认数据库为你要连接的数据库
    -->完成
    -->然后在你的MDB中创建链接表时,选此数据源即可。
    使用链接表时,建议使用文件数据源创建链接表,与机器无关,拷贝到别的机器上可以直接使用,无须再手工或用代码创建ODBC。三种数据源比较:文件DSN
    ODBC文件数据源允许用户连接到数据提供程序。文件DSN可以由安装了相同驱动程序的用户共享。用户DSN
    ODBC用户数据源存储了如何与指定数据提供程序连接的信息。用户数据源只对当前用户可见,而且只能用于当前机器上。系统DSN
    ODBC系统数据源村除了如何与指定数据提供程序连接的信息。系统数据源对当前机器上的所有用户可见,包括NT服务。
      

  2.   


    用查询作中转,然后再关联你要更新的表。
    如:update 表名 a inner join 查询名 b on a.id=b.id set a.name=b.nameAccess使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。
    JET SQL 帮助(jet4 access2000)下载地址http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
      

  3.   

    1、
    update Orders in [ODBC][ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=Northwind] a,tt b set a.s1=b.y1 where ...
    2、并且y1的值随s1的值的变动而变动?
    在SQL SERVER的触发器中写代码替换
      

  4.   

    不能做到实时,必须自己写代码更新SQL Server中的w1.s1。可以在Access中实现,也可以在SQL server中实现。如果在SQL server中,可以创建Job,定期访问Access中的表,然后更新表中的数据。SQL Server中用OpenRowSet或OpenDataSource
      

  5.   

    1、
    update tt a,Orders in [ODBC][ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=Northwind] set set a.s1=orders.y1 
    where a.gg=orders.gg
      

  6.   

    2、并且s1的值随y1的值的变动而变动?
    如果不是实时的话,可以,否则只有在ACCESS中写代码替换。
      

  7.   

    1、在Access中创建链接表。2、根据这个链接表创建查询:qry_SQL
        SELECT *
        FROM w1 IN ODBC[ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=A];3、执行如下SQL:
          UPDATE qry_SQL INNER JOIN x1 ON qry_SQL.id = x1.id SET qry_SQL.s1 = [x1].[y1];
      

  8.   

    -关于如何创建SQL Server到Access的链接表,参考:创建链接表:1、在数据库“表”视图窗口中,右键“链接表”,或从“文件”菜单-->获取外部数据-->链接表
    2、在打开的窗口中,“文件类型”选择最后一个“ODBC Databases”
    3、弹出“选择数据源”窗口,点“新建”
    4、弹出“创建新数据源”窗口,选最下边一个“SQL Server”
    5、定义你新建数据源的名称,以名字好记为宜
    6、选择服务器,输入服务器的名字或IP地址
    7、选择SQL 验证,输入用户名和密码
      

  9.   

    怎么将(Access)y1字段中的值写入(MSSQL)s1 ?
    1、jet sql
    update tt a,Orders in [ODBC][ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=Northwind] set set a.s1=orders.y1
    where a.gg=orders.gg
    2、创建链接表,再UPDATE:
    配置好ODBC,表->新建->链接表->ODBCD Databases->选择ODBC数据源即可
    UPDATE qry_SQL INNER JOIN x1 ON qry_SQL.id = x1.id SET qry_SQL.s1 = [x1].[y1];并且s1的值随y1的值的变动而变动?
    不能实时,可以在ACCESS中写代码替换
      

  10.   

    链接表我是要新建一个吗?
    yes,方法如上述
      

  11.   

    -关于如何创建SQL Server到Access的链接表,参考:创建链接表:1、在数据库“表”视图窗口中,右键“链接表”,或从“文件”菜单-->获取外部数据-->链接表
    2、在打开的窗口中,“文件类型”选择最后一个“ODBC Databases”
    3、弹出“选择数据源”窗口,点“新建”
    4、弹出“创建新数据源”窗口,选最下边一个“SQL Server”
    5、定义你新建数据源的名称,以名字好记为宜
    6、选择服务器,输入服务器的名字或IP地址
    7、选择SQL 验证,输入用户名和密码
      

  12.   

    有了链接表,可以不用建查询,直接用:UPDATE 链接表名 as A INNER JOIN x1 ON A.id = x1.id SET A.s1 = [x1].[y1];
      

  13.   

    要替换的话,要用查询
    UPDATE sqlservertablename AS A, x1 AS b SET A.s1 = x1.y1
    WHERE [A].id=x1.id;
      

  14.   

    我的替换代码写在mssql里还是access里?
      

  15.   

    如何在Access查询中输入自己的SQL语句?-->打开你的MDB
    -->在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”->“查询”
    -->点击数据库窗口中的“新建”按钮
    -->点击“确定”,关闭“显示表”窗口
    -->点击工具栏上的“SQL”,或在“视图”菜单中选择“SQL 视图”
    -->删掉所有的内容
    -->直接输入SQL语句即可
      

  16.   

    UPDATE sqlservertablename AS A, x1 AS b SET A.s1 = x1.y1
    WHERE [A].id=x1.id;
    这句我没有看明白.
      

  17.   

    就是用Access 中的表X1和SQL Server中的表用id进行关联,更新SQL Server表的s1字段
      

  18.   

    UPDATE dbO_BT AS A, BT AS B SET A.scores = B.scores
    WHERE A.id=B.id;是这样的吗?
      

  19.   

    这里有一个问题,我是不是可以把所有的字段除ID外都可能写入?
    还有A.ID中的ID是不是所指的就是表中的ID?
    我的表的ID为USERID
    是不是可以改成:A.USERID?
      

  20.   

    两个表要有关联的字段,如:id,其他的字段都可以用Access的字段更新SQL Server表的字段。ID是指两个表关联的字段,可以是一个,也可以是多个,但应该是一一对应的。如果你的两个表的userid都是一一对应的,就可以。
      

  21.   


    这里有一个问题,我是不是可以把所有的字段除ID外都可能写入?
    还有A.ID中的ID是不是所指的就是表中的ID?
    我的表的ID为USERID
    是不是可以改成:A.USERID?
    只要两表的KEY 字段是有关系的,可以
      

  22.   

    现在还有我要怎么才能让它在指定的时间内更新呢?
    在ACCESS中还是其它语言中?
      

  23.   

    我的意思是让mssql随access的数据值变动而变动.但是你们说不行.
    但是如果要做到定时更新.我要怎么办?
      

  24.   

    让mssql随access的数据值变动而变动
      

  25.   

    自己用相关语言编制程序,在WINDOWS的计划中调用,代码如上述(ado+mdb,jet sql替换),
    具体实现自己多试试,到相关的语言版块去问吧。
      

  26.   

    是否可以用MSSQL中的触法器来实现呢?
    如果能实现,要怎么写?
      

  27.   

    如果用Access的数据更新SQL Server的表,无法用触发器实现。应该是做一个Job,调度执行,在SQL Server中用OpenRowSet或OpenDataSource访问MDB。
      

  28.   

    哦。还有。为什么我一运行MDB里的查询。他就要我显入ID呢?
    可以不输入吗?
      

  29.   

    有ID这个字段吗?
    不懂JOB
    那就最好用ACCESS
      

  30.   

    没有ID这个字段
    我改过成USERID了。
    但是不用输入了。
    可是还是要确认。
      

  31.   

    你把SQL语句复制出来,新建一个查询,在SQL视图中粘贴,运行一下试试。
      

  32.   

    提示输入参数,可能原因:在查询中设置了参数,或没有指定的字段。还有,更改了查询名及字段,ACCESS有时会出现此种情况,将
    SQL语句复制出来,新建一个查询,在SQL视图中粘贴,已经遇到多次了。
      

  33.   

    确实如楼上所说,Access经常出 莫名其妙的问题。