Forum » Programiranje » Optimizacija makroja (povezava z bazo podatkov) [VBA/VB6]
Optimizacija makroja (povezava z bazo podatkov) [VBA/VB6]
gregor_83 ::
Pozdrav
Spisal sem makro v Autocadovem VBA okolju in sem kar zadovoljen z njim - naredi vse kar hočem, problem je le hitrost.
Delam z .mdb bazo podatkov s cca. 35000 vnosi. Sama baza niti ni problem; če dam SQL query-u, ki z LIKE in jokerji išče frazo po treh stolpcih nekaj, kar vem da ne bo našel, mi to pove zelo hitro (pod 3s).
Problem je v formi, ki jo kažem uporabniku: tam imam ListBox, ki ga z DO-LOOP napolnim z vrsticami enega od polj iz baze (včasih jih je vseh 35k). To traja več kot 10s. Pa tudi, če mu dam query, ki vrne veliko izdelkov iz baze, je vse skupaj nesprejemljivo počasno.
Razmišljal sem, da bi lahko uporabnik začel s pregledovanjem ListBox-a ko se v njem nabere že nekaj 10 vnosov iz baze, ni potrebno da so vidni vsi. Potem sem ugotovil da tega ne znam niti v teoriji narediti.
Malo sem brskal po helpu in Netu, ampak razen DoLoop funkcije (ki je ne znam uporabiti) ne najdem nič pametnega. Če je kdo kdaj delal z bazami v VB-ju in ima kak nasvet ali idejo mu bom hvaležen.
Spisal sem makro v Autocadovem VBA okolju in sem kar zadovoljen z njim - naredi vse kar hočem, problem je le hitrost.
Delam z .mdb bazo podatkov s cca. 35000 vnosi. Sama baza niti ni problem; če dam SQL query-u, ki z LIKE in jokerji išče frazo po treh stolpcih nekaj, kar vem da ne bo našel, mi to pove zelo hitro (pod 3s).
Problem je v formi, ki jo kažem uporabniku: tam imam ListBox, ki ga z DO-LOOP napolnim z vrsticami enega od polj iz baze (včasih jih je vseh 35k). To traja več kot 10s. Pa tudi, če mu dam query, ki vrne veliko izdelkov iz baze, je vse skupaj nesprejemljivo počasno.
Razmišljal sem, da bi lahko uporabnik začel s pregledovanjem ListBox-a ko se v njem nabere že nekaj 10 vnosov iz baze, ni potrebno da so vidni vsi. Potem sem ugotovil da tega ne znam niti v teoriji narediti.
Malo sem brskal po helpu in Netu, ampak razen DoLoop funkcije (ki je ne znam uporabiti) ne najdem nič pametnega. Če je kdo kdaj delal z bazami v VB-ju in ima kak nasvet ali idejo mu bom hvaležen.
mHook ::
Pri MS Office programih pomaga Application.ScreenUpdating = FALSE na pred zanko in True na koncu.
Vmes lahko še kdaj narediš DoEvents, da sistem ne bi mislil, da je tvoj makro zamrznil.
Vmes lahko še kdaj narediš DoEvents, da sistem ne bi mislil, da je tvoj makro zamrznil.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [ASP.NET] Prenos podatkov iz ene spletne strani v drugoOddelek: Programiranje | 938 (797) | Cvenemir |
» | [C++] Prehod na Windows FormsOddelek: Programiranje | 956 (920) | jizzer |
» | C#, Dodajanje podatkov v Arraylist z GumbomOddelek: Programiranje | 2280 (2119) | Beezgetz |
» | [VB 2005] branje tekstaOddelek: Programiranje | 1645 (1313) | mNeRo |
» | ListBox Izbira .NETOddelek: Izdelava spletišč | 935 (875) | dejc2 |