16 messaggi dal 07 febbraio 2008
Salve, come da titolo vorrei far eseguire dell'SQL al verificarsi di una condizione.. ho fatto svariate prove ma sbaglio qualcosa e l'SQL non viene eseguito:


if riep = "Saldato" then RSumpagamento_cmd.execute("Update commissioni set saldato= '-1' where idcontr= "& id &" ")


Sapreste consigliarmi?

Grazie
16 messaggi dal 07 febbraio 2008
Ho appena provato anche così ma non mi aggiorna il recordset (e non ottengo alcun errore)

<%
importocontratto = request.Form("riepilogo")

Dim RSumpagamento
Dim RSumpagamento_cmd
Dim RSumpagamento_numRows
Set RSumpagamento_cmd = Server.CreateObject ("ADODB.Command")
RSumpagamento_cmd.ActiveConnection = MM_conn_STRING
RSumpagamento_cmd.CommandText = "SELECT idcontr, Sum(importo) AS Sommaimporto FROM pagamenti group by idcontr having idcontr = " & id & " " 
RSumpagamento_cmd.Prepared = true

Set RSumpagamento = RSumpagamento_cmd.Execute
RSumpagamento_numRows = 0
If Not (RSumpagamento.BOF And RSumpagamento.EOF) Then
  totale = RSumpagamento("Sommaimporto")
End If
if Cint(importocontratto) = Cint(totale) then riep = "Saldato" else riep = "non saldato"

if riep = "Saldato" then 
sqlsaldato = "Update commissioni set saldato= '-1' where idcontr= "& id &" "
conn.Execute(sqlsaldato)
end if
%>

11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
probabilmente c'è qualche variabile che non contiene il valore che ti aspetti. Ad esempio:
  • importocontratto potrebbe essere diverso da totale e questo ha la conseguenza che riep viene impostato su "non saldato";
  • id contiene un valore che non corrisponde ad alcun id contratto.


Devi mettere dei Response.Write in punti strategici per far apparire nella pagina i valori delle variabili. Così potrai renderti conto di cosa c'è che non va.

Ad esempio io inizierei a mettere dei Response.Write attorno al punto in cui imposti riep.
Response.Write("<br />Importo contratto: " & importocontratto)
Response.Write("<br />Totale: " & totale)
if Cint(importocontratto) = Cint(totale) then riep = "Saldato" else riep = "non saldato"
Response.Write("<br />riep: " & riep)
Response.Write("<br />id: " & id)


ciao,
Moreno

Enjoy learning and just keep making
16 messaggi dal 07 febbraio 2008
Ciao, grazie per la risposta. Avevo già provato così:

<%=importocontratto%> e <%=totale%> e <%=riep%> 


ed ottengo i risultati corretti per cui il problema non dovrebbe essere li
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Avevo già provato così:

Ok, ma non basta. Stampa anche l'id.
ID: <%= id %>


Meglio ancora, stampa l'intera query.
if riep = "Saldato" then 
sqlsaldato = "Update commissioni set saldato= '-1' where idcontr= "& id &" "
Response.Write("Eseguo la query: " & sqlsaldato)
conn.Execute(sqlsaldato)
else
Response.Write("Non eseguo la query")
end if


Quando la query ti viene stampata nella pagina, copiala ed eseguila direttamente sul database (es. Da Microsoft Access se stai usando un database access). Produce l'effetto sperato? Così verifichi pure che la query sia corretta.

Se nella pagina ASP hai l'istruzione On Error Resume Next rimuovila temporaneamente perché può darsi che stia sopprimendo eventuali errori utili a capire dov'è il problema.

ciao,
Moreno

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.