I have an sql database and I am able to connect with excel spreadsheet. But when I update the table from excel directly it’s not updating the database and once I click refresh all the entered data is no longer in the excel table
Is it possible to update sql database from excel without using any queries?
Advertisement
Answer
There are many ways to do this. I’d recommend something like this, to push data from Excel to SQL Server.
Sub ButtonClick()
'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 With
Exit Sub
errH:
MsgBox Err.Description
End Sub
You can also try this, which uses a Where Clause.
Sub InsertInto() 'Declare some variables Dim cnn As adodb.Connection Dim cmd As adodb.Command Dim strSQL As String 'Create a new Connection object Set cnn = New adodb.Connection 'Set the connection string cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Northwind;Data Source=Excel-PCSQLEXPRESS" 'cnn.ConnectionString = "DRIVER=SQL Server;SERVER=Excel-PCSQLEXPRESS;DATABASE=Northwind;Trusted_Connection=Yes" 'Create a new Command object Set cmd = New adodb.Command 'Open the Connection to the database cnn.Open 'Associate the command with the connection cmd.ActiveConnection = cnn 'Tell the Command we are giving it a bit of SQL to run, not a stored procedure cmd.CommandType = adCmdText 'Create the SQL strSQL = "UPDATE TBL SET JOIN_DT = '2013-01-22' WHERE EMPID = 2" 'Pass the SQL to the Command object cmd.CommandText = strSQL 'Execute the bit of SQL to update the database cmd.Execute 'Close the connection again cnn.Close 'Remove the objects Set cmd = Nothing Set cnn = Nothing End Sub