Excel den ADO DB ile SQL den Logo DB den Bilgi Çeken Örnek Kod

Gönderen Konu: Excel den ADO DB ile SQL den Logo DB den Bilgi Çeken Örnek Kod  (Okunma sayısı 1796 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı LsuErsoy

  • LOGO Bayi
  • Logo Uzmanı
  • *****
  • Karma: 33
  • Kişisel ileti
Bu konu ;

   
Bi fikrim geldi :) Kod Arşivi  konusunun içeriğinin farklı yönlere olumlu yada olumsuz saptırılmaması (konunun dağılmaması) için ilgili konudan ayrılması gereken cevapların depolandığı bölüm olacaktır...

Kolay gelsin , iyi çalışmalar.

=============================================================================

Private Sub CommandButton1_Click()
 'Bir butonumuz var o butona tıklayınca sırası ile aşağıdaki işlemler gerçekleşecek
   Dim Baglanti As Object, KayitSeti As Object
    'Baglantı ve KayitSeti nesnelerini tanımlıyoruz
        Set Baglanti = CreateObject("adodb.connection")
        'Bağlantı nesnesinin türünü belirliyoruz
            Set KayitSeti = CreateObject("adodb.recordset")
                'KayıtSeti nesnesinin türünü belirliyoruz
strFirma = Format(Sheets("SETUP").Range("B5"), "000")
    'İlgili EXCEL çalışma kitabında SETUP adında bir sayfa var,Bu sayfadaki B5 hücresine LOGO Firma numarasını yazacağız
    strServer = Sheets("SETUP").Range("B1").Value
    'İlgili EXCEL çalışma kitabında SETUP adında bir sayfa var,Bu sayfadaki B1 hücresine LOGO nun SERVER IP sini yazacağız
        strDatabase = Sheets("SETUP").Range("B4").Value
    'İlgili EXCEL çalışma kitabında SETUP adında bir sayfa var,Bu sayfadaki B4 hücresine LOGO nun DATABASE adını yazacağız
            strKullanıcı = Sheets("SETUP").Range("B2").Value
    'İlgili EXCEL çalışma kitabında SETUP adında bir sayfa var,Bu sayfadaki B2 hücresine SQL in USER adını yazacağız
                strParola = Sheets("SETUP").Range("B3").Value
    'İlgili EXCEL çalışma kitabında SETUP adında bir sayfa var,Bu sayfadaki B3 hücresine SQL USER ının şifresini yazacağız
                tarih1 = Format(Range("I2"), "yyyy-mm-dd")
    'İlgili EXCEL çalışma kitabında verilerin listeleneceği bir sayfa var,Bu sayfadaki I2 hücresine TARİH yazacağız , formatı GG.AA.YY şeklinde olacak
   
               
               
                'tarih2 = Format(Range("B1"), "yyyy-mm-dd")

'dbo.LG_311_01_INVOICE.DATE_ BETWEEN   '" & tarih1 & "' AND '" & tarih2 & "'
   
' S değişkeni ve değişkenin alacağı değeri getiren T-SQL kodunu VBA formatında yazıyoruz
   
S = "SELECT CEK_KART.PORTFOYNO AS PortfoyNo, CEK_KART.SERINO AS SeriNo, CEK_KART.DOC AS Türü, CEK_KART.CURRSTAT AS Statüsü, "
S = S & "CEK_KART.DUEDATE AS Vade, CEK_KART.SETDATE AS Tarih1, CEK_KART.AMOUNT AS Tutar, MAX(ROLLER.STATNO) AS Hareket, "
S = S & "CARI.CODE AS [Cari Kodu], CARI.DEFINITION_ AS Ünvanı, ROLLER.RECSTATUS, CEK_KART.OURBANKREF, CEK_KART.BANKNAME, "
S = S & "CEK_KART.SPECODE, CEK_KART.CYPHCODE, CEK_KART.CITY, CEK_KART.OWING, CEK_KART.KEFIL, CEK_KART.MUHABIR, CEK_KART.BRANCH, "
S = S & "CEK_KART.DEVIR, CEK_KART.INUSE, CEK_KART.EXTENREF, CEK_KART.CAPIBLOCK_CREATEDBY, CEK_KART.CAPIBLOCK_CREADEDDATE, "
S = S & "CEK_KART.CAPIBLOCK_CREATEDHOUR, CEK_KART.CAPIBLOCK_CREATEDMIN, CEK_KART.CAPIBLOCK_CREATEDSEC, "
S = S & "CEK_KART.CAPIBLOCK_MODIFIEDBY, CEK_KART.CAPIBLOCK_MODIFIEDDATE, CEK_KART.CAPIBLOCK_MODIFIEDHOUR, "
S = S & "CEK_KART.CAPIBLOCK_MODIFIEDMIN, CEK_KART.CAPIBLOCK_MODIFIEDSEC, CEK_KART.COLLREPRATE, CEK_KART.COLLTRRATE, "
S = S & "CEK_KART.CANCELLED, CEK_KART.LINEEXCTYP, CEK_KART.TEXTINC, CEK_KART.SITEID, CEK_KART.RECSTATUS AS Expr1, "
S = S & "CEK_KART.ORGLOGICREF, CEK_KART.WFSTATUS, CEK_KART.BNBRANCHNO, CEK_KART.BNACCOUNTNO, CEK_KART.DEPTADDR1, "
S = S & "CEK_KART.DEPTADDR2, CEK_KART.DEPTCITY, CEK_KART.DEPTCITYCODE, CEK_KART.DEPTCOUNTRY, CEK_KART.DEPTCOUNTRYCODE, "
S = S & "CEK_KART.DEPTPOSTCODE, CEK_KART.DEPTTELNRS1, CEK_KART.DEPTTELNRS2, CEK_KART.DEPTFAXNR, CEK_KART.DEPTTOWN, "
S = S & "CEK_KART.DEPTTOWNCODE, CEK_KART.DEPTDISTRICT, CEK_KART.DEPTDISTRICTCODE, CEK_KART.OPSTAT, CEK_KART.PRINTCNT, "
S = S & "CEK_KART.NEWSERINO, CEK_KART.PROJECTREF, CEK_KART.FAXCODE, CEK_KART.TELCODES2, CEK_KART.TELCODES1, "
S = S & "CEK_KART.COLLATCARDREF , CEK_KART.COLLATROLLREF, CEK_KART.AFFECTCOLLATRL, CEK_KART.AFFECTRISK "
S = S & "FROM LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_CLCARD CARI INNER JOIN "
S = S & "LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_CSTRANS ROLLER ON CARI.LOGICALREF = ROLLER.CARDREF INNER JOIN "
S = S & "LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_CSCARD CEK_KART ON ROLLER.CSREF = CEK_KART.LOGICALREF "
S = S & "GROUP BY CEK_KART.PORTFOYNO, CEK_KART.SERINO, CEK_KART.DOC, CEK_KART.CURRSTAT, CEK_KART.DUEDATE, CEK_KART.SETDATE, CARI.CODE, "
S = S & "CARI.DEFINITION_, CEK_KART.AMOUNT, ROLLER.RECSTATUS, CEK_KART.OURBANKREF, CEK_KART.BANKNAME, CEK_KART.SPECODE, "
S = S & "CEK_KART.CYPHCODE, CEK_KART.CITY, CEK_KART.OWING, CEK_KART.KEFIL, CEK_KART.MUHABIR, CEK_KART.BRANCH, CEK_KART.DEVIR, "
S = S & "CEK_KART.INUSE, CEK_KART.EXTENREF, CEK_KART.CAPIBLOCK_CREATEDBY, CEK_KART.CAPIBLOCK_CREADEDDATE, "
S = S & "CEK_KART.CAPIBLOCK_CREATEDHOUR, CEK_KART.CAPIBLOCK_CREATEDMIN, CEK_KART.CAPIBLOCK_CREATEDSEC, "
S = S & "CEK_KART.CAPIBLOCK_MODIFIEDBY, CEK_KART.CAPIBLOCK_MODIFIEDDATE, CEK_KART.CAPIBLOCK_MODIFIEDHOUR, "
S = S & "CEK_KART.CAPIBLOCK_MODIFIEDMIN, CEK_KART.CAPIBLOCK_MODIFIEDSEC, CEK_KART.COLLREPRATE, CEK_KART.COLLTRRATE, "
S = S & "CEK_KART.CANCELLED, CEK_KART.LINEEXCTYP, CEK_KART.TEXTINC, CEK_KART.SITEID, CEK_KART.RECSTATUS, CEK_KART.ORGLOGICREF, "
S = S & "CEK_KART.WFSTATUS, CEK_KART.BNBRANCHNO, CEK_KART.BNACCOUNTNO, CEK_KART.DEPTADDR1, CEK_KART.DEPTADDR2, "
S = S & "CEK_KART.DEPTCITY, CEK_KART.DEPTCITYCODE, CEK_KART.DEPTCOUNTRY, CEK_KART.DEPTCOUNTRYCODE, CEK_KART.DEPTPOSTCODE, "
S = S & "CEK_KART.DEPTTELNRS1, CEK_KART.DEPTTELNRS2, CEK_KART.DEPTFAXNR, CEK_KART.DEPTTOWN, CEK_KART.DEPTTOWNCODE, "
S = S & "CEK_KART.DEPTDISTRICT, CEK_KART.DEPTDISTRICTCODE, CEK_KART.OPSTAT, CEK_KART.PRINTCNT, CEK_KART.NEWSERINO, "
S = S & "CEK_KART.PROJECTREF, CEK_KART.FAXCODE, CEK_KART.TELCODES2, CEK_KART.TELCODES1, CEK_KART.COLLATCARDREF, "
S = S & "CEK_KART.COLLATROLLREF , CEK_KART.AFFECTCOLLATRL, CEK_KART.AFFECTRISK HAVING (CEK_KART.DUEDATE >= "
S = S & "CONVERT(DATETIME, '" & tarih1 & "', 102)) AND (CEK_KART.DOC = 2) AND (ROLLER.RECSTATUS IN (1, 2))"

Baglanti.Open "Provider=SQLOLEDB; Data Source=" & strServer & "; Initial Catalog=" & strDatabase & "; User ID=" & strKullanıcı & "; Password=" & strParola & ";"
   'Bağlantı Nesnesini açıyoruz.
    KayitSeti.Open S, Baglanti, 1, 1
    'Kayıt Seti Nesnesini açıyoruz.
    Range("A9:IV65536").ClearContents
    'Tarih kıstasına göre butona her tıklandığında veriler yeniden listeleneceği için , daha önceki çok verinin üzerine az veri yazılması gerekebilir...listelenen verileri sildiriyoruz..tekrar yazdırıyoruz.
    Cells(9, 1).CopyFromRecordset KayitSeti
    'KayıtSeti nesnesinin SQL sorgusundan çektiği bilgilerin , verilerin listeleneceği sayfada 9.cu satır 1.ci sütundan itibaren listelenebilmesi için
   
KayitSeti.Close
    Baglanti.Close
        Set KayitSeti = Nothing
            Set Baglanti = Nothing
                strFirma = vbNullString
                    strServer = vbNullString
                        strDatabase = vbNullString
                            strParola = vbNullString
                                strKullanıcı = vbNullString
                                    S = vbNullString

End Sub

======================================================0

Katkılarından Dolayı

EXCELVBA.NET den TARKAN VURAL Bey'e , EXCELWEB.TR dan TARKAN VURAL Bey'e ve SQLEXCEL.NET e , Gelişim platformundan üstad DR.CENK İLTİR'e teşekkürler...
« Son Düzenleme: 09.03.2009, 18:22 Gönderen: LsuErsoy »

Çevrimdışı kadirozgul80

  • Yeni Kullanıcı
  • *
  • Karma: -1
Bi fikrim geldi :) Kod Arşivi
« Yanıtla #1 : 06.03.2009, 09:29 »
merhaba,
LsuErsoy teşekkür ederim. Bu konuda oldukça meraklı ve isteklisin ama bence site yönetimi yeni bir bölüm açtıktan sonra paylaşsan daha iyi olacak. Diğer arkadaşlar da bunları tek bir bir bölüm altında bulacaktır.

Yanlız site yönetiminin bu konuya pek sıcak bakmadığına dair izlenimler edinmeye başladım.

İyi çalışmalar...

Çevrimdışı LsuErsoy

  • LOGO Bayi
  • Logo Uzmanı
  • *****
  • Karma: 33
  • Kişisel ileti
Bi fikrim geldi :) Kod Arşivi
« Yanıtla #2 : 06.03.2009, 18:30 »
Yönetimin bu konuda alacağı her türlü karara saygım var.

Zamzam arkadaşımızın hicivli söylemini yanıtsız bırakmak istemedim , çünkü kod konusunda en istekli davrananlardan biri bendim , çünkü programcılık bilgim çok azdı , programcılık bilgisi çok iyi olanlarda bence vakit ayıramıyorlar , dinlenmeye vakit ayırabildiklerinden de şüpheliyim ...o yüzden net ortamında bulabildiğiniz kadar kaynak bulup bence çabalayarak büyük bir mesafe aşabilirsiniz....

Bizim bölüm açılana kadar (er yada geç açılacağını düşünüyorum :)) , teşekkür metninde adını andığım sitelerde yararlı bilgiler bulabilirsiniz...

Kadir bey daha önce ÖNCÜ de çalıştınız mı ?


Çevrimdışı kadirozgul80

  • Yeni Kullanıcı
  • *
  • Karma: -1
Bi fikrim geldi :) Kod Arşivi
« Yanıtla #3 : 07.03.2009, 10:45 »
merhaba LsuErsoy,
ben özel bir şirkette muhasebe departmanında çalışıyorum. Danışmanlık veya hizmet firmalarında çalışmadım. İşim gereği bu konularda biraz gayret sarfetmeye çalışıyorum.

Çevrimdışı zamzam

  • Logo Kullanıcısı Pro
  • ***
  • Karma: 0
Bi fikrim geldi :) Kod Arşivi
« Yanıtla #4 : 09.03.2009, 09:51 »
 Sayın Lsuersoy;
 Gerek sitede açtığınız konular gerekse verdiğiniz yanıtları kısaca bilgi ve birikiminizi tebrik ediyor ve üyelik tarihimden beri ilgiyle takip etmeye çalışıyorum. Bahsettiğiniz sitelerede üyeliğim mevcut olup vaktim doğrultusunda takip etmeye çalışıyorum. Hicivli söylemimin sebebi konunun güzel bir konu olması ve hayata geçmesini sabırsızlıkla beklememdendir. Ayrıca bu sitede yapmaya çalıştığımız şey özet olarak sadece kendi sorularımıza cevaplar bulmak değil, başkalarınada bilgimizce yardımcı olmaktır.
  Temel felsefe " BİLGİNİN KÖTÜSÜ İYİSİ OLMAZ " hep birlikte ne öğrenebilirsek kar olarak görüyorum.
   Tekrardan logodestek.gen.tr 'ye katkılarınızdan dolayı teşekkür ediyorum.
   Hicivli diye bahsettiğniz söylemimin tek sebebi budur.
   Son olarak yeni bir başlık altında konuyu cevap yada teşekkürler ile karmakarışık bir hale getirmeden başka bir başlık yada menü altına taşımamız mümkün olursa daha iyi olacaktır diye düşünüyorum.
   Teşekkürler.

Yönetimin bu konuda alacağı her türlü karara saygım var.

Zamzam arkadaşımızın hicivli söylemini yanıtsız bırakmak istemedim , çünkü kod konusunda en istekli davrananlardan biri bendim , çünkü programcılık bilgim çok azdı , programcılık bilgisi çok iyi olanlarda bence vakit ayıramıyorlar , dinlenmeye vakit ayırabildiklerinden de şüpheliyim ...o yüzden net ortamında bulabildiğiniz kadar kaynak bulup bence çabalayarak büyük bir mesafe aşabilirsiniz....