Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    devi fare encoding e converisone dei campi
    ad esempio se tipo è una stringa devi mettere

    sql="exec QueryImpatto_SP '" & CSTR(tipo) & "', ....
    Tutti vogliono parlare, nessuno sa ascoltare.

  2. #12
    Modifica la SP così, vedi il testo in grassetto e l'omissione del "count(evento) as @trovati" iniziale,
    poi la chiami normalmente e nel parametro di output
    @trovati hai il numero di record

    codice:
    CREATE PROCEDURE QueryImpatto_SP
    @tipo int,
    @dal smalldatetime,
    @al smalldatetime,
    @trovati int output
    AS
    SELECT utente.Tipologie.Des_Tipologia, Attivita.Tipologia, 
        Attivita.Dal, Attivita.Al, RigheEvento.Evento, 
        utente.UFFICIO.UFF_CDC, Attivita.Sede, RigheEvento.Ufficio, 
        utente.UFFICIO.DES_UFFICIO, 
        RigheEvento.NPersoneCoinvolte
    FROM utente.Tipologie INNER JOIN
        Attivita ON 
        utente.Tipologie.Cod_Tipologia = Attivita.Tipologia INNER JOIN
        utente.UFFICIO INNER JOIN
        RigheEvento ON 
        utente.UFFICIO.UFFICIO = RigheEvento.Ufficio ON 
        Attivita.Codice = RigheEvento.Evento
    where tipologia=@tipo  AND (NOT (dal>@al OR al<@dal) )
    ORDER BY  utente.UFFICIO.des_ufficio,RigheEvento.evento
    set @trovati=@@ROWCOUNT

  3. #13
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    254
    Mi sembra di aver fatto esattamente come dici, ma il parametro non resituisce nulla (tutti gli altri riesco ad interrogarli). La Store Procedure è:
    codice:
    CREATE PROCEDURE QueryImpatto_SP
    @tipo int,
    @dal smalldatetime,
    @al smalldatetime,
    @trovati int output
    AS
    SELECT utente.Tipologie.Des_Tipologia, Attivita.Tipologia, 
        Attivita.Dal, Attivita.Al, RigheEvento.Evento, 
        utente.UFFICIO.UFF_CDC, Attivita.Sede, RigheEvento.Ufficio, 
        utente.UFFICIO.DES_UFFICIO, 
        RigheEvento.NPersoneCoinvolte
    FROM utente.Tipologie INNER JOIN
        Attivita ON 
        utente.Tipologie.Cod_Tipologia = Attivita.Tipologia INNER JOIN
        utente.UFFICIO INNER JOIN
        RigheEvento ON 
        utente.UFFICIO.UFFICIO = RigheEvento.Ufficio ON 
        Attivita.Codice = RigheEvento.Evento
    WHERE  tipologia=@tipo  AND (NOT (dal>@al OR al<@dal) )
    ORDER BY  utente.UFFICIO.des_ufficio,RigheEvento.evento
    SET @trovati=@@ROWCOUNT

    e la parte ASP è :

    codice:
    session.LCID=1033	
    set objCmd = Server.CreateObject("ADODB.Command")
    objCmd.ActiveConnection = objConn
    objCmd.CommandType = 4'adCmdStoredProc	
    objCmd.CommandText="QueryImpatto_SP"
    
    set parm1=objCmd.CreateParameter("@tipo",adInteger,adParamInput)
    objCmd.Parameters.Append(parm1)
    parm1.Value=tipo
    set parm2=objCmd.CreateParameter("@dal",adDate,adParamInput)
    objCmd.Parameters.Append(parm2)
    parm2.Value=sel_dal
    set parm3=objCmd.CreateParameter("@al",adDate,adParamInput)
    objCmd.Parameters.Append(parm3)
    parm3.Value=sel_al
    set parm4=objCmd.CreateParameter("@trovati",adInteger,adParamOutput)
    objCmd.Parameters.Append(parm4)
    parm4.Value=0
    Set objrst_attivita=objCmd.Execute()
    tot_righe=objCmd.Parameters("@trovati").value
    response.write "
    
    
    valore del parametro di uscita " & objCmd.Parameters("@trovati").value
    ma alla fine tot_righe non contiene niente

    Cosa sbaglio?

    Per Global66: tipo è un intero, e la SP si aspetta un intero, non capisco perchè non gli piaccia

    Grazie ancora della disponibilità

  4. #14
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    ricominciamo da capo: se la SP restituisce un recordset, allora devi aggiungere un campo alla tabella che restituisce il numero di record.

    la modalità più performante, che io ho trovato, è quella di fare
    - conteggio record
    - eventaule ordinamento
    - eventuale paginazione

    tutto dentro le SP, usando una tabella temporanea
    così dalla SP restituisci solo i record che ti serve visualizzare, diminuendo il traffico tra il db server ed il web server,e potendo aprire nella pagina asp di visualizzazione un recorsert statico non scrollabile.

    idea della SP è questa

    - crei la tabella temporanea
    - la popoli con tutte le select che ti servono
    - eventualmente elimini i doppioni
    - ordini i record
    - selezioni dalla temporanea solo i record che ti servono
    - droppi la tabella

    se in ingresso alla SP ti prendi anche alcuni parametri (quanti record restituire, con quale criterio ordinare, da quale finoa quale record visualizare, ecc..) hai una SP che può funzionare in tutti i casi che ti servono.

    in alternativa puoi fare una soluzione mista, dove poi estrai molta più roba di quella che ti serve, che poi devi ripulire e trattare con il codice ASP.....
    Tutti vogliono parlare, nessuno sa ascoltare.

  5. #15
    Ho visto solo ora la tua risposta.
    Mi sono dimenticato una cosa, quando si fanno le select il server restituisce messaggi come "(righe interessate: 10)" e questi confondono gli eventuali parametri di output delle SP.
    Bisogna mettere set nocount on all'inizio e set nocount off alla fine

    codice:
    CREATE PROCEDURE QueryImpatto_SP
    @tipo int,
    @dal smalldatetime,
    @al smalldatetime,
    @trovati int output
    AS
    set nocount on
    SELECT utente.Tipologie.Des_Tipologia, Attivita.Tipologia, 
        Attivita.Dal, Attivita.Al, RigheEvento.Evento, 
        utente.UFFICIO.UFF_CDC, Attivita.Sede, RigheEvento.Ufficio, 
        utente.UFFICIO.DES_UFFICIO, 
        RigheEvento.NPersoneCoinvolte
    FROM utente.Tipologie INNER JOIN
        Attivita ON 
        utente.Tipologie.Cod_Tipologia = Attivita.Tipologia INNER JOIN
        utente.UFFICIO INNER JOIN
        RigheEvento ON 
        utente.UFFICIO.UFFICIO = RigheEvento.Ufficio ON 
        Attivita.Codice = RigheEvento.Evento
    where tipologia=@tipo  AND (NOT (dal>@al OR al<@dal) )
    ORDER BY  utente.UFFICIO.des_ufficio,RigheEvento.evento
    set @trovati=@@ROWCOUNT
    set nocount off

  6. #16
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    254
    Ho provato, ma purtroppo @trovati è sempre vuoto. Ho aggiunto anche un altro parametro di uscita di prova a cui assegno un valore, ma non riesco a leggerlo dalla pagina asp.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.