SQLจาก Excel Range แบบ มีหัวตาราง กับไม่มีหัวตาราง
Posted: Wed Apr 24, 2019 3:07 pm
ผมใช้ recordset เพื่อสร้าง report ย่อย แยกยอดขายรายภาคจากฐานข้อมูลรวม ใน Excel ดังนี้
พบว่า Crs ไม่สามารถเปิด recordset ได้ น่าจะเป็นที่ SQL
พอเปลี่ยน
รันได้เฉย เลย คิดว่า น่าจะเป็นที่ SQL แต่ปัญหาคือผมต้องการใส่เงื่อนไขให้ด้วนสิ เลือกเอาทีละ regional
สอบถามว่า ถ้าใช้ SELECT * from range....
เคยใส่ WHERE Condition ไหมครับ ใส่อย่างไร?
Code: Select all
Sub CreateRegionalReport()
Dim Crs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim constr As String
Const RptSheet = "North,Central,South,East,NE,Project"
Dim Regional() As String
Dim s As Long
Regional() = Split(RptSheet, ",")
Dim SQL$
constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
Set cn = New ADODB.Connection
cn.Open constr
For s = 0 To UBound(Regional, 1)
Worksheets("Detail").Activate
Set Crs = New ADODB.Recordset
SQL = "SELECT [No],[Date],[Sale Name],[Regional], [Quote], [Confirm], [Type],[CarRegis],[PolicyDate] " & _
" FROM " & Range("A3:I58").Address(0, 0) & " WHERE [Regional] = '" & Regional(s) & "';"
Crs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly
If Crs.EOF = False Then
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Regional(s)
Worksheets(Regional(s)).Activate
Range("A4").CopyFromRecordset Crs
End With
End If
Crs.Close
Next s
cn.Close
Set Crs = Nothing
Set cn = Nothing
End Sub
พอเปลี่ยน
Code: Select all
SQL = "SELECT * " & _
" FROM " & Range("A3:I58").Address(0, 0) & " WHERE [Regional] = '" & Regional(s) & "';"
สอบถามว่า ถ้าใช้ SELECT * from range....
เคยใส่ WHERE Condition ไหมครับ ใส่อย่างไร?