Spring naar bijdragen
  • 0
Corne

Streepjes bij kenteken

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

Deel dit bericht


Link naar bericht

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

Deel dit bericht


Link naar bericht
  • 0

Wow, RMW, je hebt er werk van gemaakt! Dank daarvoor! Ik ga het uitproberen, ik laat je weten hoe het gaat. :-)

Deel dit bericht


Link naar bericht
  • 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)
)

Deel dit bericht


Link naar bericht
  • 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 ) ) 
)

 

Deel dit bericht


Link naar bericht
  • 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.

Deel dit bericht


Link naar bericht
  • 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?

Deel dit bericht


Link naar bericht
  • 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.

Deel dit bericht


Link naar bericht
  • 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 

Deel dit bericht


Link naar bericht
  • 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.

Deel dit bericht


Link naar bericht
  • 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

Deel dit bericht


Link naar bericht
  • 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!

Deel dit bericht


Link naar bericht

Maak een account aan of meld je aan om een opmerking te plaatsen

Je moet lid zijn om een opmerking achter te kunnen laten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
×