hoanghuytfs
Thành viên mới

- Tham gia
- 1/6/13
- Bài viết
- 20
- Được thích
- 2
Hi các bạn !
- mình dùng ADO kết nối file excel, dung truy vấn SQL có điều kiện WHERE để lọc 1 fields bằng 1 giá trị nhưng bị báo lỗi
- file gồm 2 sheet : DATA , PXK
+ đánh số phiếu xuất kho : PXK-0001 bên sheet PXK
+ sẽ lọc bên sheet DATA có phiếu xuất kho này và copy thông tin qua sheet PXK
- code như sau :
Public CNN As New ADODB.Connection
Sub KETNOIADO_EXCEL(duongdanfile)
' dung ADO ket noi 2 file excel
Dim verExcel As Integer
Dim str_conn As String
verExcel = Val(Application.Version)
If verExcel < 12 Then
str_conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & duongdanfile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"";IMEX=1;"
Else
str_conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & duongdanfile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
End If
With CNN
.ConnectionString = str_conn
.Open
End With
End Sub
Private Sub CommandButton1_Click()
Dim RST As ADODB.Recordset
Dim TRUYVANSQL, SheetNguon, TableNguon As String
Dim HangshDATA, HangshPXK As Double
Dim soPXK As String
soPXK = Sheets("PXK").Range("C1").Value
SheetNguon = Sheets("DATA").Name
HangshDATA = Sheets("DATA").Range("C" & Rows.Count).End(xlUp).Row
TableNguon = "B5:I" & HangshDATA
TRUYVANSQL = "SELECT * " & _
"FROM [" & SheetNguon & "$" & TableNguon & "]" & _
"WHERE F1=" & soPXK & ""
If CNN.State <> 1 Then Call Module1.KETNOIADO_EXCEL(ThisWorkbook.FullName)
Set RST = New ADODB.Recordset
RST.Open TRUYVANSQL, CNN, adOpenDynamic, adLockOptimistic
RST.MoveFirst
HangshPXK = 7 + 1
With Sheets("PXK")
Do While Not RST.EOF
.Range("B" & HangshPXK).Value = RST.Fields(5).Value
.Range("C" & HangshPXK).Value = RST.Fields(6).Value
.Range("D" & HangshPXK).Value = RST.Fields(7).Value
RST.MoveNext
HangshPXK = HangshPXK + 1
Loop
MsgBox " XONG !"
End With
End Sub
=> chay thi no bao loi :

cac bạn xem sửa lỗi giúp mình câu truy vấn SQL có bị sai gì hông nhé ????
Thanks các bạn !
- mình dùng ADO kết nối file excel, dung truy vấn SQL có điều kiện WHERE để lọc 1 fields bằng 1 giá trị nhưng bị báo lỗi
- file gồm 2 sheet : DATA , PXK
+ đánh số phiếu xuất kho : PXK-0001 bên sheet PXK
+ sẽ lọc bên sheet DATA có phiếu xuất kho này và copy thông tin qua sheet PXK
- code như sau :
Public CNN As New ADODB.Connection
Sub KETNOIADO_EXCEL(duongdanfile)
' dung ADO ket noi 2 file excel
Dim verExcel As Integer
Dim str_conn As String
verExcel = Val(Application.Version)
If verExcel < 12 Then
str_conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & duongdanfile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"";IMEX=1;"
Else
str_conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & duongdanfile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
End If
With CNN
.ConnectionString = str_conn
.Open
End With
End Sub
Private Sub CommandButton1_Click()
Dim RST As ADODB.Recordset
Dim TRUYVANSQL, SheetNguon, TableNguon As String
Dim HangshDATA, HangshPXK As Double
Dim soPXK As String
soPXK = Sheets("PXK").Range("C1").Value
SheetNguon = Sheets("DATA").Name
HangshDATA = Sheets("DATA").Range("C" & Rows.Count).End(xlUp).Row
TableNguon = "B5:I" & HangshDATA
TRUYVANSQL = "SELECT * " & _
"FROM [" & SheetNguon & "$" & TableNguon & "]" & _
"WHERE F1=" & soPXK & ""
If CNN.State <> 1 Then Call Module1.KETNOIADO_EXCEL(ThisWorkbook.FullName)
Set RST = New ADODB.Recordset
RST.Open TRUYVANSQL, CNN, adOpenDynamic, adLockOptimistic
RST.MoveFirst
HangshPXK = 7 + 1
With Sheets("PXK")
Do While Not RST.EOF
.Range("B" & HangshPXK).Value = RST.Fields(5).Value
.Range("C" & HangshPXK).Value = RST.Fields(6).Value
.Range("D" & HangshPXK).Value = RST.Fields(7).Value
RST.MoveNext
HangshPXK = HangshPXK + 1
Loop
MsgBox " XONG !"
End With
End Sub
=> chay thi no bao loi :

cac bạn xem sửa lỗi giúp mình câu truy vấn SQL có bị sai gì hông nhé ????
Thanks các bạn !