Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Usporavanje rada programa sa Access bazom

[es] :: Pascal / Delphi / Kylix :: Usporavanje rada programa sa Access bazom

[ Pregleda: 2145 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Usporavanje rada programa sa Access bazom08.12.2011. u 16:09 - pre 148 meseci
Pozdrav društvu!

Nadam se da će neko imati malo volje i strpljenja da mi pomogne u rešenju problema.

Radim neki mali projekat u Turbo Delphi 2006 za evidenciju prodaje i naplate robe putem sindikata, da ne gušim detaljima, imam 10-ak ADO tabela i konekciju na Access bazu koje sam smestio u Data Module, nekoliko formi koje služe za prikaz i upis podataka. Veza se uspostavi, sve tabele se otvore prilikom kreiranja Modula, forme funkcionišu normalno, međutim, prilikom dužeg rada, izmena i novih upisa u tabele, dolazi do zagušenja-usporavanja rada nad njima. Za prikaz koristim DBGrid, DbEdit,DBLookupComboBox... Na formi se nalazi DBGrid povezan sa tabelom u Data Modulu preko DataSource1 koji je na istoj formi. Sve komponente za prikaz podataka su povezane sa tabelama na isti taki način.
Tabele imaju Lookup polja, možda je i to neki uzrok, al ne znam. Dal treba da se oslobađa neka memorija posle izvesnih operacija, ili da se refreshuju tabele povremeno, il...
Operacije su standardne, insert, delete, Edit direktno nad ADO tabelom.





Nikad izvini!
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Usporavanje rada programa sa Access bazom08.12.2011. u 20:57 - pre 148 meseci
> Veza se uspostavi, sve tabele se otvore prilikom kreiranja Modula, forme funkcionišu normalno, međutim, prilikom dužeg rada, izmena i novih upisa u tabele, dolazi
> do zagušenja-usporavanja rada nad njima. Za prikaz koristim DBGrid, DbEdit,DBLookupComboBox... Na formi se nalazi DBGrid povezan sa tabelom u Data
> Modulu preko DataSource1 koji je na istoj formi. Sve komponente za prikaz podataka su povezane sa tabelama na isti taki način.

Da nisu tabele sa kojima radis velike? Posmatraj zauzeće memorije/procesora tokom rada, da li raste? Da li se oslobađa ako izađeš iz te forme odnosno zatvoriš neke od tabela.
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.adsl.eunet.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom08.12.2011. u 21:19 - pre 148 meseci
Tabele su jako male, tek sam počeo sa unošenjem podataka.

Imam tabele Gradovi, Partneri, Magacini, Potvrde itd.
Tabela Potvrde sadrži standardna polja(String,Integer...) i lookup polje iz tabele Partneri i Magacini, a tabele Partneri i Magacini isto tako lookup polje iz tabele Gradovi.
Zauzeće ne opada, samo raste. Tabele se otvore pri startovanju programa i zatvore prilikom izlaska iz programa tako da su stalno otvorene tokom rada, da tu negde ne grešim.

Nikad izvini!
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 13:10 - pre 148 meseci
Dal je pametno na svaku formu da postavim još ADO tabela, mislim da će tako ubrzati radnju, samo mi je to mnogo posla, jer moram ubacivati i tabele iz kojih koristim podatke zardi prikaza. Čemu onda ti moduli, il ja ne radim nešto dobro, pojma nemam, al znam da treba nešta da riješim.

Nikad izvini!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.3gnet.mts.telekom.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 13:28 - pre 148 meseci
Ni 10 ni 50 tabela nije mnogo. Problem je verovatno u kodu.

Da li imaš neki Refresh() ili nešto slično, što si programski dodao? U kom trenutku konkretno se problem manifestuje i kako se manifestuje? Dugo se čeka na upis/izmenu/brisanje nakon klika? Sporo se skroluje?

 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 13:32 - pre 148 meseci
Baš to, u kodovima imam Requery() posle svakog upisa ili izmene, to bi trebalo da zatvori, otvori i osveži tabelu, možda je i u tome džidža. Sve sporije zatvara formu za novi unos ili izmenu, skrolovanje kroz DBGrid se usporava nakon neke operacije.
Nikad izvini!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.3gnet.mts.telekom.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 13:37 - pre 148 meseci
Izbaci.

Ako je potrebno osvežavanje, a često nije potrebno, probaj Close/Open. Postoji tu još nekih detalja, tipa, imaš li TADOConnection i da li sve tabele ukazuju na taj objekat?
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 13:48 - pre 148 meseci
Skinuo sam Requery(), al opet isti problem.

Koristim dve TADOConnection, neke tabele koriste jednu a neke drugu konekciju, neke tabele vezane za jednu konekciju koriste pomoću lookup polja podatke iz druge tabele vezane za drugu konekciju. To lepo radi kad se startuje, al posle...

Nikad izvini!
Prikačeni fajlovi
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 14:39 - pre 148 meseci
Dal je to pogrešan metod rada sa tabelama?
Nikad izvini!
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 15:34 - pre 148 meseci
Uspeo sam malo ubrzati, DataSource, koje se nalaze na formama, OnClose DataSource.DataSet:=nil, malo ubrzava rad.
Nikad izvini!
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.adsl.eunet.rs.



+4 Profil

icon Re: Usporavanje rada programa sa Access bazom09.12.2011. u 19:39 - pre 148 meseci
Rešen problem,

dodao sam u DataModule na svaku tabelu DataSource, lookup polja u tabelama podesio LookupCash=true, komponente za prikaz podataka na formama povezao sa odgovarajućim DataSource-om, i šljaka ko ludo.

Forme se kreiraju na način:
EvMagacina:=TEvMagacina.Create(Self);
EvMagacina.ShowModal;
EvMagacina.FreeOnRelease
E sad, ranije su bile DataSource na formi, i posle zatvaranja forme, verovatno se tabele nisu oslobađale tih veza, pa je zbog toga nastajalo gušenje tabela, svako kreiranje nove forme pravilo je još jednu vezu sa tabelom i time je sve više gušilo, barem ja mislim da je zbog toga.

U svakom slučaju, hvala na savetima.


Nikad izvini!
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: Usporavanje rada programa sa Access bazom10.12.2011. u 08:16 - pre 148 meseci
Prvo, nisu ti potrebne dve konekcije. Probaj samo sa jednom.

Drugo, sve komponente vezane za podatke (ADOConnection, ADOTable, DataSource, ...) drži isključivo na DataModule. Nije neophodno da DataSource-ove držiš na formama.

Treće, lookup-ove pravi unutar TDBLookupComboBox (ili šta već koristiš da bi prikazao/birao vezane podatke). Pravljenje lookup-ova na samim tabelama može da usporava rad ako se nepravilno podesi i ako ih ima previše. Po nekad je bolje napraviti adekvatan SQL query koji vraća i vezane podatke ako se isti koriste samo za prikaz.

Četvrto, ako ne moraš, nemoj u startu otvarati sve tabele. Otvori samo one koje koristiš u datom trenutku. Ne bi trebalo da smeta i ako imaš 50 otvorenih tabela, ali u određenim slučajevima to može da uspori čitavu aplikaciju.

Peto, izbaci refresheve bilo kog tipa. Close/Open obično rešava stvar, ali ume da bude skupa operacija. Bolje je da staviš dugme kojim korisnik može eksplicitno da izvrši osvežavanje tabele.

Šesto, šta dog da ti kažu drugi i šta god pročitao po netu, Access nije dobra baza podataka, koliko god imala "dobre" karakteristike. Može da izgura puno podataka, ali nije baš za višekorisnički rad. Ako hoćeš pravu bazu podataka, bolje uzmi MS SQL Server Express jer je besplatan a u stvari je pravi DB server. Alternativa je takođe Firebird koji je open-source i lepo je podržan u novijim verzijama Delphi-ja preko dbExpress-a.

Sedmo, ako možeš pređi ne neku noviju i jaču verziju Delphi-ja. To što sada koristiš je poprilično ograničeno i takođe može da ti bude usko grlo.

Nadam se da će ti ovi saveti pomoći
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Usporavanje rada programa sa Access bazom

[ Pregleda: 2145 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.