26. juli 2000 - 15:52Der er
6 kommentarer og 3 løsninger
Hvordan :if [total]= 0 then [Procent_forsinket]=0
Jeg har lavet en forespørgsel der viser nogle procenter, mit problem er at jeg somme tider ikke har nogle data og derfor kommer til at dividere med 0 (nul) så nu vil jeg gerne vide om det er muligt at indsætte et kriterium der gøre at det der bliver vist ikke er fejl men 100% kan man det. Min nuværende sql-kode ser sådan ud: SELECT [Ugedata].[sted], [Ugedata].[aar], [Ugedata].[Uge], [Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder] AS Total, [Akunder_forsinket]+[Bkunder_forsinket]+[Ckunder_forsinket]+[Dkunder_forsinket]+[Ikunder_forsinket] AS Total_forsinket, 1-[Total_forsinket]/[total] AS Procent_forsinket FROM Ugedata ORDER BY [Ugedata].[Uge] DESC;
Det der går galt er at “Total” sommetider er nul, og så får man jo en fejl, kan man indsætte et kriterium i “ Procent_forsinket” der gør at ”Procent_forsinket” bliver sat til nul hvis ”Total” =0, altså i stil med: if [total]= 0 then [Procent_forsinket]=0
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Prøv denne : SELECT [Ugedata].[sted], [Ugedata].[aar], [Ugedata].[Uge], [Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder] AS Total, [Akunder_forsinket]+[Bkunder_forsinket]+[Ckunder_forsinket]+[Dkunder_forsinket]+[Ikunder_forsinket] AS Total_forsinket, 1-[Total_forsinket]/[total] AS Procent_forsinket FROM Ugedata WHERE ((([Total]) Is Not Null)); ORDER BY [Ugedata].[Uge] DESC;
Problemet er jo ikke her at total antager vaerdien NULL, med at den anteger heltallet 0.
Dvs. proevv istedet for denne saetning
SELECT [Ugedata].[sted], [Ugedata].[aar], [Ugedata].[Uge], [Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder] AS Total, [Akunder_forsinket]+[Bkunder_forsinket]+[Ckunder_forsinket]+[Dkunder_forsinket]+[Ikunder_forsinket] AS Total_forsinket, 1-[Total_forsinket]/[total] AS Procent_forsinket FROM Ugedata WHERE Total!=0; ORDER BY [Ugedata].[Uge] DESC;
Selvfoelgelig er det ikke noget der virker (dumme mig)
Hvis du er vant til at bruge vba, kan du klare denne lille finesse,ved at bruge en eller anden form for betingelse. Dvs. naar du udregner [Ugedata].[sted], [Ugedata].[aar], [Ugedata].[Uge], [Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder] saa tjekker du lige om Total er 0, hvis dette er tilfaeldet, saa spring over forespoergslen, og goer noget andet.
SELECT [Ugedata].[sted], [Ugedata].[aar], [Ugedata].[Uge], IIf([Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder]=\"\";0;[Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder]) AS Total, IIf([Akunder_forsinket]+[Bkunder_forsinket]+[Ckunder_forsinket]+[Dkunder_forsinket]+[Ikunder_forsinket]=\"\";0;[Akunder_forsinket]+[Bkunder_forsinket]+[Ckunder_forsinket]+[Dkunder_forsinket]+[Ikunder_forsinket]) AS Total_forsinket, 1-[Total_forsinket]/[total] AS Procent_forsinket FROM Ugedata ORDER BY [Ugedata].[Uge] DESC;
jalle: sdå får jeg denne fejl: sytax error in query expression IIf([Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder]=\"\";0;[Akunder]+[Bkunder]+[Ckunder]+[Dkunder]+[Ikunder])\'
!!!!
Det kunne ellers se ud til at det var en fin ide\' !
Hej sth Det maa vaere fordi, du skriver det i SQL vinduet, i access. Den jalle, skrev skal saa vidt jeg ved bruges i forbindelse med vba, hvor du bruger vba, indbyggede metoder til at koere forespoergsler. mvh Kedde
Jeg skulle bruge denne forespørgsel på en ASP-side, Jeg har løst problemet med at lave en program stumt der laver det rigtigt. jeg lukker derfor dette spørgsmål, og deler de 100 point mellem jer som 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.