Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Import z bazy Oracle do xlsx za pomocą ADO i pasek postępu

wolfau 01 Maj 2017 16:33 606 4
  • #1 01 Maj 2017 16:33
    wolfau
    Poziom 10  

    Witam Szanownych forumowiczów,

    nie jestem koderem, ale ostatnio życie nieco mnie zmusiło do wykorzystania VBA i Excela do bardziej efektywnej pracy, dlatego chciałbym poprosić o radę. Mam kod, którym pobieram dane z bazy Oracle poprzez ADO do excela.

    Oto kod, który działa poprawnie:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Chciałbym teraz do tego zadania, którego import zajmuje ok. 30 sekund wyposażyć w pasek postępu, znalazłem taki kod , który również autonomicznie wykonuje się bez większego problemu:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Pisząc autonomicznie mam na myśli to, że wykonanie tego modułu odbywa się niezależnie od tego pobrania z bazy. Robiłem już mnóstwo machinacji, i wykonuje się albo najpierw pasek, potem pobranie z bazy, albo odwrotnie.
    Nie udało mi się zmusić programu do przetwarzania naraz paska i w tle pobrania z bazy danych.

    Jeszcze jedno - rozumiem, że wszystkie paski postępu w VBA wymagają najpierw 1 krotnego przetworzenia programu z sekundnikiem i taki czas zaszywamy jako loopEnd. Czy jest coś co zadziała bez konieczności pomiarów? Wydaje mi się, że nie, bo program nie wie kiedy się zakończy... ;) ale mogę się mylić,

    Proszę o pomoc w tej sprawie i z góry za nią dziękuję,

    JK

    0 4
  • #3 01 Maj 2017 17:24
    wolfau
    Poziom 10  

    Ja się w pełni zgadzam z Kolegą, ale to taki warunek konieczny, bo po 2 stronie będzie Pani Użyszkodnik, która nie wie czy dane się pobierają, czy też nie... Jak nie ma informacji, to robi różne nieprzewidywalne dla siebie i środowiska działania. Przypadek szczególny, jeśli potraficie czytać między wierszami,

    JK

    0
  • Pomocny post
    #4 01 Maj 2017 17:50
    JRV
    Specjalista - VBA, Excel

    Zamiast CopyFromRecordset(wszystko) mozna wypelnic po komorce
    ADORecordset.RecordCount - ile wierszy
    Z tego - loopEnd
    ADORecordset.MoveFirst - 1 wiersz
    For c= 1 to ADORecordset.Fields.Count - po kolumnach
    ''Pasek
    ADORecordset.MoveNext - nastepny wiersz

    p.s.
    ADORecordset.Fields(0) - pierwsza komorka

    0
  • #5 01 Maj 2017 18:07
    wolfau
    Poziom 10  

    OK - dziękuję - ten pasek minimalistyczny z linku, który podałeś, w with w zasadzie spełnia założenia, dziękuję bardzo,

    pozdrawiam serdecznie, można zamknąć temat,

    JK

    0