Treeview'de Form Açtırma

1 2 3 4 5 6
28/07/2009, 09:19

Bilgisayarcı

Bu forumdaki yöneticiler ve üyelerimizin tamamı gelen soruları cevaplandırmak için büyük bir hırsla çalışmaktadırlar. 2-3 dakikada tam sonuca ulaştırılmış sorularımız bulunmaktadır. Gönüllü olarak çalışan arkadaşlarımız kendi boş zamanlarından feragat ederek buraya yardımcı olmaya çalışmaktadırlar.

Çalışan örnek istiyorsunuz ama zaten kodun tamamı orda yazıyor tek yapmanız gereken treeview'in node_clik olayını bulmak ve kodu oraya koymak.Sonra da istediğiniz formun adını yazmak.
Uyarımı tekrarlamak istiyorum,şayet bu işi yaparken zorlanıyorsanız daha basit şeylerden başlayınız. Koşmadan önce yürümek lazım gelir
EkBilgi:
Aynı isimde fonksiyonlar overload yapmaya çalışyorsanız olasıdır. Ama treeview'in node click olayı overload edilemez.

İkinci kodu denemenizi tavsiye ederim.
28/07/2009, 09:34

esrefigit

öncelikle tablonuza iki tane alan ekleyeceksiniz birincisi (ad) ki buna form yada raporlarımızın gerçek ismini yazacağız ki biz bu isime göre formu açtıracağız ikincisi ise (tür) buda bize kodda rapormu formmu ona göre işlem yapmamızı sağlayacak aslında bir alan daha ekleyip bunun üstemi yoksa anapage üzerindeki alt forma mı açılacağını da yapabiliriz ancak bize şimdilik sadece açma sorulduğu için diğer arkadaşalrın affına sığınarak benim naçizane örneğimi ekliyorum


Private Sub TreeView_Click()
burda nodselected diye bir comctl nesnesi yaratıyoruz
Dim nodSelected As MSComctlLib.Node
burda db diye dao database ve rst diye bir dao recorseti yaratıyoruz
Dim db As DAO.Database, rst As DAO.Recordset
burda db nin bu veritabanı olduğunu söylüyoruz
Set db = CurrentDb
burda strsearch diye string bir alan belirliyoruz
Dim strSearch As String
burda rst dediğimiz dao recrsetimizi set ederk ona tablomuzu açtırıyoruz
Set rst = db.OpenRecordset("SELECT * FROM treeview_tablosu ")
burda da nodselected nesnemizi set ederek onun trreeview imizin seçili olan itemi diyoruz
Set nodSelected = Me.TreeView.SelectedItem
burda strsearch stingimize treeviewde seçili olan nodun text ini veriyoruz alında key inide alabilirdik ancak bir işimize yaramazdı çünkü aynısından bir sürü var hangisini bulacaktı
strSearch = nodSelected.Text
burda rst nesnemizi with ile bir başlık altında topluyoruz
With rst
burda ilk kayda git diyoruz
.MoveFirst
burda etiket alanında strsearch e verdiğimiz seçilinodun ismini ara diyoruz
.FindFirst "[etiket] Like '*" & strSearch & "*'"

eğer bulursan
If Not rst.NoMatch Then

tür alanına bak dolu ise
If !tür > "" Then
yine tür alanına bak eğer form ise formu aç değilse zaten rapordur raporu aç ama hangi raporu yada formu işte onuda (ad) alanına yazdığımız formun yada raporun gerçek ismine göre aç
If !tür = "Form" Then
DoCmd.OpenForm !ad
Else
DoCmd.OpenReport !ad
End If

dolu değilse kodu durdur
Else
Exit Sub
End If


bulamazsan kodu durdur diyoruz
Else
Exit Sub
End If
End With
rst.Close
End Sub



buda kodun temiz hali
Kod:
Private Sub TreeView_Click()
    Dim nodSelected As MSComctlLib.Node
    Dim db As DAO.Database, rst As DAO.Recordset
    Set db = CurrentDb
    Dim strSearch As String
    Set rst = db.OpenRecordset("SELECT * FROM treeview_tablosu ")
    Set nodSelected = Me.TreeView.SelectedItem
    strSearch = nodSelected.Text
    With rst
        .MoveFirst
        .FindFirst "[etiket] Like '*" & strSearch & "*'"
        If Not rst.NoMatch Then
            If !tür > "" Then
                If !tür = "Form" Then
                    DoCmd.OpenForm !ad
                Else
                    DoCmd.OpenReport !ad
                End If
            Else
                Exit Sub
            End If
        Else
            Exit Sub
        End If
    End With
    rst.Close
End Sub
28/07/2009, 10:11

Bilgisayarcı

Alıntı:burda strsearch stingimize treeviewde seçili olan nodun text ini veriyoruz alında key inide alabilirdik ancak bir işimize yaramazdı çünkü aynısından bir sürü var hangisini bulacaktı

Pardon?
28/07/2009, 10:52

accessman

Arkadaşlar süpersiniz hepinize çok teşekkürler
bu işte biraz "anormal" olmak lazım galiba
şimdi online alışveriş sitesi olan bir arkadaş şöyle demişti
"Bazen kullanımda sadece 5-10 sn kolaylık sağlayacak bir kod için iki hafta boyunca çalıştığım olurdu"
programcılıkla uğraşmayan birisi için çok boş gereksiz bir çaba olarak gelebilir ama muhtemelen bu işle gerçekten ilgilenen arkadaşlar programın en güzel çalışmasını sağlamak için böyle çaba içine girmişlerdir ve bir kod satırını hatasız yazabilmek için günlerce uğraşmış olabilirler
en azından ben accesstr yi keşfetmeden önce bunu çok yaşardım
bu yüzden her kodun arka planında büyük emek yatmaktadır
sorularıma usanmadan cevap veren tüm accesstr camiasına teşekkürü bir borç biliyorum
not:anormal kelimesi yanlış anlaşılmasın çok iyi olanlarda anormaldir değilmi
28/07/2009, 11:35

Aykay

Değerli arkadaşlar merhaba;

Emeği geçen herkese teşekkürler

Kolaylıklar diliyorum
28/07/2009, 11:43

esrefigit

kusura bakmayın bilgisayarcı arkadaşın uyarısı ile bir yanlşışımı farkettim key alanıda farklı verilerden oluşuyormuş o nedenden dolayı search ile key alanınındada arama yapabiliriz

strSearch = nodSelected.key

.FindFirst "[anahtar] Like '*" & strSearch & "*'"

şeklinde değişiklik yaparak

teşekkürler bilgisayarcı kendisinden özür diliyor ve teşekkürlerimi kabul etmesini diliyorum
1 2 3 4 5 6