pjotter Posted February 7, 2010 Posted February 7, 2010 Kom net achter iets waar ik even geen antwoord op heb en wat ik nog niet ben tegen gekomen? Ik heb een tekstveld wat ik importeer. Als ik dat na import omzet naar een datum veld dan heb ik 2 verschillende uitkomsten. 1 als de tekst is opgemaakt als vb: 01/01/2008 dan krijg ik keurig datum 01-01-2008 2 als de tekst is opgemaakt als vb: 01-01-2008 dan krijg ik de datum 01-01-2007? Ik gebruik voor omzetten van de tekst gewoon: Date ( Middle ( datumtekst ; 3 ; 2 ); Left ( datumtekst; 2) ; Right ( datumtekst ; 4 ) ) Hoe kan het dat ik in voorbeeld 2 voor het jaartal 2007 krijg (laatste 4 laatste tekens zijn echt 2008?) De export is een tekst veld omdat de datum ook als volgt kan worden weergegeven :01 jan 2008 Quote
0 fmwebshop Posted February 7, 2010 Posted February 7, 2010 Date ( Middle ( filter(datumtekst;1234567890) ; 3 ; 2 ); Left ( datumtekst; 2) ; Right ( datumtekst ; 4 ) ) groet Harry Quote
0 hbrendel Posted February 7, 2010 Posted February 7, 2010 Date ( Middle ( datumtekst ; 4 ; 2 ) ; Left ( datumtekst; 2 ) ; Right ( datumtekst ; 4 ) ) Overigens, dit werkt ook: GetAsDate ( datumtekst ) Quote
0 pjotter Posted February 7, 2010 Author Posted February 7, 2010 Dat ik met een aangepaste formule er wel uit kom dat kan maar wat ik zo vreemd vindt is dat wanneer is xx/xx/xxxx neem als tekst en ik dit omzet ik wel het juiste jaartal krijg en bij xx-xx-xxxx het jaartal -1? Ik heb een bestandje bijgevoegd omdat ik de beweegredenen niet ken waarom // een heel andere uitkomst heeft dan --? Met get as date werkt het wel met // en met -- maar ik kan ook de tekst aangeleverd krijgen als: 1 jan 2008 vandaar dat ik die niet gebruikte. In de totale formule zit namelijk ook een stukje met case( jan =1 enz) datum.fp7 Quote
0 hbrendel Posted February 7, 2010 Posted February 7, 2010 Heb je mijn post eigenlijk wel gelezen? 4 i.p.v. 3 Quote
0 fmwebshop Posted February 7, 2010 Posted February 7, 2010 Bovenstaande oplossingen werken niet op alle systemen. FM herkent jan-feb enz dan niet Om de formule niet al te lang te maken heb ik een veld bijgemaakt. gr Harry omzetten tekst naar datum.fp7 Quote
0 pjotter Posted February 7, 2010 Author Posted February 7, 2010 Heb je mijn post eigenlijk wel gelezen? 4 i.p.v. 3 Jazeker heb dit ook geprobeerd, `zie bijlage van twee jpg's Quote
0 pjotter Posted February 7, 2010 Author Posted February 7, 2010 Bovenstaande oplossingen werken niet op alle systemen.FM herkent jan-feb enz dan niet Om de formule niet al te lang te maken heb ik een veld bijgemaakt. gr Harry Dat omzetten is niet het probleem dat werkt op zich allemaal prima ik heb het ozetten van jan naar 1 gewoon in de formule geplaatst van date(mont,day,year). Ik kan alleen niet uitstaan dat ik niet weet waarom / als scheidings teken wel de juiste datum geeft en - niet. Als ik alleen het jaar neem (Right ( datumtekst ; 4)) dan krijg ik keurig het juiste jaartal. ALs ik vervolgens dit dit invoeg in de eerste datum omzetting dan krijg ik weer 1 jaar lager. Quote
0 hbrendel Posted February 7, 2010 Posted February 7, 2010 Ik kan alleen niet uitstaan dat ik niet weet waarom / als scheidings teken wel de juiste datum geeft en - niet. Omdat delen niet hetzelfde is als aftrekken. En dat komt allemaal door die 3 in Middle ( datumtekst ; 3 ; 2 ). Hiermee krijg je dus voor de maand "-0" of "/0". Aangezien de Date functie getallen verwacht probeert hij deze 'tekst' te interpreteren. Daarom moet het een 4 zijn. Dan krijg je "01" in beide gevallen, dat wordt dus maand 1. Uiteraard werkt deze formule alleen wanneer de datumtekst in het formaat xx-xx-xxxx wordt gepresenteerd, evenals GetAsDate (). Filter je de niet numerieke karakters eruit, dan wordt het al helemaal onvoorspelbaar. 1-1-'08 zou ook kunnen. In een goede datum omzettingsformule moet je al die uitzonderingen afvangen. Omdat je niet weet wie het allemaal gaat invoeren, is dat niet mogelijk. Ik heb het ooit gehad dat gebruikers invoerden: "ergens in februari vorig jaar" of "Eerste kerstdag 2005". Zorg daarom dat datums in een datumveld worden ingevoerd. Wanneer het via een webformulier gebeurt, pas dan een validatie toe, die de gebruiker bij fouten opnieuw laat invoeren. Quote
0 pjotter Posted February 7, 2010 Author Posted February 7, 2010 Kijk een duidelijke uitleg maar wel een vreemde voor me. dat-4 iets anders is dan /4 is logisch, dus tot zover duidelijk. Ik zie ook dat de 3 dat effect heeft en dat de 4 de juiste uitkomst geeft maar dan is het nog steeds vreemd dat dus FM dit alleen bij de - doet? Delen, vermenigvuldigen of optellen heeft geen enkel effect. Quote
Question
pjotter
Kom net achter iets waar ik even geen antwoord op heb en wat ik nog niet ben tegen gekomen?
Ik heb een tekstveld wat ik importeer.
Als ik dat na import omzet naar een datum veld dan heb ik 2 verschillende uitkomsten.
1 als de tekst is opgemaakt als vb: 01/01/2008 dan krijg ik keurig datum 01-01-2008
2 als de tekst is opgemaakt als vb: 01-01-2008 dan krijg ik de datum 01-01-2007?
Ik gebruik voor omzetten van de tekst gewoon:
Date ( Middle ( datumtekst ; 3 ; 2 ); Left ( datumtekst; 2) ; Right ( datumtekst ; 4 ) )
Hoe kan het dat ik in voorbeeld 2 voor het jaartal 2007 krijg (laatste 4 laatste tekens zijn echt 2008?)
De export is een tekst veld omdat de datum ook als volgt kan worden weergegeven :01 jan 2008
9 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.