Newsgroup: it.comp.www.asp
Titolo: Prefisso telefonico

ciao a tutti,
ho provato un pò sul NG ma non ho trovato la soluzione....
Il mio problema è questo: devo generare un file di testo txt da una
elaborazione su un DB. Tra i campi da esportare ho un campo varchar di
max 4 cifre: è un prefisso telefonico, quindi di 2, 3 o 4 cifre (es.
02, 021, 0187). Come formattare in uscita il campo in modo da avere
sempre 4 caratteri aggiungendo gli "0" che mancano? Cioe' 02 diventa
0002, 021 diventa 0021??
Conto su di voi :-))
Stefano

Fast wrote:

vecchioprefisso = "02"   ' o qualsiasi altro...
prefisso = Right("000" & vecchioprefisso, 4)
--
visuddhi { info at visuddhi dot com } { icq# 44339752 }
if it is to be, it is up to me { 
www.visuddhi.com
 }
absolutely free, VisuBox { 
www.visubox.com
 }

fal...@yahoo.it
 scrive...

Lo puoi lasciar fare al db oppure in ASP.
Non dici quale db usi quindi non è detto che si possa fare.
In ASP è semplice, e seguendo l'idea suppongo potrai farlo anche sul 
db, che abbia una funzione (right...) built-in o che te la fai tu, se 
possibile.
prefisso = "39"
prefisso = Right(("0000" & prefisso), 4)
Come vedi, aggiunge comunque 4 zeri davanti al prefisso, poi del tutto 
prende solo le ultime quattro battute: vale a dire che vengono troncati 
gli zeri in eccesso a sinistra.

 ha scritto nel messaggio
news:58f1ac75.0404...@posting.google.com...

Sinceramente non ricordo dove... ma sono sicuro al 100% che questo script
esiste già bello e pronto... o su aspitalia oppure lo ricavi da una bravata
fatta da un programmatore poco furbo.
Se guardi quello che passa nell'url della pagina di verifica copertura adsl
della pagina di atlanet, modificando i numeri con caratteri ottieni un
errore in un file .inc
Se poi digiti l'url del file .inc, te lo prendi e ci trovi proprio lo script
che dici tu bello e commentato
Complimenti al programmatore che non l'ha nominato .asp !!!

 0002, 021 diventa 0021??
Prefisso = "02"
If Len(Prefisso) < 4 Then Prefisso = String(4 - Len(Prefisso), "0") &
Prefisso

 ha scritto nel messaggio
news:58f1ac75.0404...@posting.google.com...

L'ho fatto io per te....
'-----------------------------------------------------------------
'Questa funzione estrae il prefisso da un numero telefonico fisso
'-----------------------------------------------------------------
Function FindPrefix(nTel)
    Dim nPrefix
    Dim sCifra
    sCifra = Mid(nTel, 1, 1)
    If getPrimaCifra(sCifra) Then
        nPrefix = "0"
    Else
        FindPrefix = "000"
        Exit Function
    End If
    sCifra = Mid(nTel, 2, 1)
    If getSecondaCifra(sCifra) Then
        nPrefix = nPrefix + sCifra
    Else
        FindPrefix = nPrefix + sCifra
        Exit Function
    End If
    sCifra = Mid(nTel, 3, 1)
    If getTerzaCifra(sCifra) Then
        nPrefix = nPrefix + sCifra
    Else
        FindPrefix = nPrefix + sCifra
        Exit Function
    End If
    FindPrefix = nPrefix + Mid(nTel, 4, 1)
End Function
'-----------------------------------------------------------------
'Questa funzione verifica la prima cifra del
'prefisso di un numero telefonico fisso
'-----------------------------------------------------------------
Function getPrimaCifra(sCifra)
    Select Case sCifra
	Case "0"
	    getPrimaCifra = True
	Case Else
	    getPrimaCifra = False
    End Select
End Function
'-----------------------------------------------------------------
'Questa funzione verifica la seconda cifra del
'prefisso di un numero telefonico fisso
'-----------------------------------------------------------------
Function getSecondaCifra(sCifra)
    Select Case sCifra
        Case "1", "3", "4", "5", "7", "8", "9"
            getSecondaCifra = True
        Case "2", "6"
            getSecondaCifra = False
    End Select
End Function
'-----------------------------------------------------------------
'Questa funzione verifica la terza cifra del
'prefisso di un numero telefonico fisso
'-----------------------------------------------------------------
Function getTerzaCifra(sCifra)
    Select Case sCifra
        Case "2", "3", "4", "6", "7", "8"
             getTerzaCifra = True
        Case "0", "1", "5", "9"
             getTerzaCifra = False
    End Select
End Function
'-----------------------------------------------------------------
'Questa funzione esprime un prefisso di un numero di telefono
'fisso su tre cifre
'-----------------------------------------------------------------
Function getPrefissoTreCifre(sPrefix)
    sPrefix = Trim(sPrefix)
    Select Case Len(sPrefix)
        Case 2
            getPrefissoTreCifre = "0" + sPrefix
        Case 3
            getPrefissoTreCifre = sPrefix
        Case 4
            getPrefissoTreCifre = Mid(sPrefix, 2, 3)
    End Select
End Function

Beh!! Grazie a tutti dei suggerimenti...
Provo le varie soluzioni e se ho problemi.... mi ritrovate qui :-)
Stefano

Questa soluzione è mitica.
Complimenti

Se il db è MySQL una funzione del DB stesso è dare ai campi la dimensione e
la proprietà ZEROFILL che riempie di zeri la parte iniziale.
Ma una funzione ome quelle che ti hanno presentato sotto, va benissimo