Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250

    ASP, Access e un record undefined "fantasma....

    Ciao a tutti , ho il seguente problema:

    Ho creato un'applicazione web , utilizzando asp - js e Access .
    Tra le varie funzionalità ne ho una di login e una di gestione degli utenti che intervengono su una tabella AUser .

    Per gestire la tabella faccio una normalissima insert e una normalissima Delete (che uso nella stessa forma anche in altre funzionalità) che permettono rispettivamente , mediante form, l'inserimento o cancellazione in db dell'utenza oggetto della modifica.

    Il problema é che, a differenza di quanto avviene nelle funzionalità similari che utilizzo in altre applicazioni, all'accesso alla pagina che visualizza il form interessato , in DB mi viene creato un record " " senza che l'utente compia nessuna operazione.


    Riassumendo : accedo alla pagina , in DB mi compare il record indesiderato .
    Utilizzando la funzione di cancellazione, che ho creato, sul medesimo record questa viene praticamente annullata in fase di reload della pagina che ne crea uno nuovo ....



    Questo é il codice del Form e a seguire il codice ASP-JS che utilizzo per l'insert in DB di un nuovo utente :
    codice:
    <div id="NewUser"  >
    
    <h2>User Managment</h2>
    
       <form name="NewClient" action="manager.asp" METHOD="GET" > 		
          <table id="tabellacentr">
    	 <tr><td>ID:</td>
    		<td><input type="text" name="Nick" size="8" value=""></td>
    		<td> Password:</td>
    		<td><input type="text" name="PSW" size="16" value=""></td>
                    <td> Name:
    		<td><input type="text" name="Name" size="8" value=""></td>
                    <td> Surname :</td>
    		<td><input type="text" name="Surname" size="8" value=""></td>
                    <td> Role: <select id="v3" name="Roleselect">
                                 <option value="2"> User</option>
                                 <option value="1"> Administrator</option>
                              </select></td>
                    <td><input type="Submit" name="submit" value="Edit" onClick=""> </td>
                   </tr>
    	    </table>
    	 </form>			
    <hr>
    
    <form name="utenti" action="manager.asp" METHOD="GET" > 
                             
                 <table id="tabellacentr"><tr><td>ID</td><td>PW</td><td>Role</td><td>Last access</td> <td>Surname</td> <td>Name</td><td></td></tr><%
                       var lgt;
                       var dSQLString;
                       lgt =Server.CreateObject("ADODB.Recordset");
                       dSQLString ="Select * from AUser";       
                       lgt =con.Execute(dSQLString);
    
                       var pl;
                       var vl;
                       var dl;
                       var rl;
                       var il;
                       var sl;
                       while (!lgt.EOF) { pl = lgt("ID");
                                          vl = lgt("PW");
                                          rl = lgt("Role");
                                          sl = lgt("surname");
                                          il = lgt("Pname");
                                          dl = lgt("Ultimo_accesso");
                                     
                                                 %><tr><td><% Response.write(pl) %></td><td><% Response.write(vl)%></td><td><% Response.write(rl) %></td><td><% Response.write(dl) %><td><% Response.write(sl) %><td><% Response.write(il) %></td><td> 
                                         <input type="button" name="Delete" value="Delete" onclick="JavaScript:CancUser('<%=pl%>');"></td>
                                                    </tr>
                                         <% lgt.MoveNext( ); 
    				  };%>
                                 </table>
                            
                     </form> 
    </div>
    Inserimento dei dati lato server al reload
    codice:
    <%/* ------------------- Variabili per inserimento nuovo utente in DB-------------  */
    var Nick = Request.Querystring("Nick") ;
    var pwn = Request.Querystring("PSW") ;
    var nnw = Request.Querystring("Name") ;
    var Sn = Request.Querystring("Surname");
    var Rlp = Request.Querystring("Roleselect");
    %>
    
    <%/*-------------------------------------Insert in db nuovo utente */
     if (Nick !=""){
           
                    if (rl =="1"){    /*rl é una variabile estratta da session che idendifica il ruolo dell'utente*/     
                    var co;
                    var sConString; 
                
                 cn = Server.CreateObject("ADODB.Connection"); 
                 sConString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source = "+   Server.MapPath("./2003Guide.mdb");
                 cn.Open(sConString); 
                                      
    		    var trns ="6";
                        var Descr="Insert New User "; 
                        var data = new Date();
                        var pag ="Manager.asp";
    
                        var slg;
                        var qSQLString;
                                                    slg =Server.CreateObject("ADODB.Recordset");
                                                    qSQLString = "INSERT into AUser ([ID],[PW],[Role],[Surname],[Pname]) values ('"+ Nick +"','"+ pwn +"','" + Rlp +"','"+ Sn +"','"+ nnw +"')"; 
                                                    slg=cn.Execute(qSQLString);
    												qSQLString = "";
                                 
                                           
    										  
                                                    var slg;
                                                    var qSQLString;
                                                    slg =Server.CreateObject("ADODB.Recordset");
                                                    qSQLString = "INSERT into Log ([Transaction],[Description],[User],[Date],[Page]) values ('"+ trns +"','"+ Descr +"','" + name +"','" + data  +"','" + pag +"')"; 
                                                    slg=cn.Execute(qSQLString);
    						cn = "";
    						qSQLString ="";
    						cn.Close;
                                }; 
    							
                             };
    %>

    Dove sto sbagliano ?
    Potrebbe dipendere da impostazioni sbagliate in Access?

    Vi ringrazio anticipatamente per pazienza , tempo e attenzione.
    Ciao .
    Evander

  2. #2
    per caso ti inserisce anche una riga di log vuota?

    poi, abbi pietà del mio unico povero neurone sopravvissuto, e spiegagli con parole poverissime questa tua frase

    Riassumendo : accedo alla pagina , in DB mi compare il record indesiderato .
    Utilizzando la funzione di cancellazione, che ho creato, sul medesimo record questa viene praticamente annullata in fase di reload della pagina che ne crea uno nuovo ....


  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    Ciao !
    Scusami , mea culpa, era tardi e domenica sera ....non sono stato a badare alla chiarezza in effetti .:-)

    In pratica succede questo (ho appena fatto un controllo più attento nella tabella di log, come non avevo fatto in precedenza per la fretta):

    a ogni accesso alla pagina da parte del client vengono attivate tutte le funzioni (anche quelle legate a funzioni gemelle che inseriscono o cancellano altri tipi di dati ). Soffermandomi sulle funzioni legate alla gestione delle utenze , sopra mostratevi, in pratica quando l'utente accede alla pagina viene fatto nell'ordine prima una delete poi un insert, probabilmente però dato che non passo nessun valore alla pagina mediante get la prima non ha effetto, la seconda crea un record vuoto .....
    (ti posto qui sotto la funzione di Delete .

    Probabilmente penso che i controlli (if) che effettuo , per esempio ...

    codice:
    var Nick = Request.Querystring("Nick") ;  
      if (Nick !=""){
    ... che dovrebbero impedire l'avvio di tali funzioni in caso di accesso alla pagina senza passagio di parametri in realtà vengano valutati in maniera errata (probabilmente per colpa di una mia errata sintassi )

    Parte relativa alla cancellazione utente
    codice:
    if (leg =="log" ){                
                     /*se l'utente NON é gia loggato*/
                      var Nock = Request.Querystring("CancellaUser"); 
                      if (Nock !=""){
                                    if (rl =="1"){ 
    			                        var can;
                                        var sConString; 
                
                                         can = Server.CreateObject("ADODB.Connection"); 
                                         sConString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source = "+ Server.MapPath("./2003Guide.mdb");
                                         can.Open(sConString);  
    			  
    			                         var st;
                                         var ySQLString;
                                         st =Server.CreateObject("ADODB.Recordset");
                                          ySQLString ="DELETE * from AUser where ID= '"+ Nock +"'"; 
                                         st=can.Execute(ySQLString);
    
                                        var trns ="6";
                                        var Descr="Deleted User "; 
                                        var data = new Date();
                                        var pag ="Manager.asp";
    
                                                    var plg;
                                                    var qSQLString;
                                                    plg =Server.CreateObject("ADODB.Recordset");
                                                    qSQLString = "INSERT into Log ([Transaction],[Description],[User],[Date],[Page]) values ('"+ trns +"','"+ Descr +"','" + name +"','" + data  +"','" + pag +"')"; 
                                                    plg=can.Execute(qSQLString);
    												
                                    };
                            }; 
               };
    /*--------------------------------*/%>
    
    <%/*-------------------------------------Cancellazione Modello ---*/
     if (leg =="log" ) /*se l'utente é loggato*/
                     { var Nock = Request.Querystring("CancModel"); 
                      if (Nock !=""){
                                     if (rl =="1"){ var st;
                                                    var ySQLString;
                                                    st =Server.CreateObject("ADODB.Recordset");
                                                    ySQLString ="DELETE * from 4ModelNomenclature where Cod='"+ Nock +"'"; 
                                                    st=con.Execute(ySQLString);
    
    
                                        var trns ="8";
                                        var Descr="Delete Model "; 
                                        var data = new Date();
                                        var pag ="Manager.asp";
    
                                                    var plg;
                                                    var qSQLString;
                                                    plg =Server.CreateObject("ADODB.Recordset");
                                                    qSQLString = "INSERT into Log ([Transaction],[Description],[User],[Date],[Page]) values ('"+ trns +"','"+ Descr +"','" + name +"','" + data  +"','" + pag +"')"; 
                                                    plg=con.Execute(qSQLString);                                                
                                };
                    }; 
        };
    In ogni caso si, viene effettuata la registrazione nella tabella di log......

    Ti ringrazio per la disponibilità !
    Evander

  4. #4
    a parte la valanga incontrollata di parole, immagino che tu sbagli a controllare se la insert la devi fare davvero oppure no.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    250
    Concordo ...anche sulla valanga di parole

    cmq a questo punto ti chiederei

    Pensavo che passando nessun valore tramite get il seguente if dovesse impedire che l'insert ecc vengano eseguiti , mi sto sbagliando ?

    codice:
    var Nick = Request.Querystring("Nick") ;  
       if (Nick !=""){ ...
    Evander

  6. #6
    fattela stampare e controlla

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.