Jump to content
  • 0

vraagje naar efficientie van controlescript.


alfashirt

Question

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 to comment

12 answers to this question

Recommended Posts

  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 to comment
  • 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 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...