Newsgroup: it.comp.lang.visual-basic
Titolo: Quick&Dirty conversione a stringa

Salve!
Ecco una piccola routine per convertire in
stringa qualunque per una query.
E' una q&d, quindi ci potrebbero essere casi particolari.
Ciao
Andrea
Codice:
------------------------------------------------------
Private Function StrConvert(Value) As String
    Dim TempRes As String
    If IsNull(Value) Then
        TempRes = Null
    Else
        TempRes = CStr(Value)
    End If
End Function
------------------------------------------------------

 E' una q&d, quindi ci potrebbero essere casi particolari.
Direi anche troppo quick e molto dirty.
1) non va bene per i decimali
2) non va bene per le date
3) non risolve il problema degli apicini
4) non restituisce niente
Ciao
Alberto

 4) non restituisce niente
spero che andrea non se ne abbia a male, ma...
rotfl
--
Salutoni
Sergio

 ha scritto nel messaggio
news:b44gvh$1rp1cb$1...@ID-170738.news.dfncis.de...

scusa, ma cosa vorresti fare con questo?

 Alberto
Andrea

We perché tu non sbagli mai? :-)
Andrea

Ecco come _in teoria_ avrebbe dovuto essere( versione "corretta" ):
Private Function StrConvert(Value) As String
    Dim TempRes As String
    If IsNull(Value) Then
        TempRes = "Null"
    Else
        TempRes = "'" & CStr(Value) & "'"
    End If
    StrConvert = TempRes
End Function

 Me ne sono accorto poco fa... :-(
OK.
Ciao
Alberto


Emhh...
Per 'Apicini' intendevo il replace dell'apicino col doppio apicino per
evitare problemi con la query.
Il discorso del Null adesso è corretto, ma questa function opera solo su
campi di testo. Se è questo l'intento, va bene, altrimenti mi sembra
oggettivamente troppo quick.
Comunque apprezzo che tu abbia postato una tua idea. Spero ti sia chiaro che
i miei commenti vogliono essere suggerimenti, che sei poi libero di
ignorare.
Ciao
Alberto

sì, infatti....
è sbagliato aggiungere gli apicini come ha fatto TheDeerBar....
se alla function passo BIRRA, mi viene ritornato 'BIRRA'
le stringhe son diverse......
Dim Temp as String
Temp="BIRRA"
If Len(Temp)<>Len(StrConvert(Temp)) = True Then
    Msgbox "Le stringhe son diverse!!"
End If
good coding!!!
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
dam...@italiainfiera.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 End If
Certo.
Ma in questo senso invece sono d'accordo con DeerBear.
Se vuoi gestire il NULL, non c'č altro modo che inserire gli apicini
all'interno della function.
Ovviamente nella concatenazione di creazione della stringa Sql, gli apicini
non ci vorranno.
La mia osservazione precedente era legata al caso degli apicini all'interno
della stringa (apostrofi ed accenti), che devono essere raddoppiati con un
replace$.
Ciao
Alberto

Questa dovrebbe mettere d'accordo tutti.
Se non vi piace, non usatela.
Ciao
Private Function StrConvert(Value) As String
    Dim TempRes As String
    Dim TempDate As Date
    Dim TypeNameStr As String
    If IsNull(Value) Then
        TempRes = "Null"
    ElseIf IsDate(Value) Then
        TempDate = CDate(Value)
        TempRes = "'" & Format(TempDate, "yyyy mmm d", vbMonday,
vbFirstJan1) & "'"
    ElseIf IsNumeric(Value) Then
        TypeNameStr = TypeName(Value)
        If TypeNameStr = "currency" Then
            TempRes = Format(CCur(Value), "##,##0.00")
        ElseIf TypeNameStr = "double" Then
            TempRes = Format(CDbl(Value), "##,##0.00")
        Else
          TempRes = CStr(Value)
        End If
    Else
        TempRes = CStr(Value)
        TempRes = Replace$(TempRes, "'", "''", , , vbTextCompare)


 Alberto
Scusate se quoto male , e qui',  ma mi sono perso nei discorsi...
Cambio leggermente il post!
 "revisionare una stringa" per inserirla in un DB.
Dovrei controllare
1- il tipo di db
2- il metodo ( sql ,metodo addnew...)
3- gli apici
4- il null
5- ????
e alla fine formattarla
E per numeri, date  o altro
Al fine di creare una function alla quale passare il valore in modo che me
lo restitisca il piu' corretto possibile  posso farne una sola:
function XX ( tipodb,tipodatodarestituire,valore ??????) as ????
o devo usarne una per ogni tipo
In pratica cosa devo controllare per ridurre gli errori ( dato che sono
Newbbino... con poca esperienza)
Grazie in anticipo.

 End Function
ciaociao

 Se non vi piace, non usatela.
Non mi piace :p Non la uso !!!
Scherzo era per la solita questione dell'infierire di sopra ^__________^
cmq mi piacciono ste proposte , si potrebbe fare una cosa tipo : uno propone
un tema e tuti cercano di ottimizzarlo e poi queste func o sub si raccolgono
nelle faq o in un area del sito apposita , tipo il 3ad della conversione
data mio di qualche settimana fa !
Ottia idea DeerBear !

 Ottia idea DeerBear !
Naturalmente scherzo, anche io credo sia una buona idea!
ciaociao

  "revisionare una stringa" per inserirla in un DB.
Dunque...
Io uso questa (per Sql-Server / MSDE)
In realtà si appoggia ad altre function mie, che però puoi intuire dal nome
e farti con molta semplicità.
Da osservare che il valore viene passato come String.
Se, ad esempio, nella chiamata ho un Date, avviene un CStr implicito. Poi,
all'interno di questa function, effettuo un CDate esplicito, e CDate(Cstr si
annullano.
Questa function non gestisce il Null.
Alcune assegnazioni, ad esempio Tipo=ADTYPE, servono solo per mantenere la
compatibilità e la possibilità di copiaincolla con altre funzioni mie.
Ciao
Alberto
'Funzione che genera una stringa pronta per essere inserita in un command
SQL-Server
'già comprensiva di apicini se string, col punto se decimal, data se date,
ecc...
'Lunghezza=0 significa tutta lunghezza automatica
Public Function Stringa2SQL_ADTYPE(ByVal valore As String, ByVal ADTYPE As
Long, Optional ByVal Lunghezza As Long = 0) As String
    Dim Tipo As Long
    Dim LUN As Long
    Tipo = ADTYPE
    LUN = Int(Lunghezza)
    Select Case Tipo
        Case adBigInt, adCurrency, adDecimal, adDouble, adInteger,
adNumeric, adSingle, adSmallInt, adTinyInt, adUnsignedBigInt, adUnsignedInt,
adUnsignedSmallInt, adUnsignedTinyInt, adVarNumeric
            Stringa2SQL_ADTYPE = Decimale_Con_Punto(valore)
        Case adChar, adLongVarChar, adVarChar, adVarWChar, adWChar
            Stringa2SQL_ADTYPE = LEFT(LTrim(valore), LUN)
            Stringa2SQL_ADTYPE = Replace(Stringa2SQL_ADTYPE, "'", "''")
            If Stringa2SQL_ADTYPE = vbNullString Then Stringa2SQL_ADTYPE = "
"
            Stringa2SQL_ADTYPE = "'" & Stringa2SQL_ADTYPE & "'"
        Case adDate, adDBDate, adDBTime, adDBTimeStamp
            If Not IsDate(valore) Then valore = "01/01/1900 00:00"
            Stringa2SQL_ADTYPE = ConvData_VB_SQL(CDate(valore), valore)
            Stringa2SQL_ADTYPE = "'" & Stringa2SQL_ADTYPE & "'"
        Case adGUID
            Stringa2SQL_ADTYPE = "'" & Replace(valore, "'", vbNullString) &
"'"
        Case adBoolean
            Stringa2SQL_ADTYPE = CStr(Booleano_Per_SQL(CBool(valore)))
        Case Else
            Stringa2SQL_ADTYPE = "ERRORE"
    End Select
End Function

Grazie 1000
Ora mi dovro' rivedere "quasi tutto il progetto" al fine di ottimizzarlo.
;-)
Usa La Forza CRI