Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: array da funzione

  1. #1

    array da funzione

    ciao,
    prima di postare ho cercato nel forum stesso ma credo di non aver ben capito il meccanismo ...
    creo un array all'interno di una function

    ----------------------------
    Function Migliore(id)
    set RS = objconn.execute (querysql)
    if IsNull(RS) then
    dddd=Array(-1)
    else
    do while not RS.eof
    Redim Preserve dddd(RS("xxxx")) RS.movenext
    loop
    end if
    end function
    ----------------------------

    e nello script la richiamo cosí:

    Migliore id
    Response.write dddd(0)

    ----------------------------

    ma l'array (dichiarato all'esterno della function) risulta sempre vuoto

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    hai le idee un po' confuse.

    la funzione consa dovrebbe restituire? un array con cosa dentro?

  3. #3
    lo credo anche io ...
    l'array dovrebbe contenere tutti i campi "xxxx" del recordset creato

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Quindi un array unidimensionale?
    Ma id cosa serve? e querysql dove la costruisci?

    A parte questo, in poche righe di codice hai fatto diversi errori sia concettuali, che sintattici che funzionali

  5. #5
    id é il valore che passo chiamando la funzione e la querysql viene costruita in base all'id.
    la query é corretta e il recordset viene creato correttamente, ho provato con un response.write e i dati sono presenti

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    ma come fa? quando attacchi l'id alla querysql? dentro alla funzione la variabile id non ha alcun senso perchè non la usi mai

  7. #7
    ----------------------------
    Function Migliore(id)
    querysql="SELECT xxxx FROM dddd WHERE tttt="& id
    set RS = objconn.execute (querysql)
    if IsNull(RS) then
    dddd=Array(-1)
    else
    do while not RS.eof
    Redim Preserve dddd(RS("xxxx")) RS.movenext
    loop
    end if
    end function
    ----------------------------


    avevo tagliato la parte di creazione della query perché non credevo servisse per capire il problema ma la query viene eseguita correttamente e il recordset é popolato
    se dopo il ciclo do while not RS.eof metto un response.write RS("xxxx") mi stampa correttamente il valore

  8. #8
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    codice:
    Function Migliore(byRef ObjConn,id) 
    Dim Sql,Rs
    	Sql="SELECT xxxx FROM dddd WHERE tttt="& id 
    	Set Rs = ObjConn.execute (sql)
    	if Rs.EOF then
    		Migliore = Array(-1)
    	else
    		Migliore = Rs.GetRows()
    	end if
    	Rs.Close()
    	Set Rs = Nothing
    end function
    Dichiara le variabili (ne guadagni in velocità e in chiarezza)
    Non usare ObjConn (globale), passala come parametro.
    Rs.GetRows restituisce un array contenente il recodset selezionato.
    Chiudi sempre gli rs, guadagni memoria e velocità

  9. #9
    grazie per la soluzione ma quando poi provo un response.write Migliore(0), dopo la chiamata della function ovviamente, mi dice Subscript out of range sulla riga del response.write

  10. #10
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    ti viene restituito un array!

    codice:
    ar = Migliore(ObjConn,0)
    Response.Write(ar(0))
    oppure
    codice:
    Response.Write( Migliore(ObjConn,0)(0) )

    Una curiosità , ma non è che ti serve solo il primo elemento?

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.