Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    ho un dubbio questa funzione
    codice:
    function ControllaCF(cf)
    {
    
        var validi, i, s, set1, set2, setpari, setdisp;
        if( cf == '' )  return '';
        cf = cf.toUpperCase();
        if( cf.length != 16 )
            return "La lunghezza del codice fiscale non �\n"
            +"corretta: il codice fiscale dovrebbe essere lungo\n"
            +"esattamente 16 caratteri.\n";
        validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for( i = 0; i < 16; i++ ){
            if( validi.indexOf( cf.charAt(i) ) == -1 )
                return "Il codice fiscale contiene un carattere non valido `" +
                    cf.charAt(i) +
                    "'.\nI caratteri validi sono le lettere e le cifre.\n";
        }
        set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
        setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
        s = 0;
        for( i = 1; i <= 13; i += 2 )
            s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
        for( i = 0; i <= 14; i += 2 )
            s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
        if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
            return "Il codice fiscale non � corretto:\n"+
                "eventualmente chiamare il cliente per conferma.\n";
        return "";
    }
    non è possibile tenerla come è modificandogli solo i return come la funzione della partita iva ?

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    suggerimenti e correzioni varie...

    Quote Originariamente inviata da ElyCucciola Visualizza il messaggio
    ho un dubbio questa funzione
    codice:
    function ControllaCF(cf)
    {
    
        var validi, i, s, set1, set2, setpari, setdisp;
        if( cf == '' )  return '';
        cf = cf.toUpperCase();
        if( cf.length != 16 )
            return "La lunghezza del codice fiscale non �\n"
            +"corretta: il codice fiscale dovrebbe essere lungo\n"
            +"esattamente 16 caratteri.\n";
        validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for( i = 0; i < 16; i++ ){
            if( validi.indexOf( cf.charAt(i) ) == -1 )
                return "Il codice fiscale contiene un carattere non valido `" +
                    cf.charAt(i) +
                    "'.\nI caratteri validi sono le lettere e le cifre.\n";
        }
        set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
        setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
        s = 0;
        for( i = 1; i <= 13; i += 2 )
            s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
        for( i = 0; i <= 14; i += 2 )
            s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
        if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
            return "Il codice fiscale non � corretto:\n"+
                "eventualmente chiamare il cliente per conferma.\n";
        return "";
    }
    non � possibile tenerla come � modificandogli solo i return come la funzione della partita iva ?
    A parte la funzione che hai scritto tu, io ti ho dato la mia funzione perch� l'ho testata su decine di migliaia di casi...
    Ci sono altre cose che secondo me � meglio correggere
    per esempio il costrutto che ti posto preso dal tuo codice...
    codice:
    SQL = "Select  partitaiva,codicefiscale,id From cli where codicefiscale='"&codfisc&"' " 
    Set DB = Conn.Execute(SQL)
    
      'Session("id") = RS("id")
        
    While DB.EOF 
    Response.Redirect "nuovocli.asp?cdf="&codfisc&""
    
    DB.MoveNext
          
        Wend
    ...
    per me � sbagliato
    il codice corretto sarebbe invece
    [code]
    SQL = "Select partitaiva,codicefiscale,id From cli where codicefiscale='"&codfisc&"' "
    Set DB = Conn.Execute(SQL)
    if DB.EOF then
    Response.Redirect "nuovocli.asp?cdf="&codfisc&""
    else
    '...che fai se trovi il record cliente?
    '
    end if
    '...
    poi il fatto del return Falso alla funzione non risolve il problema del tuo codice...
    Lo script che io ti ho rifatto impefdisce l'utente di inviare il modulo se uno o tutti e due i campi sono sbagliati
    il tuo codice invece passa tranquillamente il controllo se sono giusti o sbagliati... perche lla chiamata che fai l'hai
    ai controlli l'hai messa su due livelli di chiamata a funzione.
    la funzione verifica deve essere una sola e dare un solo valore in risposta :input corretto o sbagliato. codi se sbagliato esci dalla funzione mentre se superi i due controlli prosegue al fondo del controllo e lancia la funzione che fa proseguire il programma.
    Quindi quando esegui la funzione Controllo CF ti aspetti true o false per esmpio e se false dai il messaggio di errere ed esci con ret7urn posizionando il cursore sul campo come ti ho fatto io nella funzione che ti ho postato altrimenti prosegui su controlloPI e anche li fai la stessa cosa. Se il programma arriva oltre vuol dire che ha superato il test... e prosegue a inserire la scheda cliente....
    Io cambierei il codice che hai fatto facendo una sola routine al posto si VerificaCF e VerificaPI...
    Come ti ho suggerito naturalmente tu sei libera di scrivere codice come ti pare . Dal canto mio io scrivo codice da molti anni (diciamo pi� di trenta...) e ne vedo di tutti i colori...
    Considera i miei suggerimenti e ragionaci su
    un saluto
    Vic53

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.