DataGridinizin Tıkladığınız kolona göre sıralanması
DataGridinizin Tıkladığınız kolona göre sıralanmasını istediğinizi düşünelim.
Bu işlemi fonx halinde yazarsak programımızın herhangi bir formundaki herhangi bir datagridi kolayca sıralatabiliriz.
Aslında yaptığımız şudur: Datagridi bağladığımız recordseti isteğimize göre sıralatıyoruz. Datagrid bu recordset'e bağlı olduğundan
datagrid de sıralanmış oluyor.
formumuzda 'bul_liste' adında bir datagrid var. Referans olarak da ActiveX Data Object (ADO) yüklenmiş.
'//Declarations bölümüne recortset tanımlıyoruz.
Dim rstBuL As New ADODB.Recordset, sqLbuL As String, paRoLam As String
Dim cnn As New ADODB.Connection
Private Sub Form_Load()
paRoLam = "deneme"
ChDir App.Path
With cnn
.Mode = adModeReadWrite
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Persist Security Info= False; " & _
"Data Source=data.mdb; " & _
"Jet OLEDB

atabase Password = " & paRoLam
End With
Set rstBuL = New ADODB.Recordset
sqLbuL = "SELECT dosyano,isim,soyisim FROM musteri "
Set rstBuL = cnn.Execute(sqLbuL, , adCmdText) ' //recortsetimize tablodan bilgi yükledik
Set bul_liste.DataSource = rstBuL '//datagride recortsetimizi bağladık
End Sub
'// datagridimizin kafasını tıklatınca fonxsiyonumuz çalışsın istiyoruz... ;-)
Private Sub bul_liste_HeadClick(ByVal ColIndex As Integer)
Sortbeni ColIndex, rstBuL ' // burada asıl fonksiyonumuzu çağırıyoruz
'// bu işlemden sonra datagridimiz sıralanmıştır.
End Sub
'// aşağıdaki altprogramı bi module yazarsak her formdan çağırabiliriz.
Public Sub Sortbeni(ByVal ColIndex As Integer, sortRST As ADODB.Recordset)
Dim SortAscStr As String, SortDescStr As String
SortAscStr = sortRST.Fields(ColIndex).Name & " ASC"
SortDescStr = sortRST.Fields(ColIndex).Name & " DESC"
If sortRST.Sort <> SortAscStr Then '// recortsetimiz küçükten büyüğe sıralı değilse, küçükten büyüğe sıralasın
sortRST.Sort = SortAscStr
Else '// recortsetimiz küçükten büyüğe sıralı ise büyükten küçüğe doğru sıralasın
sortRST.Sort = SortDescStr
End If
End Sub