请问如何用vb实现将excel表中的数据导入sql中已存在的表里?急!

smilevg 2006-02-28 08:35:15
我已经在网上搜索了,但是结果还是不行,现在讲我的程序写在这里,请大家帮我解决一下。
已经用sql的dts试了,可以导入excel的数据。但我编的程序,会提示odbc调用失败。

Private Sub Command1_Click() ’点击命令按钮后,开始执行导入
Dim cnSqlserver As ADODB.Connection
Dim cnExcel As ADODB.Connection
Dim rsExcel As ADODB.Recordset
Dim rsSqlserver As ADODB.Recordset

Set cnExcel = New ADODB.Connection
cnExcel.CursorLocation = adUseClient
On Error GoTo err:
cnExcel.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\bm.xls;Extended Properties=Excel 8.0;Persist Security Info=true" ‘c:\bm.xls,要导入的excel,就是

从sql里bmxx表导出的。
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\bm.xls;" & _
"Extended Properties=Excel 8.0"

'Import by using Jet Provider.
strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
"Server=w8105;Database=my_database;" & _
"UID=sa;PWD=sa].bmxx " & _ 'bmxx,sql里已经有的表
"FROM [sheet1$]" ’sheet1就是该表单
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff

cn.Close
Set cn = Nothing

err:
MsgBox err.Description, vbOKOnly + vbExclamation, "出错了"
End Sub

请大家帮忙,非常紧急。谢谢!
...全文
124 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
冰天天 2006-02-28
faysky2()的方法是用vb实现的,支持
回复
leongwong 2006-02-28
楼上 faysky2() 的方法,也是一个好方法.应该说是一个非常好的方法.
回复
leongwong 2006-02-28
楼主,不知你发现没有,其实你在首次运行后,已经正确地将数据导入了SQL中,成功地完成了你所要的功能.但当你再次导入时,此时的数据库中已经存在了bmxx这张表,此时,系统会报错."ODBC-Call Faid".当删除掉刚才生成的这张表bmxx时,再次运行,就一切OK了.所以,为了避免第二次运行错误,可将错误处理再重新处理下即可.
回复
faysky2 2006-02-28
用ADO吧:

参考 Excel导入sql:

'引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Private Sub Command1_Click()
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=123;Initial Catalog=dataBase001;Data Source=mySERVICE"
cn.CursorLocation = adUseClient
cn.Open
cn.Execute "select * into table4 from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=Yes;database=c:\Test.xls;','select * from [Sheet1$]')"
cn.Close
Set cn=Nothing
End Sub

回复
smilevg 2006-02-28
ljqqyx(),谢谢,你说的方法可以实现,但是我需要变成实现。
回复
leongwong 2006-02-28
关注!在调试中!
回复
冰天天 2006-02-28
可以直接在SQL SERVER中--企业管理器--选择要倒入的数据库--右键单机选择--ALL Tasks--倒入数据
回复
smilevg 2006-02-28
谢谢,我也发现了,select 会要求原数据库中不存在该表,是新建一张表。
所以我现在用insert into. 但是此时又会出现新的问题,excel中的数据都是ntext型,数据类型与目标树表中的不符合。需要用convert函数转换。
我所参加的课题要求可以由用户选择不同的目的表进行导入,如何能保证在导入时数据类型,主键不变?
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2006-02-28 08:35
社区公告
暂无公告