Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    query per fare un elenco

    Ciao a tutti a partire da una tabella (operations) devo creare un elenco movimenti dell'utente.

    Questo è iil codice da me scritto
    codice:
     <table>
       <th>autore pagamento</th>
       <th>destinatario</th>
       <th>importo</th>
        	<%		
    				
    				var rst;
    				var sSQLString;
    				rst = Server.CreateObject("ADODB.Recordset");
    				var strUser;
    				strUser = n;
    				
    				sSQLString = "select src,dst,amount from operations WHERE src='" +strUser+"' or dst='" +strUser+"'";
    				
    				rst = con.Execute(sSQLString); 
    				
    				while(!rst.EOF){
    					Response.write("<tr><td>"+rst(0)+
    									"</td><td>"+rst(1)+
    									"</td><td>"+rst(2)+
    									"</td></tr>");
    					rst.movenext();
    				}
    				
    		
    			con.Close();
    			
    		
    		
    		rst = null;
    		con = null;
    		
    			
                	
    					
                
               
                %>
                </table>
    ovvero cerco i record in cui l'utente compare come destinatario o mittente del pagamento nella tabella e poi li stampo a video

    logicamente non mi funziona e mi restituisce questo errore:
    Microsoft JET Database Engine error '80040e07'

    Tipi di dati non corrispondenti nell'espressione criterio.



    help me please

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    *subito* dopo la composizione della stringa SQL metti

    Response.Write "maGGica SQL...: " & sql
    Response.Flush

    copyright Optime, all rights reserved
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    fatto mi da sempre lo stesso errore

    select src,dst,amount from operations WHERE src='4' or dst='4'

    Microsoft JET Database Engine error '80040e07'

    Tipi di dati non corrispondenti nell'espressione criterio.

  4. #4
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    src e dst sono campi di tipo numerico?
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  5. #5
    si perchè sono degli id

    che idiota mi prendeva le virgolette!!! per cui non cercava il 4 ma il '4' ... -.-

  6. #6
    Prova a togliere gli apici:
    select src,dst,amount from operations WHERE src=4 or dst=4
    Chi non cerca trova.

  7. #7
    sisi infatti adesso funziona!

  8. #8
    ho implementato un po' il codice e mi succede una cosa strana ...
    praticamente devo distinguere i casi in cui l'utente è mittente o destinatario del pagamento per cui dopo aver ricavato i nomi utente a partire dall'id, controllo che il nick mittente sia = o != dal nick (che ho precedentemente salvato in un cookie)

    questo è il codice
    codice:
       <table><tr>
       <th>n operazione </th>
       <th>importo</th>
       <th>tipo di pagamento</th>
       <th>utente </th></tr>
        	<%		
    				
    				var rst;
    				rst = Server.CreateObject("ADODB.Recordset");
    				
    				var strUser;
    				strUser = n;
    				
    				var id_rst;
    				query = "select user_id as src from users WHERE nick='" +strUser+"'";
    				id_rst = con.execute(query);
    				id_user = id_rst("src");
    				
    				var rstmove;
    				var sSQLString;
    				sSQLString = "select * from operations WHERE src=" +id_user+" or dst=" +id_user+" ";
    				
    				
    				rstmove = con.execute(sSQLString); 
    				
    				while(!rstmove.EOF){
    					
    						
    							var nick1;
    							query1 = "select nick as n1 from users WHERE user_id=" +rstmove(1)+"";
    							nick1 = con.execute(query1);
    							nick_src = nick1("n1");
    								
    							var nick2;
    							query2 = "select nick as n2 from users WHERE user_id=" +rstmove(2)+"";
    							nick2 = con.execute(query2);
    							nick_dst = nick2("n2");
    							
    								if(nick_src!=Request.Cookies("nick")){
    										var movimento= "ricevuto";
    										Response.write("<tr><td>"+rstmove(0)+
    													"</td><td>"+rstmove(3)+
    													"</td><td>"+movimento+
    													"</td><td>"+nick_src+
    													"</td></tr>");
    								}
    								else if(nick_src==Request.Cookies("nick")){
    								var movimento= "effettuato";
    								Response.write("<tr><td>"+rstmove(0)+
    											"</td><td>"+rstmove(3)+
    											"</td><td>"+movimento+
    											"</td><td>"+nick_dst+
    											"</td></tr>");
    								
    								}
    						
    					rstmove.movenext();
    					
    				}
    		
    			con.Close();
    			
    		
    		
    		rst = null;
    		con = null;
    		
    			
                	
    					
                
               
                %>
                </table>
    Il problema è che non mi legge la if e mi stampa tt i pagamenti effetuati come ricevuti mettendo quindi il nick sorgente = al nome utente..

    non capisco perchè non legge la if!!!

    ho provato a mettere al posto di request.cookie il valore dell'utente che sto usando sul mio sito e funziona, ma quando torno con le variabili smette di funzionare!!
    ho provato anche a mettere una response dentro e fuori al while per verificare che valga ancora la mia variabile ed è corretto..non riesco proprio a capire!

  9. #9
    controlla che nick_src e Request.Cookies("nick") siano valorizzati
    ma non esegue nemmeno l'else if?

  10. #10
    non mi prendeva nick_src allora ho spezzettato il codice facendo proprio i due casi separati e adesso funziona..il codice è lunghissimo ma almeno è corretto grazie ^^

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.