syntax error

  • Onderwerp starter Onderwerp starter scw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Hallo,

Ik probeer de volgende regel in m'n query te plaatsen:
CumPct: DSum("[ShippedValue]","tblSales/Customer", "[ShippedValue]>=" & [ShippedValueTotal] & "")/DSum("[ShippedValue]","tblSales/Customer")

Op basis van onderstaand MS-artikel:
http://support.microsoft.com/kb/208373

CumPct: DSum("[ProductSales]","tblSalesByCategory", _
"[ProductSales]>=" & [ProductSalesTotal] _
& "")/DSum("[ProductSales]","tblSalesByCategory")

Helaas geeft Access steeds aan: The expression you entered contains invalid syntax. You omitted an operand or operator, you entered an invalid character or comma, or you entered text without surrounding it in quotation marks. Vervolgens gaat Access achtereenvolgens bij de drie komma's staan in de regel.

Mij lijkt het dat ik het precies hetzelfde heb gedaan... wat gaat er dan toch nog verkeerd :confused:
 
Hallo scw

Ik denk dat dit wordt veroorzaakt door de komma's. Vervang daarom de komma's eens door puntkomma's.

Rebmog
 
volgende probleem gestuit

Hoi Rebmog!

Hartelijk dank voor je hulp. Inderdaad pakt Access hem nu wel :thumb:
Vreemd dat dit anders gaat dan word genoemd in een artikel van MS zelf :confused:

Alleen nu loop ik vast op het volgende, Access geeft aan:

Syntax error (comma) in query expression '[ShippedValue]>=(desbetreffende getal van record)

En ik weet niet wat te veranderen, er komt geen komma meer voor in de expressie? Alleen in het getal (desbetreffende getal van record) komt wel een komma voor.... maar ik kan in de eigenschappen niet valuta selecteren of een notatie neerzetten...

Iemand nog suggesties?

Alvast bedankt!:thumb:
 
Vreemd dat dit anders gaat dan word genoemd in een artikel van MS zelf

Jij werkt zeker met een nederlandse versie van Access?

Kun je een voorbeeldje van het probleem uploaden?
 
Hoi Charles,

Nee ik maak juist gebruik van de Engelse Office-versie. Helaas zal het niet mogelijk zijn om een voorbeeldje up te loaden: de tabel uit de DB is een gekoppelde en uiteindelijk 2 GB groot :( :(

Hopelijk zijn er nog suggesties..
 
Nee ik maak juist gebruik van de Engelse Office-versie.

Dan ligt het aan de landinstellingen van windows. Het heeft te maken met het gebruik van de komma als decimaal scheidingsteken volgens mij.

Je hoeft niet je hele database hier te plaatsen. Alleen dat gedeelte waar het probleem zit.
 
OK is goed, maar is het dan voldoende om alleen het query object te uploaden of moeten er ook nog tabellen aanhangen? :o
 
Sorry, dat ik binnenval maar er vielen me een paar dingen op:

Als je database 2GB is dan wordt het een tijd om hem te comprimeren. Want je zit tegen de bovengrens aan van de grootte van je database. Als je database gecomprimeerd nog steeds zo groot is dan moet je overwegen gebruik te maken van de 64 bits versie van Access of MS SQL Server.

Je maakt gebruik van een tabelnaam met een schuine streep erin: "tblSales/Customer". Dat is bijzonder verwarrend als iemand ander je code leest of wanneer je dat zelf doet na een aantal jaren. Beter zou zijn tblSalesPerCustomer. Je hoeft dan ook geen rekening te houden met dubbele quotes rond de naam.

Ben je er zeker van dat de inhoud van het veld ShippedValue een getal is? Is die als getal gedefinieerd? Als het een tekst veld is dan kan je query een hele tijd goed lopen omdat alle teksten impliciet worden geconverteerd naar een getal. Totdat de query een record tegenkomt waarin dat niet kan. Als bijvoorbeeld ShippedValue een alfanumeriek karakter bevat dat geen getal is.

HTH:D
 
Ha Guus,

Hartelijk dank voor je zoete inval! Goed ook dat je wat wedervragen stelt. De situatie is namelijk zo: er is een hoofdprogramma welke vele enorme grote Excel bestanden uitspuugt met data. Nu probeer ik die data om te toveren naar informatie en die informatie meteen in een vaste vorm te gieten via Access. Dus waarom niet in Excel: omdat dan telkens dezelfde handelingen moeten worden herhaald, terwijl ik gewoon op een knop wil drukken.

Dus na hoofdprogramma>Excel> heb ik eerst een soort van ' backend' Access bestand, welke alle Excel bestanden omtovert naar informatie in een Access tabel. Nu heb ik deze hoofdtabel met vrijwel alle data, gekoppeld aan de 'front end'. Nu ben ik eigenlijk voornamelijk in de front end bezig geweest. En heb zodoende nauwelijks naar de Backend gekeken. Comprimeren doe ik natuurlijk wel vaker met Access db's, maar bij de BackEnd had ik er nog even niet aan gedacht :) het scheelt 1,7 gb, dus nu is die inderdaad 300 mb:p Enorm goede tip! Bedankt!

Nu kan ik in de FrontEnd db geen aanpassingen doen in de veldsoorten, want dan geeft Access aan: dat dat alleen geregeld kan worden via de bronDB. Maar wanneer ik het dus in de bronDB doe, a.k.a. de Backend dan zegt "Access can't change the data type. There isn't enough disk space or memory. Op zich niet heel vreemd met zo'n 500.000 records. Nu had ik goede hoop, dat ik nu die gecomprimeerd is, het wel zou doen, maar helaas: zelfde melding...

Dus graag zou ik inderdaad het tekstveld veranderen naar een nummer, maar stuit telkens op de melding. Ook heb ik geen mogelijkheid de records even uit de tabel te knippen, te veranderen en dan terug te plakken :confused: dat werkt ook niet, ik kan namelijk niet knippen.

Nou goed, een heel verhaal, maar nogmaals dank voor de hulp. Mogelijk hebben jullie nog suggesties hoe ik toch de velden kan veranderen van soort. :thumb:
 
Heb je in de Backend de Excel tabellen gekoppeld, of worden de data geïmporteerd?
 
Velden van soort veranderen gaat mestal niet zo eenvoudig. Als een 1 waarde in een tekst veld staat die je wilt omzetten naar een nummer dan gaat het niet goed.

Als je een numeriek veld toevoegd, via een update kan je dat veld vullen met de gegevens uit het veld dat je om wilt zetten. Alle waarden die niet impliciet omgezet kunnen worden naar een numerieke waarde vallen er automatisch uit.

Succes!
 
Ah Guus,

Geweldige hulp weer, goed antwoord. Dus ik meteen aan de slag, een update query gemaakt met het desbetreffende veld erin en waar die naartoe moet. Ik de query runnen (eerst melding van te kort geheugen, maar doorgeklikt, verder lijkt geen probleem te geven). Query uitgedraaid. Ik kijken in de 'source' field, keurig leeg. Kijk ik in de destination field: staat er helemaal niets. Zelf denk ik dat dit komt, omdat de typen toch niet overeenkomen of?

Ter informatie: ik weet wel wanneer ik het open in excel, dan geeft die bij dat veld al een groen dingetje in de bovenhoek met de melding convert to number.

Hopelijk weet je nog een manier om voor elkaar te krijgen dat die wel de nummers van het ene veld naar de andere plant. :confused:

Superbedankt,
scw:thumb:
 
Euhmmm, ik heb de dB eigenlijk van iemand overgenomen, dus ik ben niet de maker ervan... Maar ik zie dus in de tabellen, allemaal groene excel logo'tjes met blauwe pijltjes. Daarnaast zie ik in de queries ongeveer dezelfde (categorie)namen en dat zijn update queries.

Als ik zo een excel logotjes in design view open zegt die dat het een linked table is. Maar ik heb ook een mogelijkheid om de linked tables te updaten....

Mocht je nog meer info willen dat hoor ik dat graag,

Bedankt, SCW:thumb:
 
Je hebt de Excel tabellen gekoppeld in de db. Dat betekent dus, dat je in Access niets kunt aanpassen aan de tabellen. Als je al iets kunt aanpassen, moet dat dus in Excel gebeuren.
Als daar niets is in te stellen, kun je misschien nog met een tijdelijke tabel in Access gaan werken; in deze tabel sla je dan de Excel gegegens op die je wilt gaan gebruiken. Met een macro maak je deze tabel dan eerst leeg, en vervolgens gebruik je een toevoegquery om de juiste records er naar toe te kopieëren. In de tijdelijke (vaste) tabel kun je uiteraard de veldinstellingen dan op de juiste manier configureren. In de Toevoegquery converteer je dan de Excelgegevens naar het juiste gegevenstype.
 
OK ik zal in ieder geval proberen aan de basis nog e.e.a. aan te passen. Ik heb gecontroleerd: en het veld ShipValue is daadwerkelijk een nummer in de brontabel.

Het probleem blijft zich nog steeds voordoen, wat zou ik nog kunnen proberen:

Code:
SELECT tblSalesPerCustomer.[Customer Number], tblSalesPerCustomer.Year, tblSalesPerCustomer.ShippedValue AS ShippedValueTotal, DSum("[ShippedValue]","tblSalesPerCustomer","[ShippedValue]>=" & [ShippedValueTotal] & "")/DSum("[ShippedValue]","tblSalesPerCustomer") AS CumPct
FROM tblSalesPerCustomer;

Dit is nu mijn code, maar hij geeft nog steeds de eerdergenoemde syntax error :(:(:(
 
Ik denk dat er nog een klein foutje in zit:

Code:
SELECT tblSalesPerCustomer.[Customer Number], tblSalesPerCustomer.Year, tblSalesPerCustomer.ShippedValue AS ShippedValueTotal, DSum("[ShippedValue]","tblSalesPerCustomer","[ShippedValue]>=" & [ShippedValueTotal])/DSum("[ShippedValue]","tblSalesPerCustomer") AS CumPct
FROM tblSalesPerCustomer;
 
:( Helaas voor mij---> het maakte geen verschil...
 
Heb je de DSum formules al eens los in de query geprobeerd? En zo ja, doet-ie het dan wel?
 
Hoi Michel,

Hij loopt dus vast op deze DSUM:

DSum("[ShippedValue]";"tblSalesPerCustomer";"[ShippedValue]>=" & [ShippedValueTotal])

Die andere gaf die wel een getal uit, weliswaar een hele lange, maar die gaf geen #error, deze wel... :confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan