Câu Lệnh INSERT Trong Truy Vấn SQL - Tự Học VBA
Có thể bạn quan tâm
Menu
- Trang chủ
- Diễn đàn Bài viết mới Tìm chủ đề
- Có gì mới Bài viết mới Hoạt động mới nhất
Tìm kiếm
Everywhere Chủ đề This forum This thread Chỉ tìm trong tiêu đề Tìm Tìm kiếm nâng cao…- Bài viết mới
- Tìm chủ đề
- Cách upload ảnh lên diễn đàn
- Trang chủ
- Diễn đàn
- Kỹ thuật xử lý Excel
- Hỏi -Code Theo Yêu Cầu Có Trả Phí
- Thread starter syquyen1987
- Ngày gửi 19/8/20
syquyen1987
Yêu THVBA
Xin chào cả nhà, mình có vấn đề muốn hỏi: mình muốn copy dữ liệu từ file "Book1.xlsm" vào file database "File Nguon.xlsx", và mình đang thực hành bằng câu lệnh INSERT trong SQL. Và do có nhiều dòng cần copy nên mình sẽ viết code vòng lặp cho nó để gán các giá trị cho các biến và các biến này được dùng trong câu lệnh INSERT SQL trong file Book1.xlsm. Tuy nhiên có người chỉ ra là phương pháp này không hiệu quả khi cứ tương tác qua lại liên tục giữa code và Sheet. Và người đó chỉ rằng phương pháp UpdateBatch là phương pháp hiệu quả. Các bạn biết phương pháp UpdateBatch thì mình mong nhận được chia sẻ từ các bạn. Thứ hai nữa là code của mình thêm dữ liệu vào File Nguon.xlsx. Tuy nhiên trong File Nguon.xlsx, table chứa dữ liệu không tự động mở rộng (nếu paste hoặc gõ thuần túy thì table chứa dữ liệu tự mở rộng), không biết có cách nào mà table chứa dữ liệu tự mở rộng bằng cách chạy mã code nào đó trong file Book.xlsm không? Minh xin chân thành cảm ơn. Và mình muốn gửi 2 files excel (Book1.xlsm là file dữ liệu copy, File Nguon.xlsx là file đích để paste vào) nhưng loay hoay mà không biết gửi thế nào. Nên trước khi được hướng dẫn gửi file đính kèm, mình viết code của mình trong Book1.xlsm như dưới đây. Rất mong nhận được sự chia sẻ từ các bạn Mã: Sub a() Dim ob As ADODB.Connection Dim sConnect As String Dim sSQL As String sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & ThisWorkbook.Path & "\File Nguon.xlsx;" & _ "Extended Properties=""Excel 12.0;HDR=No;"";" 'Co the bo ;IMEX=1 Set ob = New ADODB.Connection i = 5 ob.Open sConnect Do While Len(Sheet1.Cells(i, 1)) > 0 q1 = Sheet1.Cells(i, 1) q2 = Sheet1.Cells(i, 2) Debug.Print q1, q2 sSQL = "INSERT INTO [BISMUTH_CON$] (f1,f2)" & "VALUES ('" & q1 & "', #" & q2 & "#)" ob.Execute sSQL, , adCmdText Or adExecuteNoRecords i = i + 1 Loop ob.Close Set ob = Nothing End Sub NNhanSu
SMod
Thành viên BQT Bạn nên đưa file lên. Bạn không nên đọc từng dòng rồi insert vào file như vậy sẽ rất chậm và các object không giải phóng bộ nhớ sau khi chạy nên nếu chạy nhiều lần sẽ lỗi. Do vậy cần sửa lại bằng cách insert một lần, trong code mình đã sửa tên File nguồn thành File_Dich.xlsx, bạn tự sửa câu lệnh SELECT theo ý bạn nhé. Mã: Sub InsertADO() Dim cn As ADODB.Connection, rs As ADODB.Recordset Dim s As String s = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & ThisWorkbook.Path & "\File_Dich.xlsx" & _ ";Extended Properties=""Excel 12.0 XML;HDR=No;""" Set cn = New ADODB.Connection cn.Open s s = "INSERT INTO [Sheet1$] (F1,F2) SELECT Q1,Q2 FROM [Excel 12.0 Xml;HDR=YES;Database=" & ThisWorkbook.FullName & ";].[Sheet1$] WHERE Q1>0" Set rs = New ADODB.Recordset rs.Open s, cn Set rs = Nothing cn.Close Set cn = Nothing End Sub Bạn cần đăng nhập để thấy link Ssyquyen1987
Yêu THVBA
NhanSu nói: Bạn nên đưa file lên. Bạn không nên đọc từng dòng rồi insert vào file như vậy sẽ rất chậm và các object không giải phóng bộ nhớ sau khi chạy nên nếu chạy nhiều lần sẽ lỗi. Do vậy cần sửa lại bằng cách insert một lần, trong code mình đã sửa tên File nguồn thành File_Dich.xlsx, bạn tự sửa câu lệnh SELECT theo ý bạn nhé. Mã: Sub InsertADO() Dim cn As ADODB.Connection, rs As ADODB.Recordset Dim s As String s = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & ThisWorkbook.Path & "\File_Dich.xlsx" & _ ";Extended Properties=""Excel 12.0 XML;HDR=No;""" Set cn = New ADODB.Connection cn.Open s s = "INSERT INTO [Sheet1$] (F1,F2) SELECT Q1,Q2 FROM [Excel 12.0 Xml;HDR=YES;Database=" & ThisWorkbook.FullName & ";].[Sheet1$] WHERE Q1>0" Set rs = New ADODB.Recordset rs.Open s, cn Set rs = Nothing cn.Close Set cn = Nothing End Sub Bạn cần đăng nhập để thấy link Nhấn để mở rộng...Code hữu hiệu quá bạn ạ. Mình cám ơn bạn. Mình còn một vấn đề nữa bạn giúp mình với Mình muốn cập nhật số liệu vào các cột còn thiếu trong file đích (File_Dich.xlsx), theo dữ liệu từ file Book1.xlsm bằng câu lệnh truy vấn UPDATE SQL. Ví dụ là Cột A dữ liệu của 2 file (File_Dich.xlsx và Book1.xlsm) giống nhau, bây giờ muốn cập nhật số liệu cột B và cột C vào File_Dich.xlsx từ dữ liệu file Book1.xlsm theo dữ liệu cột A chung Mong bạn chia sẻ giúp mình với ạ Mình xin chân thành cảm ơn D
Deleted member 1392
Guest
@syquyen1987 Câu hỏi của bạn trong Topic đã được giải quyết. Nếu bạn muốn đặt câu hỏi khác thì phải tạo Topic mới để hỏi, không được đặt câu hỏi luông tuồng trong cùng một Topic. Ssyquyen1987
Yêu THVBA
Vâng, cảm ơn bạn đã nhắc nhở, minh xin sửa đổi, mình là thành viên mới nên chưa hiểu hết nội quy của diễn đàn Bạn phải đăng nhập hoặc đăng ký để bình luận. Chia sẻ: Facebook Twitter WhatsApp Email Link- Trang chủ
- Diễn đàn
- Kỹ thuật xử lý Excel
- Hỏi -Code Theo Yêu Cầu Có Trả Phí
Từ khóa » Câu Lệnh Sql Trong Vba Excel
-
Áp Dụng SQL Trong Excel để Tạo Báo Cáo động
-
HƯỚNG DẪN TẠO CÂU LỆNH NÚT THÊM MỚI TRONG VBA EXCEL
-
Vba For Sql Connection In Excel
-
ADO Trong Excel VBA – Kết Nối Với Database Sử Dụng SQL - ERX
-
Các Biểu Thức SQL - Microsoft Support
-
Sử Dụng Câu Lệnh Sql Trong Excel
-
Dùng SQL Trên Excel
-
CÁCH SỬ DỤNG SQL TRÊN EXCEL PHẦN 1
-
Cách Sử Dụng SQL Trong Excel để Tính Toán Có điều Kiện - YouTube
-
Lập Trình VBA đưa Hàm Tự Tạo Vào Câu Lệnh SELECT- SQL Trong Excel
-
Bài 1 SQL Trong VBA - YouTube
-
Excel VBA Và Access Database - Viblo
-
Cách Sử Dụng Câu Lệnh SQL Trên Excel, Giúp Khắc Phục File Excel ...
-
Thực Hiện Truy Vấn SQL Trên Bảng Excel Trong Sổ Làm Việc Với VBA ...