vermenigvuldigen mbv bijwerkquery

Status
Niet open voor verdere reacties.

Renate999

Gebruiker
Lid geworden
27 jun 2002
Berichten
28
Ik heb in diverse tabellen getallen staan die allemaal met 1.43 vermenigvuldigd moeten worden. Ik wilde dit mbv een bijwerkquery doen, maar ben daar tot nu toe niet in geslaagd... de standaard formule "[fieldname]*1.43" in 'update to' invullen werkt niet...

heeft iemand tips, of zal ik mij nu echt op SQL moeten storten?
 
Laatst bewerkt:
Je zult toch echt iets meer informatie moeten geven.
De update query zou gewoon moeten werken!

Welke versie van Access gebruik je?
Welke foutmelding krijg je?
Hoe zijn de velden waarop je de bewerking wilt uitvoeren gedefinieerd?

Overigens kan het natuurlijk nooit kwaad om je eens in SQL te verdiepen;) :D
 
Ik gebruik Access 2000. Een foutmelding krijg ik niet, hij voert de opdracht gewoon niet uit...
Ik zat mij af te vragen of het niet werken zou kunnen liggen aan het feit dat in dit numerieke veld er ook lege vakjes staan? Wel een rotklus, maar als ik daar dan een nul invoer, zou hij dan wel moeten werken?
 
lege velden maakt niet uit. 0 vermenigvuldigen met iets geeft als antwoord ook 0.

Post de SQL van je bijwerk query eens.
 
UPDATE DISTINCTROW Studentgegevens LEFT JOIN [Resultaten / studiepunten_ok] ON Studentgegevens.[Student-ID] = [Resultaten / studiepunten_ok].[Student-ID] SET [Resultaten / studiepunten_ok].M01ABG1 = "[M01ABG1]*1.43", [Resultaten / studiepunten_ok].M01ABG2 = "[M01ABG2]*1.43"
WHERE (((Studentgegevens.Status)="ingeschreven" Or (Studentgegevens.Status)="contract") AND ((Studentgegevens.[Startdatum LO])<#2/1/2001#));

Dit is de sql van de bijwerkquery gebaseerd op een andere query, maar ook als ik hem baseer op de oorspronkelijke tabel doet-ie het niet...
 
Heb nu net wel een foutmelding gekregen na het afsluiten en opnieuw runnen van de query: type conversion failure.
 
Type conversion failure geeft aan dat je een bewerking probeert te doen op een veld dat niet op de correcte wijze gedefinieerd is. Bijvoorbeeld rekenen met een tekstveld.

Als ik zo naar de query kijk dan lijkt het erop dat deze niet updatable is.
Een Left Join heeft meestal tot gevolg dat je geen mutaties op de gegevens mag uitvoeren!
Dat is dus waarschijnlijk de oorzaak dat het niet lukt.
De enige manier om dit binnen queries op te lossen is gaan werken met subqueries

UPDATE table SET veld = ....
WHERE sleutelveld IN (SELECT veld FROM tabel2 WHERE veldje > waarde AND etc.)

Je ziet, een beetje kennis van SQL is nooit weg......
 
Het is allemaal erg raar... de velden waarop ik de berekening wil uitvoeren zijn wel degelijk numeriek, ik heb inmiddels een nieuwe query gemaakt, gebaseerd op de (inmiddels overal van losgekoppelde) tabel, en nog doet hij het niet...
Oh, en de query waar ik het eerst mee probeerde was wel degelijk updatable...

UPDATE [Resultaten / studiepunten_ok] SET [Resultaten / studiepunten_ok].M01ABG1 = "[M01ABG1]*1.43", [Resultaten / studiepunten_ok].M01ABG2 = "[M01ABG2]*1.43", [Resultaten / studiepunten_ok].M01ABG3 = "[M01ABG3]*1.43";


(Ik heb nl. niet echt de tijd om nu met SQL te beginnen... )
 
Hoe zijn die numerieke velden precies gedefinieerd?
Datatype Number heeft namelijk nog een aantal smaken, bij jou moet ie single, double of currency zijn om met 1,43 te kunnen vermenigvuldigen.
Als het integer, long of decimal is kun je een type conversion failure krijgen.
 
Ik denk dat het 'em daar zit, het zijn 'long integer' numbers. Maar als ik het veld omzet naar 'double', ben ik m'n gegevens kwijt... Aaargh. Het ziet er naar uit dat dit toch allemaal handmatig zal moeten...
 
Doe het via een MAKE TABLE query. Stop daar meteen de berekening en maak op die manier een nieuwe tabel.
Controleer of die goed is, donder de oude tabel weg en rename de nieuwe tabel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan