FIREBIRD 2 tabele w bazie danych

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.

FIREBIRD 2 tabele w bazie danych

Nowy postprzez rafalskraba » czwartek, 19 maja 2011, 21:21

Witam forumowiczów.

Stworzyłem w tabele jedna tabela KLIENCI zawiera następujące pola ID,NKL,NIP oraz drugą tabelę HORD która składa się z pól ID,NAME,CENA.
Jak w firebirdzie połączyć obie tabele aby wyświetlić np wszystkie zamówienia dla danego klienta. Dane z obydwu tablic bedą prezentowane
przy pomocy komponentu DBGrid.

Proszę o pomoc.

Pozdrawiam

Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez Corvis » piątek, 20 maja 2011, 09:23

Ale masz problem z budową zapytania SQL ??? Czyli nie wiesz jak zaprojektować bazę ?? Bo nie bardzo kumam.
"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 XPFirefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez rafalskraba » piątek, 20 maja 2011, 15:19

Zrobiłem zapytanie SQL łączące 2 tablice, skorzystałem przy tym z polecenia SQL JOIN, wszystko działa poprawnie w kontrolce DBGrid dane wyświetlają się poprawnie.

Odnośnie projektowania bazy danych utworzyłem dwie tabele jedna tabela to klienci gdzie będą wpisywane informacje dotyczące klientów, druga tabela zamówienia gdzie są wpisywane
informacje odnośnie zamówień klientów.
Moje pytanie jest następujące czy w drugiej tablicy można powielić np ID klienta aby jednoznacznie wyświetlić wszystkie zamówienia odnośnie klienta czy będzie to nadmiar szczęscia.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows XPFirefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez Corvis » piątek, 20 maja 2011, 15:35

Czyli Masz DbGrida gdzie sa Klienci i na dole chcesz miec drugiego z zamówieniami klienta ??

Chcesz, żeby to działało tak:

Wybierasz klienta i jeżeli klient ma zamówienia w 2 dbgridzie wyświetlą się zamówienia tylko tego klienta ??
"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 XPFirefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez rafalskraba » piątek, 20 maja 2011, 22:11

Wiesz co lepszym rozwiazaniem było by wybieranie klienta np z listy rozwijalnej StringList a w DBGridzie wyświetlane były by informacje
z połaczonych tabel bazy danych czyli klient->zamówienie->cena itp.

Co sądzisz o mojej propozycji.
Postaram sie jutro przesłać PrintScreena z formatki.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez Corvis » sobota, 21 maja 2011, 10:52

Wyślij screena tej formatki. Ale to jest proste do zrobienia :-) Musisz tylko znać ID Klienta i po wybraniu klienta wywołać zapytanie z bazy np.

call pPokazZamowieniaKlienta(12); <- wyświetlenie zamówień za pomocą procedury składowanej dla klienta o ID = 12.

Napisz jeszcze jakich komponentów używasz tak jak jest w regulaminie działu.
"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: FIREBIRD 2 tabele w bazie danych

Nowy postprzez rafalskraba » czwartek, 26 maja 2011, 22:43

Witaj Corvis
Baza danych Firebird, połączenie SQL Connection Zestawienie połączenia SimpleDataSet->DataSource

Połączenie 2 tablic bazy danych oraz wyświetlenie dla tego samego numeru klienta rekordów z pierwszej i drugiej tablicy:

Kod: Zaznacz cały
select HCLI.CLID, CLNAME, CLSTR, CLZIP, CLCIT, CLCOU  FROM HCLI JOIN LORD ON HCLI.CLID=LORD.ID


Poniżej przedstawiam screny z projektowanej bazy danych

Jak skonfigurować bazę danych aby numer klienta był automatycznie wprowadzany do odpowiedniej tablicy gdy go wprowadzę np w pierwszej tablicy.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez Corvis » niedziela, 29 maja 2011, 18:17

No dobra to tak:

1. Tworzysz dla klientów:

Kod: Zaznacz cały
SqlDataSet - > DataSetProvider - > ClientDataSet - > DataSource - > DbGrid


Łączysz jak leci jedynie gdzie możesz mieć problem to w ClientDataSet wybierasz tam ProviderName ( UWAGA! Przy zmianie nazwy DataSetProvidera nie zostanie ona automatycznie zmieniona w ClientDataSecie )

Wbijasz zapytanie SQL do SqlDataSet. Robiąc -> ClientDataSet->Active = true; Zobaczysz rezultat zapytania.

2. Teraz twrzorzysz taki sam układ komponentów dla szczegółu klienta

Kod: Zaznacz cały
SqlDataSet -> DataSetProvider -> ClientDataSet -> DataSource -> DbGrid


3. I teraz aby po przewinięciu klienta zobaczyć szczegóły np. Zamówienia musisz w 1 zestawie komponentów odpowiadającym za klientów w ClientDataSet użyć metody OnAfterScroll.

A W niej wywołać zapytanie które wyświetli szczegóły np. (UWAGA !! PSEUDO KOD)

KOD cpp:     UKRYJ  
void __fastcall TFrmMain::ClientDataSet1AfterScroll(TDataSet *DataSet)
{
      String Sql = "Select *from Szczegoly where IdKlienta=" + String(ClientDataSetKlienci->FieldByName("Id")->AsInteger);
      SqlDataSetSzczegoly->CommandText = Sql;
      ClientDataSetSzczegoly->Active = true;
}


Wszystko będzie śmiagać.

Zaznaczam, że napisałem ci to bardzo ogólnie. Sposób zarządzania zapytaniami SQL zostawiam tobie. Osobiście polecam używanie procedur składowanych.

Pozdrawiam,

daj znać jak poszło.
"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: FIREBIRD 2 tabele w bazie danych

Nowy postprzez rafalskraba » poniedziałek, 30 maja 2011, 21:34

Witaj Corvis zrobiłem tak jak opisałeś tzn. dodałem SQLDataSet, DataSetProvider, ClientDataSet, DataSource.

Jest mały problem, DataSetProvider we właściwościach DataSet być ustawiony tylko na SimpleDataSet1, ClientDataSet1, SQLDataSet1.
Przy ustawieniu DataSetProvider na SimpleDataSet1 pobierane jest zapytanie SQL z w/w DataSet.

Mozę ja mam coś poknocone z tą bazą danych kuknij na DataModule.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: FIREBIRD 2 tabele w bazie danych

Nowy postprzez Corvis » poniedziałek, 30 maja 2011, 23:53

Nie bardzo kumam :P dlatego napisze po swojemu:

SqlDataSetKlient - > DataSetProviderKlient - > ClientDataSetKlient - > DataSourceKlient

SqlDataSetSzczegoly - > DataSetProviderSzczegoly - > ClientDataSetSzczegoly - > DataSourceSzczegoly.

Tak masz mieć to zestawione

Co to jest SimpleDataSet po co tego używasz wogóle ??
"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


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

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