Skip to main content

AccessTr.neT


İsimlerin Sayısını bulan SQL kodunu kısaltmak.

İsimlerin Sayısını bulan SQL kodunu kısaltmak.

Çözüldü #1
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

.rar EXCELDEN ACCESE VERİ AKTARMADA SAY KODUNUN KISALTILMASI.rar (Dosya Boyutu: 126 Bayt | İndirme Sayısı: 2)
Son Düzenleme: 12/01/2013, 15:17, Düzenleyen: alican60.
Cevapla
Çözüldü #2
örnek eklerseniz kısaltabilir düşüncesindeyim.salt kodlardan hareket edersek parçalar eksik kalıyor.
Cevapla
Çözüldü #3
Halay
Son Düzenleme: 12/01/2013, 13:53, Düzenleyen: alican60.
Cevapla
Çözüldü #4
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
Cevapla
Çözüldü #5
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.
Cevapla
Çözüldü #6
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 = ""
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task