• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sürekli Formda MüşteriID Değerine Göre Renklendirme

Katılım
27 Kasım 2006
Mesajlar
152
Excel Vers. ve Dili
office xp
Arkadaşlar herkeze selamlar gönderdiğim örnekte sürekli formda verileri MüşteriID değerine renklendirmek istiyorum ayni ID ye sahip olanlar ayni renk ID değeri aynı olmayanlar farklı renk olsun istiyorum ama bunu nasıl yapacağım hakkında hiçbirfikrim yok yardım edebilirseniz sevinirim herkeze şimdiden teşekkür ederim.
 
Arkadaşlar bu konuda fikri olan yok mu takıldım kaldım bu renklendirme yüzünden.
 
Sorun çözüld

Arkadaşlar sorunu çözdüm belki lazım olur diye örneği ekliyorum herkeze iyi çalışmalar :hey:
 
Arkadaşlar sorunu çözdüm belki lazım olur diye örneği ekliyorum herkeze iyi çalışmalar :hey:

Sayın kocivan;

Paylaşımına teşekkürler. Fakat Form açılmadan önce hata iletisi veriyor, fakat akabinde form açılıyor.

Bir de Sorunu ne şekilde çözdüğünüzü açıklarsanızçok iyiolacak.

Selamlar.
 
Sayın İsmail Küçükşengün nasıl bir hata iletisi verdi acaba açıklamada yapacağım tabi hata nerden kaynaklanıyor onu anlayım önce çünkü bende hata vermeden açılıyor saygılar
 
Merhaba İsmail Bey..

Sayın kocivan'ın çözümü ADO ile yapılmış.. Sizin sisteminizde bununla ilgili daha önceden de bir sıkıntı vardı.. Sorun devam ediyor belli ki..;) Sanırım sizde açılmamasının sebebi bu..

Saygılar..
 
Sayın Taruz haklı sanırım Service Pack ve güncellemelerle ilgili galiba sorun sizde tüm güncellemelerin kurulu olduğuna emin misiniz ?
 
Sayın Taruz ve kocivan;

Teşekkürler. Fakat ne yaptıysam ADO sorunu çözülemedi.

Sayın Kocivan, siz farklı renlendirme olayı açıklarsanız sevinirim.
 
Müşteri bilgilerini Tablo2 ye kaydettiğimizi varsayalım Tablo1're de müşterilerle ilgili
gider gelir kira vs gibi şeyleri kaydediyoruz ayni zamanda Tablo1'e renklendirme için kullanmak üzere Sıra (Sayı) ve Çift/Tek (Metin) diye iki tane alan ekliyoruz amaç eklediğimiz Sıra alanında MüşteriID değerine göre grup oluşturmak sonra bu oluşan gruptan yaralanarak rakamların çift yada tek olmasına bağlı olarak Çift/Tek
alanına rakam çift ise "Ç" tek ise "T" yazdırıyoruz.Gelelim yazacağımız koda formun
yüklenildiğinde olayına aşağıdaki kodu yazı yoruz bu kod ne yapıyor :

Private Sub Form_Load()
'Sıra numarası oluşturmak için i diye bir değişken tanımlıyoruz
Dim i As Integer
'Tablo1 e bağlanmak için rs diye yenibir kayıt kümesi tanımlıyoruz
Dim rs As New ADODB.Recordset
'Tablo2 ye bağlanmak için rs1 diye yenibir kayıt kümesi tanımlıyoruz
Dim rs1 As New ADODB.Recordset
Set rs = New ADODB.Recordset
Set rs1 = New ADODB.Recordset
'Bağlantı durumunu belirliyoruz yani açılan kayıt kümesini nasıl kullanmak istediğimizi
rs.Open "Tablo1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs1.Open "Tablo2", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'i değişkenine 0 değerini atıyoruz

i = 0
'rs1 olarak tanımladığımız kayıt kümesinin EOF özelliği True değerine eşit değilse
'kodu çalıştır diyoruz eğer bu değer True ise kayıt kümesinin sonuna ulaşılmış demektir
If rs1.EOF <> True Then
'rs1 adındaki kayıt kümesinin ilk kaydına gidiyoruz
rs1.MoveFirst
'Do Until Loop döngüsünü kullanarak rs1 kayıt kümesinin değeri EOF=True olana kadar
'Kodun çalışmasını sağlıyoruz
Do Until rs1.EOF = True
'rs olarak tanımladığımız kayıt kümesinin EOF özelliği True değerine eşit değilse
'kodu çalıştır diyoruz eğer bu değer True ise kayıt kümesinin sonuna ulaşılmış demektir
If rs.EOF <> True Then
'rs adındaki kayıt kümesinin ilk kaydına gidiyoruz
rs.MoveFirst
'Burada iki kayıt kümesindeki MüşteriID değerlerinin eşit olup olmadıklarını kontrol ediyoruz
'eğer eşitse rs kayıt kümesindeki sıra alanına i değişkenine atıyoruz tabi ondan önce sıra numarasının
'1 den itibaren başlaması için i değişkenine 1 değerini atıyoruz
Do
If rs("ID") = rs1("MID") Then
i = 1
rs("Sıra") = i
End If
'Kayıt kümesinde dolaşabilmek için sonraki kayda geçiyoruz
rs.MoveNext
'Eğer rs.EOF = True ise kod sonlanıyor bu kod ilk kaydın Sıra numarasına 1 değeri veriyor
Loop Until rs.EOF = True
Else
'Yukarıda kayıt kümesini dolaşıp kayıt kümesinin değerini True ya eşitlediğimiz den dolayı
'Aşağıdaki kodun çalışması için rs.EOF <> False ise diyoruz
If rs.EOF <> False Then
'rs adındaki kayıt kümesinin ilk kaydına gidiyoruz
rs.MoveFirst
'Burada iki kayıt kümesindeki MüşteriID değerlerinin eşit olup olmadıklarını kontrol ediyoruz
'Eşit ise rs("Sıra") değerinin belirlenmesi için aşağıdaki kod çalışıyor peki bu kod ne yapıyor?
'ID değerini DlookUp fonksiyonuyla Sıra no alanına göre arama yaptırıp karşılaştırıyoruz
'(yani yukarıdaki ilk kodda ilk kaydın sıra numarasını 1'e eşitlemiştik yani Dmax = 1 -1 = 0 olduğundan dolayı
'ikinci fonksiyon devreye giriyor i + DMax("Sıra", "Tablo1") bu fonksiyon ikinci kayda 2 değerini veriyor
've tabiki sonrakı kayda geçiyor ve kaydı yine DlookUp fonksiyonunu kullanarak Sıra numarasına göre aratıyoruz
'eğer ID değerleri eşit ise (i + DMax("Sıra", "Tablo1") - 1) bu kodu kullanarak ayni ID ye sahip olanlara ayni numarayı veriyor
'rs("Sıra") = IIf(rs("ID") = DLookup("ID", "Tablo1", "Sıra= " & (i + DMax("Sıra", "Tablo1") - 1) & " "), (i + DMax("Sıra", "Tablo1") - 1), i + DMax("Sıra", "Tablo1"))
Do
If rs("ID") = rs1("MID") Then
i = 1
rs("Sıra") = IIf(rs("ID") = DLookup("ID", "Tablo1", "Sıra= " & (i + DMax("Sıra", "Tablo1") - 1) & " "), (i + DMax("Sıra", "Tablo1") - 1), i + DMax("Sıra", "Tablo1"))
'Bu ifadeyi kullanarak Immediate penceresine değerleri yazdırıyoruz Ctrl+G tuşuna basarak bu pencereye
'ulaşıp kayıtların nasıl karşılaştırıldığını göre bilirsiniz
'Debug.Print DLookup("ID", "Tablo1", "Sıra= " & (i + DMax("Sıra", "Tablo1") - 1) & " "); rs("Sıra")
Debug.Print DLookup("ID", "Tablo1", "Sıra= " & (i + DMax("Sıra", "Tablo1") - 1) & " "); rs("Sıra")
End If
rs.MoveNext
Loop Until rs.EOF = True
End If
End If
rs1.MoveNext
Loop
End If
'Burada tanımladığımız kayıt kümelerini kapatıyoruz kapatmazsak felakete yol açıyoruz
rs.Close
rs1.Close
Set rs = Nothing
Set rs1 = Nothing
'Sıra Numaraları verdikten sonra Çift/Tek alanına sıra numaralırını çift yada tek
'olmasına göre Ç yada T değerlerini yazdırıyoruz
'Çift Tek
Dim rs3 As New ADODB.Recordset
Set rs3 = New ADODB.Recordset
rs3.Open "Tablo1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs3.MoveFirst
If rs3.EOF <> True Then
Do
'Tek ise T yazdır
If rs3("Sıra") Mod 2 = 1 Then
Debug.Print rs3("Sıra") Mod 2 = 1
rs3("ÇT") = "T"
Else
'Çift ise Ç yazdır
If rs3("Sıra") Mod 2 = 0 Then
Debug.Print rs3("Sıra") Mod 2 = 1
rs3("ÇT") = "Ç"
End If
End If
rs3.MoveNext
Loop Until rs3.EOF = True
End If
rs3.Close
Set rs3 = Nothing
End Sub


Private Sub Form_Close()
'form kapanırken Sıra numaralarını 0 a eşitliyoruz eşitlemezsek sıra numarası gittimi gider
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Tablo1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.MoveFirst
If rs.EOF <> True Then
Do
rs("Sıra") = 0
rs.MoveNext
Loop Until rs.EOF = True
End If
rs.Close
Set rs = Nothing
End Sub

Son olarakta fomdaki alanlara koşullu biçimlendirme yoluyla IIf([ÇT]="T";1;0) ise gri renk yap diyoruz ve böylece renkleniyor ortalık
Anlamadığınız bir yer olursa sorun
İyi çalışmalar :hey:
 
bir yanl&#305;&#351;l&#305;k olmu&#351; dah &#246;nce okuyanlar kaale almas&#305;nlar yazd&#305;klar&#305;m&#305; kocivan karde&#351; sen ger&#231;ekten iyisin ellerinden &#246;perim
 
Son düzenleme:
Teşekkürler Sayın Gülsüm1 sizlerden öğrendiklerimizi uygulamaya çalışıyoruz.

Arkadaşlar formu biraz daha değiştirdim ilk örneğimiz veri girmek için kullanılabilir şimdi yolladığım örneği verileri göstermekte kullana bilirsiniz ben öyle yapacağım
herkeze iyi çalışmalar :hey: :icelim:
 
Te&#351;ekk&#252;r, say&#305;n kocivan..
 
Say&#305;n kocivan;

A&#231;&#305;klamalar&#305;n&#305;za &#231;ok te&#351;ekk&#252;rler.
 
Geri
Üst