向sql数据库中插入数据的问题!

yttrelq 2004-09-20 09:53:09
当从excel里向sql数据库中插入数据时,当表已有时,程序报错说“表已经存在”,且不继续执行?
怎样保证数据不被重复插入呢?
代码如下:
Private Sub cmdselectinto_Click()
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;" And _
"User ID=sa;Initial Catalog=china_MD_ELP;Data Source=(LOCAL)"


strSQL = "SELECT * INTO XLImport7 FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=D:\lq\Project\YntMD007_単品ExcelDB保存機能追加\Program\単品ExcelDB保存機能追加03.xls', " & _
"[lq$])"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

cn.close
Set cn = Nothing

End Sub
...全文
112 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yttrelq 2004-09-20
嗯,我确实在程序中控制数据的重复,对EXCEL中每个单元格的数据,与表中的每个纪录进行对比,没有重复的才插入数据库中,如此,效率很低。大哥有好的建议吗?
回复
online 2004-09-20
如果有表,就删除

如果是数据,先删后插
回复
icedut 2004-09-20
要想数据不重复
就要你的程序控制了

你订好规则,就可以了阿
回复
yttrelq 2004-09-20
谢谢!怎样保证数据不被重复插入呢?
回复
pweixing 2004-09-20
select name from sysobjects
用这个语句,可以查询出当前数据库中的表,然后用一个语句判断记录集里面有没有你要的表名就好了!
回复
RUKYO 2004-09-20
在数据量是海量这样的确会慢得难以忍受,给你一个例子:

'工程->引用Microsoft ActiveX Data Objects 2.x Library
Option Explicit
Public mCnnString As String

Private Sub Command1_Click()
Dim strSQL As String
Dim mCon As New ADODB.Connection
Dim mRst As New ADODB.Recordset
mCon.Open mCnnString
mCon.CursorLocation = adUseClient
Set mRst = mCon.OpenSchema(adSchemaTables, Array(Empty, Empty, "tblXSL", "Table"))
If mRst.EOF Then
strSQL = "SELECT * INTO tblXSL FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source=" & App.Path & "\Book1.xls;" & _
"Extended Properties=Excel 8.0')...[Sheet1$]"
Else
strSQL = "INSERT INTO tblXSL SELECT * FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source=" & App.Path & "\Book1.xls;" & _
"Extended Properties=Excel 8.0')...[Sheet1$] " & _
"WHERE ID NOT IN (SELECT ID FROM tblXSL)"
End If
mCon.Execute strSQL
Set mCon = Nothing
End Sub

Private Sub Form_Load()
mCnnString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=Server"
End Sub
回复
相关推荐
发帖

1188

社区成员

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