Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie

Rimani informato sugli aggiornamenti di SOS-OFFICE. Inserisci il tuo indirizzo e-mail: Informativa sulla privacy

Access

  • Access 2007-2010 Convertire le macro incorporate in codice VBA

    Access 2007 e Access 2010, quando si creano, sulle maschere e i report, dei pulsanti con la creazione guidata dei controlli scrivono macro incorporate e non codice VBA, come le vecchie versioni di Access.

    Dispongono anche di un pulsante che dovrebbe permettere la conversione delle macro incorporate in VBA. Dico dovrebbe perché in realtà questo pulsante non funziona né in Access 2007, né in Access 2012. La conversione funziona correttamente solo se le macro da convertire non si trovano all'interno di una maschera o di un report, ma sono salvate come elementi autonomi (e sono visibili nel riquadro di spostamento di Access).

  • Access VBA: svuotare un campo multivalore

    Oggi voglio parlarvi di Access. Anche in questo caso, il post nasce da una esigenza che ho avuto nel mio lavoro quotidiano: infatti avevo bisogno di svuotare, via codice, un campo multivalore da una maschera. Non è possibile assegnargli una stringa vuota o il valore zero, sarebbe troppo facile ;) e allora, come si fa? Ve lo spiego di seguito.

  • Access: calcolare la frequenza di distribuzione in una query

    Immaginiamo di avere un database (allegato qui) che contiene la tabella Listacomuni al cui interno si trova l’elenco dei comuni italiano con il loro numero di abitanti.

    Ora vogliamo sapere, mediante una query, quanti sono i comuni italiani più di un milione di abitanti, quanti hanno un numero di abitanti compreso fra 500 mila e un milione, quanti sono sopra i 100 mila abitanti e quanti non raggiungono questa soglia.

  • Access: le funzioni di aggregazione database con criteri basati su date

    Ogni tanto "litigo" con le funzioni di aggregazione di Access, in particolare con i loro criteri. Il mio ultimo "dibattito" è avvenuto con la funzione DSum e un criterio basato su una data. Riporto qui degli esempi di funzione che possono aiutarvi, nel caso in cui dobbiate "litigare" anche voi con queste funzioni. I miei esempi fanno riferimento ad Access 2016.

  • Access: ricollegare le tabelle dei database divisi

    Nel post di oggi voglio occuparmi di Access e affrontare un problema piuttosto noioso che si verifica quando si sceglie di dividere un database in modo da avere, in due file distinti, il front end e il back end con le tabelle.

    Purtroppo Access, nel front end memorizza il percorso assoluto del database back end che contiene le tabelle coi dati, il che implica che, se si spostano i due database in un nuovo computer o in una diversa posizione dello stesso computer, il front end non è più in grado di trovare le tabelle coi dati, a meno di non intervenire manualmente.

    Ma, se dovete inviare il database ad un altro utente che non è in grado di fare questa modifica…. O a diversi utenti, la via dell’aggiornamento manuale non è percorribile.

    Non esiste una versa e propria soluzione al problema, ma possibili workaround. Uno di questi è stato proposto da Courtney Owen alla pagina https://blogs.office.com/2012/08/03/automatically-relink-microsoft-access-tables/

    Ripropongo qui il suo metodo e il suo codice con una minima variante (indispensabile per il corretto funzionamento).

    Premetto che questo metodo presuppone che front end e back end si trovino nella stessa cartella: in questo modo, via codice, si può leggere il precorso del file front end e sostituirlo a quello originale presente nella striga di connessione che permette di collegare le tabelle del back end.

    Vediamo come fare.

    Per cominciare, è necessario creare un modulo di codice e inserire al suo interno la seguente funzione pubblica (ma mia mini-modifica è evidenziata in grassetto):

    Public Function RefreshTableLinks() As String
        On Error GoTo ErrHandle

        Dim db As DAO.Database
        Dim tdf As DAO.TableDef
        Dim strCon As String
        Dim strBackEnd As String
        Dim strMsg As String
        Dim intErrorCount As Integer

        Set db = CurrentDb

        'Loop through the TableDefs Collection.
        For Each tdf In db.TableDefs
            'MsgBox tdf.Connect
            'Verify the table is a linked table.
            If Left$(tdf.Connect, 10) = ";DATABASE=" Then
                'Get the existing Connection String.
                strCon = Nz(tdf.Connect, "")
                'Get the name of the back-end database using String Functions.

                strBackEnd = Right$(strCon, (Len(strCon) - (InStrRev(strCon, "\") - 1)))
              
                'Verify we have a value for the back-end
                If Len(strBackEnd & "\") > 0 Then
                    'Set a reference to the TableDef Object.
                    Set tdf = db.TableDefs(tdf.Name)
                    'Build the new Connection Property Value.
                    tdf.Connect = ";DATABASE=" & CurrentProject.Path & strBackEnd
                    'Refresh the table link.
                    tdf.RefreshLink
                Else
                    'There was a problem getting the name of the back-end.
                    'Add the information to the message to notify the user.
                    intErrorCount = intErrorCount + 1
                    strMsg = strMsg & "Error getting back-end database name." & vbNewLine
                    strMsg = strMsg & "Table Name: " & tdf.Name & vbNewLine
                    strMsg = strMsg & "Connect = " & strCon & vbNewLine
                End If
            End If
        Next tdf

    ExitHere:
        On Error Resume Next
        If intErrorCount > 0 Then
            strMsg = "There were errors refreshing the table links: """ _
                   & vbNewLine & strMsg & "In Procedure RefreshTableLinks"""
            RefreshTableLinks = strMsg
        End If
        Set tdf = Nothing
        Set db = Nothing
        Exit Function

    ErrHandle:
        intErrorCount = intErrorCount + 1
        strMsg = strMsg & "Error " & Err.Number & " " & Err.Description
        strMsg = strMsg & vbNewLine & "Table Name: " & tdf.Name & vbNewLine
        strMsg = strMsg & "Connect = " & strCon & vbNewLine
        Resume ExitHere

    End Function

    Dovete richiamare questa funzione sul caricamento della maschera principale del database o, perché sia eseguita come primo elemento all’apertura del file, nella macro AutoExec, ossia una macro esterna a cui viene assegnato proprio il nome AutoExec.

    La macro deve contenere la azione EseguiCodice che richiama, appunto, la funzione appena creata.

     

  • Avviare Office in modalità protetta

    A vuole capita che a causa di un componente aggiuntivo creato da voi o da terze parti uno deiprogrammi Office non si riesca ad avviare correttamente.

    Allora provate ad aprirlo in modalità protetta, cioè senza caricare i componenti aggiuntivi.

    Se lavorate con Win 8, nella schermata con l'elenco delle App, nella casella di ricerca in alto a destra scrivete excel /safee premete il tasto INVIO

    Se, invece, lavorate con Windows 7, fate clic sul pulsante Start, quindi scegliete Esegui scrivete excel /safee premete il tasto INVIO

  • File di corrispondenza fra i comandi di Office 2003 e 2007

    Chi deve affrontare il passaggio dalla versione 2003 alla versione 2007/2010 dei programmi della suite Office spesso si trova disorientato ed è in difficoltà nel ritrovare i comandi che gli erano familiari.

  • Le immagini MSO nei controlli VBA

    Nella barra multifunzione di Excel e in genere dei programmi Office ci sono molte icone rappresentative di diverse funzionalità. Ne abbiamo già parlato a proposito della personalizzazione della barra multifunzione , ora vogliamo vedere come usarle nei form VBA.

  • VBA - Access contare i record di una maschera

    Nell'articolo di oggi, vogliamo mostrare come contare in modo veloce, con VBA, i record del recordset sottostante ad una maschera.

  • VBA - Blocchi di commento

    Una delle carenze maggiori dell'editor di VBA è il fatto che non è possibile, commentare (o de-commentare) interi blocchi di codice, ma solo una riga alla volta, scrivendo (o cancellando) manualmente l'apostrofo prima del codice da commentare (o de-commentare). In realtà si tratta di una mancanza solo apparente visto che queste funzionalità esistono, ma sono incredibilmente nascoste.

  • VBA - creare una comboBox che mostra l'elenco degli anni in modo perpetuo

    Ci sono molte situazioni in cui può essere utile un fom con una casella combinata che mostra un elenco di anni.

    Immaginiamo che la nostra casella combinata debba mostrare l'elenco degli anni dal 1910 fino all'anno in corso. Ovviamente, l'anno in corso cambia ogni anno e, se popolassimo in modo statico la casella combinata, ogni nuovo anno dovremmo aggiungerle una voce per l'anno in corso.

    Usando Visual Basic possiamo risolvere questo piccolo problema.

  • VBA Reimpostare una casella combinata

    Anche oggi torniamo a parlare di caselle combinate.

    Vogliamo vedere come sia possibile riportare la casella combinata al suo valore iniziale, dato che non esiste un metodo reset o qualcosa di simile.

    Per superare questo problema, si fa ricorso alla proprietà LastIndex e le si assegna il valore -1, così

    comboBox.LastIndex = -1

  • VBA: evitare la chiusura dei form con il pulsante X

    A volte capita di costruire dei form VBA che non devono essere chiusi se non attraverso le funzionalità del form stesso. Per questo è necessario evitare che il form si possa chiudere tramite il pulsante X in alto a destra del form.

  • VBETools: rinominare oggetti e codice

    Una delle cose che trovo più "insopportabile" dell'editor  VBA è che se si cambia il nome ad un oggetto di un form o del foglio di lavoro (magari un pulsante) per il quale si è già scritto del codice, occorre correggere anche il codice perché faccia riferimento al nuovo nome.

  • Video: bloccare i file recenti

    Nuovo video: come avere un file di uso frequente sempre a disposizione

  • Video: Esportare da Access dati in formato Excel

    Da oggi SOS-OFFICE sbarca su YouTube con un nuovo canale. Iscrivetevi!

    Il primo video mostra come esportare dati da Access ad Excel

Joomla templates by a4joomla