• DİKKAT

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

Excel ADO Recordset ilk kayıda yazma

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

ADO Recordset nesnesi ile kapalı bir excel dosyasında sadece ilk kayda veri yazdırmak istiyorum, ilk kayıt dışındaki diğer kayıtlara "" olarak geçecek
bunun için aşağıdaki kodda nasıl bir düzenleme yapmak gerekecek?

Kod:
SQL12 = "SELECT * FROM [TblHesap] where [Kod]= 'k1'"

RS12.Open SQL12, Conn, 1, 3

If RS12.RecordCount > 0 Then

RS12("Field10") = "XXXXXXXXXXX"

  RS12.Update

End If

  RS12.Close
[code]

ilginize teşekkürler,
iyi Çalışmalar.
 
Merhaba,

Tablonuzda sıra numarası varsa where sno=1 diyerek yapabilirsiniz.
Verilerin nasıl işlendiğini görmemiz lazım.
 
Merhaba,

Tablonuzda sıra numarası varsa where sno=1 diyerek yapabilirsiniz.
Verilerin nasıl işlendiğini görmemiz lazım.
Erdem Hocam konuyu başa almak gerekirse; olay aslında şu şekilde
Kod:
SQL12 = "SELECT * FROM [TblHesap] where [Kod]= 'k1'"
burada 10 kayıt var, sıra numarası da var.
Kod:
SQL11 =  "SELECT SUM(Toplam) AS kgToplam  FROM [TblHesap] where [Kod]= 'k1'"
aynı tabloda "Toplam" alanını bu kritere göre ("k1") toplatıp "GenelToplam" sütununda sadece en üstteki satıra yazdırmak istiyorum, diğer satırlar boş kalsın istiyorum.

ekli dosyada anlatmaya çalıştığım durumu elde etmeye çalışıyorum. diğer bir ifadeyle buradaki SQL11 ve SQL12 sorgularındaki olayı birleştirmeye çalışıyorum, umarım anlatabilmişimdir.

iyi akşamlar.
 

Ekli dosyalar

Aşağıdaki kodu kullanabilirsiniz.
Kod:
Sub denemememmem()

Range("D2:D" & Rows.Count).Clear
Range("D2:D" & Rows.Count).NumberFormat = 0

Set con = VBA.CreateObject("adodb.Connection")
Set rs = VBA.CreateObject("adodb.Recordset")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select kod,sum(toplam) from[TblHesap$] group by kod "
rs.Open sorgu, con, 1, 3

deg = rs.getrows
rs.Close

For i = 0 To UBound(deg)

sorgu = "select [Genel Toplam] from[TblHesap$] where kod = '" & deg(0, i) & "' and sno=1  "

rs.Open sorgu, con, 1, 3

rs("Genel Toplam").Value = deg(1, i)

rs.Update
rs.Close

Next

End Sub
 
Aşağıdaki kodu kullanabilirsiniz.
Kod:
Sub denemememmem()

Range("D2:D" & Rows.Count).Clear
Range("D2:D" & Rows.Count).NumberFormat = 0

Set con = VBA.CreateObject("adodb.Connection")
Set rs = VBA.CreateObject("adodb.Recordset")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select kod,sum(toplam) from[TblHesap$] group by kod "
rs.Open sorgu, con, 1, 3

deg = rs.getrows
rs.Close

For i = 0 To UBound(deg)

sorgu = "select [Genel Toplam] from[TblHesap$] where kod = '" & deg(0, i) & "' and sno=1  "

rs.Open sorgu, con, 1, 3

rs("Genel Toplam").Value = deg(1, i)

rs.Update
rs.Close

Next

End Sub

Erdem Hocam teşekkürler,
buradaki iki işlemi tek sorgu altında yapabilme imkanı yok mudur? Aşağıdaki şekilde bir kod denedim ama;


Kod:
sorgu = "select kod, [Genel Toplam], sum(toplam) from[TblHesap$] group by kod "

rs("Genel Toplam").Value = .................................

iyi haftasonları
 
Tek sorguda sonuçlar getirilir ama sonuçların yazılması için ikinci bir aksiyon daha gerekli. Sonuçların arasına boşluk vererek yapılabilir mi,bilmiyorum.
 
Aşağıdaki kodu kullanabilirsiniz.
Kod:
Sub denemememmem()

Range("D2:D" & Rows.Count).Clear
Range("D2:D" & Rows.Count).NumberFormat = 0

Set con = VBA.CreateObject("adodb.Connection")
Set rs = VBA.CreateObject("adodb.Recordset")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select kod,sum(toplam) from[TblHesap$] group by kod "
rs.Open sorgu, con, 1, 3

deg = rs.getrows
rs.Close

For i = 0 To UBound(deg)

sorgu = "select [Genel Toplam] from[TblHesap$] where kod = '" & deg(0, i) & "' and sno=1  "

rs.Open sorgu, con, 1, 3

rs("Genel Toplam").Value = deg(1, i)

rs.Update
rs.Close

Next

End Sub


Murat Hocam merhaba,
verdiğiniz kodu başka bir çalışmada Access' e veri aktarmaya çalışıyorum
Kod:
deg = rst.getrows
ekli görselde olduğu gibi deg kaydında 172 değer olmasına kaşın; UBound(deg) değeri 0 geliyor, dolayısıyla döngüye girmiyor, bu durumu nasıl çözebilirim. Yardımlarınız için şimdiden teşekkürler,

iyi pazarlar.
 

Ekli dosyalar

  • 123457.jpg
    123457.jpg
    221.7 KB · Görüntüleme: 9
Rst yada rs.recordcount -1 olarak denenebilir.
 
UBound(deg,2) yada böyle olabilir.Resmi göremediğim için tahminen yazdım.
 
Geri
Üst