Insert new records only into SQL Table Using VBA Insert new records only into SQL Table Using VBA vba vba

Insert new records only into SQL Table Using VBA


Your SQL query isn't quite right - there is no THEN in a SQL IF.

Also, you don't need to do anything if it does exist, so just use if not exists.

"IF NOT EXISTS (SELECT 1 FROM dbo.Customers WHERE FirstName = '" & sFirstName & "' and LastName = '" & sLastName & "') " & _         "INSERT INTO dbo.Customers (FirstName, LastName) " & _         "VALUES ('" & sFirstName & "', '" & sLastName & "')"


This should do it for you.

Sub Button_Click()'TRUSTED CONNECTION    On Error GoTo errH    Dim con As New ADODB.Connection    Dim rs As New ADODB.Recordset    Dim strPath As String    Dim intImportRow As Integer    Dim strFirstName, strLastName As String    Dim server, username, password, table, database As String    With Sheets("Sheet1")            server = .TextBox1.Text            table = .TextBox4.Text            database = .TextBox5.Text            If con.State <> 1 Then                con.Open "Provider=SQLOLEDB;Data Source=" & server & ";Initial Catalog=" & database & ";Integrated Security=SSPI;"                'con.Open            End If            'this is the TRUSTED connection string            Set rs.ActiveConnection = con            'delete all records first if checkbox checked            If .CheckBox1 Then                con.Execute "delete from tbl_demo"            End If            'set first row with records to import            'you could also just loop thru a range if you want.            intImportRow = 10            Do Until .Cells(intImportRow, 1) = ""                strFirstName = .Cells(intImportRow, 1)                strLastName = .Cells(intImportRow, 2)                'insert row into database                con.Execute "insert into tbl_demo (firstname, lastname) values ('" & strFirstName & "', '" & strLastName & "')"                intImportRow = intImportRow + 1            Loop            MsgBox "Done importing", vbInformation            con.Close            Set con = Nothing    End WithExit SuberrH:    MsgBox Err.DescriptionEnd Sub

Add a reference to:Microsoft ActiveX Data Objects 2.8 Library

FYI, my sheet looks like this.

enter image description here


You can use sql query like this:

IF Exists ( Select 1 from dbo.customers where Firstname = '" & sFirstName & "' and LastName = '" & sLastName & "' THEN Update dbo.customers set --other columns where Firstname = '" & sFirstName & "' and LastName = '" & sLastName & "'ELSE Insert into dbo.Customers (FirstName, LastName) " & _                     "values ('" & sFirstName & "', '" & sLastName & "')"

Not sure about the syntax for excel and C#, you can correct that similar to this query