Modifica e cancellazione dati da MDB

redmilion

Nuovo Utente
16 Feb 2005
29
0
0
Ciao,
come ho scritto nel titolo ho un problema con la mia interfaccia per la modifica, e la cancellazione di alcuni dati inseriti nel mio database.
Il database in questione è composta da varie tabelle, ma quella che mi interessa in questo caso si chiama T_Users ed è la tabella con i dati degli utenti iscritti.
Questa tabella è composta dai campi IDUser, Nome, Cognome, Indirizzo, Cap, Citta, Provincia, Nazione, partitaiva, codicefiscale, Email, Telefono, Cellulare, Username e Password.
Nell'area di amministrazione ho fatto una pagina editUtenti.asp nella quale visualizzo i dati inseriti dai vari utenti; io dovrei poterli modificare salvandoli poi sul database o cancellare l'utente, ma quando clicco sui rispettivi bottoni mi viene restituito un messaggio di errore... per esempio modificando un dato e poi cercando di salvarlo ho il seguente errore:

Microsoft JET Database Engine error '80040e14'

Errore di sintassi nella proposizione FROM.

/admin/editUtenti.asp, line 24

Ho provato a fare delle modifiche ma non sono in grado e cambia solo l'errore.
Purtroppo questa pagina la sto adattando da una che gestisce un'altra tabella ed ho paura che quello non sia l'unico errore nel codice della pagina.
Qualcuno può darmi una mano? Qui sotto posto il codice della pagina.

HTML:
<%@LANGUAGE="VBSCRIPT"%>
<% option explicit %>
<% Session.LCID = 1040 %>
<!-- #include file="inc/variabili.asp" -->
<!-- #include file="inc/checklogin.asp" -->
<%
    'Definisco delle variabili
	dim idname, idvalue, nometabella
    idname = Request.Form.Key("IdUser")
    idvalue = Request("IdUser")
	nometabella = Request("Tab")
    
    
    dim rs, cn, strSQL
    dim IdUser, Nome, Cognome, Indirizzo, Cap, Citta, Provincia, Nazione, partitaiva, codicefiscale, Email, Telefono, Cellulare, Username, Password
     
    set rs = Server.CreateObject("Adodb.Recordset")
    set cn = Server.CreateObject("Adodb.Connection")
    cn.Open strConnect
    
    if len(Request("Modify")) > 0 or len(Request("addmore")) > 0 then
        if len(Request("Modify")) > 0 then
            strSQL = "SELECT * FROM " & nometabella & " WHERE " & idname & " = " & idvalue
            Rs.Open strSQL, strConnect, , adLockPessimistic     
        else
            rs.Open nometabella, strConnect, , adLockPessimistic, adCmdTable
            rs.AddNew  
        end if
        
        dim element, elementtype, elementname
        for each element in Request.Form
            elementtype = Mid(element,3,3)
            if len(element) > 5 then elementname = Right(element, len(element) - 5)
            select case elementtype
                case "Dat"
                    if len(Request(element)) > 0 then 
                        Rs(elementname) = Cdate(Request(element))
                    else
                        Rs(elementname) = null
                    end if
                case "Int"
                    if len(Request(element)) > 0 then
                        Rs(elementname) = Cint(Request(element))
                    else
                        Rs(elementname) = null
                    end if
                case "Bol"
                    if len(Request(element)) > 0 then
                        Rs(elementname) = Cbool(Request(element))
                    else
                        Rs(elementname) = null
                    end if
                case "Chr"
                    Rs(elementname) = Request(element)
            end select  
        next
        on error resume next
        err.Clear 
        Rs.Update 
        if err.number <> 0 then
            Response.Write "Errore di inserimento nel database.<br>"
            Response.Write err.Description & "<br>"
            Response.Write err.number & "<br>"
            Rs.close
            cn.close
            Set Rs=nothing
            Set cn=nothing
            Response.Write "<html><head><link rel='stylesheet' href='inc/porto.css' type='text/css'><title>Gestione Utenti</title></head><body>"
            Response.Write "<br><a href='javascript:history.back()'>Indietro</a>"
            Response.Write "</body></html>"
            Response.End 
        end if
        on error goto 0
        Rs.Close
        cn.Close 
        Set Rs = nothing
        Set cn = nothing
        Response.Write "<script>window.opener.location.reload();window.close();</script>"
        Response.End   
    end if
    
    if len(Request("delete")) > 0 then
        strSQL = "DELETE FROM " & nometabella & " WHERE " & idname & " = " & idvalue
        cn.Execute strSQL
        cn.close
        Set rs = nothing
        Set cn = nothing
        Response.Write "<script>window.opener.location.reload();window.close();</script>"
        Response.End   
    end if
    
    if len(idvalue) > 0 then
        strSQL = "SELECT * FROM " & nometabella & " WHERE " & idname & " = " & idvalue
        rs.Open strSQL, strConnect
        IdUser = Rs("IdUser") & ""
        Nome = Rs("Nome") & ""
		Cognome = Rs("Cognome") & ""
        Indirizzo = Rs("Indirizzo") & ""
		Cap = Rs("Cap") & ""
		Citta = Rs("Citta") & ""
		Provincia = Rs("Provincia") & ""
		Nazione = Rs("Nazione") & ""
		partitaiva = Rs("partitaiva") & ""
		codicefiscale = Rs("codicefiscale") & ""
		Email = Rs("Email") & ""
		Username = Rs("Username") & ""
		Password = Rs("Password") & ""	
       
    end if
    
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<title>Amministrazione Utenti</title>
<link href="ghp.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>

<BODY onLoad="window.focus();">
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td align="center">
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<form method="post" action="editUtenti.asp" onSubmit="return VerificaForm(this);"  id="editwindow" name="editwindow">

<tr><td class="lista">
    <table width="700" border="0" cellpadding="2" cellspacing="0">
    <tr valign="top" bgcolor="#DA0E13">
      <td height="1" colspan="3" align="left"></td>
      </tr>

<tr>
	<td width="40%" height="20">Intestazione:</td>
	<td width="60%" height="20"><input name="nome" type="text" id="nome" onKeyPress="javascript:onMod();" value="<%=Rs("nome")%>" size="40"></td>
</tr>
<tr>
	<td width="40%" height="20">Persona di riferimento:</td>
	<td width="60%" height="20"><input name="cognome" type="text" id="cognome" onKeyPress="javascript:onMod();" value="<%=Rs("cognome")%>" size="40"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Indirizzo:</td>
	<td width="60%" height="20" class="text_nero14"><input name="indirizzo" type="text" id="indirizzo" onKeyPress="javascript:onMod();" value="<%=Rs("Indirizzo")%>" size="40"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">CAP:</td>
	<td width="60%" height="20" class="text_nero14"><input name="cap" type="text" id="cap" onKeyPress="javascript:onMod();" value="<%=Rs("CAP")%>" size="6" maxlength="5"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Citt&agrave;:</td>
	<td width="60%" height="20" class="text_nero14"><input name="citta" type="text" id="citta" onKeyPress="javascript:onMod();" value="<%=Rs("citta")%>" size="40"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Provincia:</td>
	<td width="60%" height="20" class="text_nero14"><input name="provincia" type="text" id="provincia" onKeyPress="javascript:onMod();" value="<%=Rs("provincia")%>" size="4" maxlength="2"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Nazione:</td>
	<td width="60%" height="20" class="text_nero14"><input name="nazione" type="text" id="nazione" onKeyPress="javascript:onMod();" value="<%=Rs("nazione")%>" size="10"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Partita Iva:</td>
	<td width="60%" height="20" class="text_nero14"><input name="partitaiva" type="text" id="partitaiva" onKeyPress="javascript:onMod();" value="<%=Rs("Partitaiva")%>" size="14" maxlength="11"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Codice Fiscale:</td>
	<td width="60%" height="20" class="text_nero14"><input name="codicefiscale" type="text" id="codicefiscale" onKeyPress="javascript:onMod();" value="<%=Rs("CodiceFiscale")%>" size="20" maxlength="16"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">E-mail:</td>
	<td width="60%" height="20" class="text_nero14"><input name="Email" type="text" id="Email" onKeyPress="javascript:onMod();" value="<%=Rs("email")%>" size="40"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Telefono:</td>
	<td width="60%" height="20" class="text_nero14"><input name="Telefono" type="text" id="Telefono" onKeyPress="javascript:onMod();" value="<%=Rs("Telefono")%>" size="40"></td>
</tr>
<tr bgcolor="#F0F0EA">
	<td width="40%" height="20" class="text_nero14">Cellulare:</td>
	<td width="60%" height="20" class="text_nero14"><input name="Cellulare" type="text" id="Cellulare" onKeyPress="javascript:onMod();" value="<%=Rs("Cellulare")%>" size="40"></td>
</tr>




</table>
</td></tr>
<tr>
<td height="1" bgcolor="#DA0E13"></td>
</tr>
<tr><td align="center">
<table cellspacing="0" cellpadding="1">
<tr>
<%
	if len(idvalue) > 0 then
%>
<td><input class="tit_eventi" type="submit" name="modify" value="Salva modifiche"></td>
<td><input class="tit_eventi" type="submit" name="delete" value="Cancella" onClick="return confirm('Confermi la cancellazione del record?')"></td>
<% else %>
<td><input class="tit_eventi" type="submit" name="addmore" value="Aggiungi al database"></td>
<% end if %>
<td><input class="testo_boldnero" type="reset" name="reset" value="Ripristina"></td>
<td><input class="testo_boldnero" type="button" name="close" value="Chiudi" onClick="window.close();"></td>
</tr>
</table>
</div></td></tr>
</form>
</table>
</td></tr>
</table>
</BODY>
</HTML>
<%
    cn.Close 
    set rs = nothing
    set cn = nothing
%>
 
Ciao,
interpretando l'errore, sembra che la query sia errata, probabilmente le variabini non sono valorizzate:

Codice:
        if len(Request("Modify")) > 0 then
            strSQL = "SELECT * FROM " & nometabella & " WHERE " & idname & " = " & idvalue
            Rs.Open strSQL, strConnect, , adLockPessimistic     
        else
            rs.Open nometabella, strConnect, , adLockPessimistic, adCmdTable
            rs.AddNew  
        end if

prova:

Codice:
        if len(Request("Modify")) > 0 then
  [COLOR="#FF0000"]'[/COLOR]          strSQL = "SELECT * FROM " & nometabella & " WHERE " & idname & " = " & idvalue
  [COLOR="#FF0000"]'[/COLOR]          Rs.Open strSQL, strConnect, , adLockPessimistic     
        else
  [COLOR="#FF0000"]'[/COLOR]         rs.Open nometabella, strConnect, , adLockPessimistic, adCmdTable
  [COLOR="#FF0000"]'[/COLOR]         rs.AddNew
        end if

[COLOR="#FF0000"]response.write nometabella&"<br>"
response.write idname&"<br>"
response.write idvalue&"<br>"[/COLOR]

...così visualizza quale variabile non è valorizzata
 
grazie per i tuoi aiuti.
Allora ho provato a incollare tutto questo codice da te suggerito

HTML:
        if len(Request("Modify")) > 0 then
  '          strSQL = "SELECT * FROM " & nometabella & " WHERE " & idname & " = " & idvalue
  '          Rs.Open strSQL, strConnect, , adLockPessimistic     
        else
  '         rs.Open nometabella, strConnect, , adLockPessimistic, adCmdTable
  '         rs.AddNew
        end if

response.write nometabella&"<br>"
response.write idname&"<br>"
response.write idvalue&"<br>"

ma questo è il risultato:

HTML:
Errore di compilazione di Microsoft VBScript error '800a0400'

Prevista istruzione

/admin/editUtenti.asp, line 83

end if
^

Ho sbagliato qualcosa?
 
...nella riga 83 vi è il codice per cancellare il record se non erro, il primo errore (line 24), quello da te rappresentato nell'apertura della discussione, era riferito al codice per aggiungere/modificare un record.

Penso che il codice debba essere completamente revisionato ed adattato alle tue esigenze, non basta modificare quello da te pubblicato ma sicuramente ci saranno delle funzioni all'interno dei file:

<!-- #include file="inc/variabili.asp" -->
<!-- #include file="inc/checklogin.asp" -->

Prova a pubblicarmi il codice del file:

<!-- #include file="inc/variabili.asp" -->

Paolo
 
ciao, penso che la pagina che mi chiedi non influisca, eccola:

HTML:
<%
    dim strConnect, strConnect2, cartella
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Domains\easyexpo.it\db\db_shop_vc.mdb;"
    cartella ="/public/"
    '---- LockTypeEnum Values ----
    Const adLockReadOnly = 1
    Const adLockPessimistic = 2
    Const adLockOptimistic = 3
    Const adLockBatchOptimistic = 4

    '---- CursorTypeEnum Values ----
    Const adOpenForwardOnly = 0
    Const adOpenKeyset = 1
    Const adOpenDynamic = 2
    Const adOpenStatic = 3
    
    Const adCmdUnknown = &H0008
    Const adCmdText = &H0001
    Const adCmdTable = &H0002
    Const adCmdStoredProc = &H0004  
%>
 
Ciao, ho provato ad allegarti la cartellina zippata che contiene tutto ma mi da sempre errore, posso mandartela in altro modo?
Proviamo così... scaricala da qui link rimosso
 
Ultima modifica di un moderatore:
intanto come immaginavo alcune variabili non vengono valorizzate, prova ad usare la query riga 23 così:
Codice:
            strSQL = "SELECT * FROM T_Users WHERE " & idname & " = '" & idvalue &"';"

ho fatto alcune prove con la riga 94 modificata così:

Codice:
        strSQL = "SELECT * FROM T_Users WHERE Username = 'User' "
 
Ciao, ho provato ad inserire alla riga 23 il codice che mi hai suggerito ma quando poi vado a fare una modifica al nome dell'utente ed a salvare mi restituisce il seguente messaggio di errore

-------------------------------------------------------------------------------------
Microsoft JET Database Engine error '80040e14'

Errore di sintassi (operatore mancante) nell'espressione della query '= '''.

/admin/editUtenti.asp, line 29
-------------------------------------------------------------------------------------

inoltre non ho ben capito, devo provare a cambiare entrambi i codici?
Il secondo intendevi posizionarlo alla riga 94?
 

Discussioni simili