向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
...全文
151 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧