Avatar billede strandgaard Nybegynder
30. juni 2004 - 10:35 Der er 16 kommentarer og
2 løsninger

Forespørgsel der kun udvælge unikke data i tabel

Så er den gal igen....

Jeg vil gerne have en tabel, hvorfra man via en komboboks kan vælge mulighederne. Komboboksens indhold skal komme fra en forespørgsel der linker tilbage til tabellen. Men for at de sammme data ikke kan vælges flere gange, skal forespørgslen kun udtage de unikke data af tabellen.

Et lille hurtigt eks.
Tabel: Frugter: æble, banan, æble, banan, banan, æble
Forespørgsel: Frugter: æble, banan

Ved ikke om det er god programmeringsskik med en sådan opstilling, men meningen er at brugeren skal kunne vælge mellem tidligere svarmuligheder, og er de ikke tilstrækkelige tilføjes en ny, der herefter også bliver tilgængelig som svarmulighed.
Avatar billede ferdinand.k Mester
30. juni 2004 - 10:38 #1
den forespørgesel du bassere din form på, skal starte med SELECT DISTINCT... På den måde får du kun en record med samme indhold... Men bemærk at alle felter i forespørgeselens output skal være helt ens for at blive sorteret...
30. juni 2004 - 10:49 #2
At sætte DISTINCT ind, svarer til at sætte egenskaben "Unikke værdier" = Sand i forespørgslens egenskaber.

En god ide til kombobokse er at give brugeren mulighed for at vælge 'blankt'. Det gøres ved at skrive sin SQL således:

Select Frugter From tblFrugter UNION Select Null From tblFrugter

Det giver et udtræk som ser således ud:
(blank)
banan
æble

NB: der STÅR ikke (blank) - feltet er bare tomt!

PS: Ved brug af UNION behøves ikke at bruge DISTINCT, da UNION automatisk kun tager unikke værdier...
Avatar billede strandgaard Nybegynder
30. juni 2004 - 11:29 #3
Øhh, glemte vist at sige at jeg er ny i faget, så det med SQL osv. er jeg ikke inde i, så i mågerne lige hjælpe mig lidt med at få tingene sat ind det rigtige sted. Jeg laver mine forespørgelser vha. en guide, og retter dem til i designvisningen, men hvor skal jeg skrive SELECT DESTINC/UNION og hvordan får jeg indsat en blank for oven på denne måde, eller hvordan kommer jeg i SQL-mode, hvis det hedder sådan ;-)

Jeg kan ikke helt se om jeg har brug for det blanke felt. Med udgangspunkt i eks. fra før, så skal det være sådan at hvis brugeren skal indtaste noget om appesiner og det ikke står i listen, så skrives det manuelt i formen til tabellen der gemmer alle data, og næste gang en bruger får brug for at taste appelsiner ind, så ligger den i komboboksen via forespørgelsen.
30. juni 2004 - 11:50 #4
Ok, så lad os glemme det med UNION i første omgang.

Når du har lavet en komboboks uden brug af guide, er der en egenskab, som hedder "Rækkekilde". Denne skal indeholde navnet på en tabel eller en forespørgsel eller den skal blot indeholde en SQL-sætning. Det er den sidste løsning, vi arbejder med her.

Du kan skrive SQL'en direkte i egenskaben eller du kan klikke på knappen med 3 små prikker til højre, når du står i egenskaben. Denne åbner forespørgselsgeneratoren.

Herinde kan du designe din forespørgsel som du vil og du kan tilmed prøvkøre den vha udråbstegnet på værktøjslinien.

Vi kan også gå i menuen Vis->SQL visning for at se SQL'en som er blevet genereret ud fra forespørgselsgeneratoren.

Vi skal arbejde os frem mod en SQL som ser nogenlunde således ud:

Select Distinct Frugter From tblFrugter

Du kan derfor skrive denne direkte i egenskaben eller du kan åbne forespørgselsgeneratoren og vælge tabellen tblFrugter (eller hvad den nu hedder?) og trække feltet Frugter ned. I egenskaberne for hele forespørgslen (dobbeltklik i det grå felt øverst) finder du "Unikke værdier", som sætte til Sand/ja

En lang forklaring, da der er mange muligheder - jeg håber ikke, at du bare blev alt for forvirret - det blev jeg næsten selv ;)
Avatar billede strandgaard Nybegynder
30. juni 2004 - 11:53 #5
Jeg tror jeg er med, afprøver det lige og vender snart tilbage... dog frokost mellem 12 -12.30 <---- vigtigt :-)
Avatar billede strandgaard Nybegynder
30. juni 2004 - 12:38 #6
*****Du kan derfor skrive denne direkte i egenskaben eller du kan åbne forespørgselsgeneratoren og vælge tabellen tblFrugter (eller hvad den nu hedder?) og trække feltet Frugter ned. I egenskaberne for hele forespørgslen (dobbeltklik i det grå felt øverst) finder du "Unikke værdier", som sætte til Sand/ja****

Jeg kan ikke finde det sted hvor jeg skal dobbeltklikke for at kunne vælge "unikke værdier" og sætte sand til ja....
30. juni 2004 - 12:42 #7
Når du er inde i forespørselsgeneratoren, kan du dobbeltklikke på det grå område i øverste del (ved siden af tabellen). Det skulle gerne åbne egenskaberne (hvis de ikke allerede er åbne). I disse egenskaber er der en egenskab, som hedder "Unikke værdier". Sætter du kryds i den, vil der automatisk blive sat DISTINCT ind i den bagvedliggende SQL.
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:05 #8
Så fandt jeg ud af det... 1000 tak for hjælpen.... har lige et lille bispørgsmål, som afspejler at jeg nok ikke har tænkt mig helt om :-)
Hvis der skal flere point til at hjælpe, skal du bare sige til....

Here goes: Jeg er ved at lave en ret stor tabel til at gemme data til udskrivning af rapporter. Rapportskrivningen skal foregår ved at alle data kan findes via kombobokse (forespørgsler til tabellen, som beskrevet ovenfor). Men så længe tabellen er tom, er der jo således ikke noget i komboboksene, men jeg ved allerede nu nogle ting der skal være som valgmuligheder i komboboksene. Er det muligt at lave nogle tabeller der indeholder de kendte data til forespørgelserne, der så senere kan fyldes med hvad brugerne ellers kunne finde på at skrive i den store tabel? Eller er det muligt at lave en forespørgelse til begge ovenstående tabeller, så man derigennem får alle svarmuligheder med? Den sidste mulighed er jeg ikke helt sikker på hvordan vil fungere mht. nøgler, for der skal vel være relation mellem de to tabeller for at kan lave en sådan forespørgelse.
30. juni 2004 - 13:09 #9
hmm, du kan godt lave en tabel, som indeholder én kolonne med dine valgmuligheder.

I egenskaben "Rækkekilde", hvor der nu står en SQL sætning, skal du således lave om.
Hvis den nu hedder f.eks.
Select Distinct Frugter From tblFrugter

Skal du lave den om til:

Select Frugter From tblFrugter UNION Select [felt i ny tabel] From [Ny tabel]

Bemærk at jeg fjernede DISTINCT, da den jo ikke var nødvendig i en UNION :o)
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:19 #10
Hmm, den melder en fejl når jeg prøver det...

SELECT Tbl_Ansvarlige.Ansvarlige
FROM Tbl_Ansvarlige
UNION
SELECT Fore_Ansvarlig kemiker.Ansvarlige
FROM Fore_Ansvarlig kemiker
30. juni 2004 - 13:22 #11
Jeg tror, at de er fordi du har mellemrum i tabelnavnet (fy :o)

Prøv med denne:
SELECT Ansvarlige
FROM Tbl_Ansvarlige
UNION
SELECT Ansvarlige
FROM [Fore_Ansvarlig kemiker]
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:25 #12
Jamen det er jo helt kanon det her, du har været til super hjælp, giver lige ferdinand en lille slat point, og så får du resten + lidt ekstra for den gode og vedholdende hjælp!!!
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:26 #13
øhh, kan jeg ikke give dig ekstra?
30. juni 2004 - 13:27 #14
jo, du kan klikke på point-tallet, hvorved du får muligheden.

Jeg takker ydmygt :o)
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:30 #15
det mig der takker, hvor skulle jeg trykke...he he bliver ved med at være spørge Jørgen...
30. juni 2004 - 13:31 #16
hmm, man plejer vist at kunne trykke på de 30 oppe foroven...?
30. juni 2004 - 13:34 #17
men hvis det ikke lykkedes, så gør det ikke så meget :o)
Avatar billede strandgaard Nybegynder
30. juni 2004 - 13:34 #18
Har lige oprettet et nyt spg (point til thomasjepsen), hvor du kan smide et svar, så får du lige lidt oven i hatten, kan ikke få det andet til at virke
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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