dati da form a database

  • Creatore Discussione Creatore Discussione blasty
  • Data di inizio Data di inizio

blasty

Nuovo Utente
4 Giu 2007
27
0
0
Ciao
ho creato una pagina new.asp che prende i dati da un form e l'invia alla pagina registrazione.asp.
Solo che la pagina registrazione.asp mi da il seguente errore:

Microsoft JET Database Engine error '80040e14'

Istruzione SQL non valida. Prevista 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.

registrazione.asp, line 23

questa è la pagina:

<%@ LANGUAGE="JScript"%>
<%

nick = Request.Form("nick");
pwd = Request.Form("pwd");
ccid = Request.Form("ccid");

var con;
var sConString;
var sSQLString;
con = Server.CreateObject("ADODB.Connection");
sConString = "Provider = Microsoft.Jet.OLEDB.4.0; "
+ "Data Source = " + Server.MapPath("./gesim.mdb");
con.Mode=3; //1 = adModeRead, 3 = adModeReadWrite
con.Open(sConString);

var rst;
rst= Server.CreateObject("ADODB.Recordset");

var sql = "UPDATE usr SET nick = '" &nick& "', pwd = '" & pwd &"', ccid = '" & ccid &"' WHERE nick = '" & nick & "' ";

con.Execute(sql);

con.Close();
rst=null;
con=null;

%>
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>
Gestione ricariche - Creazione nuovo utente
</title>
</head>

<body>

<h1 class="centrato">Registrazione avvenuta con successo!!!</h1>

</body>
</html>
 
Fai un debug in questo modo:

// con.Execute(sql);
Response.Write(sql);

In questo modo ti stampa a video la stringa SQL (INSERT, in questo caso) che usi.

Copiala ed incollala qui in modo che le do un'occhiata.
 
fatto mi visualizza 0

questa è la stringa sql:

sql = "INSERT INTO usr (nick,pwd,ccid) VALUES ('"&nick"','"&pwd"','&ccid');
 
No... questa dovrebbe essere la stringa SQL:

sql = "INSERT INTO usr (nick, pwd, ccid) VALUES ('" + nick + "', '" + pwd + "', '" + ccid + "')";

Riprova e fammi sapere :hammer:
 
fatto mi visualizza questo:

INSERT INTO usr (nick,pwd,ccid) VALUES ('luca','rossi','456')

il campo ccid è numerico, devo mettere lo stesso i doppi apici?
 
ora funziona grazie!
Però ho un altro problema....il database contiente la tabella usr con i campi (nick,pwd,ccid) e una tabella banca con i campi (ccid,val).
Se io inserisco un nuovo utente con ccid dievrso da quelli già presenti nella tabella la pagina mi da l'errore:

Microsoft JET Database Engine error '8004005'

Impossibile aggiungere o modificare il record. Nella tabella "banca" è necessario un record correlato.
 
Non conosco l'architettura dell'applicazione che stai sviluppando, ma immagino che ci sia qualche errore logico o di assegnazione dei tipi di dato.

Hai la possibilità di mostrarmi un dump della tabella? In sostanza alludo ai nomi dei campi, tipi di dato ed in funzione di cosa crei le relazioni.
 
Tabella usr:
nick tipo testo chiave primaria
pwd tipo testo
ccid tipo numerico

Tabella banca:
ccid tipo nuemrico chiave primaria
val tipo nuemrico

Relazione tra usr e banca è molti a uno
 
Quindi in sostanza provi a mettere in relazione un tipo testo con un tipo numerico?

Se è cosi non si può... hai ccid in entrambe le tabelle, usa quello.

Comunque le tabelle mi sembrano povere e non ottimamlemnte strutturate: inserirei un campo id di tipo contatore.

Fammi sapere.
 
la struttura del database è stata data così dal docente e non posso modificarla. Se io inserisco un nuovo utente con ccid già presente nella tabella banca me lo fa inserire se metto ccid diverso no come mai?
 
Ripeto, a meno che io non sia cieco (ultimamente potrebbe essere) ora di errori di codice non ne vedo.

Imputerei il problema alla struttura della tabella... complimenti al prof :D

O magari, nel complesso dell'applicazione, hai commesso qualche errore logico che non immagino.
 
Come suggerisci di fare? Anche perchè se registro un nuovo utente non posso sapere a priori il numero del conto è l'importo del conto :dipser:
 

Discussioni simili