Avatar billede skindbeni Nybegynder
03. august 2008 - 16:22 Der er 7 kommentarer og
1 løsning

Vise værdi fra anden tabel i DBEdit's

Hej.

Jeg har problemer med at få kædet to tabeller sammen og vist nogle data.

Mine tabeller:

Tabel1
ID (pk), integer
Tekst, string
Dato, Dato
Felt1 (fk), integer
Felt2 (fk), integer

tabel 2
ID (pk), integer
beskrivelse, string

Felt1 og felt2 er foreign key til feltet ID i tabel 2, således, at der i tabel 2 er oprettet en række beskrivelser med tilhørende ID-numre og når der så vælges et nummer i felt1 eller felt2, så skal det svare overens med beskrivelsen i tabel 2

Jeg har på min form oprettet en query, datasetprovider, clientdataset, datasource, DBEdit og 2 DBEdit.

Jeg har forbundet querien til min database og de øvrige databasekomponenter med hinanden. Ingen problem.

Jeg har i min query's SQL property følgende SQL:

SELECT tabel1.id, tabel1.tekst, tabel1.dato, tabel1.felt1, tabel1.felt2, a.beskrivelse, b.beskrivelse
FROM tabel1,tabel2 a,tabel2 b
WHERE tabel1.felt1=a.id AND tabel1.felt2=b.id

Denne SQL genererer de rigtige felter i min clientdataset.

Felterne ID, Tekst, Dato, felt1, felt2 vises i DBGrid'en

I mine to DBEdit vil jeg så gerne have vist felterne a.beskrivelse og b.beskrivelse som har en værdi fra tabel2 afhængig af, hvad der er indtastet i grid'ens Felt1 og felt2.

Ud fra denne lange smøre jeg har skrevet, kan i så finde fejl eller faldgruber.

Mit problem er nemlig, at mine to DBEdits ingen værdi har uanset hvad der indtastes i grid'ens felt1 og felt2
Avatar billede martinlind Nybegynder
03. august 2008 - 16:45 #1
ved ikke om det er ren kopi, men der er en lille fejl, dette vil kæde dine tabeler sammen og vise det hele, er ikke helt sikker på jeg forstår din where-clause :

SELECT a.id, a.tekst, a.dato, a.felt1, a.felt2, a.beskrivelse, b.beskrivelse
FROM tabel1 a,tabel2 b
WHERE a.id = b.id
Avatar billede skindbeni Nybegynder
03. august 2008 - 17:04 #2
Hej Martin.

Den nævnte SQL kode er kode, som min partner har fået hjælp til, så den burde være god nok.

Set ud fra din SQL tror jeg, at vi misforstår hinanden.

tabel1 er en tabel og a samt b er to instanser af den samme tabel.

I tabel1 er der bl.a. to felter, som jeg her har benævnt felt1 og felt2.

Tabel 2 består af to felter. ID og Beskrivelse.

I min grid skal jeg så have vist felterne fra tabel1.
Derudover skal jeg i mine to DBEdits have vist den tilhørende værdi fra tabel2.

DBEdit1 = værdi fra feltet Beskrivelse fra tabel2, hvor tabel2.ID er lig med tabel1.felt1
DBEdit2 = værdi fra feltet Beskrivelse fra tabel2, hvor tabel2.ID er lig med tabel1.felt2
Avatar billede martinlind Nybegynder
03. august 2008 - 17:21 #3
Ok :-)

Har du prøvet bare at vise hele dit sql i grid'en, funker det ?

Husk at dit udtræk sikkert er read-only, så du kan ikke taste noget ind i din grid "on the fly" næsten alle sql udtræk bliver read-only.
Avatar billede skindbeni Nybegynder
03. august 2008 - 18:00 #4
Ja, det fungerer heller ikke, når det hele er i min grid. Men jeg har haft noget næsten tilsvarende til at fungere før, så det irriterer mig lidt :o)

Fordelen ved clientdataset'et er faktisk, at man kan ændre SQL-udtrækket fra read-only til at kunne arbejde med det og så gemme tilbage i databsen til sidst.
Avatar billede martinlind Nybegynder
03. august 2008 - 18:16 #5
Ja, med lidt "kno-fedt" og afhængig af den db, du bruger :-)

Men hvis det ikke virker i din grid.... så virker det ikke, jeg ville hvis jeg var dig, "fedte" sql'en til i en SQL-editor for at være sikker på at mit result sql er det jeg forventer, det er nemere og hurtigere end at gå gennem delphi :-)
Avatar billede martinlind Nybegynder
03. august 2008 - 18:17 #6
Har ikke lige nogle gode idér
Avatar billede michaelthomsendk Nybegynder
06. september 2008 - 15:29 #7
Tip:
Du får det lettere hvis du ikke har felter med ens navne.
Ret a.beskrivelse til a.beskrivelse AS beskrivelse1 og det samme med b.

PS.
Din SQL virker kun hvis både Felt1 og Felt2 har en lovlig værdi.
Avatar billede skindbeni Nybegynder
12. august 2009 - 22:13 #8
Beklager forsinkelsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester