Ga naar inhoud
  • 0

Streepjes bij kenteken


Corne

Vraag

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 naar reactie

11 antwoorden op deze vraag

Aanbevolen berichten

  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...