Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente bannato
    Registrato dal
    Aug 2004
    Messaggi
    213

    Rilevare se una funzione è utilizzata come funzione o sub

    Ho una funzione (esposta come metodo di un webservice) che restituisce una stringa Sql generata in un certo modo, riempie un dataset dato quale parametro, con una tabella che contiene i risultati della stessa query.


    es.
    codice:
    function pippo(byref ds as dataset) as string
        dim da as new sqladapter, sql as string = getquery(...) 'la query viene generata dinamicamente
    
        with da
            .selectcommand = new sqlcommand(sql, new sqlconnection(cn_string))
            .selectcommand.connection.open
            .fill(ds)
            with .selectcommand
                .connection.dispose
                .connection = nothing
                .dispose
            end with
            .selectcommand = nothing
        end with
        return sql  
    end function
    Vorrei, se fosse possibile, che la funzione 'capisca' da sé se è stata utilizzata come funzione, cioé

    codice:
    es. variabile = rifweb.pippo(ds)
    oppure come subroutine

    codice:
    es. rifweb.pippo(ds)
    Questo perché mi deve semplicemente restituire la query generata SENZA fillare il dataset (quindi saltando la parte su database) se la uso come funzione, mentre mi deve riemprire il dataset coi dati estratti se la uso come subroutine.

    E' possibile, quindi, far sì che la funzione nel webservice capisca se è stata utilizzata come funzione oppure subroutine? nel primo caso non voglio che venga riempito il dataset perché sarebbe un'inutile spreco di tempo e risorse se la query deve essere utilizzata in altro modo e non come previsto nella stessa funzione.

    Altra domanda visto che ci sono
    come potete vedere sopra, non ho istanziato delle variabili per il command e la connection, creandoli direttamente "all'interno" dell'adapter invece che assegnandoli, dopo averli creati a parte, alle sue proprietà. Questo perché pensavo che così si potesse risparmiare risorse non creando le variabili.... ho detto una cazzata oppure è come penso? cioé è utile fare così o non cambia una mazza?

    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Per semplificare il tutto aggiungi una variabile boolean alla funzione che a seconda di come la imposti ritorna soltanto la query oppure "filla".
    Metti un bel if al suo interno e sei a posto.
    codice:
    variabile = rifweb.pippo(ds,False)
    
    rifweb.pippo(ds,True)
    Ciao
    Legnetto

  3. #3
    Utente bannato
    Registrato dal
    Aug 2004
    Messaggi
    213
    E' come ho fatto finora

    però volevo appunto evitare di aggiungere un parametro....diciamo che è meno elegante

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419

    Ciao

  5. #5

    Re: Rilevare se una funzione è utilizzata come funzione o sub

    Originariamente inviato da Yauchie
    E' possibile, quindi, far sì che la funzione nel webservice capisca se è stata utilizzata come funzione oppure subroutine? nel primo caso non voglio che venga riempito il dataset perché sarebbe un'inutile spreco di tempo e risorse se la query deve essere utilizzata in altro modo e non come previsto nella stessa funzione.
    Crei due funzioni con lo stesso nome ma con parametri e valore di ritorno diversi.
    es.
    codice:
    sub pippo(byref ds as dataset)
    codice:
    function pippo() as string
    cosi facendo se richiami il metodo passando un dataset verra' usata la prima implementazione altrimenti verra' usata la seconda (overloading).
    Saluti a tutti
    Riccardo

  6. #6
    Utente bannato
    Registrato dal
    Aug 2004
    Messaggi
    213
    Ciao Riccardone (ho visto che hai risposto anche alle altre, thx ),

    ho provato con il polimorfismo ma stranamente mentre la compilazione del webservice va ok, quando aggiorno il riferimento in un progetto che lo usa mi viene restituito un errore. Se invece metto due nomi differenti per le sub/funzioni, tutto ok....

    Che faccio?

  7. #7
    Originariamente inviato da Yauchie
    ho provato con il polimorfismo
    non mi sembra che l'overloading sia = a polimorfismo ma cmq e' una disquisizione che potrebbe soltanto ingarbugliare il discorso.
    quando aggiorno il riferimento in un progetto che lo usa mi viene restituito un errore...
    Quale errore? Oltre all'errore preciso, riporta anche il codice che usi per richiamare la funzione del webservice dall'applicazione client.
    Saluti a tutti
    Riccardo

  8. #8
    Utente bannato
    Registrato dal
    Aug 2004
    Messaggi
    213
    Originariamente inviato da riccardone
    non mi sembra che l'overloading sia = a polimorfismo ma cmq e' una disquisizione che potrebbe soltanto ingarbugliare il discorso.

    Quale errore? Oltre all'errore preciso, riporta anche il codice che usi per richiamare la funzione del webservice dall'applicazione client.
    ops scusa l'erroe
    visto che ci sei qual'é la differenza?

    per l'errore appena riprovo lo posto

  9. #9
    Originariamente inviato da Yauchie
    visto che ci sei qual'é la differenza?
    L'overloading permette di avere in una stessa classe piu' metodi e funzioni con lo stesso nome ma con parametri e tipi restituiti diversi.
    Il polimorfismo e' un sistema che permette a partire da una classe o interfaccia base, di implementare quest'ultima in una classe derivata e modificare il comportamento. Per cui a seconda dell'implementazione della stessa classe o interfaccia base nella classe derivata si potranno avere risultati piu' o meno diversi.
    Saluti a tutti
    Riccardo

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.