Excel ADO Recordset ilk kayıda yazma

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
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.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
Excel Vers. ve Dili
Office 2013 İngilizce
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

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
Excel Vers. ve Dili
Office 2013 İngilizce
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ı
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,598
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
Excel Vers. ve Dili
Office 2013 İngilizce
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

Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Rst yada rs.recordcount -1 olarak denenebilir.
 
Katılım
5 Kasım 2006
Mesajlar
572
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
UBound(deg,2) yada böyle olabilir.Resmi göremediğim için tahminen yazdım.
 
Üst