Office中国论坛/Access中国论坛
标题:
无效的INSTER INTO语句
[打印本页]
作者:
dgx1995
时间:
2003-11-3 17:26
标题:
无效的INSTER INTO语句
Private Sub 下载基础资料_Click()
Dim wrkODBC As Workspace
Dim a As DAO.Connection
Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _
"admin", "", dbUseODBC)
Set a = wrkODBC.OpenConnection("lx", , _
True, "ODBC;DATABASE=fuzhuang;UID=sa
WD=;")
Dim rstTemp As DAO.Recordset
Set rstTemp = a.OpenRecordset("SELECT * FROM 员工", dbOpenDynaset)
Do Until rstTemp.EOF = True
BB = rstTemp.Fields(0)
DoCmd.RunSQL "INSERT INTO 员工 ( 姓名 ) VALUES '" & BB & "'"
rstTemp.MoveNext
Loop
a.Close
wrkODBC.Close
'为什么总是提示我INSERT INTO 语法错误。第一个员工为SQL SERVER上的表,第二
'个为本地表。
End Sub
作者:
ADAM
时间:
2003-11-3 17:29
加個括號試試:
DoCmd.RunSQL "INSERT INTO 员工 ( 姓名 ) valueS ('" & BB & "')"
作者:
dgx1995
时间:
2003-11-3 17:39
谢了。
那我在请问,如何判断rstTemp,一共有几个字段呀,因为我不想每个字段都用
“BB = rstTemp.Fields(0)“这个语句来实现。
作者:
ADAM
时间:
2003-11-3 17:42
是不是這個..呵呵...
rstTemp.Fields.count
作者:
dgx1995
时间:
2003-11-3 17:49
谢谢,万分感谢!
作者:
dgx1995
时间:
2003-11-3 18:48
又有问题了。
请问 DoCmd.RunSQL "INSERT INTO 员工 ( 姓名 ) valueS '" & BB & "'"
这句中的姓名,如何能够变为自动的
即如何判断本地表的字段名称
作者:
ADAM
时间:
2003-11-3 19:25
試試:
姓名改成:
Currentdb.tabledefs("姓名").fields(i).name
當然要用&連接喔...
作者:
dgx1995
时间:
2003-11-3 20:44
sorry,我就是不会怎么用連接
作者:
dgx1995
时间:
2003-11-3 20:46
对ACCESS,我是看得懂,不会写。
作者:
ADAM
时间:
2003-11-3 22:54
DoCmd.RunSQL "INSERT INTO 员工 ( " &Currentdb.tabledefs("姓名").fields(i).name
& ") valueS '" & BB & "'"
作者:
dgx1995
时间:
2003-11-4 04:40
在次感谢!!
又有一问题。
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=sa
WD=;")
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
张小燕
女
库房主管
,请问这个怎么办?
作者:
ADAM
时间:
2003-11-4 15:20
請檢查你的循環
試試這樣吧..
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
作者:
dgx1995
时间:
2003-11-4 18:37
我試了,结果还是这样,我想是因为在插入的时候,字段1占据了第一条记录,字段2在插入的时候,便从记录2开始插入了。才会出现这样的结果。
应该是sql语句的想法不对,现在的语句还可在加WHERE否
1
张小燕
女
库房主管
作者:
ADAM
时间:
2003-11-4 19:55
哦,糊涂了:
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] ;
作者:
dgx1995
时间:
2003-11-4 22:11
'網上路徑'??
作者:
ADAM
时间:
2003-11-4 22:23
就是你要讀取的資料路徑:
如
\\SERVER\123\TEST.MDB
作者:
dgx1995
时间:
2003-11-4 22:29
远程的数据库是SQL SERVER 2000
作者:
ADAM
时间:
2003-11-4 22:38
哦,難怪
作者:
dgx1995
时间:
2003-11-4 23:12
都怪我太笨,不明白什么意思。
INSERT INTO 員工
SELECT 員工.*
FROM 員工 in '網上路徑'[Provider=Microsoft.Jet.OLEDB.4.0] ;
这句,中的网上路径,能不能通过ODBC来实现。
谢谢!
作者:
ADAM
时间:
2003-11-4 23:25
不好意思,我沒用過SQL,ADP
所以,接不下去了....
但是,你如果不是一條一條判斷的讀入數據
應該用SQL語句一次性填入
是最好的...
上面那句呢,要改的不是網上路徑,而是后面的[...]
試試改成
Provider=sqloledb
這個只能你自已試試了,
祝你成功...
呵呵...
作者:
dgx1995
时间:
2003-11-4 23:49
thank you
我的问题比较多,
應該用SQL語句一次性填入 ?
不太明白
万分感谢!
作者:
ADAM
时间:
2003-11-4 23:56
就是不要用循環來實現,
用INSERT INTO 語句來完成...
作者:
dgx1995
时间:
2003-11-6 06:43
改成:
DIM dbs as database
dim rst as recordset
set dbs=currentdb
set rst=dbs.openrecordset("員工")
...
rst.addnew
rst.fields(i)=rsttemp.fields(i)
...
后,为什么执行结果为空,就是本地员工表没有记录。
请在给予帮助。
谢谢
作者:
ADAM
时间:
2003-11-6 15:24
你有沒加一句
RST.UPDATE
...
rst.addnew
FOR 語句
rst.fields(i)=rsttemp.fields(i)
RST.UPDATE
NEXT
Rsttemp.movenext
....
作者:
dgx1995
时间:
2003-11-7 00:46
我要是不用循环,怎么能把RSTTEMP中的数据全部插入到RST中呢?
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3