设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: dgx1995
打印 上一主题 下一主题

[其它] 无效的INSTER INTO语句

[复制链接]
11#
 楼主| 发表于 2003-11-4 04:40:00 | 只看该作者
在次感谢!!
又有一问题。
Dim wrkODBC As Workspace
    Dim yc As DAO.Connection
    Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _
        "admin", "", dbUseODBC)
    Set yc = wrkODBC.OpenConnection("lx", , _
True, "ODBC;DATABASE=fuzhuang;UID=saWD=;")
    Dim rstTemp As DAO.Recordset
    '------下载员工资料
    Set rstTemp = yc.OpenRecordset("SELECT * FROM 员工", dbOpenDynaset)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "delete * from 员工"
    i = 0
    c = rstTemp.Fields.Count
    Do While i < c
        
    Do Until rstTemp.EOF = True
   
    BB = rstTemp.Fields(i)
        DoCmd.RunSQL "INSERT INTO 员工 ( " & CurrentDb.TableDefs("员工").Fields(i).Name & ") valueS ('" & BB & "')"
   rstTemp.MoveNext
    Loop
     i = i + 1
     rstTemp.MoveFirst
    Loop
    yc.Close
    wrkODBC.Close
    DoCmd.SetWarnings True


执行后结果为
1
    张小燕
              女
                  库房主管

,请问这个怎么办?
12#
发表于 2003-11-4 15:20:00 | 只看该作者
請檢查你的循環

試試這樣吧..

Do Until rstTemp.EOF

      for i=0 to c-1
        DoCmd.RunSQL "INSERT INTO 员工 ( " & CurrentDb.TableDefs("员工").Fields       (i).Name & ") valueS ('" & rstTemp.Fields(i) & "')"

   next
   rstTemp.Movenext
    Loop
13#
 楼主| 发表于 2003-11-4 18:37:00 | 只看该作者
我試了,结果还是这样,我想是因为在插入的时候,字段1占据了第一条记录,字段2在插入的时候,便从记录2开始插入了。才会出现这样的结果。
应该是sql语句的想法不对,现在的语句还可在加WHERE否

1
    张小燕
              女
                  库房主管
14#
发表于 2003-11-4 19:55:00 | 只看该作者
哦,糊涂了:

CurrentDb.TableDefs("员工").Fields       (i).Name & ") valueS ('" & rstTemp.Fields(i) & "')"

改成:
DIM dbs as database
dim rst as recordset
set dbs=currentdb
set rst=dbs.openrecordset("員工")
...
rst.addnew
rst.fields(i)=rsttemp.fields(i)
...

另外
你的目地是把網上的員工資料讀到本地來,可以這樣的...
INSERT INTO 員工
SELECT 員工.*
FROM 員工 in '網上路徑'[Provider=Microsoft.Jet.OLEDB.4.0] ;

15#
 楼主| 发表于 2003-11-4 22:11:00 | 只看该作者
'網上路徑'??
16#
发表于 2003-11-4 22:23:00 | 只看该作者
就是你要讀取的資料路徑:

\\SERVER\123\TEST.MDB
17#
 楼主| 发表于 2003-11-4 22:29:00 | 只看该作者
远程的数据库是SQL SERVER 2000
18#
发表于 2003-11-4 22:38:00 | 只看该作者
哦,難怪
19#
 楼主| 发表于 2003-11-4 23:12:00 | 只看该作者
都怪我太笨,不明白什么意思。
INSERT INTO 員工
SELECT 員工.*
FROM 員工 in '網上路徑'[Provider=Microsoft.Jet.OLEDB.4.0] ;
这句,中的网上路径,能不能通过ODBC来实现。
谢谢!
20#
发表于 2003-11-4 23:25:00 | 只看该作者
不好意思,我沒用過SQL,ADP
所以,接不下去了....
但是,你如果不是一條一條判斷的讀入數據
應該用SQL語句一次性填入
是最好的...
上面那句呢,要改的不是網上路徑,而是后面的[...]
試試改成
Provider=sqloledb
這個只能你自已試試了,
祝你成功...
呵呵...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-4-26 15:20 , Processed in 0.095283 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表