CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - aktualizowanie wieszy w DBGrid Builder

aktualizowanie wieszy w DBGrid Builder

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » wtorek, 15 marca 2011, 20:59

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.
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows 7Firefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » środa, 16 marca 2011, 12:41

Napisz mi jak zestawiłeś połączenia od DataSeta do DbGrida :-)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » środa, 16 marca 2011, 14:27

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
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » czwartek, 17 marca 2011, 14:58

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.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » czwartek, 17 marca 2011, 19:16

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
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » piątek, 18 marca 2011, 11:03

Wrzuć tą bibliotekę do System32 albo tam gdzie jest plik exe twojego programu
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » piątek, 18 marca 2011, 13:25

Nic z tego, dalej pokazuje ten sam błąd.
A jest możliwość odświeżania pojedynczych wierszy w dbGrid??
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Cyfrowy Baron » piątek, 18 marca 2011, 14:15

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
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » piątek, 18 marca 2011, 14:39

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.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » piątek, 18 marca 2011, 15:45

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?
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » niedziela, 20 marca 2011, 16:58

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ć ???
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » poniedziałek, 21 marca 2011, 09:35

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?
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Corvis » poniedziałek, 21 marca 2011, 10:01

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 ???
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez butchermw » poniedziałek, 21 marca 2011, 10:19

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ść)
Avatar użytkownika
butchermw
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): niedziela, 26 grudnia 2010, 00:39
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: WinXP/Win7
Kompilator: Builder6
Builder2010
Gadu Gadu: 0
    Windows XPFirefox

Re: aktualizowanie wieszy w DBGrid Builder

Nowy postprzez Cyfrowy Baron » poniedziałek, 21 marca 2011, 10:27

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.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości

cron