Tạo module chung bị lỗi-ADO

Liên hệ QC

hoabattu3387

Thành viên chính thức
Tham gia
11/9/08
Bài viết
91
Được thích
2
Mình có file "Cham" như đính kèm, trong đó có form1. khi kích vào nút 1. sẽ lấy 1 vài trường thông tin ở file "1.", khi kích vào nút 2. sẽ lấy 1 vài trường thông tin ở file 2. , 2 nút này có chung 1 đoạn code:
Mã:
Dim i, a As Integer
Dim dk As String
Dim flg As FileDialog
Set flg = Application.FileDialog(msoFileDialogFilePicker)
With flg
.Show
End With
Dim myfile As String
myfile = flg.SelectedItems(1)
Dim cn As New ADODB.Connection
Dim rcs As New ADODB.Recordset
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myfile & ";Extended Properties=""Excel 8.0;HDR=no;imex=1;"";")
Khi mình tách đoạn code ra một modul riêng và sử dụng chung cho 2 nút "1." và "2." thì báo lỗi. Nhờ cả nhà giúp mình nhé!
 

File đính kèm

  • cham.rar
    63.8 KB · Đọc: 5
Mình có file "Cham" như đính kèm, trong đó có form1. khi kích vào nút 1. sẽ lấy 1 vài trường thông tin ở file "1.", khi kích vào nút 2. sẽ lấy 1 vài trường thông tin ở file 2. , 2 nút này có chung 1 đoạn code:
Mã:
Dim i, a As Integer
Dim dk As String
Dim flg As FileDialog
Set flg = Application.FileDialog(msoFileDialogFilePicker)
With flg
.Show
End With
Dim myfile As String
myfile = flg.SelectedItems(1)
Dim cn As New ADODB.Connection
Dim rcs As New ADODB.Recordset
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myfile & ";Extended Properties=""Excel 8.0;HDR=no;imex=1;"";")
Khi mình tách đoạn code ra một modul riêng và sử dụng chung cho 2 nút "1." và "2." thì báo lỗi. Nhờ cả nhà giúp mình nhé!
Bạn lỗi do nó không hiểu CN là cái gì.Vì cái CN bạn tạo trong sub kia khi thoát end sub nó đã được giải phóng nhé.Nếu bạn muốn viết 1 cái Function mở file thì ở trên diễn đàn nhiều mà.Bạn tìm hiểu thêm nhé.
 
Bạn lỗi do nó không hiểu CN là cái gì.Vì cái CN bạn tạo trong sub kia khi thoát end sub nó đã được giải phóng nhé.Nếu bạn muốn viết 1 cái Function mở file thì ở trên diễn đàn nhiều mà.Bạn tìm hiểu thêm nhé.
Mình tìm mãi không thấy, nếu bạn biết bài nào liên quan thì gửi mình link với được không?
 
Mình tìm mãi không thấy, nếu bạn biết bài nào liên quan thì gửi mình link với được không?
Bạn sửa như thế này xem.Mình chưa test nhé.Nhưng bạn phải close Cn đi mỗi khi xong.
Mã:
public cn As New ADODB.Connection
sub  abc
Dim i, a As Integer
Dim dk As String
Dim flg As FileDialog
Set flg = Application.FileDialog(msoFileDialogFilePicker)
With flg
.Show
End With
Dim myfile As String
myfile = flg.SelectedItems(1)
Dim rcs As New ADODB.Recordset
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myfile & ";Extended Properties=""Excel 8.0;HDR=no;imex=1;"";")
 
Mã:
...
Dim cn As New ADODB.Connection
Dim rcs As New ADODB.Recordset
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myfile & ";Extended Properties=""Excel 8.0;HDR=no;imex=1;"";")

Khi mình tách đoạn code ra một modul riêng và sử dụng chung cho 2 nút "1." và "2." thì báo lỗi. Nhờ cả nhà giúp mình nhé!

Vấn đề này liên quan đến tầm vực của biến. Bạn phải đọc tài liệu cơ bản về khai báo biến và tầm vực của nó.
Muốn tái sử dụng 1 biến nào đó cho tất cả các Form, các hàm, thủ tục trong ứng dụng thì phải khai báo nó ở mức độ toàn cục (Global, Public).
Trong Module, khi bạn khai báo biến ở trên đầu, trước tất cả các code và với khoá Public (hay Global) thì biến đó có thể gọi lại ở bất kỳ vị trí nào trong ứng dụng và nó sẽ được khởi tạo ngay khi ứng dụng khởi chạy.
Bạn tự tìm hiểu thêm đi nhé.

(Ps: nên tập thói quen dùng "Option Explicit" ở đầu các module (form module, standard module) để nó quản lý việc khai báo biến cho bạn.)
 
Ngoài ra, mình muốn tính tổng cột T ở file 3. theo từng mã ở cột D trong file "cham" và điền vào cột I trong file "cham". Tuy nhiên, phải lookup giá trị ở cột L file 3. trong cột A file 4. để lấy mã ở cột K. Mình đã thử dùng create view để tạo bảng tạm nhưng hình như create view không dùng được trong excel. Nhờ các bạn góp ý giúp mình nhé
 

File đính kèm

  • cham.rar
    90.9 KB · Đọc: 4
Ngoài ra, mình muốn tính tổng cột T ở file 3. theo từng mã ở cột D trong file "cham" và điền vào cột I trong file "cham". Tuy nhiên, phải lookup giá trị ở cột L file 3. trong cột A file 4. để lấy mã ở cột K. Mình đã thử dùng create view để tạo bảng tạm nhưng hình như create view không dùng được trong excel. Nhờ các bạn góp ý giúp mình nhé
Không ai giúp được mình sao?
 
Không ai giúp được mình sao?
Mình xem thấy bạn cũng biết code.Thì sao không viết cho quen.Mình dạo này bận không xem bài của bạn.Bạn dùng ADO lấy dữ liệu vào mảng rồi sử lý theo dictionary là được mà.Viết đi chứ bạn.
 
Web KT
Back
Top Bottom