Avatar billede fynbohans Nybegynder
05. februar 2005 - 18:54 Der er 7 kommentarer og
1 løsning

Kan ikke rette i VBA i Access2003/XP

Se følgende eksempel fra en forespørgsel i en rapport.
AFB: IIf([AFBESTILT]=-1,"Afbestilt",Null)
GRAT: IIf([GRATIS]=-1,"Gratis",Null)

Det første eksempel med syntaksen
AFB: IIf([AFBESTILT]=-1;"Afbestilt";Null) er skrivet i
Access2000/Windows98 fornylig og kører fint i Access2003/XP.
Den anden sætning, som indholdsmæssigt er helt identisk med den
første kan ikke indsættes(syntaktisk fejl med den sande del
markeret som fejlen).
IT-folkene, hvor jeg arbeder kan ikke hjælpe. Mit eget gæt er at fejlen
kommer fra XP. Et forsøg med installation af Access2000 på min maskine med XP
gav samme fejl.

Mit spørgsmål er derfor om XP kan ændres, så jeg kan foretage rettelser her.
Basen har kørt upåklageligt i over 10 år, før XP på Windows NT4.

PS Har set et sted på nettet et lignende problem med version 9 og 11 -
de omtalte versioner af Access. Men løsningen var ikke ligetil og der skulle en ekspert til at
løse det. Så det største problem er altså at finde en sådan ekspert!
Avatar billede sjap Praktikant
05. februar 2005 - 19:30 #1
Jeg prøver lige med et par gæt, som du måske allerede har prøvet. Bare sig til, hvis du selv synes du har prøvet alt dette, og derfor ikke gider høre mere om det.

Som det står ovenfor, kan jeg (selvfølgelig) ikke se nogen syntaxfejl, men jeg går ud fra at du har skrevet det præcist som i forespørgslen.

- Du bruger semikolon og komma lidt i flæng. Er du sikker på hvad der er separatortegn?
- Du skriver AFB virkede i 2000/98. Har du prøvet GRAT i den database - og virkede det der?
- Har du prøvet at skrive noget andet end "Gratis"? Det jeg mener her er, prøv at kopiere AFB og se at den virker. Lav den så om lidt af gangen, indtil det går galt - så er det måske lettere at lokalisere fejlen (det er jo ikke altid det der peges på, der er den primære årsag).
Avatar billede nih Novice
05. februar 2005 - 22:07 #2
Blot et gæt mere:

GRAT: IIf([GRATIS]=-1,"Gratis","")

Niels
Avatar billede fynbohans Nybegynder
05. februar 2005 - 22:57 #3
Tak for dine gode forslag, som desværre heller ikke virker.
Har kigget på problemet adskillige gange og prøvet alle dine forslag
flere gange.
Seperatoren ændres automatisk til komma af Access 2003 (hele basen).
Har også prøvet at skrive sætningen i feltet(=......).
Det sære er, at hvis jeg kopierer et felt, der virker, til et nyt felt(og ændrer feltnavnet) virker det heller ikke.
Det er muligt det hele er blevet for komplext pga de mange versioner.
Basen er startet i Access 3 og senere ændret i Acces97 og Access2000 flere gange.
Men mit bedste gæt er dog stadig operativsystemet.
Hvis jeg lukker hele basen før jeg har forladt den linje, jeg har skrevet i, kommer der en fejlmeddelse om at VBA-forbindelsen til
OLE og DDE ikke er afbrudt. Begge dele hører til Windows.
Vi har også prøvet at ændret filformatet til 2000, og det gør heller ingen forskel.
Avatar billede sjap Praktikant
06. februar 2005 - 00:00 #4
Hmm. Det er vist en af de rigtigt trælse! Du skriver, at selv en kopi af det felt, der virker, resulterer i et nyt felt, der så ikke virker. Jeg ved ikke om det er for komplekst - jeg ved heller ikke hvilke grænser Access har, men har du prøvet at slette/fjerne det felt, der virker? Det er blot endnu et skud i tågen, men hvis du ligger lige på en eller anden grænse, så måske...
Avatar billede 2dbornot2db Nybegynder
06. februar 2005 - 00:00 #5
Kan det tænkes at det er "-1" der forvirrer?

Prøv:
IIf([GRATIS]= True,"Gratis","")
Avatar billede nih Novice
06. februar 2005 - 00:01 #6
prøv at kopiere din sql herind
Avatar billede overchord Nybegynder
07. februar 2005 - 10:29 #7
ogsaa lige et par andre ting:

- Da din DB blev portet over i Access 2003 skulle den gerne lave en konvertering - gik denne ok uden fejlmeddelelser?
- Er der tilfoejet referencer til baade DAO og ADO?

Ved godt disse ikke direkte har noget med problemet at goere, men min erfaring er at problemer har en tendens til at propagere gennem access nogle gange :-)
Avatar billede fynbohans Nybegynder
07. februar 2005 - 16:10 #8
Kære allesammen!
Mange tak for de mange gode forslag.
Fandt selv løsningen hos Microsoft sent i aftes. Under eksempler på funktioner fandt jeg: =IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed").
Efter flere forsøg med "Yes" og "Ja", fant jeg ud af at kun dette virkede:

=IIf([GRATIS]="-1","Gratis","")

Alle 3 led skal åbenbart nu være tekststrenge, men jeg ved faktisk ikke (endnu) om
det afhænger af hvordan forsespørgslen ser ud. Måske skal der stå Yes/Ja hvis der i forespørgslen er et afkrydsningsfelt og ikke 0/-1.
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



IT-JOB

Rohde & Schwarz Technology Center A/S

FPGA-udvikler

Cognizant Technology Solutions Denmark ApS

Kinaxis Solution Architect

Pharma Nord

PHP backend-udvikler

Netcompany A/S

Software Developer