Condividi tramite

ribbon barra strumenti personalizzata apertura report e form

Anonimo
2013-06-24T09:02:38+00:00

Salve, volevo modificare un applicativo facendo aprire dalla Ribbon alcuni report e delle form, mi sono documentato ed ho visto che il tutto è fattibile da xml e USysRibbons. Sono riuscito a creare sia la scheda che i bottoni ma non conosco la sintassi per aprire un determinato report o form. Ho anche provato ad usare IDBE ribbon creator ma non riesco ad ottenere ciò che voglio (probabilmente perchè non so usarlo).

In teoria potrei risolvere tramite l'uso di macro dato che per quello ho trovato esempi sul sito di office, mi piacerebbe però  evitare di creare macro ed imparare il codice che mi serve.

Grazie

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2013-06-24T09:28:08+00:00

    Ciao GoG\_,

    se hai già creato la scheda e i pulsanti di comando diciamo che il più è fatto.

    Devi ora definire l'azione che ciascun pulsante deve compiere quando viene premuto.

    Nella definizione del codice XML questo comportamento viene dato dal tag OnAction.

    Prendendo a riferimento l'esempio del sito http://www.accessribbon.de/en/?Access_-_Ribbons:Callbacks:Button_-_onAction, vedrai che nel primo blocco di codice, che definisce la scheda i pulsanti è contenuto il testo

    onAction=``"MyButtonCallbackOnAction"

    MyButtonCallbackOnAction è appunto la routine che viene chiamata al click sul pulsante. La comodità è che puoi, come nell'esempio, definire un unica routine richiamata da tutti i pulsanti e poi discriminare nel suo interno per eseguire l'azione (nel tuo caso l'apertura del report) personalizzata per ciascun pulsante (i pulsanti chiamanti sono distinguibili per il valore control.Id che viene passato alla routine chiamata).

    Seguendo quell'esempio, dovresti quindi definire in un modulo standard una routine MyButtonCallbackOnAction di questo tipo:

    ---

    Sub MyButtonCallbackOnAction(control As IRibbonControl)     ' Callback Ribbon Button Klick     Select Case control.id         Case "MyBtn1"

                DoCmd.OpenReport ........

            Case "MyBtn2"

                DoCmd.OpenReport ........

            Case Else             MsgBox control.id & " click"     End Select End Sub

    ---

    Dove MyBtn1, MyBtn2 sono i corrispondenti valori del tag button id che hai utilizzato nella definizione dei pulsanti

    David

    La risposta è stata utile?

    0 commenti Nessun commento

17 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-06-24T14:46:15+00:00

    Puoi dipendere dal fatto che ho altri 3 moduli?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-06-24T14:41:16+00:00

    Ciao GoG\_,

    ho utilizzato il tuo codice tanto per creare il ribbon Riparazioni (con relativo gruppo e controllo) quanto per la routine richiamata dal pulsante.

    La buona notizia è che funzionano perfettamente :-)

    Qui puoi trovare il db di prova con il tuo codice: Ribbon Callback

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-06-24T14:15:41+00:00

    Mi sa che sbaglio qualcosa.

    Ho creato il modulo chiamato "Ribbon_callback" e li ho inserito la routine:

    Option Compare Database

    Sub MyButtonCallbackOnAction(control As IRibbonControl)

        ' Callback Ribbon Button Klick

        Select Case control.ID

            Case "MyBtn1"

                 DoCmd.OpenReport "commissioni senza consegne", acPreview

            'Case "MyBtn2"

               ' DoCmd.OpenReport ........

            Case Else

                MsgBox control.ID & " click"

        End Select

    End Sub

    ho modificato l'xml per fare una prova al volo con questo codice:

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

      <ribbon startFromScratch="false">

        <tabs>

          <tab idMso="TabCreate" visible="false" />

          <tab idMso="TabHomeAccess" visible="false" />

          <tab idMso="TabExternalData" visible="false" />

          <tab idMso="TabDatabaseTools" visible="false" />

          <tab id="dbCustomTab" label="Riparazioni" visible="true">

            <group id="dbCustomGroup" label="Controllo">

              <button id="MyBtn1" size="large" label="Click me" onAction="MyButtonCallbackOnAction"/>

            </group>

          </tab>

        </tabs>

      </ribbon>

    </customUI>

    ma ricevo questo avviso se provo a cliccare nel bottone della ribbon appena creata:

    CAS v 1.0: Impossibile eseguire la macro o la funzione di richiamata 'MyButtonCallbackOnAction'. assicurarsi che la macro o la funzione esiste e che i parametri siano corretti.

    Forse il modulo deve chiamarsi in un determinato modo?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-06-24T10:53:43+00:00

    Di pomeriggio provo e ti faccio sapere , mi sembra abbastanza semplice . Grazie mille per la risposta esaustiva :)

    La risposta è stata utile?

    0 commenti Nessun commento