Juiste Query?

fwalraven

Gebruiker
Lid geworden
30 apr 2006
Berichten
191
In veld 1 , circa 10000 records, als korte tekst, staan de cijfer combinatie: **-**-****.

Als ik deze query met als criteria
Code:
NOT LIKE "**-**-****"
uitvoer dan worden er een paar gevonden.
Als ik deze aanpas en de Query nogmaals uit voer dan worden er geen meer gevonden.
Wil ik hierna van veld1 een datum veld maken met de notatie: dd-mm-yyyy, dat worden er als nog velden gevonden die niet aan die criteria van die notatie voldoen en dus worden verwijderd. Wat dus niet de bedoeling is.
Wat gaat hier fout?
Frans
 
Er zitten een paar foutieve datums tussen:
Code:
id    veld1
1706    31-04-1790    
3999    2--05-1740    
4742    06----1691    
4794    06----1691    
10985    30-02-1727
 
De volgende query geeft als resultaat alle records waar Veld1 geen geldige datum is;

Code:
SELECT Tabel1.Veld1, IsDate([Veld1]) AS fldCheck
FROM Tabel1
WHERE IsDate([Veld1])=0;
 
Er zitten een paar foutieve datums tussen:
Code:
id    veld1
1706    31-04-1790   
3999    2--05-1740   
4742    06----1691   
4794    06----1691   
10985    30-02-1727
Ahulpje,
Het zijn nog geen datums. Het is nog korte tekst.
Mijn opzet is om met die query de velden die niet voldoen aan: **-**-**** eruit te halen zodat ik die kan aan passen. Bv. 2--05-1740 wordt dan veranderd in, 20-05-1740. In een ander veld in dat record komt dan de opmerking, Dag onbekend. Als al die fouten eruit zijn wil die kolom omzetten naar DATUM met de notatie dd-mm-yyyy. Dan zullen zoals 31-04-1790 en 30-02-1727 een probleem blijven omdat dat geen correctie datums zijn maar wel voldoen aan: **-**-****.

Frans
 
Is met alle bovenstaande adviezen je probleem nu opgelost?
Nee, maar ik zou al blij zijn als bv. de velden met -- of --- erin er wel er tussenuit gefilterd worden.
de combinaties van bv 30-02-1799 zullen er met mijn query er nooit eruit gehaald worden.
VBA zegt me weinig of niets in Acces 2016. In een vorige versie van Access kon je net als in Excel een macro opnemen. Dat lukt niet in Access 2016.
 
Veld Datum aan tabel toegevoegd, zie ook query VulDatum.
Dit is een mooie oplossing. De lege velden kan ik dan zo terug zoeken wat het bronbestand aangeeft. Er zijn bv. datums waar alleen --.12.1780 is vermeld. dit pas ik dan aan door er 01-12-1780 van te maken met een opmerking: Dag niet correct.
 
@fwalraven
Wat is het probleem nu eigenlijk? Je hebt al in post #3 een pasklare query gekregen die je zo op je gegevens los kan laten. Niks VBA of Macro.
Als je die query opent zie je dat er slechts 9 records zijn met een ongeldige datum. Ook kwantitatief valt het probleem dus reuze mee. Die paar datum kan je makkelijk met het handje corrigeren.

Dus nogmaals: maak een query als (effectief hetzelfde als die van @NoellaG, maar wellicht nog iets beter leesbaar)
Code:
SELECT
    Tabel1.Id,
    Tabel1.Veld1
FROM
    Tabel1
WHERE
    IsDate([veld1]) = False;
Mocht je denken dan dit moeilijke VBA is, in een andere weergave ziet de query er zo uit:
q2.jpg
Het resultaat:
q1.jpg
Je kan de foute datums hier gewoon overschrijven met een geldige waarde (waar mogelijk). Met de query van @AHulpje zet je daarna de geldige datums over naar een echt datumveld.
 
@fwalraven
Wat is het probleem nu eigenlijk? Je hebt al in post #3 een pasklare query gekregen die je zo op je gegevens los kan laten. Niks VBA of Macro.
Als je die query opent zie je dat er slechts 9 records zijn met een ongeldige datum. Ook kwantitatief valt het probleem dus reuze mee. Die paar datum kan je makkelijk met het handje corrigeren.

Dus nogmaals: maak een query als (effectief hetzelfde als die van @NoellaG, maar wellicht nog iets beter leesbaar)
Code:
SELECT
    Tabel1.Id,
    Tabel1.Veld1
FROM
    Tabel1
WHERE
    IsDate([veld1]) = False;
Mocht je denken dan dit moeilijke VBA is, in een andere weergave ziet de query er zo uit:
Bekijk bijlage 386244
Het resultaat:
Bekijk bijlage 386245
Je kan de foute datums hier gewoon overschrijven met een geldige waarde (waar mogelijk). Met de query van @AHulpje zet je daarna de geldige datums over naar een echt datumveld.
Klopt, maar ik kwam er in eerste instantie er niet uit. Moest ze als SQL query invoeren. Dus weer wat geleerd.
 
Terug
Bovenaan Onderaan