23 messaggi dal 03 luglio 2001
Trovo notevoli difficoltà nello scambiare i dati contenuti in variabili numeriche da asp a vbscript.
es. se in una variabile asp - vab1(0)=100 vorrei trasportare il valore 100 in vbscript conseguente ad un evento
dalle varie prove fatte non riesco ad avre il risultato se non in formato alfanumerico infatti se nello script in vbscript scrivo

verifica.valore.value= "<%=var1(" & variabile.dato.value & ")%>"

come bisogna fare
Grazie

carmine
379 messaggi dal 06 settembre 2002
www.andytimes.com
ho un po' di difficoltà a capire ciò che vuoi fare... presumo che tu voglia far interagire ASP(server) con vbscript(client)...Non sono afferratissimo con vbscript lato client ma credo che non sia difforme a javascript. Una volta inviato l'output al client asp si disconnette (perde lo stato) e non interagisce più con il client fino alla successiva chiamata. Var1 è un array lato server? Se è così dinamicamente con vbscript non puoi trasportarlo... Potresti scriverlo all'interno dell'evento client e richiamarlo oppure in un input hidden nella pagina.

..:: and this is my web ::..
23 messaggi dal 03 luglio 2001
il problema è che ho popolato un select è vorrei che nel momento in cui cambio le caratteristiche del select mi riporti il valore numerico del selezionamento.
NON riesco a rendere questo valore numerico infatti se nello scriprt uso isnumeric mi dice che il valore è numerico ma nel momento in cui dico di prelevare il valore della variabile var1(.. VALORE SELECT -- ) non da risultato.
ho provato a scrivere direttamente sullo script :
verifica.valore.value= "<%=var1(" & 0 & ")%>"
in questo caso mi da il risultato desiderato.




carmine
11.883 messaggi dal 09 febbraio 2002
Contributi
mmmh..
potresti postare un po' di codice? devi popolare una select e poi?

Considera che ci sono le funzioni di conversione dei tipi.
Se hai una stringa che può essere interpretata come un numero, non basta la funzione isNumeric, quella serve solo a valutare se puoi usare una funzione di conversione, CInt ad esempio.

<%
var = "15"
if isNumeric(var) then
var = CInt(var)
'ora var è numerica
end if
%>

Comunque, il tuo problema è trasportare variabili dal server al client, è improprio dire "passare variabili da ASP a vbscript" perchè asp non è un linguaggio di scripting e in esso non puoi definire variabili.

Considera che il server produce solamente un output testuale, una variabile che lato server era una stringa, può diventare numerica lato client. Facendo così:

<%
var = "20"
%>
<script language="Vbscript">
miavar = <%=var%>
</script>

l'output prodotto sara:

miavar = 20

come puoi vedere lato client, il 20 è un numero non una stringa. E puoi fare anche il contrario:

<%
var = 20
%>
<script language="Vbscript">
miavar = "<%=var%>"
</script>

l'output prodotto sara:
miavar = "20"

da numero siamo passati a stringa. Inoltre puoi passare interi array, devi "giocare" sull'output:

<script language="Vbscript">
Dim clientarray(20)
<%
mioarray(20)
for i = 0 to Ubound(mioarray)
%>
clientarray(<%=i%>) = "<%=mioarray(i)%>"
<%
next
%>
<script>


Enjoy learning and just keep making
23 messaggi dal 03 luglio 2001
Ciao BrightSoul
ti posto il codice che popola il select ed è:
<SELECT NAME="citta" class="sol" >
<%
dim cap(200) , pre(200)
openDB sConnS
myCitta="SELECT * FROM idcitta order by citta asc"
set RsCitta = Server.CreateObject("ADODB.Recordset")
RsCitta.Open myCitta, conn,3,3
RsCitta.MoveFirst
do while not RsCitta.eof
valore =RsCitta("CodCitta") ' contiene codcitta
Citta=RsCitta("Citta")
cap(valore)=RsCitta("cap") ' variabile contiene CAP
pre(valore)=RsCitta("pref") ' variabile contine prefissi tel
response.write ("<OPTION VALUE="& valore &">" &Citta& "</option>")
RsCitta.MoveNext
loop
closeDB()
set RsCitta=nothing
%>

come puoi vedere ho creato due variabili cap e pre che contengono rispettivamente il Cap e Prefissi delle citta (rilevate nel database), il problema è successivamente cioè in VBSript
Per verificare l'esattezza ho scritto così:

<SCRIPT LANGUAGE="VBScript">
dim a
sub Citta_onChange
b= "<%=cap("3")%>" ' rileva direttamente il contenuto variabile cap
verifica.cap.value= b ' riporta tale valore nel campo cap
end sub
</SCRIPT>

In questo modo ovviamente mi riporta in modo corretto il valore contenuto nella variabile cap e mi riporta il dato nel campo cap (all'evento cambio città)

Se invece faccio così per assegnare correttamente il cap alla città selezionata, iniziano i problemi.
dove è L'ERRORE ?!?!?

<SCRIPT LANGUAGE="VBScript">
dim a
sub Citta_onChange
a= verifica.citta.value
b= "<%=cap("&a&")%>"
verifica.cap.value= b
end sub
</SCRIPT>

spero che ci sia una solozione, ho provato a scrivere
"<%=cap(Cint(" & a & "))%>"
"<%=cap(Cint(""" & a & """))%>"
etc.
Grazie ancora

carmine
11.883 messaggi dal 09 febbraio 2002
Contributi
Che errore ti riporta esattamente? Nella parte iniziale la logica sembra corretta quindi il problema dovrebbe essere nella sintassi. Posta la riga e il testo dell'errore, aiuteranno sicuramente a trovare una soluzione.

Intanto guardiamo l'ultimo pezzo:

<SCRIPT LANGUAGE="VBScript">
dim a
sub Citta_onChange
a= verifica.citta.value
b= "<%=cap("&a&")%>"
verifica.cap.value= b
end sub
</SCRIPT>

Si tratta di codice lato client, quando questo è eseguito, ormai la connessione con il server si è interrotta e non puoi più accedere all'oggetto lato server "cap".
Questa sintassi inoltre:
<%=cap("&a&")%>
è sbagliata perchè cap, essendo un array accetta solo un parametro numerico e non la stringa &a&.
Ripeto, non puoi usare la variabile a lato client per "consultare" l'oggetto cap lato server che ormai non esiste più.
Devi per forza trasportare tutto l'array, dal server al client.
Allora, intanto trasforma quella funzione qua sopra in questo modo:

<SCRIPT LANGUAGE="VBScript">
dim a
sub Citta_onChange
a= CInt(verifica.citta.value)
b= cap(a)
verifica.cap.value= b
end sub
</SCRIPT>

Ecco, ora b viene valorizzato con cap, un'array lato client "copiato" da lato server in questo modo (metti questo codice subito sopra la sub Citta_onChange)
... lo riporto tutto:


<SCRIPT LANGUAGE="VBScript">
Dim cap(200)
<%
for i = 0 to Ubound(cap)
Response.write("cap("&cap(i)&")="""&cap(i)&"""")
next
%>
dim a
sub Citta_onChange
a= CInt(verifica.citta.value)
b= cap(a)
verifica.cap.value= b
end sub
</SCRIPT>

Ora dovrebbe andare...

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.