Avatar billede bi-ju Nybegynder
12. september 2010 - 09:49 Der er 18 kommentarer og
1 løsning

Tøm dit barskab

Hej med jer.

Jeg er som sagt ved at lave en database med tøm dit barskab.

Den er næsten færdig.
Jeg kan udvælge diverse ingredienser og der kommer drinks frem.
Jeg har nu kun 2 problemer.

eks vælger jeg vodka som den eneste ingrediens kommer alle drinks frem der indeholder vodka selv om der er andre ingredienser i . det vil jeg ikke have :-)

min opbygning er

1 tabel med ingredienser + checkbox (ja/nej)
1 tabel med drinks + opskrift
1 tabel der mixer det sammen
1 forespørgelse på ingredienser med criteria på checkbox=true
SQL´en der sådan ud:

SELECT Drink.DrinkNavn, Ingrediens.Checkbox
FROM Ingrediens RIGHT JOIN (Drink INNER JOIN DrinkIngrediens ON Drink.DID = DrinkIngrediens.DID) ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Ingrediens.Checkbox)=True));

og 1 'Form multiple items' med ingredienser og checkbox

2. problem er at når jeg trykker på knappen søg drinks vil jeg gerne have vist det sådan i en raport eller lign.

Eks.

Black Russian :
vodka
kahlua

Håber der er en løsning .
Jeg mailer gerne filen hvis det kan hjælpe.
Det hele er lavet i access 2007
Avatar billede terry Ekspert
12. september 2010 - 10:45 #1
ekspertenATsanthell.dk
AT = @
Avatar billede Selas Nybegynder
12. september 2010 - 11:33 #2
Tip: Hvis du uploader din fil på peecee (f.eks) slipper i for det email-show.  ;)
http://peecee.dk/
Avatar billede terry Ekspert
12. september 2010 - 11:38 #3
email works just fine :o)
Avatar billede bi-ju Nybegynder
12. september 2010 - 11:40 #4
Avatar billede terry Ekspert
12. september 2010 - 11:46 #5
I'll let Selas take over then
Avatar billede Selas Nybegynder
12. september 2010 - 11:56 #6
#5 why?
Avatar billede Selas Nybegynder
12. september 2010 - 15:41 #7
#5 jeg ved ikke noget om access så hvorfor vil du ikke hjælpe? Du har jo fået din email som du bad om.
Avatar billede anlu Nybegynder
12. september 2010 - 16:24 #8
Hej,

Jeg vil mene at denne query giver dig listen over de drinks du vil have:

SELECT Drink.DID, Drink.DrinkNavn
FROM Drink
WHERE Drink.DID not in
(
SELECT DrinkIngrediens.DID
FROM Ingrediens INNER JOIN DrinkIngrediens ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Ingrediens.Checkbox)=False))
GROUP BY DrinkIngrediens.DID;
)

Når du har fået lavet den query du søger (fx ovenstående) kan du designe en rapport baseret på din query, så du kan få en pænere præsentation af resultatet.
Avatar billede bi-ju Nybegynder
12. september 2010 - 16:37 #9
Det der fungere super godt.
Man kan vel godt udskrive både drinks navn og opskrift i rapporten.
Avatar billede anlu Nybegynder
12. september 2010 - 17:13 #10
Hvis du vil have opskriften med i rapporten, skal du også have ingredienserne med i den query du baserer rapporten på, fx:

SELECT Drink.DID, Drink.DrinkNavn, Ingrediens.Navn
FROM Ingrediens INNER JOIN (Drink INNER JOIN DrinkIngrediens ON Drink.DID = DrinkIngrediens.DID) ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Drink.DID) Not In

(SELECT DrinkIngrediens.DID
FROM Ingrediens INNER JOIN DrinkIngrediens ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Ingrediens.Checkbox)=False))
GROUP BY DrinkIngrediens.DID;
)));

Jeg er ikke nogen haj til opsætning af rapporter, men mener du kan lave noget gruppering, så du i din visning ikke gentager drink-navnet for hver ingrediens.

P.s. Hvis det skal være rigtig smart, burde du så ikke have noget enhed på i din DrinkIngrediens-tabel, der fortæller hvor meget af den pågældende ingrediens der skal i? :o)
Avatar billede terry Ekspert
12. september 2010 - 17:29 #11
sorry about the misunderstanding here, I was assuming that  that Selas wanted to help also, and as I was going  out that was fine by me.  And now I'm back.

I  also see that you have an answer to the first part of your question.  To get the " Ingrediens" just make a query where you include the query anlu gave and then make a join on  the other two tables to get the ingredients


SELECT Drink.DID, Drink.DrinkNavn, Ingrediens.Navn
FROM Ingrediens INNER JOIN (Drink INNER JOIN DrinkIngrediens ON Drink.DID = DrinkIngrediens.DID) ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Drink.DID) Not In (SELECT DrinkIngrediens.DID
FROM Ingrediens INNER JOIN DrinkIngrediens ON Ingrediens.IID = DrinkIngrediens.IID
WHERE (((Ingrediens.Checkbox)=False))
GROUP BY DrinkIngrediens.DID;
)));

You can now make a report using this.
Avatar billede terry Ekspert
12. september 2010 - 17:32 #12
Sorry, didnt see your comment there anlu :o)
Avatar billede bi-ju Nybegynder
12. september 2010 - 17:53 #13
Jeg takker og bukker for al den hjælp tror vi lukker den nu
Avatar billede terry Ekspert
12. september 2010 - 17:59 #14
I think you should have given the points to anlu :o)
Avatar billede bi-ju Nybegynder
12. september 2010 - 19:51 #15
me to but i dont know how im´new in here
i will give anlu point but how ??
Avatar billede terry Ekspert
12. september 2010 - 19:58 #16
You'll now have to place another question and ask anlu to place an answer, not a comment. Then you accept his answer.
Avatar billede bi-ju Nybegynder
12. september 2010 - 20:15 #17
ofcause thats the way to do it ill do that.
But how do i close the topic
Avatar billede terry Ekspert
12. september 2010 - 20:29 #18
The topic gets closed when you accept an answer, but anlu had only placed a comment. You placed and answer and accepeted it, you could have asked anlu to place an answer but now its too late, that why I suggest you place another question and get anlu to place an answer to get some points.
Avatar billede bi-ju Nybegynder
13. september 2010 - 08:21 #19
I have place a new question and send private note to anlu
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