Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hvis jeg fjerner "dato<=date()" udvælger den kun een vare (der er kun een vare der har dato efter d.d.) DVS at den udvælger de arer der har den nyeste dato påhæftet, men ikke vaer med ældre datoer. Hvordan løses det?
Du vil i EN select gerne have en liste af alle varenumre og deres aktuelle pris. Der kan være flere priser på hver vare, men det er den seneste (som ikke er efter dagsdato) du vil have ud???
Første del er en select af alle varenumre SELECT v.id, v.name from Vare v
Dernæst har vi en select til at trække prisen ud for hver enkelt nummer: select top 1 price from vare2price vp where vp.vareID=123 and vp.dato<=date()
Denne smides så ind som en subselect på select listen, og 123 sættes til at henvise til varens id (som jo er fremmednøgle). Det giver os:
SELECT v.id, v.name, (select top 1 price from vare2price vp where vp.vareID=v.id and vp.dato<=date()) from Vare v
Synes godt om
Slettet bruger
24. marts 2006 - 13:32#18
Den fiser desvære ikke helt ind. Hvis jeg kan få dig til at tilrette min kode der kun tager varenr. med den 24.03. med kommer du klart med i min aftenbøn :-)
SELECT TOP 1 Varesalgspris.Varenr_, Varesalgspris.[E-handelspris], Varesalgspris.Startdato FROM Varesalgspris WHERE (((Varesalgspris.Startdato)<=Date())) ORDER BY Varesalgspris.Startdato DESC;
... Den tabel som Varesalgspris.Varenr referere til...
Synes godt om
Slettet bruger
24. marts 2006 - 13:40#21
Alle relevante varenr. er i tabellen Varesalgspris
Synes godt om
Slettet bruger
24. marts 2006 - 13:52#22
Her er der yderligere tilknyttet en tabel Vare som det vil skulle se ud i den endelige forespørgsel: (hvis du kan løse problemet kan vi let give dig en "præmie") SELECT TOP 1 IIf([Vare]![Beskrivelse] Like "DVD*","1","0") AS Master, IIf([Vare]![Typekode]="DVD","DVD",IIf([Vare]![Typekode]="VHS","VHS",IIf([Typekode]="UMD","UMD",""))) AS Type, Vare.Nummer AS Varenr, Vare.Beskrivelse AS Varenavn, IIf([Beskrivelse] Like "DVD*",Mid([Vare]![Beskrivelse],5),[Beskrivelse]) AS Kaldenavn, IIf([Vare]![Typekode]="DVD","Film",IIf([Vare]![Typekode]="VHS","Film",IIf([Vare]![Typekode]="PSX2","PlayStation",IIf([Vare]![Typekode]="PLAKAT","Plakater")))) AS Produktnavn, Varesalgspris.[E-handelspris] AS Pris1, "" AS Vægt, [Vare]![Lagerbeholdning]-[Vare]![Antal i salgsordre]-[Vare]![Antal i købskreditnota] AS Beholdning1, IIf([Vare]![Typekode]="PLAKAT",5,IIf([Vare]![Typekode]="PSX2",2,IIf([Vare]![Typekode]="VHS",IIf(Date()-[Vare]![Frigivelsesdato]<15,25,IIf(Date()-[Vare]![Frigivelsesdato] Between 15 And 30,10,0)),IIf([Vare]![Typekode]="DVD",IIf(Date()-[Vare]![Frigivelsesdato]<15,25,IIf(Date()-[Vare]![Frigivelsesdato] Between 15 And 30,10,0)))))) AS Minimumsbeholdning, "" AS Leveringstid, Vare.Genre, Vare.Frigivelsesdato, Vare.Provisionsgruppe AS Reference, IIf([Beskrivelse] Like "DVD*",Mid([Vare]![Beskrivelse],5),[Beskrivelse]) AS Billedkaldenavn, Vare.Leverandørnr_, Varesalgspris.Startdato INTO Navision FROM Vare INNER JOIN Varesalgspris ON Vare.Nummer = Varesalgspris.Varenr_ WHERE (((Vare.Provisionsgruppe)>0) AND ((Varesalgspris.Startdato)<=Date())) ORDER BY Varesalgspris.Startdato DESC;
Synes godt om
Slettet bruger
24. marts 2006 - 14:01#23
Nu tror jeg den er der, jeg har siddet med noget lignende....
Løsningen blev at lave en forespørgsel som finder max dato med kriterie <=Date() for hver varenummer. Du har så en forespørgsel med alle varenumre med deres sidste dato.
Så laver du en ny forespørgsel hvor de forbinder din oprindelige tabel med den nye tabel både på varenr og dato. Så vil du have søgesættet du skal bruge og kan så frit tage af de andre oplysninger, som pris osv...
Held og lykke!~)
Synes godt om
Slettet bruger
24. marts 2006 - 14:24#24
spg> hvordan finder du maxdato pr. varenr.?
Synes godt om
Slettet bruger
24. marts 2006 - 14:27#25
Lige et øjeblik..
Synes godt om
Slettet bruger
24. marts 2006 - 14:27#26
Hvis jeg bruger Maks og <=Date() medtager den ikke datoer efter d.d.
Synes godt om
Slettet bruger
24. marts 2006 - 14:28#27
Skal den medtage datoer efter d.d. så kan du bare fjerne kriteriet..
Synes godt om
Slettet bruger
24. marts 2006 - 14:30#28
Det er jeg klar over, men hvis der er en dato efter d.d. skal den tage den seneste før...
Synes godt om
Slettet bruger
24. marts 2006 - 14:32#29
Er det ikke det som <=Date() gør?~)
Synes godt om
Slettet bruger
24. marts 2006 - 14:33#30
Forresten det med at finde max eller last er ved at lave en faldende sortering på dato..
Synes godt om
Slettet bruger
24. marts 2006 - 14:35#31
Jeg kan ikke huske om du er nød til at lave sorteringen før max forespørgslen..
Synes godt om
Slettet bruger
24. marts 2006 - 14:41#32
Maks og <=Date() overstyrer hinanden, så jeg ikke får arer ud hvis den sidste dato er 25-03-06!
Synes godt om
Slettet bruger
24. marts 2006 - 14:50#33
Jeg brugte det i en db, hvor der var dato, ingrediens og batchnummer. De tastede så ind når de tog hul på en ny batch. Så skulle man kunne indtaste en dato og så skulle man se hvilke batchnumre der var i brug på den dato..
Løsningen: Forespørgsel1 Faldende sortering på dato Forespørgsel2 Brug forespørgsel1 til at finde max dato og feltet ingrediens (i forespørgsel 1 eller 2 kan du indsætte dit dato kriterie, det burde selvfølgelig være i forespørgsel 1) Forespørgsel3 Her satte jeg forespørgsel2 sammen med den oprindelige tabel, forbandt både dato og ingrediens. Dvs. så står vi med den oprindelige tabel men kun med den seneste dato før dato kriteriet!~)
Synes godt om
Slettet bruger
24. marts 2006 - 15:03#34
Hvem ønsker points - det virker med spg's løsning i flere omgange.
Synes godt om
Slettet bruger
24. marts 2006 - 15:04#35
God weekend!~)
Synes godt om
Slettet bruger
24. marts 2006 - 15:05#36
Tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.