Ý bác ấy là dùng từ "hỗ trợ" hoặc "giúp" chứ đừng dùng từ "chỉ giáo", ngoài ra đừng viết tắt, đừng xài tiếng nước ngoài, như e, ah, tks, không lịch sự.Thế là chỉ kết nối được 1 CSDL thôi ah bác
Nếu giống cấu trúc 100% thì 1 là copy recordset thứ 2 xuống dưới cái thứ nhất (tìn dòng cuối và + 1), 2 là xuống sheet thứ 2 sau đó union 2 bảng ở 2 sheetBạn có thể nói rõ hơn được không. 2csdl thì table giống nhau hết. Chỉ có kết nối 2 csdl lại để lấy DL đầy đủ thôi ạ
Bên tôi cũng có nhiều server, nên thường tôi connect các server trong SQL như vầy, câu select đầu là của server hiện hành, câu sau là server khác, không biết ADO có thể connect như vậy được không nhưng Power query tôi vẫn connect bình thường được, nếu chỉ connect các database trong một server thì bỏ cái địa chỉ server là đượcHiện tại e đang kết nối excel với 1 CSDL SQL nhưng dữ liệu chưa đầy đủ, vì chỗ e chạy tới 2 database. E muốn là kết nối thêm 1 CSDL nữa vào code VBA, tức là kết nối 2 CSDL chạy cùng lúc có được không ạ. ae nào biết chỉ giúp e với. Tks
Nối được. Tuy nhiên, ADO dùng cỗ máy Access để truy vấn file Excel. Câu SQL khi nối gián tiếp qua workbook khác cũng phải theo luật của Access.Bên tôi cũng có nhiều server, nên thường tôi connect các server trong SQL như vầy, câu select đầu là của server hiện hành, câu sau là server khác, không biết ADO có thể connect như vậy được không nhưng Power query tôi vẫn connect bình thường được, nếu chỉ connect các database trong một server thì bỏ cái địa chỉ server là được
...
Chạy cùng lúc thì chắc đợi siêu máy tính may ra.kết nối 2 CSDL chạy cùng lúc có được không
Thớt nói chuyện lủng củng bỏ bố.Chạy cùng lúc thì chắc đợi siêu máy tính may ra.
Phạm vi thông thường thì cùng lắm 2 anh chạy liền kề nhau, một anh trước, một anh sau.
Mình úp vài files dữ liệu đang làm lên, minh họa kết quả mong muốn có khi xong từ sáng nay rồi.
Sub test()
Dim cnn As ADODB.Connection, rs As ADODB.Recordset
Dim ConnectionString As String, SQLString As String
Set cnn = New ADODB.Connection
ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\a.xlsx" & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
cnn.Open ConnectionString
Set rs = New ADODB.Recordset
SQLString = "SELECT a.* FROM [Sheet1$] UNION ALL SELECT * FROM [Excel 12.0 Xml;HDR=YES;Database=" & ThisWorkbook.Path & "\b.xlsx" & ";].[Sheet1$]"
rs.Open SQLString, cnn
Sheet1.Range("A2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub
Bài 1 có cái hình VBA excel truy cập vào database gì không rõ, thấy Provider = sqloledbCả 3 điều trên đều khả thi. Tuy rằng điều 1 và 2 phải có phép của admin mới làm được. Nếu công ty xài SQL Server mà không có admin, buộc người dùng phải tự làm lấy mọi thứ thì đáng lẽ người dùng phải ở trình độ giỏi hơn tôi, đâu cần phải hỏi cái vặt vãnh này.
Với 2 DBase trong cùng một thể trạng (instance) SQL Server thì lúc kết nối cần nêu cái DBase chính để kết nối. Và sau đó câu T-SQL chỉ cần nêu rõ bất cứ DBase nào nó cần. User có đủ quyền thì truy cập được....
Tôi đang nghi ngờ câu SQL trong hình bài 1 đó không chạy được.
Tôi đang nghi ngờ câu SQL trong hình bài 1 đó không chạy được.
SELECT * FROM [Database1].[dbo].[Table1]
UNION ALL
SELECT * FROM [Database2].[dbo].[Table2]
SELECT * FROM [Table1]
UNION ALL
SELECT * FROM [Database2].[dbo].[Table2]
Sub test()
Dim cnn As ADODB.Connection, rs As ADODB.Recordset
Dim ConnectionString As String, SQLString As String
Set cnn = New ADODB.Connection
ConnectionString = "Network Library=DBMSSOCN;" & _
"PROVIDER=SQLOLEDB;DATA SOURCE=" & TargetServer & _
";INITIAL CATALOG=''" & _
";User Id=" & UserID & ";Password=" & Password & ";"
cnn.Open ConnectionString
Set rs = New ADODB.Recordset
SQLString = "SELECT * FROM [Database1].[dbo].[Table1] " & _
"UNION ALL " & _
"SELECT * FROM [Database2].[dbo].[Table2]"
rs.Open SQLString, cnn
Sheet1.Range("A2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
End Sub
code này lỗi khi chạy ... tham khảo thêm... thấy code kiểu truy vấn 2 Data trên VB6 đầy raNếu truy vấn Excel thì code dạng như sau. Nếu là SQL Server chắc cũng tương tự, mình chưa thử.
Mã:Sub test() Dim cnn As ADODB.Connection, rs As ADODB.Recordset Dim ConnectionString As String, SQLString As String Set cnn = New ADODB.Connection ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\a.xlsx" & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";" cnn.Open ConnectionString Set rs = New ADODB.Recordset SQLString = "SELECT a.* FROM [Sheet1$] UNION ALL SELECT * FROM [Excel 12.0 Xml;HDR=YES;Database=" & ThisWorkbook.Path & "\b.xlsx" & ";].[Sheet1$]" rs.Open SQLString, cnn Sheet1.Range("A2").CopyFromRecordset rs rs.Close Set rs = Nothing cnn.Close Set cnn = Nothing End Sub
Mình nhầm, cần sửa SELECT a.* thành SELECT *, do mình sửa code join 2 bảng không chạy thử.code này lỗi khi chạy ... tham khảo thêm... thấy code kiểu truy vấn 2 Data trên VB6 đầy ra
Bái phục các chuyên gia nhà mình, cả bài mà không có cái file đính kèm nào mà code két vẫn ầm ầm.Mình nhầm, cần sửa SELECT a.* thành SELECT *, do mình sửa code join 2 bảng không chạy thử.
Cũng chỉ coi code chứ làm sao chạy thử, trên máy có [Database1].[dbo].[Table1] không mà đòi.Bái phục các chuyên gia nhà mình, cả bài mà không có cái file đính kèm nào mà code két vẫn ầm ầm.
Bạn @Hau151978 đính kèm file cho OT coi xem nó như thế nào với Bạn ơi...![]()