Cancellazione del codice costituente una query

di il
6 risposte

Cancellazione del codice costituente una query

Buona sera
Vorrei sottoporre alla Vs. attenzione una questione che ha dell'inverosimile, ma purtroppo si verifica!

Nel mio file di Access, attraverso il quale riesco a gestire molte delle attività inerenti il personale, ho predisposto diverse query (4 o 5) che restituiscono rispettivamente dei dati statistici di diverso genere.
Il risultato di ciascuna query, viene esportato in un file excel per successive incombenze periodiche dell'ufficio.
Per far capire di cosa parlo, ad esempio una query restituisce il numero dei dipendenti raggruppato per fasce di età (fino a 30, da 30 a 40, ...)
Attraverso un pulsante, vengono eseguite le esportazioni di vari file excel così generati.
Per ciascuna query, viene visualizzato il messaggio di Access (standard) che informa dell'avvio di ciascuna query, che va confermato in successione.
Fin quì... OK

Occasionalmente però capita di ricevere come errore di una query, il messaggio che informa per una specifica query non viene rilevato "nessun campo di destinazione" (????)
Vado a vedere la struttura della query in questione, e la trovo vuota!
La trovo cioè priva di codice; nella visualizzazione SQL, non c'è neanche scritto SELECT
Bianco assoluto.

Non succede sempre con la stessa query, ed avviene sporadicamente, però... succede (solo con quelle inserite in questa "procedura")
Queste query, vengono eseguite ed utilizzate solo per questo scopo.

Fatto sta che finchè non la riscrivo, la query rimarrà vuota
Apro, chiudo, compatta... niente da fare. Quella query rimane vuota.
(ormai ho capito, salvato il codice, vado di copia/incolla).

Mi rendo conto che ha dell'incredibile, ma come è possibile che accada ciò?

6 Risposte

  • Re: Cancellazione del codice costituente una query

    Qualche forma di corruzione... penso che a meno di errori banali, ma lo trovo poco probabile in quanto sarebbero ripetitivi, potrebbe convenire creare un nuovo applicativo vuoto ed importare tutti gli oggetti, compili il codice e poi compatti.
    Se poi non devi avere la necessità di modificare il predicato SQL scrivilo nel codice, ovviamente non è un suggerimento eccelso ma in generale potrebbe non essere poi una cosa assurda.
  • Re: Cancellazione del codice costituente una query

    @Alex ha scritto:


    ...
    Se poi non devi avere la necessità di modificare il predicato SQL scrivilo nel codice, ovviamente non è un suggerimento eccelso ma in generale potrebbe non essere poi una cosa assurda.
    Grazie Alex
    Non sarebbe una brutta idea, ma quì subentra la mia "ignorantità" che fa da freno
    Non ho dimestichezza con il vba, quindi avrei altre difficoltà su come impostare la sub..
    però mi piacerebbe approfondire la questione.
  • Re: Cancellazione del codice costituente una query

    Prova a crea un nuovo database ed importare tutti gli oggetti dal vecchio:
    https://support.microsoft.com/en-us/office/import-database-objects-into-the-current-access-database-23aea08b-7487-499d-bdce-0c76bedacfdd
    quindi compila e compatta il DB, controllando che la sintassi SQL della query sia corretta.
  • Re: Cancellazione del codice costituente una query

    Pare sia un bug :
    https://docs.microsoft.com/en-us/office/troubleshoot/access/query-must-have-at-least-one-destination-field

    ci sono suggerimenti su come provare a risolvere
  • Re: Cancellazione del codice costituente una query

    Grazie anche a sspintux per l'indicazione.
    Ho applicato il cambiamento suggerito in quella pagina; stiamo a vedere nel futuro se funziona.
    Intanto vorrei approfondire il discorso di implementare il predicato sql nel codice vba...(googlando un pò)

    Leggendo il contenuto dei vari post, mi rendo conto che ho ancora veramente tanto da imparare!
  • Re: Cancellazione del codice costituente una query

    Robpagna ha scritto:


    Grazie anche a sspintux per l'indicazione.
    Ho applicato il cambiamento suggerito in quella pagina; stiamo a vedere nel futuro se funziona.
    Intanto vorrei approfondire il discorso di implementare il predicato sql nel codice vba...(googlando un pò)

    Leggendo il contenuto dei vari post, mi rendo conto che ho ancora veramente tanto da imparare!
    Giusto a titolo di esempio, è evidente che l'applicazione più interessante è per Query ACTION e non Select.
    In un Modulo standard:
    
    Option Compare Database
    Option Explicit
    
    Public Function EseguiQuery1() As Boolean
        Oon Error Resume Next
        Dim sQ1 As String
        sQ1="INSERT INTO ....."
        DbEngine(0)(0).Execute sQ1,DbFailOnError
        EseguiQuery1=err=0
    End Function
    Se invece vuoi un Codice di RIPRISTINO QUERY, da eseguire ONESHOT potresti fare così:
    
    Public Function EseguiQuery1() As Boolean
        Oon Error Resume Next
        Dim sSQL As String
        sSQL ="SELECT * FROM TuaTabella1- ....."
        DbEngine(0)(0).QueryDefs("NomeQuery1").SQL=sSQL 
        
        sSQL ="SELECT * FROM TuaTabella2- ....."
        DbEngine(0)(0).QueryDefs("NomeQuery2").SQL=sSQL 
       
       ecc...
    End Function
Devi accedere o registrarti per scrivere nel forum
6 risposte