- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Modifica dei campi in un database
-
L'errore che ti dà è nella query SQL.
Prova così:
mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout
PS: cInt() non c'è bisogno di usarlo perchè tanto la query è una stringa per il server asp.
-
Grazie lockit!!!
Ma ancora da errore
<% Dim Conn, mysql Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/topsite.mdb") mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout conn.Execute(mysql) conn.close set conn=nothing response.write "Clicks aggiornati" %>
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'clicksin = AND clicksout ='. /aggiorna.asp, line 7
-
Mhhmmmm
L'errore sembra cambiato però.... prova a stampare la query a schermo prima di eseguirla e vedi se è completa..... potrebbe essere che clicksin e clicksout siano vuoti e quindi una query del genere dà sicuramente errore...
UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = AND clicksout =
ciao
-
Grazie... ma non so cosa significa stampare a video una query, anzi, soprattutto come si fa ...
Comunque i campi clicksin e clicksout non sono vuoti, sono riempiti con dei numeri..
-
Scusa, la query è quella stringa SQL
per stampare a video intendevo una cosa del genere:<% Dim Conn, mysql Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/topsite.mdb") mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout 'conn.Execute(mysql) Response.write(mysql) conn.close set conn=nothing response.write "Clicks aggiornati" %>
Se stampa una cosa così:
UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = AND clicksout =L'errore è che non gli dai numeri per confrontare clicksin e clicksout
Se invece stampa una cosa così:
UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = 1 AND clicksout =1
Non sò proprio che erore sia.... () () :bho:
Questa è la sintassi dell'update:
@www.w3schools.com said:UPDATE table_name
SET column_name = new_value
WHERE column_name = some_valueCiao
-
Stampa
UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = AND clicksout =
Allora dove sta l'errore??
Ho capito cosa intendevi, hai messo 'conn.Execute(mysql) sotto forma di commento e hai messo un response.write davanti alla query..
Cmq grazie
-
Può essere che dia errore perchè ci siano alcuni numeri dispari da dividere per 2 ??
-
@guestone said:
Stampa
UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = AND clicksout =
Allora dove sta l'errore??
Ho capito cosa intendevi, hai messo 'conn.Execute(mysql) sotto forma di commento e hai messo un response.write davanti alla query..
Cmq grazie
Come volevasi dimostrare.....
Da quella stampa a video si capisce che le tue variabili clicksin e clicksout sono vuote !!!
è per questo che dà errore...
Prova così:
<% IF clicksin <> "" AND clicksout <> "" THEN Dim Conn, mysql Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/topsite.mdb") mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout conn.Execute(mysql) conn.close set conn=nothing response.write "Clicks aggiornati" ELSE Response.write("Le variabili clicksin e clicksout sono vuote !!!") END IF %>
Oppure se vuoi eseguire lo stesso la query(mettiamo che il valore di default sia zero):
<% IF clicksin <> "" THEN clicksin = 0 END IF IF clicksout <> "" THEN clicksout = 0 END IF Dim Conn, mysql Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/topsite.mdb") mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout conn.Execute(mysql) conn.close set conn=nothing response.write "Clicks aggiornati" %>
Ciao
-
Grazie lockit, troppo gentile !!!!
Allora, la prima soluzione mi esegue:
Le variabili clicksin e clicksout sono vuote !!!
quindi come dici te le varibili sono vuote.
Ma che significa che le variabili sono vuote?? Eppure le due colonne sono riempite con dei valori numerici e sono stampate a video sulla pagina index della toplist.
Riscaricando il database ho però notato che in corrispondenza dell'ultima riga della tabella topsite ( contatore ), ci sono degli zeri in corrispondenza di clicksin e clicksout ( però solo in questa riga !! )In sostanza i clicks non si aggiornano. Che soluzione posso trovare per aggiornare sta toplist?? Non vorrei stare ad azzerarla sempre, vorrei solo che i click non salissero troppo all' infinito per cui avevo pensato a questa soluzione e cioè dividerli per una cera quantità di tanto in tanto
La seconda soluzione da errore:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'clicksin = AND clicksout ='. /aggiorna3.asp, line 17
-
Non è che ci vuole per caso un
do while .EOF
per scorrere tutte le righe della tabella?
E' troppo presto perchè io ci capisca qualcosa
-
Ho risolto e non so come ho fatto
Cmq ho scopiazzato dal metodo che usava nel caso si volessero azzerare click.
Il codice che ho messo è il seguente:
<%@ LANGUAGE="VBSCRIPT" %>
<% Set objRs = Server.CreateObject("ADODB.Recordset") strSQL = "SELECT * FROM topsite" objRs.Open strSQL, strdbpath do while objRs.EOF = false stridtoupdate = objRs("id") Set objRs2 = Server.CreateObject("ADODB.Recordset") strSQL2 = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE id = " & stridtoupdate & "" objRs2.Open strSQL2, strdbpath objRs.MoveNext Loop Set objRs = Nothing Set objRs2 = Nothing response.write "Clicks aggiornati" %>
dove strdbpath lo richiama dal file ="/includes/dati.asp ed è
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("/mdb-database/topsite.mdb")
E' "zozzo" come sintassi? va bene??
Ora il problema è che non lo posso tenere caricato sul server perchè se un utente me lo becca ( ad es. tramite motore di ricerca ecc... ) mi fa un casino, ma questo si può risolvere facilmente anteponendo una parte di codice che mi identifichi come admin del tipo if Session("granted") <> "admin" then .... giusto ?
Ora vorrei però, se lockit vuole ancora aiutarmi , complicare un pò il problema, ossia avere la possibilità che questo aggiornamento lo faccia in automatico tenendo il file sorgente sul server e facendoglielo eseguire ogni x intervalli di tempo con la funzione
DateAdd("n", 15, Now)
ad esempio ogni 15 minuti, come verrebbe il codice sopra??
IF ... ?????????????
Grazie
-
In effetti c'era un piccolo errore nel mio codice, corretto è così :
... IF clicksin = "" THEN clicksin = 0 END IF IF clicksout = "" THEN clicksout = 0 END IF ...
Comunque se come hai fatto tu funziona và bene
E per quanto riguarda l'esecuzione del file ogni tot di tempo... non sò come fare mi spiace....
ciao
-
In effetti c'era un piccolo errore nel mio codice, corretto è così :
... IF clicksin = "" THEN clicksin = 0 END IF IF clicksout = "" THEN clicksout = 0 END IF ...
Comunque se come hai fatto tu funziona và bene
E per quanto riguarda l'esecuzione del file ogni tot di tempo... non sò come fare mi spiace....
ciao
-
In effetti c'era un piccolo errore nel mio codice, corretto è così :
... IF clicksin = "" THEN clicksin = 0 END IF IF clicksout = "" THEN clicksout = 0 END IF ...
Comunque se come hai fatto tu funziona và bene
E per quanto riguarda l'esecuzione del file ogni tot di tempo... non sò come fare mi spiace....
ciao
-
Grazie di cuore lockit
Cmq la soluzione ripropostami
<% IF clicksin = "" THEN clicksin = 0 END IF IF clicksout = "" THEN clicksout = 0 END IF Dim Conn, mysql Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/topsite.mdb") mysql = "UPDATE topsite SET clicksin = clicksin / 2, clicksout = clicksout / 2 WHERE clicksin = " & clicksin & " AND clicksout = " & clicksout conn.Execute(mysql) conn.close set conn=nothing response.write "Clicks aggiornati" %>
non da errore e risponde con Clicks aggiornati ma in pratica non li divide in 2 i valori ........bhoooooo, si vede che c'è qualcosa per la quale l'unica soluzione è l'ultimo modo di come ho fatto ()
Peccato per l'update automatico, cmq ancora grazie