Jump to content
  • 0

Streepjes bij kenteken


Corne

Question

Dag allemaal,

Op een kentekenplaat bevinden zich streepjes. Het lukt mij niet om een sluitende formule te maken wáár die streepjes geplaatst moeten worden voor de leesbaarheid van een kenteken, als deze zonder streepjes wordt ingevoerd. Met het oog kun je ze waarschijnlijk zó plaatsen, met een formule is het lastiger. Zo een greep uit mogelijke combinaties:

XX-99-99
99-99-XX
99-XX-99
XX-99-XX
XX-XX-99
99-XX-XX
99-XXX-9
9-XXX-99
XX-999-X
X-999-XX
XXX-99-X

Hebben jullie misschien suggesties?

Hartelijke groet!
Corné.

Link to comment

11 answers to this question

Recommended Posts

  • 0
Let ( 
[
xInvoer = Upper ( invoer ) ; 
xText = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; 
xNummers = "0123456789" ; 
x222 = Middle ( xInvoer ; 1 ; 2 ) & "-" & Middle ( xInvoer ; 3 ; 2 ) & "-" & Middle ( xInvoer ; 5 ; 2 ) ; 
x231 = Middle ( xInvoer ; 1 ; 2 ) & "-" & Middle ( xInvoer ; 3 ; 3 ) & "-" & Middle ( xInvoer ; 6 ; 1 ) ; 
x132 = Middle ( xInvoer ; 1 ; 1 ) & "-" & Middle ( xInvoer ; 2 ; 3 ) & "-" & Middle ( xInvoer ; 5 ; 2 ) ; 
x321 = Middle ( xInvoer ; 1 ; 3 ) & "-" & Middle ( xInvoer ; 4 ; 2 ) & "-" & Middle ( xInvoer ; 6 ; 1 )  
] ; 

Case ( 
Length ( Filter ( Left ( xInvoer ; 4 ) ; xText ) ) = 4 ; x222 ; 
Length ( Filter ( Left ( xInvoer ; 3 ) ; xText ) ) = 3 ; x321 ; 
Length ( Filter ( Left ( xInvoer ; 2 ) ; xText ) ) = 2 ; If ( Length ( Filter ( Right ( xInvoer ; 4 ) ; xText ) ) = 1 ; x231 ; x222 ) ; 
Length ( Filter ( Left ( xInvoer ; 1 ) ; xText ) ) = 1 ; x132 ; 
Length ( Filter ( Left ( xInvoer ; 4 ) ; xNummers ) ) = 4 ; x222 ; 
Length ( Filter ( Left ( xInvoer ; 3 ) ; xNummers ) ) = 3 ; "" ; 
Length ( Filter ( Left ( xInvoer ; 2 ) ; xNummers ) ) = 2 ; If ( Length ( Filter ( Right ( xInvoer ; 4 ) ; xNummers ) ) = 1 ; x231 ; x222 ) ; 
Length ( Filter ( Left ( xInvoer ; 1 ) ; xNummers ) ) = 1 ; x132 ; 
"" )

)

Met een veld <invoer> waarin je de basis ingeeft en berekend veld met de bovenstaande berekening zou het moeten werken.

Ook kan je de auto-enter door een calculatie gebruiken.

rmw

Link to comment
  • 0

Nog een suggestie:

let([
filternum="1234567890";
filtertext="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
code=filter(upper(<invoer>) ; filternum & filtertext);
f=case(filter(left(code;1); filternum) = ""; filternum; filtertext);  
p1=case(filter(left(code;4); f)=""; left(code;2); filter(left(code;3); f)=""; left(code;3);filter(left(code;2); f)=""; left(code;2); left(code;1));
code=middle(code;length(p1)+1;6);
f=case(filter(left(code;1); filternum) = ""; filternum; filtertext);  
p2=case(filter(left(code;4); f)=""; left(code;2); filter(left(code;3); f)=""; left(code;3);filter(left(code;2); f)=""; left(code;2); left(code;1))
];
p1 & "-" & p2 & "-" &middle(code;length(p2)+1;6)
)

Link to comment
  • 0

Nog een suggestie

met de Custom-Function (Eigen Functie) AutoHyphen ( Kenteken ) :

Let ( [ 
	chars 	= "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; 
	nmbrs 	= "1234567890" ; 
	kntkn 	= Filter ( Upper ( kenteken ) ; chars & nmbrs ) ; 
	this   	= Left ( kntkn ; 1 ) ; 
	rest   	= Middle ( kntkn ; 2 ; Length ( kntkn ) - 1 ) ; 
	next   	= Left ( rest ; 1 ) ; 
	isdiff 	= PatternCount ( chars ; this ) and PatternCount ( nmbrs ; next ) or 
		  PatternCount ( chars ; next ) and PatternCount ( nmbrs ; this )
] ; 
	Case ( 	IsEmpty ( next ) ; this ; // Geen volgende letter of cijfer, dus hier stopt de afloop
	  	this & If ( isdiff ; "-" ) & AutoHyphen ( rest ) ) 
)

 

Link to comment
  • 0
Op 05/01/2019 om 17:42 zei menno:

met de Custom-Function (Eigen Functie) AutoHyphen ( Kenteken ) :

Deze recursieve CF gaat mis bij een reeks van 4 letters of cijfers. 

De eerste formulering van RMW werkt volgens mij wel. Goede suggestie om even te filteren op getallen en hoofdletters.

Link to comment
  • 0

De methodes van RMW en Infomatics werken met de voorbeelden die ik zelf heb gebruikt. Indrukwekkend, beiden dank daarvoor!

Menno, dank voor je input. Ik begrijp de AutoHyphen function niet. Deze is toch niet gedefinieerd? Ik zie iets over het hoofd?

Link to comment
  • 0
13 uur geleden zei Marsau:

Deze recursieve CF gaat mis bij een reeks van 4 letters of cijfers. 

De eerste formulering van RMW werkt volgens mij wel. Goede suggestie om even te filteren op getallen en hoofdletters.

Heb je even een voorbeeld waar het niet werkt Mars?

Ik heb net deze formule even vanaf dit topic terug gekopiëerd en geplakt om schrijffouten uit te sluiten en heb diverse combinaties van 4 cijfers en 4 letters, met en zonder extra karakters geprobeerd. Gaan allemaal goed.

Link to comment
  • 0
4 uur geleden zei Corne:

De methodes van RMW en Infomatics werken met de voorbeelden die ik zelf heb gebruikt. Indrukwekkend, beiden dank daarvoor!

Menno, dank voor je input. Ik begrijp de AutoHyphen function niet. Deze is toch niet gedefinieerd? Ik zie iets over het hoofd?

Ga naar het menu "Bestand/Beheer/Eigen functies..." en daar kan je deze functie zelf toevoegen. Geeft als naam AutoHyphen, daaronder in de parameters voeg je de naam Kenteken toe en in het formule-veld de functie hierboven.

Vervolgens kan je FM deze functie gebruiken als AutoHyphen ( "AA123BB" ) en die geeft dan als antwoord AA-123-BB

Overigens: deze functie is recursief (roept zichzelf aan totdat een stop-conditie geldt) en die kan je alleen als eigen-functie definiëren en niet als velddefinitie. Je kan een eigen-functie wél in velddefinities gebruiken. Zie ook de help van FileMaker: https://fmhelp.filemaker.com/help/17/fmp/nl/#page/FMP_Help%2Fcustom-functions.html%23 

Link to comment
  • 0
3 uur geleden zei menno:

Heb je even een voorbeeld waar het niet werkt Mars?

Ik heb net deze formule even vanaf dit topic terug gekopiëerd en geplakt om schrijffouten uit te sluiten en heb diverse combinaties van 4 cijfers en 4 letters, met en zonder extra karakters geprobeerd. Gaan allemaal goed.

Hi Menno,

Wat ik heb gezien..

Bijvoorbeeld: 24llxb levert een foutief resultaat: 24-LLX-B

Een reeks van vier letters zou moeten leiden tot twee gelijke paren: 24-LL-XB

Ik dacht dat dit kwam omdat je in de recursie slechts steeds checkt of er een wisseling cijfer/letter of letter/cijfer plaatsvindt, maar er speelt een dus nog een conditie. RMW heeft dat uitgekauwd in zijn formule.

Link to comment
  • 0

Ach ja ?nooit meer aan gedacht dat we ook nog kentekens hebben met combinaties in 3 paren hetzelfde type. Dat lost mijn CF inderdaad niet op, die "kijkt" alleen of het volgende karakter van hetzelfde type cijfer of letter is en plakt er dan een streepje in  ?Iets te kort door de bocht dus 

Overigens als bij jou het antwoord: 24-LLX-B is, heb je de formule niet overgenomen zoals ik hem heb gemaakt, want bij mijis het resultaat: 24-LLXB

Link to comment
  • 0
On 1/8/2019 at 3:03 PM, menno said:

Ga naar het menu "Bestand/Beheer/Eigen functies..." en daar kan je deze functie zelf toevoegen. Geeft als naam AutoHyphen, daaronder in de parameters voeg je de naam Kenteken toe en in het formule-veld de functie hierboven.

Ah, ik zie wat ik fout heb gedaan. Ik had de functie niet AutoHyphen genoemd, maar Kenteken3 (Kenteken1 en Kenteken2 voor de andere methodes). Ik wist niet dat je de functies recursief kon gebruiken, vandaar mijn verwarring.

Heren, bijzonder bedankt voor het meedenken en jullie tijd. Als ik de Let functies zo zie was ik hier niet zomaar opgekomen. Fijn!

Link to comment

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...