ndhmoney686
Thành viên thường trực




- Tham gia
- 25/4/12
- Bài viết
- 376
- Được thích
- 104
Bạn dùng ADO theo ví dụ nhéMình có ghi chi tiết ở trong file các Bạn xem giúp đỡ mình. Cảm ơn các Bạn nhiều!
Private Sub txtSrch_Change()
Dim adoRS As ADODB.Recordset
Dim sSQL As String
sSQL = "select * from [DMKH$] where ucase([TENKH]) like '%" & UCase(txtSrch) & "%'"
Set adoRS = New ADODB.Recordset
adoRS.Open sSQL, cnn
lstResult.Clear
Do Until adoRS.EOF
lstResult.AddItem adoRS![TENKH]
adoRS.MoveNext
Loop
adoRS.Close
Set adoRS = Nothing
End Sub
Chép thêm code sau vào code của formEm cảm ơn Anh Hai Lúa Miền Tây rất nhiều! Code ngắn gọn mà hiệu quả như mong đợi. Anh cho Em hỏi một chút là nếu muốn thoát khỏi danh sách đó thì bấm mục exit, anh thêm giúp em câu lệnh là nếu thoát có thể bấm phím ESC. Mong Anh và các Bạn giúp đỡ.
Private Sub lstResult_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub
Private Sub txtSrch_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 27 Then Unload Me
End Sub
[FONT=Verdana]Option Explicit[/FONT]
[FONT=Verdana]Private Sub UserForm_Initialize()[/FONT]
[FONT=Verdana]Dim adoRS As ADODB.Recordset[/FONT]
[FONT=Verdana]Dim sSQL As String[/FONT]
[FONT=Verdana]If cnn.State <> 1 Then Moketnoi[/FONT]
[FONT=Verdana]sSQL = "select * from [[/FONT][B][COLOR=#ff0000]DMKH[/COLOR][/B][FONT=Verdana]$] [/FONT][FONT=Verdana]"[/FONT]
[FONT=Verdana]Set adoRS = New ADODB.Recordset[/FONT]
[FONT=Verdana]adoRS.Open sSQL, cnn[/FONT]
[FONT=Verdana]lstResult.Clear[/FONT]
[FONT=Verdana]Do Until adoRS.EOF[/FONT]
[FONT=Verdana] lstResult.AddItem adoRS![[/FONT][B][COLOR=#ff0000]TENKH[/COLOR][/B][FONT=Verdana]][/FONT]
[FONT=Verdana] adoRS.MoveNext[/FONT]
[FONT=Verdana]Loop[/FONT]
[FONT=Verdana]adoRS.Close[/FONT]
[FONT=Verdana]Set adoRS = Nothing[/FONT]
[FONT=Verdana]End Sub
[/FONT]
[FONT=Verdana]Private Sub CmdExit_Click()[/FONT]
[FONT=Verdana]Unload Me[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Private Sub txtSrch_Change()[/FONT]
[FONT=Verdana]On Error Resume Next[/FONT]
[FONT=Verdana]Dim adoRS As ADODB.Recordset[/FONT]
[FONT=Verdana]Dim sSQL As String[/FONT]
[FONT=Verdana]sSQL = "select * from [[/FONT][B][COLOR=#ff0000]DMKH[/COLOR][/B][FONT=Verdana]$] where ucase([[/FONT][B][COLOR=#ff0000]TENKH[/COLOR][/B][FONT=Verdana]]) like '%" & UCase(txtSrch) & "%'"[/FONT]
[FONT=Verdana]Set adoRS = New ADODB.Recordset[/FONT]
[FONT=Verdana]adoRS.Open sSQL, cnn[/FONT]
[FONT=Verdana]lstResult.Clear[/FONT]
[FONT=Verdana]Do Until adoRS.EOF[/FONT]
[FONT=Verdana] lstResult.AddItem adoRS![[/FONT][B][COLOR=#ff0000]TENKH[/COLOR][/B][FONT=Verdana]][/FONT]
[FONT=Verdana]adoRS.MoveNext[/FONT]
[FONT=Verdana]Loop[/FONT]
[FONT=Verdana]adoRS.Close[/FONT]
[FONT=Verdana]Set adoRS = Nothing[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Private Sub lstResult_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)[/FONT]
[FONT=Verdana]If KeyCode = 27 Then Unload Me[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Private Sub txtSrch_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)[/FONT]
[FONT=Verdana]If KeyCode = 27 Then Unload Me[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Private Sub lstResult_DblClick(ByVal Cancel As MSForms.ReturnBoolean)[/FONT]
[FONT=Verdana]On Error Resume Next[/FONT]
[FONT=Verdana]If Not Intersect([F5:F2223], ActiveCell) Is Nothing Then[/FONT]
[FONT=Verdana]Cells(ActiveCell.Row, "F") = lstResult.List(lstResult.ListIndex, 0)[/FONT]
[FONT=Verdana]ActiveCell.Offset(1).Select[/FONT]
[FONT=Verdana]End If[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Public cnn As New ADODB.Connection[/FONT]
[FONT=Verdana]Sub Moketnoi()[/FONT]
[FONT=Verdana]With cnn[/FONT]
[FONT=Verdana].ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _[/FONT]
[FONT=Verdana]ThisWorkbook.FullName & "; " & _[/FONT]
[FONT=Verdana]"Extended Properties=Excel 8.0;"[/FONT]
[FONT=Verdana].CursorLocation = adUseClient[/FONT]
[FONT=Verdana].Open[/FONT]
[FONT=Verdana]End With[/FONT]
[FONT=Verdana]End Sub[/FONT]
[FONT=Verdana]Sub ShowForm()[/FONT]
[B][COLOR=#ff0000]UserForm1[/COLOR][/B][FONT=Verdana].Show[/FONT]
[FONT=Verdana]End Sub[/FONT]
Sub nap()
Dim Tm(), Tm1() As String, dk
dk = Trim(Me.TextBox1.Text)
Tm = WorksheetFunction.Transpose(Range(Sheet1.[C2], Sheet1.[C65536].End(3)))
Tm1 = Filter(Tm, dk, True)
Me.ListBox1.Clear
If UBound(Tm1) > 0 Then Me.ListBox1.List = WorksheetFunction.Transpose(Tm1)
End Sub
Bạn vào bài 1 [h=1]ADO căn bản: Kết nối truy vấn CSDL từ file Excel đến file Access.[/h]và tham chiếu đến thư viện như sauEm tạo một file mới và copy code trong file của Anh Hai Lúa Miền Tây nhưng khi dùng thử thì thấy bị lỗi. Em gửi file lên mong Anh Hai Lúa Miền Tây và các Bạn xem và chỉ giúp lỗi. Cảm ơn Anh và các Bạn nhiều!
Cái nào cũng có cái tiện nhưng có cái bất tiện, như code của bạn xử lý số lượng record lớn thì sẽ chậm đấy.Code dễ không chịu xài, xài cái ADO cao cấp chi rồi khổ thân
Không biết bạn đang hỏi ai, nhưng trong code của mình viết là thế nàyNếu sheet DMKH. Cột TENKH nằm ở cột B. Nếu nó nằm ở cột H thì phải làm thế nào vậy Anh?
Sub tim_DM()
Dim tim As String, ten As Range
DMKH.LB1.Clear
tim = UCase(DMKH.TB1.Value)
If tim <> "" Then
For Each ten In Sheet6.Range(Sheet6.[D4], Sheet6.[D65536].End(3))
If InStr(1, UCase(ten), tim) <> 0 Then
DMKH.LB1.AddItem ten
End If
Next
End If
End Sub
mong anh hai lúa miền tây và các bạn xem giúp em file đính kèm. Em có sử dụng code của anh hai lúa miền tây ở bên trên và đưa vào file. ở file của anh hai lúa miền tây em bấm chọn khách hàng thì nó hiện thị ngay 1 danh sách khách hàng. Còn file của em cho code đó sang thì nó hiện lên bảng để chọn, nhưng ko hiện được list danh sách khách hàng, mà phải gõ vào ô tìm kiếm 1 chữ bất kỳ mà có trong list thì mới thấy list hiện lên hoặc xóa chữ vừa mới nhập vào ô tìm kiếm thì nó sẽ hiện toàn bộ. Mong anh và các bạn chỉ giúp tại sao code copy nguyên của anh hai lúa miền tây sang nó lại sảy ra sự cố trên.