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:
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
verileri sadece okutmak istiyorum herhangi bir kayıt vs olmayacak.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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ı...
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
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:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Bu istedikleriniz çok sayıdaki textboxları kontrol etmekten daha kolay olacaktır.
Örneğinize yarın akşam bakabileceğim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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

Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
Ç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.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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ı.
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
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.
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
ne yaptıysam çalıştıramadım kodları
 
Son düzenleme:
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
neden çalışmıyor acaba hiç anlam veremedim activeconnection da takılıp kalıyor cn ile ilgili yordamımı anlamıyor
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
"cn" isimli değişkene makro kaydederken kullanılan dizeyi kullanarak deneyin.
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
denedim bir çok şekilde ama hertürlü hata aldım hep aynı yerden
 
Son düzenleme:
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
Run-Time Error '2147467259 (80004005)'
Could Not Connect to the server


hatası veriyor kodda dediğim yerde
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
"" "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
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,389
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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.
 
Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
İ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.
 
Üst