Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 3
  • 86

Witam.

Wyciągam dane z bazy i zapisuję je do Excela:

               liczba = WorksheetFunction.CountA(Worksheets("wyniki").Range("A:A")) + 1' numer pierwszego pustego wiersza
               
                Do Until dane.EOF
                DoEvents
                    For k = 1 To dane.Fields.Count - 1
                        Worksheets("wyniki").Cells(liczba, k).Value = dane(k - 1).Value
                    Next
                    dane.MoveNext
                    liczba = liczba + 1
                Loop

Dodatkowo w tabeli z podsumowaniem chciałbym wstawić liczbę znalezionych rekordów dla danej zmiennej.

dane.RecordCount - zawsze zwraca -1?

Szymon_Siemiaszko
  • Zapytał
  • @ Szymon_Siemiaszko | 29.05.2014
    • lider
    • laureat
    • 18
    • 7
    • 30

Odpowiedź (1)

  • 9

Poza innymi sposobami (np. odczytem zmiennej @@RowCount albo napisaniu kwerendy typu SELECT Count(*) FROM Produkty), najlepiej ustawić tzw. lokalizację kursora na klienta, tzn.:

Dim conn As Connection
Dim dane As Recordset

Set conn = New Connection

cs = "Provider=SQLNCLI11;Server=.\MSSQLSERVER2012;Database=Northwind;Uid=szkolenie;Pwd=123"
conn.Open cs
Set dane = CreateObject("ADODB.recordset")
dane.CursorLocation = adUseClient ' TO JEST TUTAJ ISTOTNE
dane.Open "SELECT * FROM Products", conn

MsgBox dane.RecordCount
liczba = WorksheetFunction.CountA(Worksheets("Arkusz1").Range("A:A")) + 1  'numer pierwszego pustego wiersza
              
Do Until dane.EOF
   DoEvents
   For k = 1 To dane.Fields.Count
      Worksheets("Arkusz1").Cells(liczba, k).Value = dane(k - 1).Value
   Next
   dane.MoveNext
   liczba = liczba + 1
Loop



  • Odpowiedział
  • @ | 30.05.2014
  • TRENER ALTKOM AKADEMII
Komentarze
Zadziałało, dziękuję.
Skomentował : @ Szymon_Siemiaszko ,02.06.2014
  • 18
  • 7
  • 30