Avatar billede susanneandersen Nybegynder
13. januar 2009 - 16:04 Der er 11 kommentarer og
2 løsninger

Fra positivt tal til negativt tal i en Access forespørgsel

Hej. Jeg har en engelsk Access. Jeg har lavet en forespørgsel, med bl.a. et bilagsnr, et antal og en værdi. Heri skal jeg have ændret antal og værdi til negative tal, hvis bilagsnummeret begynder med 9. Håber der sidder en, der lige er klar på den. :-)
Avatar billede fdata Forsker
13. januar 2009 - 16:10 #1
Opret et nyt felt, f.eks.
  A: Iif(Left([Bilagsnr];1)="9"; -[Antal]; [Antal])
Avatar billede mugs Novice
13. januar 2009 - 16:26 #2
UPDATE Tabel1 SET Tabel1.antal = -[antal], Tabel1.værdi = -[værdi]
WHERE ((Left([bilagsnr],1)=9));
Avatar billede susanneandersen Nybegynder
13. januar 2009 - 16:31 #3
Hej. Hvis jeg indsætter din sætning, så kommer der en boks frem, hvori jeg skal taste "Antal"
Enter parameter value???
Avatar billede mugs Novice
13. januar 2009 - 16:36 #4
Min er afprøvet og fungerer. Hvis du lægger din e-mail kan jeg sende et eksempel.
Avatar billede susanneandersen Nybegynder
13. januar 2009 - 16:39 #5
det var ikke din, mugs - den har jeg ikke prøvet endnu. Du kom med et svar samtidig med jeg lagde kommentar til fdata :-). Jeg prøver
Avatar billede mugs Novice
13. januar 2009 - 16:40 #6
Denne fungerer:
A: IIf(Left([Bilagsnr];1)=9;-[Antal];[Antal])
Avatar billede fdata Forsker
13. januar 2009 - 16:43 #7
Jeg gik ud fra at antal og værdi, var feltnavne.
Du skal erstatte Antal med dit eget feltnavn.

PS:
Forskellen på mugs' og min er, at min version kun viser de negative værdier i forespørgslen. mugs' gemmer de negative tal i tabellen.
Du må lige tage stilling til, hvad du vil, inden du trykke på speederen  ;o)
Avatar billede susanneandersen Nybegynder
13. januar 2009 - 16:49 #8
Kan ikke helt finde ud af det pointsystem, Jeg troede jeg gav jer begge 30 - men systemet har delt de 30 mellem jer.Sorry
Avatar billede fdata Forsker
13. januar 2009 - 17:40 #9
Don't worry. Point er kun for sjov.
Håber, du fik løst problemet.
Avatar billede susanneandersen Nybegynder
13. januar 2009 - 18:17 #10
Du skulle ikke have spurgt:-)
Det er helt ok et langt stykke hen ad vejen.
Min forespørgsel bliver ok, men derefter laver jeg en pivot, hvor jeg skal lægge disse nye værdier sammen. I en kolonne kan der være både positive såvel som negative tal. I disse kolonner bliver resultatet eksempelvis. 9,59233E-14.  Hele kolonnen bør totalt være 0
Avatar billede fdata Forsker
14. januar 2009 - 19:53 #11
Hm. Som jeg har luftet flere gange her på e, er Access en klovn til regne - og specielt afrunde. Værdien, du viser, er et 9-tal i 14. decimal, og det er jo "næsten" nul, og det er det bedste resultat, som Access kan komme frem til.

Du kan delvis løse problemet ved at vise resultatet afrundet; men selve resultatet bliver jo aldrig nul, så en
  If Resultat=0 Then ...
vil være False. Du er derfor nødt til at "udvide" nullet lidt:
  If Abs(Resultat)<0.00001 Then ...
Fejlen ligger ofte ude omkring 6. decimal.

Med andre ord: Kolonnen summerer ganske rigtigt til nul. Access er bare ikke så god til at udtrykke det ;o)


Evt. tvivlere kan muntre sig med kode i stil med:

Sub Regnefejl()
  Dim a As Single
  Dim b As Single
 
  a = 4.01
  b = 4
 
  Debug.Print a, b, a - b
End Sub
Avatar billede susanneandersen Nybegynder
15. januar 2009 - 09:28 #12
Tak skal du ha', fdata. Jeg tror, jeg beholder mit mærkelige tal, det fungerer jo ok, det er mere det visuelle idet.
Avatar billede fdata Forsker
15. januar 2009 - 11:18 #13
Velbekomme ;o)
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