- Katılım
- 2 Mart 2005
- Mesajlar
- 2,960
- Excel Vers. ve Dili
-
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Aşağıda Recep hocamın hazırladığı kodlar üzerinde küçük değişikler yaparak userformun açılışı esnasında çalışma sayfasındaki benzersiz kayıtları listboxa getiriyorum.
Yalnız Listbox1 e ADO ile gelen verileri Textbox1.text değerini içerir şekilde sorguda genişletmek nasıl olmalıdır?
Yalnız Listbox1 e ADO ile gelen verileri Textbox1.text değerini içerir şekilde sorguda genişletmek nasıl olmalıdır?
Kod:
Private Sub UserForm_Initialize()
Call TextBox1_Change
End Sub
Private Sub TextBox1_Change()
'Private Sub Adodb_BenzersizKayıtÇek()
'Recep İpek'in ve Zeki Gürsoy'un Katkılarıyla, HSayar tarafından düzenlenmiştir.
'On Error Resume Next
Dim CKtp_Bu As Workbook: Set CKtp_Bu = ThisWorkbook '||
Dim CSfData As Worksheet: Set CSfData = CKtp_Bu.Sheets("DATA")
Dim CSfOzet As Worksheet: Set CSfOzet = CKtp_Bu.Sheets("Ozet")
Dim adbBagl As ADODB.Connection
Dim adbKset As ADODB.Recordset
Dim sqlSatr$, sqlFrom$, sqlSorg$, sqlKynk$
'Adob Connection Değişkenleri
sqlKynk = ThisWorkbook.FullName
'Adob RecordSet Değişkenleri
'sqlFrom = "[" & CSfData.Name & "$" & "A3:C18" & "]"
'sqlSatr = "SELECT DISTINCT * FROM " & sqlFrom
sqlFrom = "[" & CSfData.Name & "$" & "A2:C1800" & "]"
[FONT=Courier New][SIZE=3][B][COLOR=Red] If TextBox1.Text = Empty Then
sqlSorg = "Sayac_No IS NOT NULL"
Else
Exit Sub
'sqlSorg = "Sayac_No IS NOT NULL" & " AND Adı_Soyadı = " & TextBox1.Text & """"
'' SqlSrg = "mYIL = " & srgYil & " AND GIDER_TURU = " & "'" & "Personel" & "'"
End If
[/COLOR][/B][/SIZE][/FONT]
sqlSatr = "SELECT DISTINCT * FROM " & sqlFrom & " WHERE " & sqlSorg
Set adbBagl = CreateObject("ADODB.Connection")
With adbBagl
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Properties("Data Source").Value = sqlKynk
.CursorLocation = adUseClient
.Mode = adModeReadWrite
.Open
End With
If Err = 0 Then
Set adbKset = CreateObject("ADODB.Recordset")
With adbKset
.ActiveConnection = adbBagl
.CursorLocation = adUseServer
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = sqlSatr
.Open
'***********************************************************************
If .RecordCount > 0 Then
ListBox1.ColumnCount = .Fields.Count
ListBox1.Column = .GetRows
Else
MsgBox "Kayıt Bulunamadı.", 16, "Bilgi"
End If
If CBool(.State And adStateOpen) = True Then .Close: Set adbKset = Nothing
End With
Else
MsgBox "Bağlantı Hatası Kontrol Ediniz", vbInformation, "Bilgi"
End If
If CBool(adbBagl.State And adStateOpen) = True Then adbBagl.Close: Set adbBagl = Nothing
Set CKtp_Bu = Nothing: Set CSfData = Nothing: Set CSfOzet = Nothing
End Sub