将Excel导出到SQL时没有重复值

时间:2018-10-12 10:53:14

标签: sql-server excel

我成功地建立了Excel和SQL之间的联系,并设法将Excel单元格中的记录添加到SQL数据库表中,这是我所做的教程:

Export data from Excel to SQL Server

我在excel Sign up form i made中制作的一个(注册表单),我设法制作了一个Macro to(注册)按钮,将数据传输到SQL数据库中,这是供参考的代码:< / p>

 Sub connect()
    Dim conn As New ADODB.Connection
    Dim iRowNo As Integer
   ' Dim sCustomerId, sFirstName, sLastName As String

    With Sheets("Sheet2")

        'Open a connection to SQL Server
        conn.Open "Provider=SQLOLEDB;Data Source=seshbones\bones;Initial Catalog=fadi;Integrated Security=SSPI;"

        'Skip the header row
        iRowNo = 2

        'Loop until empty cell in CustomerId
        Do Until .Cells(iRowNo, 1) = ""
            Name = .Cells(iRowNo, 1)
            Location = .Cells(iRowNo, 2)
            Age = .Cells(iRowNo, 3)
            ID = .Cells(iRowNo, 4)
            Mobile = .Cells(iRowNo, 5)
            Email = .Cells(iRowNo, 6)

            'Generate and execute sql statement to import the excel rows to SQL Server table
            conn.Execute "insert into dbo.test (Name, Location, Age, ID, Mobile, Email) values ('" & Name & "', '" & Location & "', '" & Age & "', '" & ID & "', '" & Mobile & "', '" & Email & "')"

            iRowNo = iRowNo + 1
        Loop

        MsgBox "Customers imported."

        conn.Close
        Set conn = Nothing

    End With
 me in the table

End Sub

我要创建一个限制代码,以不重复表中的相同用户名,例如,如果客户在excel单元格中输入(用户名)并按(SignUP),则必须具有检查SQL数据库并检查的功能用户名已被使用,并拒绝使导出,并且出现消息框“用户已被使用”,我希望您明白我的意思。

1 个答案:

答案 0 :(得分:0)

谢谢您的帮助,我将错误处理程序代码添加到了我的项目中,因此,如果我的数据库中有重复的记录,它将防止我的程序关闭,并仅警告用户“已使用用户名”,这就是我的方法我修复了代码:

 Sub Connect()
    Dim conn As New ADODB.Connection
    Dim iRowNo As Integer
   ' Dim sCustomerId, sFirstName, sLastName As String
 'Error handler
On Error GoTo ErrHandler:
    With Sheets("Sheet2")

'Open a connection to SQL Server conn.Open "Provider=SQLOLEDB;Data Source=seshbones\bones;Initial Catalog=fadi;Integrated Security=SSPI;" 'Skip the header row iRowNo = 2 'Loop until empty cell in CustomerId Do Until .Cells(iRowNo, 1) = "" Name = .Cells(iRowNo, 1) Location = .Cells(iRowNo, 2) Age = .Cells(iRowNo, 3) ID = .Cells(iRowNo, 4) Mobile = .Cells(iRowNo, 5) Email = .Cells(iRowNo, 6) 'Generate and execute sql statement to import the excel rows to SQL Server table conn.Execute "insert into dbo.test (Name, Location, Age, ID, Mobile, Email) values ('" & Name & "', '" & Location & "', '" & Age & "', '" & ID & "', '" & Mobile & "', '" & Email & "')" iRowNo = iRowNo + 1 Loop MsgBox "Customers imported." conn.Close Set conn = Nothing End With Exit Sub ErrHandler:MsgBox "Username Already taken" End Sub