Jump to content
  • 0

TxtToDate formulehint gevraagd


Gido_

Question

Posted

Dag allemaal :lol: Lang geleden...! :oops:

 

In een FM6 database heb ik een tekstveld voorzien voor de datum, zodat je een beetje speling hebt wat betreft het intikken.

 

* Als er bv enkel een jaartal wordt ingetikt, verreken ik het achter de schermen ook met een datumcalculatie tot een volledige echte datum. (voor sorteerdoeleinden)

* Wanneer een datum wordt ingetikt zoals gebruikelijk, dan kan ik gewoon een TextToDate uitvoeren.

 

* Maar nu zou ik ook nog graag hebben dat wanneer datumtekst ingevoegd wordt in de vorm van jan 12, 2005, dat deze achter de schermen omgecalculeerd kan worden naar een echt datumveld.

 

Ik wou hier dus zonder probleem 12 Case calculaties voor maken of zo, maar ik kom er niet goed uit... Vooral omdat je een volledige datum blijkbaar niet kan maken door deeltjes van dat tekstveld op te tellen (door "&" of "+")...? Of kan dat wel?

 

Bedankt voor enige hint 8)

 

P.S. Met een script zou ik het wel kunnen, maar de bedoeling is dus om het met een calculatie te doen.

7 answers to this question

Recommended Posts

  • 0
Posted

Om nog te melden wat ik hiervoor gebruikt heb:

 

Calculatieveld met Datum als resultaat, gebaseerd op een dateInput die allerlei (Engelse) formaten kan/moet krijgen.

 

TextToDate(

Case(

WordCount(dateInput)=2 and Left(dateInput;3)="jan"; "01/01/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="feb"; "01/02/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="mar"; "01/03/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="apr"; "01/04/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="may"; "01/05/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="jun"; "01/06/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="jul"; "01/07/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="aug"; "01/08/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="sep"; "01/09/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="oct"; "01/10/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="nov"; "01/11/" & Right(dateInput; 4) ;

WordCount(dateInput)=2 and Left(dateInput;3)="dec"; "01/12/" & Right(dateInput; 4) ;

 

Length(dateInput) = 6; Middle(dateInput; 3; 2) & "/" & Left(dateInput; 2) & "/" & Case(Right(dateInput; 2) <= 20; "20" & Right(dateInput; 2) ; "19" & Right(dateInput; 2)) ;

 

Length(dateInput) < 6; Substitute("01/01/xxxx"; "xxxx" ; Right(TextToNum(dateInput);4 ));

Length(dateInput)=9 and PatternCount( dateInput ; "-" )=1 ; Substitute("01/01/xxxx"; "xxxx" ; Right(TextToNum(dateInput);4 )) ;

 

Left(dateInput;3)="jan"; MiddleWords( dateInput; 2 ; 1) & "/" & "01" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="feb"; MiddleWords( dateInput; 2 ; 1) & "/" & "02" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="mar"; MiddleWords( dateInput; 2 ; 1) & "/" & "03" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="apr"; MiddleWords( dateInput; 2 ; 1) & "/" & "04" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="may"; MiddleWords( dateInput; 2 ; 1) & "/" & "05" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="jun"; MiddleWords( dateInput; 2 ; 1) & "/" & "06" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="jul"; MiddleWords( dateInput; 2 ; 1) & "/" & "07" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="aug"; MiddleWords( dateInput; 2 ; 1) & "/" & "08" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="sep"; MiddleWords( dateInput; 2 ; 1) & "/" & "09" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="oct"; MiddleWords( dateInput; 2 ; 1) & "/" & "10" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="nov"; MiddleWords( dateInput; 2 ; 1) & "/" & "11" & "/" & Right(dateInput; 4) ;

Left(dateInput;3)="dec"; MiddleWords( dateInput; 2 ; 1) & "/" & "12" & "/" & Right(dateInput; 4) ;

 

MiddleWords(dateInput; 2 ; 1) & "/" & LeftWords( dateInput ; 1 ) & "/" & Right(dateInput; 4)))

 

 

Gezien ik vooral met Engelse data te maken krijg *moet* je de maand eerst invullen.

Toegelaten zijn:

 

mon yyyy

month yyyy

mon d, yyyy

month d, yyyy

mmddyy (00 tem 20 wordt 20yy, 21-99 wordt 19yy)

mm/dd/yyyy

mm-dd-yyyy

yyyy (wordt 1/01/yyyy)

yyyy-yyyy (wordt 1/01/yyyy van het 2e jaartal)

yyyy? (wordt 1/01/yyyy)

 

Al deze formaten worden omgerekend naar een Nederlandse systeemdatum, waarop je dan kan sorteren en zo 8)

 

Je zou nog wel even kunnen doorgaan, en er zitten natuurlijk ook geen professionele validaties allerlei op :wink:

  • 0
Posted

Ik vind popup kalender gebruik de snelste en beste methode om datums in te voeren en raad zeker tekstveld invoer af.Dan ben je zowiezo van die omreken ellende af :D

  • 0
Posted

Ja, maar je hebt nu eenmaal niet van alles een normale datum hé. Als het over films gaat dan weet je soms bv maar een jaartal, of een maand en een jaar.

Als het over pdfs met magazines gaat kan het een range zijn.

Gewoon copy/paste van mmddyy US data van een filenaam is ook handig, etc. :wink:

Voor mijn toepassing ben ik niets met een zuiver datumveld.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...