Ga naar inhoud
  • 0

vraagje naar efficientie van controlescript.


alfashirt

Vraag

in het veld telefoonnummer heb ik graag volgende notatie:

050/31.81.18 of 09/123.34.56

de verschillende gebruikers die gegevens kunnen invullen in dit veld zijn soms verstrooid. daarom laat ik dit controleren via een script.

 

ik controleer eerst als het veld leeg is via een if....

vervolgens controleer ik als er enkels cijfers gebruikt worden eveneens via een if....

vervolgens een controle dat de notatie goed is, eveens via een if....

en eveneens als het aantal cijfers klopt nl 9 cijfers via een if....

dit is 4 x een if....

kan dit efficienter, of laat ik het zoals het is.

Link naar reactie

12 antwoorden op deze vraag

Aanbevolen berichten

  • 0

probeer deze eens als automatisch invoeren berekening vervangt bestaande waarde:

 

Let ( [ 
input = GetAsText (  Filter ( telefoonnummer ; "0123456789" ) ) ;
chk = Length ( input ) = 9 ;
gsm = Left (  input  ; 2 ) = "09" 
];

Case 
(
not chk ; TextColor ( telefoonnummer ; RGB ( 220 ; 0 ; 0 ) ) ; //geen negencijferig nummer, druk af in rood 
Left ( input  ; 3 - gsm ) & "/" &  //als gsm, dan de eerste twee cijfers nemen, anders de eerste 3
Middle ( input ; 4 - gsm ; 2 + gsm ) & "." &  //als gsm, dan vanaf het derde getal, drie cijfers, anders vanaf het vierde getal, twee cijfers
Middle ( input ; 6 ; 2 ) & "." &  // altijd 2 cijfers
Middle ( input ; 8 ; 2 ) //altijd 2 cijfers
)
)

Link naar reactie
  • 0

ik herinner me zo'n waarschuwing maar het is niet beklijfd. Waar ging het ook al weer om? Het resultaat van deze auto-enter is een tekststring van cijfers en punten. De gebruiker zoekt op een nummer en dan? Tja. Als je dat mogelijk wilt maken kun je het zoeken scripten. Want je wilt dan ook dat een gebruiker kan zoeken met een geformatteerde string...

Doel je daarop?

Link naar reactie
  • 0

heb het een beetje aangepast zodat het per zonenummer in Belgie als volgt uitziet:

 

Let

( [ input = GetAsText ( Filter ( fax ; "0123456789" ) ) ;

chk = Length ( input ) = 9 ] ;

 

Case

(

not chk ; TextColor ( fax ; RGB (225; 0 ; 0 ) ) ;

( Left ( input ; 2 ) = "02" or Left ( input ; 2 ) = "03" or Left ( input ; 2 ) = "04" or Left ( input ; 2 ) = "09") and (Land = "");

TextColor ( Left ( input ; 2 ) & "/" & Middle ( input ; 3 ; 3 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB ( 0 ; 0 ; 0 ) ) ;

 

( Left ( input ; 2 ) = "01" or Left ( input ; 2 ) = "05" or Left ( input ; 2 ) = "06" or Left ( input ; 2 ) = "07" or Left ( input ; 2 ) = "08") and (Land = "");

TextColor ( Left ( input ; 3 ) & "/" & Middle ( input ; 4 ; 2 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB ( 0 ; 0 ; 0 ) )

) )

 

Hiermee is er telkens een éénduidige aanduiding, wat het zoeken uniform maakt, naar gelang de zone.

voor bijvoorbeeld zones Brussel : 02/123.45.68

voor bijvoorbeeld zone West vlaanderen: 050/12.34.56

Link naar reactie
  • 0

en zo heb ik het aangepast voor notatie van gsm of gewone telefoon in hetzelfde veld , daar er tegenwoordig veel mensen geen gewone tel meer hebben.

 

 

Let ( [

input = GetAsText ( Filter ( tel ; "0123456789" ) ) ;

chk9 = Length ( input ) = 9 ;

chk10 = Length ( input ) = 10

];

 

Case

(

((not chk9 and not chk10) or ( Left (input ; 2 ) ≠ "02" and Left (input ; 2) ≠ "03" and Left (input; 2 ) ≠ "04" and Left (input ; 2) ≠ "09" and Left (input ; 2 ) ≠ "01" and Left (input ; 2) ≠ "05" and Left (input; 2 ) ≠ "06" and Left (input ; 2) ≠ "07" and Left (input ; 2) ≠ "08") ); TextColor ( tel ; RGB ( 220 ; 0 ; 0 ) ) ;

 

(Left (input ; 2 ) = "02" or Left (input ; 2) = "03" or Left (input; 3 ) = "042" or Left (input; 3 ) = "043" or Left (input ; 2) = "09") and (Land = "") and chk9 ;

TextColor (Left ( input ; 2 ) & "/" & Middle ( input ; 3 ; 3 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB (0;0;0));

 

(Left (input ; 2 ) = "01" or Left (input ; 2) = "05" or Left (input; 2 ) = "06" or Left (input ; 2) = "07" or Left (input ; 2) = "08") and (Land = "") and chk9;

TextColor (Left ( input ; 3 ) & "/" & Middle ( input ; 4 ; 2 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB (0 ; 0 ; 0 ));

 

 

(not chk10 or ( Left ( input ; 3 ) ≠ "047" and Left ( input ; 3 ) ≠ "048" and Left ( input ; 3 ) ≠ "049" ) ); TextColor ( tel ; RGB ( 220 ; 0 ; 0 ) );

( Left ( input ; 3 ) = "047" or Left ( input ; 3 ) = "048" or Left ( input ; 3 ) = "049" ) and (Land = "") and chk10 ;

TextColor (Left ( input ; 4 ) & "/" & Middle ( input ; 5 ; 2 ) & "." & Middle ( input ; 7 ; 2 ) & "." & Middle ( input ; 9 ; 2 ) ; RGB (0; 0; 0));

TextColor ("000 000 000" ; RGB (225 ; 0 ; 0 ))

 

)

)

 

resultaat:

zone 050/12.34.56

zone 02/123.45.67

zone Luik: 04/312.12.12

en gsm: 0476/12.12.12

 

opmerkingen steeds welkom.

Link naar reactie
  • 0

:) ik dacht dat 09 gsm was.... net zoals in NL alle mobiele nummers met 06 beginnen. afijn....

er wordt wel erg veel gehardcodeerd zo.

Als dit werkt is het ook goed. Maar je hebt wel een hoop gedoe als er bijv. een omschakelmoment komt naar tiencijferige nummers voor alle aansluitingen of als de systematiek anderszins wijzigt. je zou kunnen overwegen om in een utility tabel lijstjes aan te leggen met nummergroepen en dan met patterncount() te kijken of je beginreeks eronder valt. Dit is een wild idee, zal er eens over nadenken.

Link naar reactie
  • 0

in Belgie beginnen alle Gsm nummers met 047 of 048 of 049

maar in de provincie Luik is het beginnummer 04. vandaar de opsplitsing.

gsm nummers is 10 cijfers, gewone telefoonnummers 9.

 

misschien veel werk, maar door de uniformiteit van schrijfwijze, kunnen we gemakkelijk opzoeken wie gebeld heeft (bv gemiste oproepen buiten kantooruren)

Link naar reactie
  • 0
... maar door de uniformiteit van schrijfwijze, kunnen we gemakkelijk opzoeken wie gebeld heeft (bv gemiste oproepen buiten kantooruren)

 

Dat doe ik anders. Ik laat ze zoeken/ingeven op een "gepoetst" veld:

 

auto-enter Filter(telefoon;"0123456789")

 

Op die manier kan je het telefoonnummer cijfermatig intikken en moet je niets afweten van formattering of geplogendheden.

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