2016-04-05 21 views
0

Bunu anlayamıyorum, SQL Server yönetiminde deyimi çalıştırıyorum ve tüm kayıt kümelerini döndürür, ancak kod aracılığıyla aynı ifadeyi çalıştırdığımda, yalnızca ilk veri kümesi.SQL Server sorgusu yalnızca ilk 1 satırı döndürür

SQL Fiddle ile aynı basit SELECT deyimini denedim ve bunun nasıl yapılacağını, bunun sebebi ne olabilir? İşte

|column1(nvarchar(50)) | column2(nvarchar(50))| 
----------------------------------------------- 
|Section1    | 1234     | 
|Section2    | 1234     | 
|Section3    | 1234     | 
|Section3    | 1234     | 
----------------------------------------------- 

o kodu çalıştırdıktan sonra biter yolu, ben

SELECT column1, column2 
FROM Table1 
WHERE column2 = '1234'; 

veri görünmelidir şekilde yapmaya çalışıyorum ne olduğunu göstermek için SQL Fiddle olduğunu. Kullandığım kod

.

Dim conn As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    Dim sConnString As String 
    sConnString = "PROVIDER=SQLOLEDB;" & _ 
            "Data Source=190.190.10.XXX,1433;" & _ 
            "Initial Catalog=my_DB;" & _ 
            "User Id=sa;" & _ 
            "Password=my_Password;" 

       Set conn = New ADODB.Connection 
       Set rs = New ADODB.Recordset    
       conn.Open sConnString 
     strSQL = "SELECT Section_Data, Words_Data FROM Words_TBL WHERE Words_Data = '1234'"      
          rs.Open strSQL 
          If rs.EOF = False Then 
           x = rs.GetRows 
          Else 

          For i = LBound(x) To UBound(x) 
            Debug.Print x(i, 0) 
          Next i 
+2

Bize kodunuzu gösterebilir misiniz? – Squirrel

+0

Kodunuzu eklemeden kodunuzun neden çalışmadığını size söylememizi istediniz. Nasıl yardımcı olabileceğimizi düşünüyorsun? –

+0

Benim kötü, onu koymak gerekiyordu. Şimdi yapacak. –

cevap

1

kullan iki boyutlu dizi bir Recordset'ten kayıtları kopyalamak için GetRows yöntemi. ilk alt simge, alanı tanımlar ve , saniye kayıt numarasını tanımlar. GetRows yöntemi veriyi döndürdüğünde dizi değişkeni doğru boyuta otomatik olarak boyutlandırılan dizisidir.

For i = LBound(x) To UBound(x) 
    Debug.Print x(i, 0) 
Next i 

For i = LBound(x, 2) To UBound(x, 2) 
    Debug.Print x(0, i) 
Next i 
+0

Buna inanamıyorum, kafamı vidalamamalıyım , Get-satırları dizisi yerine bir çalışma sayfası dizisi için döngü kullanıyordum.GetRows dizisini kullanarak bu ifadelerin yüzlerce var ve ben SQL deyimine odaklandım ve bu döngü hakkında unuttum. Teşekkürler, bu düzeltildi. Senin için Tim. –

0

Ben aralığına tüm verileri kopyalamak için CopyFromRecordset yöntemini kullanırsınız olmalıdır. Çok daha hızlıdır, ancak başlıkları oluşturmak için önce tüm alan adlarını geçmeniz gerekir.

İlgili konular