• DİKKAT

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

sql sorguda sira no oluşturmak

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

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
merhaba.
ado ile veri alırken a sütununa sıra no verdirmek nasıl yapılır?
Olması gereken şekli veri sayfasında gösterdim.Dosya ektedir.
Ben aşağadaki gibi yaptım ama olmadı.
Kod:
rs.Open "select (sirano=sirano+1),ad,baslik1,baslik2 FROM[vt$]", conn, 1, 1
DOSYAYI İNDİR
.
 

Ekli dosyalar

Evren Bey,

Kodunuzda CopyFromRecordset metodunu kullandığınız için, verileri aldığınız sayfada sıra numarası vermek için bir döngüye ihtiyaç bulunmakta.

Bunun için, kodunuzda aşağıdaki gibi bir değişiklik yaptım.

Kod:
Sub verigetir_2()
    Dim conn As Object, rs As Object
    Set conn = CreateObject("Adodb.connection")
    Set rs = CreateObject("adodb.recordset")
    
    Sheets("veri").Select
    Range("A2:D" & Rows.Count).ClearContents
    
    conn.Open "provider=microsoft.ace.oledb.12.0;" & "data source=" & ThisWorkbook.FullName & _
            ";Extended Properties=""Excel 12.0;HDR=Yes"""
    rs.Open "select ad,baslik1,baslik2 FROM[vt$]", conn, 1, 1
    
    ActiveSheet.Range("B2").CopyFromRecordset rs
    
    For i = 1 To rs.RecordCount
        Range("A" & i + 1) = i
    Next
    
    rs.Close: conn.Close
    MsgBox "İşlem tamam"
End Sub
Veya; VT'de sıra numarası verip, verileri sıra numarasıyla birlikte aktarabilirsiniz.
 
Haluk bey teşekkür ederim.
Ben döngüye girmeden sql sorguda halledebilirmiyiz diye düşünmüştüm.
 
Tekrar merhaba;

Dediğim gibi, kullandığınız metodun özelliği nedeniye, RecordSet nesnesindeki tüm verileri tek seferde aldığınız için döngü kullanmıyorsunuz. Bu nedenle, VT'de olmayan sıra numarasını almak için mecburen bir döngü kurmak gerekiyor.

Ya da, önceki mesajımda dediğim gibi; VT'de sıra numarasını verip, verileri o şekilde alabilirsiniz.

Benim bildiğim bu kadar, daha başka bir şey yapılabilir mi bilemiyorum.

iyi akşamlar,

.
 
Tekrar merhaba;

Dediğim gibi, kullandığınız metodun özelliği nedeniye, RecordSet nesnesindeki tüm verileri tek seferde aldığınız için döngü kullanmıyorsunuz. Bu nedenle, VT'de olmayan sıra numarasını almak için mecburen bir döngü kurmak gerekiyor.

Ya da, önceki mesajımda dediğim gibi; VT'de sıra numarasını verip, verileri o şekilde alabilirsiniz.

Benim bildiğim bu kadar, daha başka bir şey yapılabilir mi bilemiyorum.

iyi akşamlar,

.
Anladım hocam.İyi akşamlar.
 
Evren Bey;

Önerdiğim koddaki For-Next döngüsü yerine, aşağıdaki satır da bu işi çözer.

Kod:
Range("A2:A" & RS.RecordCount + 1).Formula = "=Row()-1"

.
 
Evren Bey;

Önerdiğim koddaki For-Next döngüsü yerine, aşağıdaki satır da bu işi çözer.

Kod:
Range("A2:A" & RS.RecordCount + 1).Formula = "=Row()-1"

.

Teşekkür ederim hocam.İyi geceler.:hey:
 
Geri
Üst