VB6 Cast da Variant a String

giovedì 19 marzo 2009 - 17.18

Sig. Travis Profilo | Junior Member

Ciao Ragazzi,

devo scrivere in una trace il contenuto di una colonna di tipo variant e devo quindi convertirla in string; sto provando con CStr e CVar ma purtroppo pur compilando il codice e generendo l'eseguibile, quando deve scrivere il valore letto, mi risponde con un ERRORE di tipo Type Mysmatch.

Come posso risolvere?

Grazie,
Ciao\G

sanbiz Profilo | Senior Member

>devo scrivere in una trace il contenuto di una colonna di tipo
>variant e devo quindi convertirla in string; sto provando con
>CStr e CVar ma purtroppo pur compilando il codice e generendo
>l'eseguibile, quando deve scrivere il valore letto, mi risponde
>con un ERRORE di tipo Type Mysmatch.

Una colonna di cosa, di una griglia, di un recordset ecc.?
Prova a postare la riga interessata, dato che ci deve essere qualche cosa di differente dalla semplice conversione; infatti come puoi vedere, l'esempio qui di seguito non da errore (lo so che è banale, ma l'idea è quella)


Dim myVar as variant
myVar = "pippo"
debug.print myVar
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

Sig. Travis Profilo | Junior Member

Ciao, grazie della risposta.

La colonna è di una tabella Access e contiene dati relativi ad un'operazione bancomat, quindi dati alfanumerici standard.

Grazie,
Ciao\G

sanbiz Profilo | Senior Member

Non dovrebbero esserci quindi particolari problemi, dato che in Access una colonna alfanumerica contiene stringhe.
Prova a postare la parte di codice che ti da errore in modo da poter avere una visione più completa della tua situazione.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

Sig. Travis Profilo | Junior Member

Questo è il codice:

' Memorizzo i Dati del Buffer Letto e Quelli relativi al risultato del Colloquio con il Web
vLineBufferTX = g_DD.LogField(SERVICE_APPLICATION_NAME, SERVICE_ROLE_NAME, SERVICE_LOGFIELD_CODTX)

'Trace per visualizzare le info
Trace eInfoMsg, lTrLevel, sTrHeader & ": Buffer Text: " & vLineBufferTX

vLineBufferRX = g_DD.LogField(SERVICE_APPLICATION_NAME, SERVICE_ROLE_NAME, SERVICE_LOGFIELD_CODRX)

'Trace per visualizzare le info
Trace eInfoMsg, lTrLevel, sTrHeader & ": Buffer Colloquio Web: " & vLineBufferRX

Grazie,
Ciao\G

Dainesi Profilo | Senior Member

Verifica che la tua variabile Variant non sia Null.

In questo caso basta anteporre un IsNull(variabileVariant) alla conversione

Es.

Dim vLog as Variant
Dim sLog as String

....

sLog = Iif(IsNull(vLog),"",CStr(vLog))


Autore del libro sul FOREX, MetaTrader e creazione dei trading system http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872

Sig. Travis Profilo | Junior Member

Ciao grazie di nuovo per la risposta, volevo però chiederti se la funzione principale che applichi è quella scritta(ossia lif) oppure è la funzione left.

Buona Giornata
Ciao\G

Sig. Travis Profilo | Junior Member

Ho provato anche inserendo la riga con l'iterazione if(che secondo me poteva essere quello il significato di ciò che hai scritto), ma dà errore direttamente in fase di scrittura della riga.

Cmq grazie.
Ciao\G

Dainesi Profilo | Senior Member

Non era Left ma la funzione IIF che è così fatta IIF(Condizione, Se vero, Se falso)
Autore del libro sul FOREX, MetaTrader e creazione dei trading system http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872

Sig. Travis Profilo | Junior Member

Perfettissimo! Grazie, funziona.

Buona Giornata,
Ciao\G
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5