Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access 2003] Dateadd query sorteren

Pagina: 1
Acties:

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Ik ben bezig met een database in access, normaal heb ik er geen moeite mee maar nu loop ik tegen een probleem op.

Ik heb Een veld [inzet] en een veld [contractduur].

inzet word genoteerd in DD-MM-YYYY
Contractduur in MM

Nu moet ik dus contractduur optellen bij inzet, dat is geen probleem.

dateadd("m";[inzet];[contractduur])

Maar als ik deze query nu wil sorteren, krijg ik de foutmelding:
''gegevenstypen komen niet overeen in criteriumexpressie'' Ik stoei hier al een tijdje mee maar ik kom er echt niet uit.

Ik heb dingen geprobeerd als ''order by'' , maar omdat de uitkomst niet in een tabel staat wilt het gewoon niet werken of iets dergelijks. Ik kom er in ieder geval niet uit.

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 28-11 20:54
Waarom wil je sorteren op de uitkomst van een update-query?
Of is dit een veld in een select-query?

ORDER BY dateadd("m";[inzet];[contractduur])

zou moeten werken.

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Alvast bedankt voor je snelle reactie.

Ik ben niet erg thuis in jargon van access, dit is een query nieuwe data creëert, en niet oude data veranderd.

ik probeer het order by idee even opnieuw.

edit

Expiratie:ORDER BY dateadd("m";[inzet];[contractduur])
De syntaxis van de expressie die u hebt opgegeven, is ongeldig
U hebt bijvoorbeeld een operand opgegeven zonder operator
Nu staat me iets bij met oplopen en aflopen als operator, maar het lukt me niet om dat toe te passen.

[ Voor 44% gewijzigd door Rudy op 05-06-2009 09:14 ]


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 28-11 20:54
Het is gewoon SQL, zie ook w3schools.com/sql of de faq hier (onder programming).
In access kun je dat gewoon gebruiken, ergens in je scherm zit een knopje. Als je hier op drukt kun je SQL intikken.

SQL:
1
2
3
4
5
6
7
8
SELECT
inzet,
contractduur,
dateadd("m";[inzet];[contractduur])
from TABEL
order by 
dateadd("m";[inzet];[contractduur]) desc
;

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Met SQL heb ik nog nooit gewerkt in Access.

Kan ik daar mijn huidige query nog voor gebruiken (er zitten meer velden in dan alleen die twee) of moet ik een hele nieuwe specifieke sql query maken?

  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 28-11 20:54
je kunt gewoon je huidgie query gebruiken, voeg gewoon

order by
dateadd("m";[inzet];[contractduur]) desc

aan het einde van je query. Je kunt dit ook gewoon doen in die grafische query builder met het knopje 'sorteervolgorde'

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Als ik dat doe (''sorteervolgorde'') dan krijg ik juist die foutmelding.

Zoals ik al zei ''Maar als ik deze query nu wil sorteren, krijg ik de foutmelding:''


order by
dateadd("m";[inzet];[contractduur]) desc
De syntaxis van de expressie die u hebt opgegeven, is ongeldig
U hebt bijvoorbeeld een operand opgegeven zonder operator.
Als ik het goed heb moet de SQL notatie dit zijn:
code:
1
ORDER BY DateAdd("m",[maanden],[inzet]) DESC;


Maar daarmee krijg ik dus de foutmelding:
''gegevenstypen komen niet overeen in criteriumexpressie''

[ Voor 63% gewijzigd door Rudy op 05-06-2009 10:09 ]


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 28-11 20:54
Hmmm, dit is toch echt basis-sql hoor.

Sla je maandnummer wel op als een getal, niet per ongeluk tekst?

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Ja, het staat op Numeriek.

En hij berekent de ''expiratie'' datum ook wel uit. Maar ik kan hem gewoon niet sorteren |:(

[ Voor 65% gewijzigd door Rudy op 05-06-2009 11:00 ]


  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
code:
1
2
3
SELECT [Totaal fleet compleet].Auto, [Totaal fleet compleet].type, [Totaal fleet compleet].berijder, [Totaal fleet compleet].bedrijf, [Totaal fleet compleet].inzet, [Totaal fleet compleet].maanden, DateAdd("m",[maanden],[inzet]) AS Expiratie
FROM [Totaal fleet compleet]
ORDER BY DateAdd("m",[maanden],[inzet]) DESC;


Dit is nu mijn totale sql code, en het werkt gewoon niet, ik kan de fout ook niet vinden.

Verwijderd

"Het lukt gewoon niet" als in:

1. De query geeft een foutmelding terug;
2. De resultaten zijn niet zoals je ze had verwacht;
3. Overige, nl.: ...

?

Toevoeging: let er bij de DateAdd()-functie op, dat het tweede argument een numerieke waarde moet zijn, en het derde argument een datumwaarde moet zijn danwel een serieel getal dat Access als datum kan herkennen (bijv 39969 voor de datum van vandaag).

[ Voor 45% gewijzigd door Verwijderd op 05-06-2009 12:10 ]


  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
als in, lees het bovenste bericht en je hebt door dat de vragen die je nu stelt al lang en breed beantwoord zijn.

[ Voor 6% gewijzigd door Rudy op 05-06-2009 12:07 ]


Verwijderd

Prima.

Ik begreep dat JIJ geholpen wilde worden.

Maar kennelijk heb ik dat verkeerd begrepen - ik wens je veel succes met het oplossen van je probleem.

:z

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Jij vraagt toch iets wat ik al heb uitgelegd?

En je note over de date-add functie, zo staat het bij mij ook ingesteld.

En hoezo is het gegrond om nu ineens de conclusie te trekken dat ik niet geholpen wil worden dan?
beetje onzin om het hele verhaal 2 keer te posten.

code:
1
2
3
SELECT inzet, Maanden, DateAdd("m",[maanden],[inzet])
FROM [TOTAAL FLEET COMPLEET]
ORDER BY dateadd("m",[maanden],[inzet]) DESC;


Werkt helaas niet, zelfde error.

[ Voor 63% gewijzigd door Rudy op 05-06-2009 13:22 ]


  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Heb het al gevonden, ook al had ik de criteria vereist uit staan, ze moesten ingevuld zijn.

Dus nu ik ze heb ingevuld met dummy tekst, kan ik ze filteren.

De formules waren in ieder geval wel in orde, gelukkig maar. (was er al een week mee bezig)
Pagina: 1