私はSQLデータベースを持っており、Excelスプレッドシートと接続することができます。しかし、テーブルをExcelから直接更新すると、データベースが更新されません。一度更新をクリックすると、入力したすべてのデータがExcelテーブルに表示されなくなります。SQLテーブルをExcelから直接更新するには?
クエリを使用せずにSQLデータベースをExcelから更新できますか?
私はSQLデータベースを持っており、Excelスプレッドシートと接続することができます。しかし、テーブルをExcelから直接更新すると、データベースが更新されません。一度更新をクリックすると、入力したすべてのデータがExcelテーブルに表示されなくなります。SQLテーブルをExcelから直接更新するには?
クエリを使用せずにSQLデータベースをExcelから更新できますか?
これを行う方法はたくさんあります。私はSSISをお勧めしたい。下のリンクを参照してください。あなたはまた、SQL ServerにExcelからデータをプッシュするためにVBAを使用することができます
http://www.sql-server-performance.com/2005/import-data-ssis-excel-sheet-dynamic-sheets/
。
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
また、Where句を使用してこれを試すこともできます。
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-PC\SQLEXPRESS"
'cnn.ConnectionString = "DRIVER=SQL Server;SERVER=Excel-PC\SQLEXPRESS;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
また私のテーブルには5200人の従業員がいます。関連するデータ。 ssisはそこで役に立つでしょうか。 ? – Bodhi
はい、VBAや他のツールを使用して直接送信できます。
はい!私はあなたがSSISにアクセスしたことを理解していませんでした。それはあなたのETLニーズのすべてではないにしても、ほとんどを処理します。役に立つSSISアイデアについては、以下のリンクを参照してください。
http://www.sqlis.com/sqlis/post/Looping-over-files-with-the-Foreach-Loop.aspx
http://www.techbrothersit.com/2013/12/ssis-read-multiple-sheets-from-excel.html
あなたがやっていることのためにおそらく最も関連します。
http://dw-sqldeveloper.blogspot.com/2012/05/multiple-excel-file-with-multiple.html
あなたはSSISを使用するか、または外部表を使用してすることができます。 –
"テーブルをExcelから直接更新すると"。どのようにこれをやっている? –
@ Nick.McDermaid通常のExcelファイルのようなスプレッドシートから – Bodhi