spreadsheet.datasource Hakkında.

Rafet

Altın Üye
Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
01-12-2025
Normalde excel sayfasında bu şekilde güncellemer yapıp SQL den veri cağırıyoruz.
Userformda spreadsheet 'i kullanarak excel sayfasıyla ilişkilendirmeden işlem yapmak istiyorum. spreadsheet'e verileri belli değişkenleri textbox'lardan göstererek halletmek istiyordum. Fakat spreadsheet'in bağlantısını ve view'ini değiştirmeyi başaramadım.



--- BU CUMLE OUERY TABLOYU GUNCELLERKEN GERCEKLEŞTIRDIĞIM KODLAR.
Kod:
With Sheets("Alacak").Range("Alacak_Sorgu_01").QueryTable
        .Connection = _
        "" & baglanti & ""
        .CommandText = Array( _
        " SELECT A.C_S ,SUM(TUTAR) TUTAR ,A.DURUM ,TURU " _
        , " FROM dbo.Z_TKM_M_SENCEK A " _
        , " GROUP BY A.C_S ,A.DURUM ,TURU" _
        , " ORDER BY A.C_S ,A.DURUM ,TURU  " _
        )
        Range("Aalacak_Son_CalisanView") = .CommandText
        .Refresh BackgroundQuery:=False
End With
--- BU KONDLARA BENZEYECEĞİNİ DÜŞÜNEREK BU ŞEKİLDE YAPMAK İSTEDİM AMA ÇALIŞMADI. hATA VERDİ.
Kod:
With USEFORM1.spreadsheet.datasource
        .Connection = _
        "" & baglanti & ""
        .CommandText = Array( _
        " SELECT A.C_S ,SUM(TUTAR) TUTAR ,A.DURUM ,TURU " _
        , " FROM dbo.Z_TKM_M_SENCEK A " _
        , " GROUP BY A.C_S ,A.DURUM ,TURU" _
        , " ORDER BY A.C_S ,A.DURUM ,TURU  " _
        )
        Range("Aalacak_Son_CalisanView") = .CommandText
        .Refresh BackgroundQuery:=False
End With
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
DataSource özelliğine Recordset atayabilirsiniz.
Not: Cursor client moduna çevrilmesi gerekebilir.
Kod:
Set Spreadsheet1.DataSource = rst
Aşağıdaki linkte de CopyFromRecordset metodu kullanılmış.

http://excelkb.com/article.aspx?id=10190
 

Rafet

Altın Üye
Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
01-12-2025
İlginiz için teşekkürler.
Recortset kullanan biri değilim.
vb ile başlangıcım sadece excel ve vbe den başkada çalışmadım.

Recordset ile ilgili daha önce birkaç şey okudum onları tekrar gözden gecirem gerekecek.

Tekrar teşekkürler.
 

Rafet

Altın Üye
Katılım
24 Mart 2005
Mesajlar
230
Excel Vers. ve Dili
Ofice 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
01-12-2025
Update işlemi için yine excel.web.tr de bulup kullandığım kodlar vardı.
Buları günler geçtikce geliştirdim. Recordset kullndığımı biliyordum Ama hiç bilgi çağırmak için kullanmamıştım.

Sizin Set Spreadsheet1.DataSource = rst kodunuz bende aşağıdaki kodu kafamda soru işareti oluşturdu. Ve cevap olarak aşağıdaki kod ortaya cıktı ve çalışıtı.

Kod:
  'SQL Bağlantısına Başlıyoruzzzzz -------------------------------
        Set cnt = New ADODB.Connection
        Set rst = New ADODB.Recordset
        strConn = "PROVIDER=SQLOLEDB;"
        strConn = strConn & "DATA SOURCE='" & server & "';DATABASE=" & database & ";Auto Translate=False;"
        strConn = strConn & "user id=" & kullanici & ";password='" & sssss & "';trusted_connection=False;"
        cnt.ConnectionString = strConn

'------------------------------------------------------------------------------------
        stSQL = " select * from tblcasabit WHERE CARI_KOD='B15568' "
        
        'connection'u aç
        cnt.Open
        'kayıtları işle [kayıtları işleden değilde şu an kayıtları cağır olmuş oluyor .]
        rst.Open stSQL, cnt, 1, 3
        
'işte bu kod. Yanlız hemen yukardaki cnt,1 ,3  teki 1 ve 3 ün ne anlama geldiğini merak ettim. 
        CalismaAlani_Sip_StokKodu.Spreadsheet_Sip_StokKodlari.DataSource = rst
        
        'connection ile recordset'leri boşalt
        Set rst = Nothing
        Set cnt = Nothing
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Tebrik ederim. 1 ve 3 ün anlamını şuradan öğrenebilirsiniz.

ADO Cursor & Lock Types
 
Üst