• DİKKAT

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

Userform' SQL ile Veri Almak

Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
PostgreSQL ile Userform Üzerine Veri Almak (Sadece Okuma)

Ekteki kodlarla ilgili sayfalara verileri aktarıyorum.
Bunu userform üzerinde yapmak istiyorum,

Kodlar içinde
kapikagidi makrosundaki
sicilno barkod adi soyadi tarih saat1 saat2 (6 şar adet veri oluyor en fazla)
olanların herbiri textboxta gözükecek şekilde
mazeret makrosuda
sicilno barkod adi soyadi mazeretturu tarih (6 şar adet veri oluyor en fazla)
yine herbiri aynı userform üzerinde gözükecek şekilde ayarlayabilirmiyiz?
ama sicilno için textbox1 e girdiğimde iki koduda çalıştırıp tüm textboxlara yazmalı ( verileri yaklaşık 78 adet textboxa yazacak)

kriter olan kısımlarda textboxlarda elle girilip sabit duracak bunlar,
mazeretler.tarih>={d '2012-01-01'
mazeretler.mazeretturu=5
kapikagidi.tarih Between {d '2012-10-15'} And {d '2012-11-15' (2 Ayrı Textbox da)


yardımcı olacak arkadaşlar şimdiden çok teşekkürler.
 

Ekli dosyalar

Son düzenleme:
verileri sadece okutmak istiyorum herhangi bir kayıt vs olmayacak.
 
Neden listeleme için metin kutusu olmak zorunda? Bir listbox veya listview olamaz mı?
Elbette biraz zahmete girip, çalışma anında metin kutusu eklenerek dinamik bir listeleme yapılabilir.
Cevabınızı merak ettim işin diğer tarafı...
 
Listview de olabilir, ama bunlardan textboxlara göre hesap yaptırmayı düşünüyordum daha doğrusu hazır bir tabloma bunu entegre etmeyi düşünüyordum.
ama dediğiniz gibi çok zahmetli olursa şimdilik listview de olabilir .
 
Son düzenleme:
Bu istedikleriniz çok sayıdaki textboxları kontrol etmekten daha kolay olacaktır.
Örneğinize yarın akşam bakabileceğim.
 
Merhaba,

Önce VBA kısmında Pwd=1234 olan yere doğru şifreyi yazın.
PostreSql sistemde tarih girdilerini nasıl istediğini bilemiyorum. İlk yyyy-aa-gg formatında, olmazsa gg.aa.yyyy olarak deneyin.

Bu arada tasarımınızı biraz değiştirdim. ;)

Kod:
Private Sub CommandButton1_Click()
    Call kapikagidi
    Call Mazeret
End Sub

Sub Mazeret()
Dim cn As String, sql As String
    
    cn = "Driver={PostgreSQL ANSI};Server=172.17.12.254;Port=5432;" & _
         "Database=pw_pdks;Uid=postgres;[B]Pwd=1234[/B];sslmode=require"
    
    sql = _
        "SELECT " & _
        " sicil.sicilno, sicil.barkod, sicil.adi, sicil.soyadi, " & _
        " mazeretler.mazeretturu, mazeretler.tarih " & _
        "FROM public.mazeretler " & _
        " inner join public.sicil on (sicil.idnum = mazeretler.sicilid) " & _
        "WHERE " & _
        " (sicil.sicilno = '" & TextBox1 & "') AND " & _
        " (mazeretler.mazeretturu = " & TextBox2 & ") AND  " & _
        " (mazeretler.tarih >= '" & TextBox3 & "') "
    
    With CreateObject("ADODB.Recordset")
        .activeconnection = cn
        .Open sql
        
        If .RecordCount > 0 Then
            Do While Not .EOF
                DoEvents
                Set itm = ListView2.ListItems.Add(Text:=.Fields(0))
                itm.SubItems(1) = .Fields(1)
                itm.SubItems(2) = .Fields(2)
                itm.SubItems(3) = .Fields(3)
                itm.SubItems(4) = .Fields(4)
                itm.SubItems(5) = .Fields(5)
                
                .movenext
            Loop
        End If
        
        .activeconnection = Nothing
    End With
End Sub

Sub kapikagidi()
Dim cn As String, sql As String

    cn = "Driver={PostgreSQL ANSI};Server=172.17.12.254;Port=5432;" & _
         "Database=pw_pdks;Uid=postgres;[B]Pwd=1234[/B];sslmode=require"
         
    sql = _
        "SELECT " & _
        " sicil.sicilno, sicil.barkod, sicil.adi, sicil.soyadi, " & _
        " kapikagidi.tarih, kapikagidi.saat1, kapikagidi.saat2 " & _
        "FROM public.kapikagidi " & _
        " inner join public.sicil on (sicil.idnum = kapikagidi.sicilid) " & _
        "WHERE  " & _
        " (sicil.sicilno = '" & TextBox1 & "') AND  " & _
        " (kapikagidi.tarih Between '" & TextBox4 & "' And '" & TextBox5 & "') "
    
    
    With CreateObject("ADODB.Recordset")
        .activeconnection = cn
        .Open sql
        
        If .RecordCount > 0 Then
            Do While Not .EOF
                DoEvents
                Set itm = ListView1.ListItems.Add(Text:=.Fields(0))
                itm.SubItems(1) = .Fields(1)
                itm.SubItems(2) = .Fields(2)
                itm.SubItems(3) = .Fields(3)
                itm.SubItems(4) = .Fields(4)
                itm.SubItems(5) = .Fields(5)
                itm.SubItems(6) = .Fields(6)
                
                .movenext
            Loop
        End If
        
        .activeconnection = Nothing
    End With
End Sub
 

Ekli dosyalar

Çok teşekkür ederim ellerinize sağlık excel dosyasını öylesine 3-5 dk hazırlamıştım açıklama olması açısından o yüzden değiştirmenizde bir sıkıntı yok yanlız çok güzel olmuş :) teşekkürler. kodlar eskisinden kısa ve muntazam olmuş, gerçi eskisinide makro kaydet ile yapmıştım ama bu excelinkinden daha anlaşılır olmuş, :)
tarih formatını nasıl ayarlayabilicez yani listview deki görüntüsümü ? onu anlayamadım, sorgudan gelen yyyy:mm:dd bana tersi lazım
birde yeni aklıma geldi tarih formatı deyince mükerrer kayıtlar olabiliyor onları nasıl halledebilirim? gerçi mükerrer olmasın diye ayrı ayrı kaydetmiştim makroları yani mazeret ayrı kapı kağıdı ayrı ikisini bir kriter verince kapı kağıdının olmadığı yere bir önceki mazeretin aynısını getiriyordu sanırım oda sorun olmaz
birde olurda textbox a atmak istersem nasıl bir yol izlemem lazım sanırım sıkıntı kayıt adedi ne kadar olduğunu bilmememizden oluyor sanırım yanılmıyorsam.
listview durupta extradan texbox a atsak mı daha kolay olur çok önemli değil ama merak ediyorum.
 
Tekrar merhaba,

Tarih biçiminden demek istediğim SQL sorgusuna verilecek tarih biçimiydi; listview üzerindeki görüntüsü değildir. Yani text kutusuna tarihi yazış biçimidir. Örneğin 14 Şubat 2012 yi kutuya aşağıdaki yazmanız gerekebilir:

2012-02-14 veya 14.02.2012

Not: Kapikagidi isimli prosedurde sql cümlesinin where şartında fazladan küme parantezi "}" kalmış onu siliniz.

Burada işin erbabı siz olduğunuzdan ve örnek data ile sonuç datayı bilemediğimizden ne yapmak istediğinizi anlamakta zorlanıyoruz.

Dikkat ederseniz form üzerinde 2 adet page(sayfa) mevcut. Mazeretleri ve kapı kağıdı listelerini 2 ayrı listview üzerinde listeliyor. Kanımca listeleme aşaması tamamlandı.
 
Muhakkak tamamlandı. gayette hoş oldu listview ile ilgili sorunum olursa burda bir çok örnei var oralardan hallederim sanırım çok hazırcı olmak istemiyorum sorunum hakkında hiç bir örnek bulamamamıştım daha doğrusu benim anlayabileceğim bir örnek sağolun siz çözdünüz.



programı yarın deneyip sizi bilgilendiririm.
 
ne yaptıysam çalıştıramadım kodları
 
Son düzenleme:
neden çalışmıyor acaba hiç anlam veremedim activeconnection da takılıp kalıyor cn ile ilgili yordamımı anlamıyor
 
"cn" isimli değişkene makro kaydederken kullanılan dizeyi kullanarak deneyin.
 
denedim bir çok şekilde ama hertürlü hata aldım hep aynı yerden
 
Son düzenleme:
Run-Time Error '2147467259 (80004005)'
Could Not Connect to the server


hatası veriyor kodda dediğim yerde
 
"" "cn" isimli değişkene makro kaydederken kullanılan dizeyi kullanarak deneyin. ""

ilk kodda yanlız veriler ms query ile alınıordu o yüzden uymuyor sanırım
 
Run-Time Error '2147467259 (80004005)'
Could Not Connect to the server


hatası veriyor kodda dediğim yerde

İletide sunucuya bağlanılamadığını belirtmiş. Sunucu adı/ip, kullanıcı adı, şifre ve network ortamında kullanılıyorsa port argumanları kontrol edilmeli.

Bunun dışında önerebileceğim birşey yok.
 
İletide sunucuya bağlanılamadığını belirtmiş. Sunucu adı/ip, kullanıcı adı, şifre ve network ortamında kullanılıyorsa port argumanları kontrol edilmeli.

Bunun dışında önerebileceğim birşey yok.


tam anlayamadım yani başka bir bilgisayarda aynı servera bağlantı olduğundanmı kaynaklanıyor port argumanlarını nasıl kontrol edebilirim biraz açıklarmısın.
 
Geri
Üst