Pagina 1 di 9 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 82
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395

    function che passa il nome da un id

    Ciao a tutti, ho bisogno in una pagina che viene caricara dopo un login e che ha una session dove idreq=session("IdStaff") di visualizzare tutti i messaggi che arrivato all'utente in quel momento on line.
    Nell funzione, chiamata estrainome pongo che il campo To(numerico) deve essere uguale a Idreq. Se lo faccio senza funzione invece di darmi il nome come voglio mi da il numero dell'id!!!
    Il problema e' che questa funzione mi da il seguente errore:

    Error Type:
    Microsoft VBScript runtime (0x800A01C2)
    Wrong number of arguments or invalid property assignment: 'estrainome'
    /site/MessageBoard.asp, line 171

    Cosa vuol dire questo errore? Secondo voi dove ho sbagliato nella funzione?
    Ecco sotto il codice
    <%
    function estrainome
    sql= "SELECT Staff.IdStaff, Staff.Name, MessageBoard.To, FROM Staff INNER JOIN MessageBoard ON Staff.IdStaff=MessageBoard.IdStaff where (((MessageBoard.To)="&Idreq&"));"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,1,3
    do while not(rs.eof)
    response.write rs.fields("Name")
    rs.movenext
    loop

    rs.close
    set rs=nothing
    end function
    %>
    <%
    sql= "SELECT * FROM MessageBoard where To="&Idreq&";"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,1,3
    %>
    </head>

    <body>

    <table width="100%" cellpadding="0" cellspacing="0" style="border: Solid 1px #000000;">

    <tr class="style8">
    <td height="21"></td>
    <td valign="middle" class="style7">Status</td>
    <td></td>
    <td align="left" valign="middle"><span class="style7">Date</span> <span class="style7">[img]images/ordinamento.gif[/img]</span></td>
    <td></td>
    <td align="left" valign="middle"><span class="style7">From</span></td>
    <td></td>
    <td align="left" valign="middle" class="style8"><span class="style7">Type</span></td>
    <td></td>
    <td align="left" valign="middle"><span class="style7">Title</span></td>
    <td></td>
    <td align="left" valign="middle"><span class="style7">Descrption</span></td>

    </tr>

    <tr bgcolor="<%=intSfondo%>" class="style8">
    <td height="20"></td>
    <td valign="middle"><select name="select" size="1" class="style7">
    <option>Select...</option>
    <option>Read</option>
    <option>Done</option>
    <option>On Hold</option>
    </select></td>
    <td></td>
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(2)%></span></td>
    <td></td>
    <td align="left" valign="middle" class="style7"><span class="style7"> <%estrainome 3%> </span></td>
    <td></td>
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(3)%></span></td>
    <td></td>
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(5)%></span></td>
    <td></td>
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(6)%></span></td>
    </tr>

    <%
    rs.movenext
    loop
    rs.Close
    set rs = Nothing

    %>
    </table>
    </form>

    Ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Nella chiamante metti un argomento che non compare nella funzione chiamata. Questo è un esempio corretto:
    codice:
    function miaFunzione(argomento1)
    response.write(argomento1) 'il valore è 3
    End Function
    Quando la richiami devi specificare l'argomento
    codice:
    miaFunzione 3
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  3. #3
    Ti correggo un po' il codice:

    codice:
    <% 
    function estrainome (Idreq) 
    
       dim vName 
    
       sql= "SELECT Staff.IdStaff, Staff.Name, MessageBoard.To, FROM Staff INNER JOIN MessageBoard ON Staff.IdStaff=MessageBoard.IdStaff where (((MessageBoard.To)=" & Idreq & "));" 
    
       Set rs = Server.CreateObject("ADODB.Recordset") 
       rs.Open sql, conn ,1,3 
       
       do while not(rs.eof) 
          vName = vname & "," & rs.fields("Name")  
          rs.movenext 
       loop 
    
       rs.close 
       set rs=nothing 
    
       estrainome = vname 
    
    end function %> 
    <% 
    sql= "SELECT * FROM MessageBoard where To="&Idreq&";" 
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open sql, conn ,1,3 
    %> 
    </head> 
    
    <body> 
    
    <table width="100%" cellpadding="0" cellspacing="0" style="border: Solid 1px #000000;"> 
    
    <tr class="style8"> 
    <td height="21"> </td> 
    <td valign="middle" class="style7">Status</td> 
    <td> </td> 
    <td align="left" valign="middle"><span class="style7">Date</span> <span class="style7">[img]images/ordinamento.gif[/img]</span></td> 
    <td> </td> 
    <td align="left" valign="middle"><span class="style7">From</span></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style8"><span class="style7">Type</span></td> 
    <td> </td> 
    <td align="left" valign="middle"><span class="style7">Title</span></td> 
    <td> </td> 
    <td align="left" valign="middle"><span class="style7">Descrption</span></td> 
    
    </tr> 
    
    <tr bgcolor="<%=intSfondo%>" class="style8"> 
    <td height="20"> </td> 
    <td valign="middle"><select name="select" size="1" class="style7"> 
    <option>Select...</option> 
    <option>Read</option> 
    <option>Done</option> 
    <option>On Hold</option> 
    </select></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(2)%></span></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style7"><span class="style7"> <%=estrainome(3)%> </span></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(3)%></span></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(5)%></span></td> 
    <td> </td> 
    <td align="left" valign="middle" class="style7"><span class="style7"><%=rs(6)%></span></td> 
    </tr> 
    
    <% 
    rs.movenext 
    loop 
    rs.Close 
    set rs = Nothing 
    
    %> 
    </table> 
    </form>
    Le parti in grassetto, sono le parti aggiunte/corrette.
    Provala, dovrebbe tornarti un elenco di nomi (Name), a fronte di un Id (Idreq).
    Anche se secondo me, presupponendo che Idreq sia univoco dovrebbe tornarti un solo nome (Name).

    Fammi sapere se funziona.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    Grazie per le risposte. Maximum ho provato il tuo codice ma mi da un errore di questo tipo:

    The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
    /site/MessageBoard.asp, line 100

    la linea 100 corrisponde all'esecuzione del sql che mi hai scritto, quale potrebbe essere l'errore?

    Ciao e grazie ancora

  5. #5
    Prova a modificare la query della funzione da così:

    codice:
    sql= "SELECT Staff.IdStaff, Staff.Name, MessageBoard.To, FROM Staff INNER JOIN MessageBoard ON Staff.IdStaff=MessageBoard.IdStaff where (((MessageBoard.To)=" & Idreq & "));"
    a così:

    codice:
    sql= "SELECT [Staff.IdStaff], [Staff.Name], [MessageBoard.To], FROM Staff INNER JOIN MessageBoard ON [Staff.IdStaff] = [MessageBoard.IdStaff] where ((([MessageBoard.To]) = " & Idreq & "));"
    Name, To, ecc...sono parole riservate dell'SQL, se vuoi usarle devi racchiuderle tra parentesi quadre [].

    Vedi ora.

    [EDIT]: modifica anche l'altra query da così:

    codice:
    sql= "SELECT * FROM MessageBoard where To="&Idreq&";"
    a così:

    codice:
    sql= "SELECT * FROM MessageBoard where [To] = " & Idreq & ";"
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    grazie ancora ho provato con le parentisi quadre cambia il tipo di errore:
    Error Type:
    ADODB.Recordset (0x800A0BB9)
    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
    /site/MessageBoard.asp, line 100
    l'errore e' sempre all'esecuzione della query...

  7. #7
    La prima o la seconda query?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    la prima querymi da questo errore:

    Error Type:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
    /site/MessageBoard.asp, line 100

    ti riscrivo il codice:

    <%
    function estrainome (Idreq)

    dim vName

    sql= "SELECT [Staff.IdStaff], [Staff.Name], [MessageBoard.To], FROM Staff INNER JOIN MessageBoard ON [Staff.IdStaff] = [MessageBoard.IdStaff] where ((([MessageBoard.To]) = " & Idreq & "));"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,1,3

    do while not(rs.eof)
    vName = vname & "," & rs.fields("Name")
    rs.movenext
    loop

    rs.close
    set rs=nothing

    estrainome = vname

    end function %>
    <%
    sql= "SELECT * FROM MessageBoard where [To]="&Idreq&";"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,1,3
    %>

    che ne pensi?

  9. #9
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Fai questa prova: modifica l'SQL in modo che invece di usare il valore passato alla funzione, abbia un valore esplicito. Praticamente la query smette di essere dinamica e ti restituirà sempre la stessa cosa, ma se funziona c'è evidentemente un problema nel valore passato e sei sicuro che funzione ed SQL sono corretti.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    395
    si ho gia' provato se lo metto fisso il valore mi funziona e' il mome unito all'Id di sessione che mi da problemi....

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.