hvordan styre 2 tabeller i DBNavigator

Tags:    delphi

I database Form Wizard kan man lave en database med 2 tabeller.
Den ene kommer for oven og har nogle almindelige DBEdit felter
Den anden komme for neden (hvis man vælger det) i en Grid.
Den er nogenlunde pæn men kan desværre ikke forandres meget.
Det utrolige ved den er at DBNavigator styre BEGGE tabeller på ENE gang.
Jeg har forsøgt at aflurer dem hvordan de gør men er for ny til at
gennemskue det.
Det er vist noget med at de laver en UNI eller hvad det hedder ekstra
og lægger Tabel1 og tabel2 på den men der er også en
VAR
(etellerandet)
som jeg ikke ved hvad er.
Er der nogle der ved hvordan man/jeg får DBNavigator til at styre 2 tabeller på samme tid ?
Det der med Master og Client har jeg lidt styr på så det gør det ikke alene.


tarsankode





3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Er der nogle der ved hvordan man/jeg får DBNavigator til at styre 2 tabeller på samme tid ?
Det der med Master og Client har jeg lidt styr på så det gør det ikke alene.


Du styrer ikke to tabeller som sådan. Du styrer master tabellen, og derigennem detail tabellen.

For at opstille et eksempel som bruger BDE komponenter.

Du har to tabeller (de er meget simple for at illustrerer).

MASTER (Kunde database)
KundeID
KundeNavn
KundeTelefon

DETAIL (Ordre database)
OrdreID
KundeID
OrdreNavn
OrdreMaengde

Så sætter du en TDateBase, to TTable, to TDataSource, to TDataGrid og en TDBNavigator ind på formen.

Databasen skal først sættes op. Det er ikke så vigtigt her, jeg tror du ved hvordan det gøres.
Table1.Table sættes til MASTER.
DataSource1.DataSet sættes til Table1.
DataGrid1.DataSource sættes til DataSource1.

Table2.Table sættes til DETAIL
Table2.MasterSource sættes til DataSource1.
Table2.MasterFields sættes. Dette resulterer i en dialog hvor i du angiver hvilke felter der refererer hvilke. (DETAIL.KundeID -> MASTER.KundeID)
DataSource2.DataSet sættes til Table2.
DataGrid2.DataSource sættes til DataSource2.

DBNavigator.DataSource sættes til DataSource1.

Det er vist det. Så har du en master/detail tabel som du styre med en dbnavigator.

---
Thomas Due
tdue@mail.dk



Er der nogle der ved hvordan man/jeg får DBNavigator til at styre 2 tabeller på samme tid ?
Det der med Master og Client har jeg lidt styr på så det gør det ikke alene.


Du styrer ikke to tabeller som sådan. Du styrer master tabellen, og derigennem detail tabellen.

For at opstille et eksempel som bruger BDE komponenter.

Du har to tabeller (de er meget simple for at illustrerer).

MASTER (Kunde database)
KundeID
KundeNavn
KundeTelefon

DETAIL (Ordre database)
OrdreID
KundeID
OrdreNavn
OrdreMaengde

Så sætter du en TDateBase, to TTable, to TDataSource, to TDataGrid og en TDBNavigator ind på formen.

Databasen skal først sættes op. Det er ikke så vigtigt her, jeg tror du ved hvordan det gøres.
Table1.Table sættes til MASTER.
DataSource1.DataSet sættes til Table1.
DataGrid1.DataSource sættes til DataSource1.

Table2.Table sættes til DETAIL
Table2.MasterSource sættes til DataSource1.
Table2.MasterFields sættes. Dette resulterer i en dialog hvor i du angiver hvilke felter der refererer hvilke. (DETAIL.KundeID -> MASTER.KundeID)
DataSource2.DataSet sættes til Table2.
DataGrid2.DataSource sættes til DataSource2.

DBNavigator.DataSource sættes til DataSource1.

Det er vist det. Så har du en master/detail tabel som du styre med en dbnavigator.

---
Thomas Due
tdue@mail.dk

tarsankode

Det virker tak.
Hvad er det der for noget med at give poin ?
Jeg er helt ny her.
Nu ville det jo være lækkert om jeg kunne lave en
DBLookUpComboBox der kunne vise en dato fra Tabellen.
Jeg har en række der hedder dato i tabel 2.
Men mine forsøg med den er alle løbet ud i sandet.
Enten sletter den det der står eller også kan det ikke ses
eller også kan jeg ikke på klik på en af dem i faldnedlemmen få hele
tabellen (og den anden) til at køre på en gang.
Da jeg programmerede i VB lavede jeg en SQL sætning den kunne
det hele indk. sætte det ind i en ComboBox.
Ved du også hvad men gør ved det ?
VH
tarsankode



Er der nogle der ved hvordan man/jeg får DBNavigator til at styre 2 tabeller på samme tid ?
Det der med Master og Client har jeg lidt styr på så det gør det ikke alene.


Du styrer ikke to tabeller som sådan. Du styrer master tabellen, og derigennem detail tabellen.

For at opstille et eksempel som bruger BDE komponenter.

Du har to tabeller (de er meget simple for at illustrerer).

MASTER (Kunde database)
KundeID
KundeNavn
KundeTelefon

DETAIL (Ordre database)
OrdreID
KundeID
OrdreNavn
OrdreMaengde

Så sætter du en TDateBase, to TTable, to TDataSource, to TDataGrid og en TDBNavigator ind på formen.

Databasen skal først sættes op. Det er ikke så vigtigt her, jeg tror du ved hvordan det gøres.
Table1.Table sættes til MASTER.
DataSource1.DataSet sættes til Table1.
DataGrid1.DataSource sættes til DataSource1.

Table2.Table sættes til DETAIL
Table2.MasterSource sættes til DataSource1.
Table2.MasterFields sættes. Dette resulterer i en dialog hvor i du angiver hvilke felter der refererer hvilke. (DETAIL.KundeID -> MASTER.KundeID)
DataSource2.DataSet sættes til Table2.
DataGrid2.DataSource sættes til DataSource2.

DBNavigator.DataSource sættes til DataSource1.

Det er vist det. Så har du en master/detail tabel som du styre med en dbnavigator.

---
Thomas Due
tdue@mail.dk


Ja GID det var så nemt !
Desværre virker det ikke !
I den omtalte wizars laves der en VAR som giver en ret til at lave noget i samme
tabeller samtidigt.
Uden den og den kan jeg ikke finde ud af virker det IKKE !
Jeg har forsøgt og når jeg kommer til det der er tabel2 opdaterer den ikke og
sletter det som står i de som er tabel 1.
Så desværre.
Nogle der har et bud ?
VH
tarsankode
tarsankode



t