03. august 2008 - 16:22Der 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
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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
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
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.
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 :-)
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.