Skip to main content

AccessTr.neT


Tablodaki Satırlardaki Karakter Adedi Bulma

Tablodaki Satırlardaki Karakter Adedi Bulma

#37
evet haklısınız
yeni konu açtım bunun için
Cevapla
#38
(28/03/2020, 23:25)berduş yazdı: aslında dikkat ederseniz sorgulara da gerek yok
Modüldeki kodlar
Public Function SplitStnSay(GVeri As String, Optional Ayrac As String = ",") As Integer
    On Error Resume Next
    Dim var As Variant
    Dim GAyrac As String
    GAyrac = Ayrac
    var = Split(GVeri, Ayrac)
    SplitStnSay = UBound(var) + 1
End Function

Public Function SplitVeriBul(GVeri As String, GSayi, Optional Ayrac As String = ",") As Variant
    On Error Resume Next
    Dim var As Variant
    Dim GAyrac As String
    GAyrac = Ayrac
    var = Split(GVeri, GAyrac)
    SplitVeriBul = var(GSayi)
End Function
butonun kodu
Private Sub BtnSay_Click()
   
    Dim sql, SqlStn As String
    Dim xStnSay, x As Integer
     
Dim ADO_RS As Object
Set ADO_RS = CreateObject("adodb.recordset")
         Sql = "SELECT  max(SplitStnSay([Alan1])) AS [HstStn] FROM Tablo1"
    ADO_RS.Open sql, CurrentProject.Connection, 3, 1

xStnSay = ADO_RS(0)
ADO_RS.Close
Set ADO_RS = Nothing
'hy Sorguyu sütunlara böl
SqlStn = ""
For x = 1 To xStnSay
    SqlStn = SqlStn & ", SplitVeriBul([Alan1]," & x - 1 & ") AS [HstStn" & CStr(x) & "]"
Next x
    Sql = "SELECT Alan1, " & Mid(SqlStn, 2) & " FROM Tablo1;"
    Me.LstStn.ColumnCount = xStnSay
    Me.LstStn.RowSource = sql

'hy Union____________________________
SqlStn = ""
For x = 1 To xStnSay
    SqlStn = SqlStn & " union all SELECT  Nz(SplitVeriBul([Alan1]," & x - 1 & "),'') AS [HstStn] from tablo1 " & _
                      " where Nz(SplitVeriBul([Alan1]," & x - 1 & "),'')<>''" & vbCrLf
Next x
    Sql = Mid(SqlStn, 11)

    Sql = " SELECT [HstStn], count([HstStn]) AS ToplamSayi FROM (" & Sql & ") as Bileske GROUP BY [HstStn] order by count([HstStn]) "
    Me.LstSay.RowSource = sql

End Sub

Kontrol kodunu eklemeyi yine unutmuşum)

sql = Mid(SqlStn, 11) buradaki 11 yerine xStnSay +1 olması gerekmiyormu sayma için.Önceki mesajlardada 11 olarak kalmış.
Cevapla
#39
(29/03/2020, 01:07)feraz yazdı: sql = Mid(SqlStn, 11) buradaki 11 yerine xStnSay +1 olması gerekmiyormu sayma için.Önceki mesajlardada 11 olarak kalmış.
burada 11 ilk union all kısmını atlamak için
(28/03/2020, 22:48)berduş yazdı:
For x = 1 To xStnSay
    SqlStn = SqlStn & " union all SELECT  Nz(SplitVeriBul([Alan1]," & x - 1 & "),'') AS [HstStn] from tablo1 " & _
                      " where Nz(SplitVeriBul([Alan1]," & x - 1 & "),'')<>''" & vbCrLf
Next x
dikkat ederseniz bir önceki döngüde her satıra " union all SELECT  otomatik olarak ekleniyor oysa ilk satırda union all olmaz hata verir
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task