Skip to main content

AccessTr.neT


Tablodaki Satırlardaki Karakter Adedi Bulma

Tablodaki Satırlardaki Karakter Adedi Bulma

#19
(28/03/2020, 19:58)berduş yazdı: Yalniz fonksiyonu benim belirttiğim şekilde kullansaydınız gerisi sadece dmax şeklinde olurdu bence
Tam nasıl yapacağımı bilmiyorum.

(28/03/2020, 20:01)accessman yazdı: 14.mesajdaki kesinlikle işe yarar
Anladığım kadarı ile sadece "," sayısına ihtiyaç var
Bir gif ekleyinde bakalım sonuca Img-grin
yada dosyayı ekleyin inceleyeyim.
Cevapla
#20
Şimdi bilgisayara uzağım
Ama alandaki ","  ile ayrılmış elemanları alt alta eklemek sn.@feraz ın gözü kapalı yazacağı bir kod
Cevapla
#21
fonksiyon kodu
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
buton kodu
Private Sub Komut0_Click()
   
    Dim Sql As String
    Sql = "SELECT  max(SplitStnSay([Alan1])) AS [HsStn1] FROM Tablo1;"


    CurrentDb.QueryDefs("Sorgu1").sql = sql
    DoCmd.OpenQuery "Sorgu1"
   
End Sub
oluşan sorguda tek satır ve sütun var o da sadece en fazla kaç virgül olduğunu gösterir
daha doğrusu virgülle kaç parçaya ayrıldığını...
Cevapla
#22
Evet berduş hocam sonuç vedi sadece +1 e gerek yok.

Birde sorguya sonuçları aktarmak kaldı geriye yani virgülle ayrılmış halleri.

Biraz uğraşaım.

Bende alttaki gibi döngü ile kod yapmıştım.



Private Sub Komut0_Click()
   
    Dim rs As Recordset, kes As String , y As Integer
    Dim scr As Object
   
    Set rs = CurrentDb.OpenRecordset("select Alan1 from Tablo1 where Alan1 like '*,*'")
    Set scr = CreateObject("Scripting.Dictionary")
   
    If rs.RecordCount > 0 Then
        Do While Not rs.EOF
       
            kes = rs(0)
            For y = 1 To Len(kes)
                If Mid(kes, y, 1) = "," Then say = say + 1
            Next
            If Not scr.Exists(say) Then scr.Add say, ""
            say = 0
            rs.MoveNext
        Loop
    End If
   
    bubble_sort (scr.Keys)

    rs.Close
    Set rs = Nothing
    Set scr = Nothing
   
End Sub

Function bubble_sort(arr)
    Dim x As Long, y As Long
   
    For x = 0 To UBound(arr) - 1
        For y = x To UBound(arr) - 1
            If CDbl(arr(x)) < CDbl(arr(y)) Then
                temp = arr(x)
                arr(x) = arr(y)
                arr(y) = temp
            End If
        Next
    Next
  bubble_sort = arr
  MsgBox arr(0)
End Function
Cevapla
#23
Döngüsüzde olabilir
Cevapla
#24
Alıntı:accessmanŞu nokta sayısını bulmaz mı

int count = line.length() - line.replace(".", "").length();
Sayın hocam bu kod Access için değil.Neden ısrar ediyorsunuz.Hata vereceği ap açık.C# gibi dillerde (vb.net hariç) dim count yerine int count gibi kullanılır.Geri kalan kodlar zaten bağırıyor imdat diye Img-grin
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task