Toon posts:

[Access] If/else in een query

Pagina: 1
Acties:
  • 1.967 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik moet een query maken, die een prijs update als veld a bijvoorbeeld "x" is. Dit is niet zo moelijk en is me al wel gelukt, maar....nu moet ik in diezelfde query, ook een else hebben....dus dat hij de prijs ook update als veld a niet "x" is maar wat anders, de prijs word dan ook wat anders.....hoe doe ik dit in 1 query?

Mijn huidige query is als volgt:

UPDATE vluchten INNER JOIN prijs ON vluchten.vlcVluchtnummer = prijs.prsVluchtnummer SET prijs.prsPrijs = [prsPrijs]*0.95
WHERE vluchten.vlcVertrek="Schiphol";

Ik heb een vermoeden dat ik met inner loops ofzo moet werken, die richting wees google mij maar inner loops heb ik nog niet eerder meegewerkt

Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 01-10 12:56

Nick_S

++?????++ Out of Cheese Error

Ik denk dat je met transacties moet gaan werken. Dus wel 2 statements, maar pas committen als het 2e statement ook voltooid is.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
eeuh.....@Nick_s wat je daar zegt is voor mij wirwar taal :x
Het MOET in 1 query iig, dat is de opdracht en dat is dus mogelijk...maar hoe :+

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op vrijdag 09 september 2005 @ 13:36:
eeuh.....@Nick_s wat je daar zegt is voor mij wirwar taal :x
Dat is het ook een beetje...


Hoeveel verschillende mogelijkheden heb je voor de waarde van a? 2 of meer?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb dus voor a (oftewel vluchten.vlcVertrek) 2 mogelijkheden, het is of "Schiphol" of wat anders, bij schiphol moeten de prijzen 5% omlaag, en bij alleoverige 12% dat is de bedoeling

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 03-10 17:38

gorgi_19

Kruimeltjes zijn weer op :9

Had MS Access daar niet de IIF-functie voor?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
gorgi_19 schreef op vrijdag 09 september 2005 @ 13:49:
Had MS Access daar niet de IIF-functie voor?
Inderdaad, en met slechts 2 opties is dat prima te doen. Worden het er mee zou je kunnen overwegen een aparte tabel daar voor te maken.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maarja, de opdracht (tis voor een examen waarbij internetgebruik is toegestaan) dat het 1 Query wordt die dit doet, zonder de tabellen te gaan lopen aanpassen ;)
Zelf zit ik nu te klooien met dit maar krijg nog steeds fouten:
UPDATE vluchten INNER JOIN prijs ON vluchten.vlcVluchtnummer = prijs.prsVluchtnummer SET prijs.prsPrijs =
CASE WHEN vluchten.vlcVertrek="Schiphol" THEN [prsPrijs]*0.95
ELSE [prsPrijs]*0.88;

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 03-10 17:38

gorgi_19

Kruimeltjes zijn weer op :9

Wat zijn die fouten dan? :) We kunnen ook niet raden wat die fouten zijn; ik heb destijds alle glazen bollen laten stuiteren :) En afaik ondersteunt MS Access de CASE WHEN ... ELSE syntax niet, dat is voor SQL Server :)

Maar al gekeken naar een iif constructie? :)

[ Voor 16% gewijzigd door gorgi_19 op 09-09-2005 13:58 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op vrijdag 09 september 2005 @ 13:56:
Maarja, de opdracht (tis voor een examen waarbij internetgebruik is toegestaan) dat het 1 Query wordt die dit doet, zonder de tabellen te gaan lopen aanpassen ;)
Zelf zit ik nu te klooien met dit maar krijg nog steeds fouten:
UPDATE vluchten INNER JOIN prijs ON vluchten.vlcVluchtnummer = prijs.prsVluchtnummer SET prijs.prsPrijs =
CASE WHEN vluchten.vlcVertrek="Schiphol" THEN [prsPrijs]*0.95
ELSE [prsPrijs]*0.88;
Het antwoord staat toch in de post van gorgi (en in het linkje wat ik nog weer gepost heb?)

CASE is niet een access functie.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Stefke
  • Registratie: December 2000
  • Laatst online: 02-10 11:45
Je kunt IFF-functies nesten, m.a.w. IFF(test;IIF(test2;true;false);false)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb het met IIF geprobeert,

UPDATE vluchten INNER JOIN prijs ON vluchten.vlcVluchtnummer = prijs.prsVluchtnummer SET prijs.prsPrijs = IIF ([vluchten.vlcVertrek] = "Schiphol" , [prijs.prsPrijs]*0,95 , [prijs.prsPrijs]*0,88);


Dit levert een syntaxfout op in query expresse (het IIF gedeelte)

[ Voor 4% gewijzigd door Verwijderd op 09-09-2005 14:11 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
parameters van de iif functie scheidt je met een:
,
niet een
;
zoals jij nu doet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
heb ik gedaan maar lost het nog niet op ;) In mijn naslagboek wat ik er ook bij mag houden staat ; maar dat had ik inmiddels al aangepast ;)

Acties:
  • 0 Henk 'm!

  • Stefke
  • Registratie: December 2000
  • Laatst online: 02-10 11:45
Niet in queries, daar moet het een ; zijn (dwz in het query-build scherm, in SQL wordt dat vanzelf een , )

Je moet velden omschrijven als [tabel].[veld] of tabel.veld (als er geen spaties in de namen zitten), niet als [tabel.veld]

[ Voor 17% gewijzigd door Stefke op 09-09-2005 14:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ow ok, de foutmelding was trouwens:
<Bericht> in query-expressie <expressie>. (Fout 3075)
De expressie die u hebt getypt, is niet geldig om de reden die is aangegeven in het bericht. Controleer of u de veldnamen correct hebt opgegeven met de juiste leestekens en probeer de bewerking opnieuw uit te voeren.

@stefijn ga ik nu proberen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij werkt ;)
Access maakte van mijn . elke keer een , ik gebruikte de . op t numpad. Dus nu in de getallen een de andere . gebruikt op t toetsenbord en toen werkte het
De query is geworden:

UPDATE prijs INNER JOIN vluchten ON prijs.prsVluchtnummer=vluchten.vlcVluchtnummer SET prijs.prsPrijs = IIf(vluchten.vlcVertrek="Schiphol",prijs.prsPrijs*0.95,prijs.prsPrijs*0.88);
offtopic:
En toen waren mijn mede-examengenoten deze query ook aan t lezen :+

[ Voor 15% gewijzigd door Verwijderd op 09-09-2005 14:23 ]


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Nog even ter verheldering:
in de grafische querybuilder gebruik je de locale tekens zoals ingesteld in het systeem. In Nederland is dat dus meestal ';' voor lijstscheiding en ',' als decimaalteken.
SQL weergave is altijd amerikaans: ',' als lijstscheiding, '.' als decimaalteken. In je eerste querys gooide je die twee door elkaar.

offtopic:
en mag hij nou naar [off]?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 03-10 17:38

gorgi_19

Kruimeltjes zijn weer op :9

Niesje schreef op vrijdag 09 september 2005 @ 14:25:
offtopic:
en mag hij nou naar [off]?
Puur SQL is toch Programming & Webscripting? Of je het SQL statement nu vanuit MS Access, VBScript, VB.Net of whatever oproept; het probleem (en oplossing) blijft hetzelfde :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Stefke
  • Registratie: December 2000
  • Laatst online: 02-10 11:45
Mooi, maarre...Examenvragen hier neerpleuren is toch niet toegestaan?

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
offtopic:
[quote]Niesje schreef op vrijdag 09 september 2005 @ 14:25:

[ot] en mag hij nou naar [off]? [/][/quote]
With gorgi_19.....

Sowieso vind ik dat programmeertechnische office zaken beter hier horen dan in off. Natuurlijk zijn er pakketspecifieke zaken die je met het programmeren tegenkomt, maar de bulk is "gewoon" SQL of "gewoon" VBA.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
stefijn schreef op vrijdag 09 september 2005 @ 14:29:
Mooi, maarre...Examenvragen hier neerpleuren is toch niet toegestaan?
Toch wel als hulpmiddelen als internet toegestaan is? Praten met mede examengenoten was ook niet toegestaan, maar die hadden deze thread op GoT ook al gevonden enzo mijn oplossing gezien :x Dus eigenlijk best domme regels van school....
Pagina: 1