10 messaggi dal 11 luglio 2001
Ho un problema con un campo del db..

il mio campo del db qt1 e qt2 è testo

nella mia pagina inserisco in
qt1 1-5 e in
qt2 6+

quando vado a ciclare i valori mi da questo errore:

Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "1-5"]'
/viewCatalogue_en.asp, line 101


il mio codice è questo

<%
i = 1
n = 2
Do While i <= 4
If objRS("Qt"&i) <> 0 Then%>
<%=objRS("Qt"&i)%> Pack, Birr <%=Round(objRS("Prezzo"&i),n)%><br>
<% End If
i = i + 1
Loop%>

Praticamente l'errore è dove c'è l'IF...
come faccio a risolvere?
e perchè mi dice che il tipo di dati non corrisponde?

Grazie in anticipo..
Fede
Come hai detto tu stessa qt1 e qt2 (ma dal codice desumo esistano anche qt3 e qt4) sono campi di tipo "testo", quindi non confrontabili con il numero zero.
Ti chiedo: qual'è la condizione per cui non deve entrare nell'if? Che il campo sia vuoto? Che sia <NULL>? Che contenga la stringa "0"?
Rispondi a questa, formalizza la cosa in un confronto tra variabili ed il problema è risolto!

Ciao

Matteo Casati
GURU4.net
10 messaggi dal 11 luglio 2001
Grazie...le tue parole mi hanno illuminato..e ho risolto..a volte ci si sofferma su stupide cose e non si capisce che l'errore e la soluzione del problema è esattamente sotto ai nostri occhi...

;)

Grazie mille
Quanta verità in queste semplici parole. Capita spesso anche a me: chiedo un aiuto e mentre espongo il problema... trovo la soluzione!
Giusto per curiosità, qual'era la condizione esatta per l'if?

Matteo Casati
GURU4.net
10 messaggi dal 11 luglio 2001
semplicemente come avevi detto tu, dovevo mettere "0", quindi:

<td class="tahoma12">Price: <%
i = 1
n = 2
Do While i <= 4
If objRS("Qt"&i) <> "0" Then%> <-- prima c'era 0 senza ""
<%=objRS("Qt"&i)%> Pack, Birr <%=Round(objRS("Prezzo"&i),n)%><br>
<% End If
i = i + 1
Loop%></td>
<tr>

giustamente paragonavo un numero ad una stringa..

visto che sei stato così gentile con me, e visto che le tue parole e i tuoi consigli mi illuminano..avrei altri 2 problemi..dei quali non vedo l'errore.. mi puoi aiutare ancora?

il primo problema è sempre con un IF
questo è il codice:

<%campodbdescrizione = objRS("Descrizione")
response.write campodbdescrizione %>
<% if campodbdescrizione <> "" then%>
<tr><td class="tahoma12">Description: <%=objRS("Descrizione")%><br><br></td>
</tr>
<%else%>
<%end if%>

vorrei che se il mio campo del db descrizione è "diverso da vuoto" (quindi se il campo è compilato con dei dati) me lo scriva, altrimenti non deve scrivere niente..

il risultato che ho nella pagina è che mi scrive Description (come io gli faccio scrivere) ma poi non mi scrive niente. Per sicurezza, gli faccio scrivere il valore con response.write proprio sopra la mia if..
risultato: faccio scrivere il campo e lo scrive (perchè nel db è presente) ma quando entra nel ciclo..è come se non lo vuole scrivere.. se invece il campo del db è vuoto, description non lo scrive...aiutooooOoOOOOoOo
10 messaggi dal 11 luglio 2001
ehm..come non detto..ho provato per caso a scrivere al posto di
Description: <%=objRS("Descrizione")%>
ho scritto
Description: <% response.write campodbdescrizione %>
e ora funziona..

mi sai spiegare il perchè?! cosa cambia? non capisco proprio...

ora ti espongo il mio secondo problema..anche se a dirti il vero è un po contorto (lo espongo a tutti ovviamente..se mi volete dare una mano ^_^ )

ho una pagina con dei campi di testo (dei form)e in fondo alla pagina, un checkbox. Questo checkbox corrisponde a un si o ad un no (nel senso che se è cekkato significa SI se rimane non cekkato significa NO)

questo è il codice della mia pagina di inserimento:

<td class="tahoma11">Accessori aggiuntivi:</td>
<td><input type="checkbox" name="acc_sino" value="ok"></td>

Fin qui tutto ok, nella mia pagina successiva ho:
if acc_sino = "ok" then
strSQL = "INSERT INTO prodotti(CodProdotto,NProdotto,TipoProdotto,Descrizione,ImgProdotto,IdCategoria,Quantita,Qt1,Euro1,Prezzo1,Qt2,Euro2,Prezzo2,Qt3,Euro3,Prezzo3,Qt4,Euro4,Prezzo4,Accessori,NAccessori) VALUES ('"&cod&"','"&nprod&"','"&prod&"','"&Desc&"','"&cod&"','"&IdCat&"','"&Quant&"','"&qt1&"','"&euro1&"','"&birr1&"','"&qt2&"','"&euro2&"','"&birr2&"','"&qt3&"','"&euro3&"','"&birr3&"','"&qt4&"','"&euro4&"','"&birr4&"','1','"&accessori&"')"
objConn.Execute strSQL
else
strSQL = "INSERT INTO prodotti(CodProdotto,NProdotto,TipoProdotto,Descrizione,ImgProdotto,IdCategoria,Quantita,Qt1,Euro1,Prezzo1,Qt2,Euro2,Prezzo2,Qt3,Euro3,Prezzo3,Qt4,Euro4,Prezzo4,Accessori,NAccessori) VALUES ('"&cod&"','"&nprod&"','"&prod&"','"&Desc&"','"&cod&"','"&IdCat&"','"&Quant&"','"&qt1&"','"&euro1&"','"&birr1&"','"&qt2&"','"&euro2&"','"&birr2&"','"&qt3&"','"&euro3&"','"&birr3&"','"&qt4&"','"&euro4&"','"&birr4&"','0','"&accessori&"')"
objConn.Execute strSQL
end if


Praticamente, se il campo acc_sino è = ok allora nel db mi scrive 1 nel campo accessori, altrimenti scrive 0...
e fin qui tutto ok (anche se non sono molto convinta della correttezza della stringa...

il problema sta quando apro la pagina di modifica (quella sopra indicata è la pagina di inserimento e basta)..
entro nella pagina di modifica clicco sul record che voglio modificare e mi appare la pagina gia compilata con i campi del db, compreso il checkbox (che se nel db è cekkato nella mia pagina me lo cekka, e se nel db non è cekkato nella mia pagina rimane non cekkato) Ad esempio cambio il nome al mio prodotto (senza modificare il checkbox) e quando premo ok, se il checkbox è cekkato automaticamente me lo toglie. se il chekbox non è cekkato, me lo lascia non cekkato..

infine vi posto il codice della pagina di modifica:
if acc_sino = "on" then
SQL="UPDATE prodotti SET CodProdotto='"&cod&"', NProdotto='"&nprod&"', TipoProdotto='"&prod&"', Descrizione='"&Desc&"' , ImgProdotto='"&cod&"' , IdCategoria= '"&IdCat&"', Quantita='"&Quant&"' , Qt1='"&qt1&"', Euro1='"&euro1&"' , Prezzo1='"&birr1&"' , Qt2='"&qt2&"' , Euro2='"&euro2&"' , Prezzo2='"&birr2&"' , Qt3='"&qt3&"' , Euro3='"&euro3&"' , Prezzo3='"&birr3&"' , Qt4='"&qt4&"' , Euro4='"&euro4&"',Prezzo4='"&birr4&"',NAccessori='"&accessori&"',Accessori='1' WHERE IdProdotto="&idprod
objConn.Execute(SQL)
else
SQL="UPDATE prodotti SET CodProdotto='"&cod&"', NProdotto='"&nprod&"', TipoProdotto='"&prod&"', Descrizione='"&Desc&"' , ImgProdotto='"&cod&"' , IdCategoria= '"&IdCat&"', Quantita='"&Quant&"' , Qt1='"&qt1&"', Euro1='"&euro1&"' , Prezzo1='"&birr1&"' , Qt2='"&qt2&"' , Euro2='"&euro2&"' , Prezzo2='"&birr2&"' , Qt3='"&qt3&"' , Euro3='"&euro3&"' , Prezzo3='"&birr3&"' , Qt4='"&qt4&"' , Euro4='"&euro4&"',Prezzo4='"&birr4&"',Accessori='0' WHERE IdProdotto="&idprod
objConn.Execute(SQL)
end if

non so se mi sono spiegata bene..ma spero mi saprai (saprete) aiutarmi..

Grazie

Fede

Modificato da Fedina il 11 agosto 2005 12.22 -
Ciao Fedina. Visto che mi hai sollecitato a risponderti anche via mail... non mi posso esimere

Quanto alla tua prima curiosità (se usi direttamente il campo del recordset non si vede ma se lo metti in una variabile ed usi quella sì) sembra strano anche a me! Ad ogni modo credo possa essere un problema di casting. Nel senso: rs("nome_campo") non è una stringa ma un field! Potresti provare a castarne a stringa il value (concatenando una stringa vuota o in modo più esplicito con CStr).

Veniamo al secondo problema (che mi sembra quello che più ti preme).
In realtà non ho capito se quella checkbox ha un comportamento anomalo o se vuoi sapere come fare quello che hai descritto.
Hai scritto:

Ad esempio cambio il nome al mio prodotto (senza modificare il checkbox) e quando premo ok, se il checkbox è cekkato automaticamente me lo toglie. se il chekbox non è cekkato, me lo lascia non cekkato..


Chi lo toglie?
Se mi spieghi meglio questo punto ti aiuto volentieri.
Modificato da m.casati il 12 agosto 2005 09.06 -

Matteo Casati
GURU4.net
10 messaggi dal 11 luglio 2001
Grazie per la risposta:

allora, io ho una pagina dove inserisco dei prodotti. poi ho una pagina che mi visualizza tutti i prodotti che ho inserito, e sempre nella stessa pagina la possibilità di modificare un certo prodotto. Faccio un esempio:

Inserisco il prodotto:
cod. 1
prodotto. telefono cellulare
descrizione. il telefono cellulare blablabla
prezzo. 100 Euro
accessori. <--- qui ho il mio checkbox (1 solo checkbox. se lo cekko vuol dire che il telefono ha degli accessori, se nn lo cekko non li ha)
Ipotizziamo che il telefono in questione abbia accessori, perciò, spunto il checkbox. premo ok. Tutto regolare

Visualizzo la pagina con tutti i miei prodotti inseriti. Mi accorgo che il telefono che ho inserito con codice 1, è calato di prezzo, anzichè 100 euro è 80 euro. Clicco sul mio bottoncino di modifica e mi visualizza il form con tutti i campi del db (gia compilati grazie a value con i dati presi dal db). Modifico il prezzo, anzichè 100 scrivo 80 e poi premo OK. NB: Il checkbox del telefono in questione è cekkato e me lo visualizza cekkato, e io non lo decekko perchè il telefono possiede degli accessori.

Quando visualizzo di nuovo la mia pagina con tutti i prodotti, mi accorgo che il telefono che ho appena modificato, ha cambiato il prezzo (da 100 a 80) ma mi visualizza che non ci sono accesori...eppure io non ho tolto la spunta dalla pagina di modifica..

Succo finale: quando sono nella pagina di modifica, modifico un dato (prezzzo, descrizione, codice, o altro) premo ok e mi toglie da solo il checkbox...

questa è la pagina di modifica:

if acc_sino = "on" then
sqlUPDATE = " UPDATE prodotti SET CodProdotto='"&cod&"', ECC.. ECC.. ECC.. Accessori='1' WHERE IdProdotto="&idprod"
else
sqlUPDATE = " UPDATE prodotti SET CodProdotto='"&cod&"', ECC.. ECC.. ECC.. Accessori='0' WHERE IdProdotto="&idprod"
end if

Praticamente cambia solo che se acc_sino (che è il campo con il checkbox) è on allora mi scrive accessori=1 altrimenti (se non è cekkato) mi scrive accessori=0.
La prova che ho fatto è di farmi scrivere il valore di acc_sino...e qui arriva la cosa piu strana (per me inconcepibile.)

Se sono nella pagina di inserimento e premo ok, mi faccio scrivere il valore del checkbox, mi scrive OK se è cekkato. se non è cekkato..non mi scrive niente...nnon so da che parte sbattermi..

spero di essere stata piu chiara.. :(

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.