Kontrolki DataAccess+zapytanie typu JOIN

0

witam

Używam bazy danych Firebird, do łączenia się z tą bazą używam dbExpress. Moje pytanie dotyczy dodawania rekordów do bazy danych za pomocą DBGrid.

Zacznijmy przedstawienie mojego problemu od pokazania prostej struktury bazy danych, mamy dwie tabelki:

Student, w niej kolumny: StudentID, Imie, MiastoID

Miasto, w niej kolumny, MiastoID, Nazwa

a więc tworzymy bazę danych, która trzyma studentów, ich imiona oraz miasto w, którym studiują (proszę
nie zwracać uwagi na struktura bazy, wiem, że można by to spokojnie sprowadzić do 1PN, czy dodać dodatkowe kolumny, ale taka struktura danych została wprowadzona tylko dla przykładowego problemu)

aby wybrać dane stosuje takie zapytanie:
SELECT Imie, Nazwa
FROM Student
JOIN Miasto ON Studet.MiastoID=Miasto.MiastoID;
Takie zapytanie załóżmy zwraca tabelkę:
|Imie |Nazwa |
|Wojtek | Kraków |
|Dominik |Rzeszów |
|Michał |Warszawa |
|Jarek |Wrocław |

To zapytanie wiąże z DBGrid w taki sposób:
DBGrid->DataSource->ClientDataSet->DataSetProvider->SQLQuery->SQLConnection
dane automatycznie pojawiają sie w DBGrid.

Moje pytanie brzmi: Jak zrealizować dodawanie nowych rekordów? Gdyby wszystko było przedstawione w jednej tabelce to wtedy wystarczy wywołać ClientDataSet.Insert i pojawi się nowy rekord w tabelce, ale przecież dodanie rekordu jest niemożliwe, bo skąd delphi ma wiedzieć jaki dac StudentID i jakie MiastoID

Mam nadzieję, że w miarę jasno napisałem o co mi chodzi.

Jednym ze sposobów jest napisanie wszystkiego ręcznie, ale czy nie da się tego zrobić jakoś bardziej automatycznie?

0

nikt nie wie czy może nie jasno się wyraziłem i nie wiecie o co mi chodzi?

1 użytkowników online, w tym zalogowanych: 0, gości: 1