AccessTr.neT

Tam Versiyon: İsimlerin Sayısını bulan SQL kodunu kısaltmak.
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
Aşağıdaki kod ile combobox1-2-3 teki süzme durumuna göre textbox1-2-3 e Ali-Veli-Ahmet isimlerinin sayılarını alrıyorum.Bu kod gittikçe uzuyor ve satır sayısı artıyor,bunu daha kestirme yoldan yapabilirmiyiz.
Kod:
Sub SAY()
If ComboBox1.Value <> "" And ComboBox2.Value = "" And ComboBox3.Value = "" Then
    TextBox1.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'ALİ'   and [CALISAN_KODU] like '" & ComboBox1.Value & "%'")(0)
    TextBox2.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'VELİ'  and [CALISAN_KODU] like '" & ComboBox1.Value & "%'")(0)
    TextBox3.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'AHMET' and [CALISAN_KODU] like '" & ComboBox1.Value & "%'")(0)
ElseIf ComboBox1.Value = "" And ComboBox2.Value <> "" And ComboBox3.Value = "" Then
    TextBox1.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'ALİ'   and [ADI] like '" & ComboBox2.Value & "%'")(0)
    TextBox2.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'VELİ'  and [ADI] like '" & ComboBox2.Value & "%'")(0)
    TextBox3.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'AHMET' and [ADI] like '" & ComboBox2.Value & "%'")(0)
ElseIf ComboBox1.Value = "" And ComboBox2.Value = "" And ComboBox3.Value <> "" Then
    TextBox1.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'ALİ'   and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)
    TextBox2.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'VELİ'  and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)
    TextBox3.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'AHMET' and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)
ElseIf ComboBox1.Value <> "" And ComboBox2.Value <> "" And ComboBox3.Value = "" Then
    TextBox1.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'ALİ'   and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [ADI] like '" & ComboBox2.Value & "%'")(0)
    TextBox2.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'VELİ'  and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [ADI] like '" & ComboBox2.Value & "%'")(0)
    TextBox3.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'AHMET' and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [ADI] like '" & ComboBox2.Value & "%'")(0)
ElseIf ComboBox1.Value <> "" And ComboBox2.Value = "" And ComboBox3.Value <> "" Then
    TextBox1.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'ALİ'   and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)
    TextBox2.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'VELİ'  and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)
    TextBox3.Value = baglan.Execute("select count([ADI]) from [LİSTE] where [ADI] = 'AHMET' and [CALISAN_KODU] like '" & ComboBox1.Value & "%'" & "and [DOGUM_TARIHI] like '" & ComboBox3.Value & "%'")(0)

End If

End Sub
örnek eklerseniz kısaltabilir düşüncesindeyim.salt kodlardan hareket edersek parçalar eksik kalıyor.
Halay
kod alıştırması yaptığınızı tahmin ettiğimden kurguya hiç dokunmuyorum.

adi = ComboBox2.Value: calisanKodu = ComboBox1.Value: dogumTarihi = ComboBox3.Value
Sql = "select [ADI],count([ADI]) as sayi from [LİSTE] WHERE [CALISAN_KODU] like '" & calisanKodu & "%" & "' AND [DOGUM_TARIHI] like '" & dogumTarihi & "%" & "' group by ADI HAVING ADI like '" & adi & "%" & "' "
Set baglan = CreateObject("adodb.connection")
Set rst = CreateObject("adodb.recordset")
Call baglanti
rst.Open SQL, baglan, 1, 1
Do While Not rst.EOF
lAdi = rst.Fields("ADI")
lsayi = rst.Fields("sayi")
If lAdi = "AHMET" Then TextBox3.Value = lsayi Else If lAdi = "VELİ" Then TextBox2.Value = lsayi Else If lAdi = "ALİ" Then TextBox1.Value = lsayi
rst.movenext
Loop
Set rst = Nothing
Fatih Bey Allah razı olsun zaman harcamışsınız ellerinize sağlık,yalnız bir sorun var.Comboboxlardan sırasıyla süzme yaparken sayı adeti veren textboxlarda sayı adetlerri doğru çıkmıyor.
rica ederim. Sql kodunda bir sıkıntı görünmüyor.
Sorgunun başına bu satırı ilave edin. Eski değerleri göründüğünden hatalı sonuç getirmiş gibi görünüyor. Düzelmezse kodu gözden geçirim
TextBox1.Value = "": TextBox2.Value = "": TextBox3.Value = ""
Sayfalar: 1 2