Newsgroup: it.comp.appl.access
Titolo: Ricerca solo numeri e niente testo

Ciao a tutti, ho un problema stupido ma con la guida in linea di access 2000
non riesco a trovare la soluzione, mentre sul sito dell'NG ho trovato
qualcosa che potrebbe andare, me č solo per maschere e non per le query
Ho un campo (telefono) con maschera di input, con dati di questo tipo
02 -95959595 - nome responsabile.
Credo che esista una funzione che mi restituisca solo 02 -95959595 oppure 02
95959595, entrambi i formati mi andrebbero bene, ma non so come si chiama.
Ps a voi la guida di access vi piace?
Grazie per le risposte,  Franco


Beh, ci sono le funzioni: Left(), Mid(), Right() e Instr(); intendevi
queste?
La guida di Access? E' la prima fonte a cui attingere informazioni, in
alcuni casi anche l'unica... Quindi di necessità si fa virtù!
Ciao.

 Grazie per le risposte,  Franco
Per fare quello che chiedi non c'e' _una_ funzione, ma dovresti creartene una
che fa al tuo caso usando quelle che ti ha consigliato Sergio.
pero' se come dici il formato del testo e' sempre lo stesso, cioe':
prefisso-telefono-nome
allora prova con questa:
--------------------------------
Function tbExtractStr(strIn, intNeedSegment, strDelimiter, Optional strNotFound
As String) As String
    ' Function to chop a input string into segments and return the requested
segment
    ' Written and developed by Thomas M. Brittell
    ' Copyright 1998; All rights reserved.
    ' strIn          - Input string to be segmented
    ' intNeedSegment - Indicates the segment to be returned
    ' strDelimiter   - The delimiter used to seperate each segment
    ' strNotFound    - When no segment is found return the specified string if
provided
    Dim intCurrentPosition As Integer
    Dim intFoundPosition   As Integer
    Dim intLastPosition    As Integer
    Dim intGetSegment      As Integer
    Dim wrkNotFound        As String
    If IsEmpty(strNotFound) Or strNotFound = "" Then
        wrkNotFound = ""
    Else
        wrkNotFound = strNotFound
    End If
    intCurrentPosition = 0
    intFoundPosition = 0
    intLastPosition = 0
    intGetSegment = intNeedSegment
    Do While intGetSegment > 0
        intLastPosition = intCurrentPosition
        'Find a occurance of the delimiter
        intFoundPosition = InStr(intCurrentPosition + 1, strIn,
left$(strDelimiter, 1))
        If intFoundPosition > 0 Then
            intCurrentPosition = intFoundPosition
            intGetSegment = intGetSegment - 1
        Else
            'End of input string so exit
            intCurrentPosition = Len(strIn) + 1
            Exit Do
        End If
    Loop
    'If nothing was found and you had at least one delimiter return ""
    If (intFoundPosition = 0) And ((intGetSegment <> intNeedSegment) And
(intGetSegment > 1)) Then
        tbExtractStr = wrkNotFound
    Else
        'Return the segment between the last position and the current one
        tbExtractStr = Mid$(strIn, intLastPosition + 1, intCurrentPosition -
intLastPosition - 1)
    End If
End Function
--------------------------------
la devi utilizzare cosi':
prefisso = tbExtractStr("02 -95959595 - pippo",1 ,"-")
telefono = tbExtractStr("02 -95959595 - pippo",2 ,"-")
nome = tbExtractStr("02 -95959595 - pippo",3 ,"-")
per eliminare gli spazi usa trim$:
telefono = trim$(tbExtractStr("02 -95959595 - pippo",2 ,"-"))
o modifica la funzione tbExtractStr
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Ps a voi la guida di access vi piace?
preferisco Laureen Bacall, ma insomma, anche la guida non e' male.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 
ti piace lo "stagionato" eh?
-- 
Alessandro Cara

 [cut]
be visto che ci siamo :
Public Function Token(str As String, str1 As String, Num As Integer) As
String
	' str = stringa da controllare
	' str1 = lista dei delimitatori
	' num = numero del token da prelevare
	' by Pia Toro & A. Cara
    Dim i As Long
    Dim k As Long
    Dim n As Long
    Dim j As Long
    Dim str0 As String
    k = 0
    str0 = Left(str1, 1) & str & Left(str1, 1)
    For i = 1 To Len(str0)
     If InStr(str1, Mid(str0, i, 1)) > 0 Then
       If InStr(str1, Mid(str0, i + 1, 1)) = 0 Or i = Len(str0) Then
        k = k + 1
        If k = Num + 1 Then
            Token = Mid(str0, j + 1, n - j)
            Exit For
         Else
            j = i
        End If
       End If
     Else
        n = i
     End If
    Next i
End Function
a proposito questa l'ha scritta una laureata in matematica (si vede
dall'uso di i,k,n,j) che non sapeva che cos'era un byte ma era anzi e'
una SPADA
vantaggi rispetto all'altra, puoi passare quanti delimitatori vuoi
svantaggi, non fa il test su null, non c'e' parametro per non trovato ma
mi sembra che torna ""
-- 
Alessandro Cara

 Alessandro Cara
Ti va bene se la metto sul Sito Comune, mi sembra non ci sia nulla di simile?


una SPADA
che io ho avuto il piacere di avere come collega e che sapeva (e sa)
come andarsi a cercare le cose "extracurricolari" o che non facevano
parte del suo piano di studi.


ti piace lo "stagionato" eh?
dai, vuoi mettere le grandi attrici de na vorta (certo, ai tempi loro)
con le sciacquette di adesso?
comunque volevo dire che anche Gloria Guida non e' male...


 
non c'e' problema. In genere la uso accoppiata a:
Public Function NumToken(str As String, str1 As String) As Integer
'restituisce quanti argomenti ci sono separati da uno o più separatori
'all'interno di una stringa
' by P.Toro & A.Cara
Dim str0 As String
    Dim i As Integer
    Dim k As Integer
    str0 = Left(str1, 1) & str & Left(str1, 1)
    k = 0
    For i = 1 To Len(str0)
      If InStr(str1, Mid(str0, i, 1)) > 0 Then
       If InStr(str1, Mid(str0, i + 1, 1)) = 0 Then
            k = k + 1
       End If
     End If
    Next i
   NumToken = k
End Function
es ix=NumToken("Nella,seguente situazione!()Cercare la          
soluzione",",()! ")
torna x=6 (N.B. nella stringa delimitatori c'e' lo spazio)
es sx=Token("Nella,seguente situazione!()Cercare la          
soluzione",",()! ",6)
torna x='soluzione'
-- 
Alessandro Cara