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

    Trasformare la stringa in una funzione

    Salve a tutti...
    allo scopo di creare dinamicamente i menu,
    ho creato una tabella dei MENU, in oracle, che detiene
    l'ID, la caption, altre informazioni di minore importanza
    e il nome della funzione che, se viene cliccata quella voce di menu,
    deve essere lanciata nel mio programma.
    Ovviamente il nome della funzione non è altro che una stringa (VARCHAR2(20)).

    Supponiamo di aver cliccato la voce Esci che mi richiama la funzione ESCI del mio programma: il recordset mi restituisce il nome della funzione, appunto ESCI, ma come faccio ad eseguire la funzione se ho il suo nome sotto forma di stringa?

    Ci vorrebbe una cosa del tipo
    CALL TO_FUNCTION(stringa)

    La soluzione potrebbe essere quella di avere degli EXE esterni al progetto, cosa che devo evitare a favore di funzioni interne allo stesso progetto.

    Ma come si può fare??

    Grazie
    :-) fafà :-)

  2. #2
    ma crearli tutti e renderli invisibili abilitandoli in base ai permessi dell'utente
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Il mio obiettivo è quello di rendere dinamico il tutto;
    se voglio modificare il comportamento di un menu, cambiando la funzione a quella voce associata, lo faccio direttamente agendo sul database e non sul codice.

    Come si trasforma una

    Call "nomefunzione"

    in

    Call nomefunzione ??
    :-) fafà :-)

  4. #4
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Forse non ho capito bene il problema...diciamo che tu ricavi dal DB il nome della funzione che è ad esempio "Esci",non puoi chiamare una routine generale che poi ti manda alla tu a funzione come il tuo post iniziale?
    Ovvero call Funzioni("Esci")

    Funzioni(la_tua_stringa("Esci"))

    if la_tua_stringa = "Esci" then
    Call Funzione_Esci()
    end if

    if la_tua_stringa = "Cerca" then
    Call Funzione_Cerca()
    End if

    End Function


    'Ovviamente con un select case invece delle if
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  5. #5
    Utente di HTML.it L'avatar di Sypher
    Registrato dal
    Jun 2003
    Messaggi
    1,994
    Scusa "End Sub" no "End Function"
    La passera non dura perchè Sypher la cattura!

    "No one like us we don't care, we are millwall, super millwall, we are millwall from the DEN"

  6. #6
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Prova ad utilizzare
    codice:
    Call Eval("nomedellatuafunzione")
    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  7. #7
    Alla call eval("nomesub")
    mi risponde l'errore:

    Impossibile trovare il nome 'nomesub' specificato nell'espressione.@È stato specificato un controllo che non era nell'oggetto corrente senza specificare un contesto di maschera o report.@Per fare riferimento ad un controllo in un'altra maschera o report, anteporre al nome del controllo il nome di un insieme, in genere Forms o Reports, e il nome della maschera o del report a cui il controllo appartiene. Ad esempio, Forms![Prodotti]![Scorte].@1@@1

    dove nomesub, identifica una stupida sub di apertura di
    un form (frm.show), dove frm varia a seconda
    della voce cliccata del menu.

    Grazie, cmq
    :-) fafà :-)

  8. #8
    Il problema è proprio quello di rendere il tutto dinamico
    e quindi non dover usare costrutti del tipo SELECT CASE (o if)
    in quanto devo poter aggiungere voci di menu, direttamente agendo sul DB e limitandomi ad aggiornare il progetto aggiungendo la sub
    per il trattamento della nuova voce,
    senza aggiungere nuova istruzioni alla select.
    Grazie, cmq.

    !!Ho risposto a:

    Forse non ho capito bene il problema...diciamo che tu ricavi dal DB il nome della funzione che è ad esempio "Esci",non puoi chiamare una routine generale che poi ti manda alla tu a funzione come il tuo post iniziale?
    Ovvero call Funzioni("Esci")

    Funzioni(la_tua_stringa("Esci"))

    if la_tua_stringa = "Esci" then
    Call Funzione_Esci()
    end if

    if la_tua_stringa = "Cerca" then
    Call Funzione_Cerca()
    End if

    End Function
    :-) fafà :-)

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.