CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - aktualizowanie wieszy w DBGrid Builder
Strona 1 z 2

aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: wtorek, 15 marca 2011, 20:59
przez butchermw
Witam,

Mam pytanie odnośnie możliwości aktualizowania pojedynczych wierszy pobranych z bazy MySQL za pośrednictwem komponentu ADODataSet, czy jest jakiś sposób aby aktualizacja pobranych wierszy z serwera MySQL odbywała się na zasadzie pobrania tylko pojedynczego wiersza a nie całej tabeli?? Chciałbym przyśpieszyć aktualizowanie nowych wpisów z bazy do DBGrida, a z tego co zauważyłem to przy poleceniu ADODataSet3->Refresh(); pobieranie około 3000 rekordów traw 2-3sek.(baza do testów jest na lokalhost).


PS
Piszę program bazodanowy który będzie działał na kilku stanowiskach korzystających z jednej bazy danych umieszczonej na serwerze.

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: środa, 16 marca 2011, 12:41
przez Corvis
Napisz mi jak zestawiłeś połączenia od DataSeta do DbGrida :-)

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: środa, 16 marca 2011, 14:27
przez butchermw
Wysyłam zapytanie z ADODataSet1 do bazy danych a następnie po przez DataSource1 dane przekazywane są do DBGrida. A jeśli chodzi o konfigurację poszczególnych komponentów to wyglądają następująco:

PS.
zapytanie jest wysyłane bezpośrednio z kodu

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: czwartek, 17 marca 2011, 14:58
przez Corvis
Zrób to tak:


TADODataSet -> TDataSetProvider -> TClientDataSet -> TDataSource -> TDBGrid


Providera Å‚Ä…czysz do DataSeta poprzez ProviderName


W AdoDataSet piszesz zapytanie tylko !!!!!!!
pobranie danych robisz poprzez ClientDataSet->Open();
odświeżane tak samo ClientDataSet->Refresh();

Sprawdź czy coś pomogło.

Zastanawia mnie jeszcze czemu 3000 rekordów pobiera 2 sek. Wklej te zapytanie SQL tutaj.

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: czwartek, 17 marca 2011, 19:16
przez butchermw
Jak na razie mam problem z połączeniem tych komponentów.
ADODataSet połączam do DataSetProvider, natomiast w ClientDataSet (ProviderName ustawiam DataSetProvider) i niestety jak chce dać Active to wyrzuca mi błąd:


"Error loading MIDAS.dll"



Jeżeli chodzi o zapytanie wysyłane do bazy to wygląda następująco:

KOD mysql:   •  UKRYJ  •
"select LP, NR_ZAMOWIENIA, ODBIORCA, DATA_1, STAN_ZAM from baza_zamowien"


Poniżej wklejam konfigurację DataSetProvider i ClientDataSet

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: piÄ…tek, 18 marca 2011, 11:03
przez Corvis
Wrzuć tą bibliotekę do System32 albo tam gdzie jest plik exe twojego programu

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: piÄ…tek, 18 marca 2011, 13:25
przez butchermw
Nic z tego, dalej pokazuje ten sam błąd.
A jest możliwość odświeżania pojedynczych wierszy w dbGrid??

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: piÄ…tek, 18 marca 2011, 14:15
przez Cyfrowy Baron
Czy po skopiowaniu biblioteki do katalogu c:\windows\system32 zarejestrowałeś ją? Jeżeli nie:
Kliknij prawym przyciskiem myszy na bibliotece i wybierz polecenie Register, lub zarejestruj z linii komend:

KOD text:   •  UKRYJ  •
REGSVR32 c:\Windows\System32\midas.dll /s


Po prawidłowym zarejestrowaniu pojawi się komunikat:

Obrazek

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: piÄ…tek, 18 marca 2011, 14:39
przez Corvis
butchermw napisał(a):Nic z tego, dalej pokazuje ten sam błąd.
A jest możliwość odświeżania pojedynczych wierszy w dbGrid??


Jak wyciągasz zapytaniem SQL tylko jeden to jest, jak klika to nie ma :-) Musisz to zrobić tak jak ci piszę wtedy dalej będziemy gadać. No ja dokładnie zrobiłem u siebie kiedyś jak baron napisał i działa wszystko.

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: piÄ…tek, 18 marca 2011, 15:45
przez butchermw
Teraz działa, i przy okazji sprawdzałem odświeżanie bazy po przez timer i działa to bez problemu, tylko mam jeszcze jedno pytanie czy można to w ten sposób zostawić? i czy przy większej ilości wpisów nie będzie zwalniał program?

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: niedziela, 20 marca 2011, 16:58
przez Corvis
butchermw napisał(a): ... sprawdzałem odświeżanie bazy po przez timer i działa to bez problemu


tzn ?? bo nie rozumiem, jak to przez TTimer ????? I co można w ten sposób zostawić ???

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: poniedziałek, 21 marca 2011, 09:35
przez butchermw
Corvis napisał(a):tzn ?? bo nie rozumiem, jak to przez TTimer ????? I co można w ten sposób zostawić ???


do Timera dodałem kod:
KOD cpp:   •  UKRYJ  •
ClientDataSet1->Refresh();
i co 1sek mam odświeżanie danych w DBGrid, chyba że jest inny sposób tak by pojawiały się nowe jak i zmodyfikowane wpisy?

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: poniedziałek, 21 marca 2011, 10:01
przez Corvis
Pytanie podstawowe jest takie: Czy musi być to automat ?? czy użytkownik sam może sobie to odświeżyć ?? Z tego twojego rozwiązania wnioskuję, że nowe dane w bazie masz bardzo często ???

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: poniedziałek, 21 marca 2011, 10:19
przez butchermw
Najlepszym rozwiązaniem była by automatyczna aktualizacja bo rekordy dość często zostają aktualizowane i na dodatek dodawane nowe wpisy. Myślałem o dodaniu nowej tabeli gdzie zostały by podczas aktualizacji i dodawania rekordu dodawane informacje: nr. wpisu, tabela, użytkownik i na tej podstawie aplikacja mogła by aktualizować cała bazę lub tylko jeden wiersz(jeśli była by taka możliwość)

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postNapisane: poniedziałek, 21 marca 2011, 10:27
przez Cyfrowy Baron
Chyba nie zrozumiałeś o co pyta Corvis. Chodzi o to, czy te dane w tabeli mają być wyświetlane na bieżąco, czy też mogą być pobierane dopiero wtedy, gdy użytkownik ich potrzebuje. To tak jak np. baza danych na tym forum. Użytkownik nie widzi czy zostały dodane nowe posty dopóki nie wymusi odświeżenia okna przeglądarki, lub nie wejdzie na forum ponownie. Czyli odświeżanie nie odbywa się automatycznie, lecz dopiero wtedy, gdyż użytkownik tego zażąda. Inaczej ma się sprawa z mChat'em na dole forum, tam informacja są automatycznie odświeżane co 30 sekund.