Newsgroup: it.comp.lang.visual-basic
Titolo: Help - Semplice correzione di codice

Potreste cortsemente corregermi queste tre righe in quanto sono un novellino
in VB?
Devo aggiungere degli spazi a seconda del numero inserito in un Inputbox per
generare una stringa SQL in una pagina ASP
 Mi funziona solo una delle condizioni, a seconda dell'ordine in cui le
scrivo.
Grazie  - Roberto
Dim Recorset1__MMColParam
If (Request.form("txtImp"   <> "") Then
If (Request.form("txtImp"   < ="9") then Recorset1__MMColParam = Space(5) &
Request.form("txtImp")
If (Request.form("txtImp"   > ="10") OR Request.form("txtImp"   <="99") then
Recorset1__MMColParam = Space(4) & Request.form("txtImp")
If (Request.form("txtImp"   > ="100") OR Request.form("txtImp"   <="999")
then Recorset1__MMColParam = Space(3) & Request.form("txtImp")
If (Request.form("txtImp"   > ="1000") OR Request.form("txtImp"   <="9999")
then Recorset1__MMColParam = Space(2) & Request.form("txtImp")
If (Request.form("txtImp"   > ="10000") OR Request.form("txtImp" <="99999")
then Recorset1__MMColParam = Space(1) & Request.form("txtImp")
If (Request.form("txtImp"   > ="100000")  then Recorset1__MMColParam =
Request.form("txtImp")
End If

 scrivo.
mah... io sono sempre per le soluzioni semplici...
Recorset1__MMColParam = padl( Trim( Request.form("txtImp") ) , 5)
Public Function PadL(Stringa As String, n As Integer, char As String) As
String
    Dim nLen As Integer
    nLen = Len(Stringa)
    If n >= nLen Then
        PadL = String(n - nLen, char) & Stringa
    Else
        PadL = Left(Stringa, n)
    End If
End Function
ciao
ugo

 mah... io sono sempre per le soluzioni semplici...
Io invece sono per le soluzioni su una sola riga:
Recorset1__MMColParam = _
    Right$(Space$(5 - _
    IIf(Len(Trim( Request.form("txtImp") ) < 6, Len(Trim(
Request.form("txtImp") , 5)) _
    & Trim( Request.form("txtImp") , 5)
Ciao
*Roby*
P.S.
La tua è sicuramente più chiara e parametrizzabile. Ho solamente provato a
vedere come veniva su di una riga sola ;-)


:)
ciao
ugo

Vi ringrazio, ma non riesco a farne funzionare nessuna.
Quella di Ugo mi segnala subito un errore qui
Recorset1__MMColParam = padl( Trim( Request.form("txtImp") ) , 5)
-------------------------------^
Quella di *Roby* ( se ho capito bene dovrebbe stare tutta su una riga) e
dovrebbe essere, supponendo che i caratteri "_" siano spazi):
 Recorset1__MMColParam = _ Right$(Space$(5 - _IIf(Len(Trim(
Request.form("txtImp") ) < 6, Len(Trim(Request.form("txtImp") , 5)) _&
Trim( Request.form("txtImp") , 5)
Anche questa mi segna un errore sia sui $ (rimossi) che  su IIf (che ho
provato a trasformare in If), ma non funziona ugualmente.
Potreste cortesemente aiutarmi?
Il problema è questo:
Il Db che sto interrogando è Betrive della Pervasive
(......xxyPorcozzzio!!!!!***) ed ha una tabella con un campo di 6 caratteri
I dati sono allineati a destra e preceduti di tanti spazi quanti ne servono
per completare i 6 caratteri e tali spazi non possono essere rimossi
Pertanto, per fare l'istruziuone SQL devo per forza aggiungere gli spazi
prima del valore immesso, altrimenti non funziona.
Il codice originario, sul quale io avevo fatto le modifiche scritte nel
primo tread, era cosi:
<%@LANGUAGE="VBSCRIPT"%>
<%
Dim Recorset1__MMColParam
If  (Request.form("txtImpegno") <> "")  Then Recorset1__MMColParam =
(Request.form("txtImpegno")
%>
Vi ringrazio per qualsiasi aiuto
Roberto

Vi ringrazio, ma non riesco a farne funzionare nessuna.
Quella di Ugo mi segnala subito un errore qui
Recorset1__MMColParam = padl( Trim( Request.form("txtImp") ) , 5)


 <%@LANGUAGE="VBSCRIPT"%>
L'ultima riga spiega l'arcano. Io ti ho dato una soluzione in VB6 e non in
VBScript, e penso che lo stesso problema ce l'abbia anche il codice di Ugo.
Comunque a questo punto torniamo al tuo codice:
If (Request.form("txtImp"   > ="10") OR Request.form("txtImp"   <="99") then
Recorset1__MMColParam = Space(4) & Request.form("txtImp")
Vedo almeno 3 errori:
Request.form("txtImp"   > ="10") dovrebbe diventare
val(Request.form("txtImp")) > 10
Questi sono già 2 errori distinti. Il primo è mettere tutto tra parentesi, e
il secondo è confrontare due stringhe quando ti serve un confronto tra
valori.
OR dovrebbe diventare AND. Questo è l'ultimo problema. Se infatti dici che
devo eseguire una operazione se un valore è >10 OPPURE < 99, questa
operazione viene eseguita anche se il valore è 1 (e quindi minore di 10).
Per eseguire correttamente il test, devi accertarti che il valore sia > 10 E
ANCHE < 99, quindi devi usare AND
Se correggi le tue righe di codice secondo questa logica dovrebbe funzionare
tutto.
Ciao
*Roby*


Yes...
Si poteva forse intuire, dato l'argomento di fondo "asp", ma precisare
subito che si parlava di VbScript...
:)
ciao
ugo

 ha scritto nel messaggio
news:70uh7.44314$TS4.2...@news2.tin.it...
