tan.ngohoangquoc
Thành viên hoạt động



- Tham gia
- 10/7/14
- Bài viết
- 100
- Được thích
- 41
- Nghề nghiệp
- M&A Specialist - RM Assistant
Xin chào mọi người.
Em có vấn đề hỏi liên quan đến recordset. Nếu trong trường hợp em tạo nhiều sub và trong mỗi sub có một câu lệnh query riêng thì trong mỗi sub chúng ta phải new lại recordset một lần phải không?
Em có vấn đề hỏi liên quan đến recordset. Nếu trong trường hợp em tạo nhiều sub và trong mỗi sub có một câu lệnh query riêng thì trong mỗi sub chúng ta phải new lại recordset một lần phải không?
Mã:
Option ExplicitPrivate Module
Public cn As ADODB.Connection
Public rst As ADODB.Recordset
Public cmd As ADODB.Command
Sub OpenConnection()
Set cn = New ADODB.Connection
cn.Open ("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};dbq=" & ThisWorkbook.FullName & ";")
End Sub
Sub CloseConnection()
On Error GoTo ExitWithoutClose
cn.Close
rst.Close
Set cn = Nothing
Set rst = Nothing
ExitWithoutClose:
End Sub
Sub ValidationSummary()
Dim ary() As Variant
Set rst = New ADODB.Recordset
rst.Open ("SELECT DISTINCT Manager from [Managers$] WHERE Manager IS NOT NULL"), cn
If Not rst.EOF Then
ary = Application.Transpose(Application.Transpose(rst.GetRows))
With Sheets("Summary").Range("C2").validation
.Delete
.Add Type:=xlValidateList, Formula1:=Join(ary, ",")
End With
End If
rst.Close
Set rst = Nothing
End Sub
Sub ManagerInfo()
Dim mgtName As String
Dim ary() As Variant
Set rst = New ADODB.Recordset
mgtName = Range("C2").value
rst.Open ("SELECT DISTINCT Department,Position from [Managers$] WHERE Manager='" & mgtName & "'"), cn
If Not rst.EOF Then
ary = Application.Transpose(Application.Transpose(rst.GetRows))
Range("C3:C4").value = ary
End If
rst.Close
Set rst = Nothing
End Sub