Errore Report

di il
15 risposte

Errore Report

Salve a tutti. Sono nuovo del forum. Non sono un esperto programmatore ma mi cimento nella creazione di qualche piccolo database il cui utilizzo mi torna molto utile in campo lavorativo.
Sto avendo un pò di problemi con il report del database di seguito descritto.
-TAB DATI;
-QUERY SEMPLICE con criteri di ricerca in base al COGNOME e al NOME;
-MASCHERA PRINCIPALE CON PULSANTI "ESCI", "INSERISCI", "RICERCA";
-MASCHERA INSERISCI CON PULSANTI "NUOVO" e "INDIETRO";
-MASCHERA RICERCA CON PULSANTI "NUOVA RICERCA" , "INDIETRO" e "STAMPA SCHEDA";
-REPORT "SCHEDA";
PROBLEMA!!!! quando clicco sul pulsante "STAMPA SCHEDA" nella maschera "RICERCA" mi appare un errore:"Il modulo di gestione del database non può bloccare la tabella "DATI" perchè in uso da un altro processo o utente".
Perchè se il pulsante STAMPA SCHEDA lo inserisco nella maschera "principale" funziona tutto bene?
Chi sa come aiutarmi a risolvere? Grazie anticipatamente a tutti.

15 Risposte

  • Re: Errore Report

    Come hai creato il pulsante STAMPA SCHEDA?
    Vai nelle proprietà del pulsante, scheda Eventi, Su clic.
    Se è associato il nome di una macro, dicci cosa fa questa macro.
    Se c'è scritto [Routine evento] clicca sui tre puntini per vedere il codice VBA che c'è sotto, copialo e incollalo qui nel forum. Utenti esperti dovrebbero capirci qualcosa.
  • Re: Errore Report

    Il pulsante è stato creato con il wizard richiamando semplicemente la funzione di apertura del report. Mentre il report prende i dati dalla stessa query di ricerca che usa la maschera "RICERCA". Comunque il codice è il seguente:

    Private Sub Comando52_Click()
    On Error GoTo Err_Comando52_Click
    Dim stDocName As String
    stDocName = "SCHEDA PANDETTAMENTO"
    DoCmd.OpenReport stDocName, acViewReport
    Exit_Comando52_Click:
    Exit Sub
    Err_Comando52_Click:
    MsgBox Err.Description
    Resume Exit_Comando52_Click
    End Sub

    In realtà, Il risultato che alla fine vorrei ottenere è quello di poter stampare il report relativo al record attivo nella maschera RICERCA anche se sono presenti più record come risultati della ricerca (in caso di omonimia).
  • Re: Errore Report

    Se leggi la guida alla funzione Openreport noterai che supporta un parametro definito WHERE.
    Corrisponde alla stringa di criterio per filtrare i dati.
    Ora immaginando che la tua form abbia un controllo associato alla Pk che deve essere presente anche nel Report, dovrai comporre quella stringa indicando il nome della Pk ed il valore specifico.
    DoCmd.OpenReport stDocName, acViewReport,,"IdPk=" & Me!NomeControlloPK.Value
    Chiaramente prova a verificare le corrispondenze ed i riferimenti....
  • Re: Errore Report

    Dunque... come pk ho messo un contatore denominato IDSPEC. Ma stavo pensando di inserire come pk per esempio il campo COGNOME. Se dovessi fare così, come sarebbero gestiti i casi di omonimia? potrei avere due record con il campo cognome uguale? Mi pare di no. Eppure non mi sembra molto complicato quello che vorrei fare ma mi sto incasinando. Vorrei una semplice maschera che mi mostra i dati dopo una ricerca (e questo funge benissimo) poi da questa maschera vorrei stampare i dati del record corrente, ma mi dà sempre lo stesso errore del blocco della tabella ......
  • Re: Errore Report

    Lascia come chiave primaria IDSPEC, è giusto così. Il campo Cognome non garantisce univocità, quindi non è ideale come chiave primaria.
    Credo di intuire il tuo problema che si può risolvere sia attraverso la via del codice VBA (segui i suggerimenti di @Alex che è molto esperto al riguardo), sia con una semplice macro. In quest'ultimo caso potrei darti una dritta io:
    1. Apri una macro in visualizzazione struttura
    2. Nel primo rigo Azioni, scrivi così:
    ApriReport
         Nome report: TuoReport
         Condizione WHERE: [IDSPEC]=[Maschere]![NomeMaschera]![IDSPEC]
    3. Salva la macro con nome StampaIDSPECCorrente
    4. Vai in visualizzazione struttura maschera
    5. Se non avevi predisposto un pulsante, aggiungi un "pulsante di comando" che chiamerai "Stampa IDSPEC Corrente"
    6. Vai alle proprietà del pulsante, scheda Eventi, Su clic: StampaIDSPECCorrente
    7. Salva tutto

    È importante osservare che anche il report deve avere un campo IDSPEC visibile, altrimenti la condizione WHERE, attraverso il campo che vedi scritto a sinistra di = non può filtrare IDSPEC della maschera.
    Ripeto, io ti ho risposto con macro, ma si può tutto riportare con codice VBA da costruire manualmente perchè le procedure guidate riescono a soddisfare soltanto pochi utilizzi base (ad es. Apri Report (semplice)), ma non un caso particolare come quello che hai proposto tu.
  • Re: Errore Report

    Grazie mille Osvaldo.... ho fatto tutto come mi hai consigliato.....ma ricevo sempre lo stesso maledetto errore del blocco della tabella perchè in uso da altro processo o utente....Non voglio demordere. Ricapitoliamo un attimo.....
    - tabella : DATI (pk: IDSPEC) e altri campi come COGNOME, NOME e quantaltro;
    - query : DATIQUERY con criteri di ricerca [cognome] e [nome];
    - maschera PRINCIPALE con pulsanti INSERISCI , CERCA , ESCI ;
    - maschera INSERISCI DATI con pulsante NUOVO e INDIETRO;
    - maschera RICERCA con pulsanti NUOVA RICERCA, INDIETRO e STAMPA IDSPEC CORRENTE (quello che dovrebbe stampare il report eseguendo la macro);
    - macro NUOVA RICERCA; PRINCIPALE; RICERCA e quella da te suggerita STAMPA IDSPEC CORRENTE;
    - report SCHEDA PERSONALE (al quale ho aggiunto il record IDSPEC)
    A questo punto mi chiedo: cosa devo inserire come origine dati del report? la DATIQUERY immagino.
    E come regalo ricevo sempre il solito errore, credo perchè la tabella sia già impegnata dal processo della query e della maschera RICERCA..... Aiutooooooo
  • Re: Errore Report

    Reset del discorso. Almeno io ho bisogno di una descrizione dettagliata di tutte le tabelle che entrano in gioco, con tutti i campi, tipo di campo e le relazioni. Altrettanto devi fare per la query. Altrettanto per maschera/sottomaschera e spiegare tutti i campi del report. Poi ci dici cosa vuoi ottenere.
  • Re: Errore Report

    E' semplicissimo. Ti spiego tutto.
    -Unica tabella DATI con i seguenti campi:
    idspec (impostato come chiave primaria); nome; cognome; data di nascita; ed altri campi sempre di tipo anagrafico... è inutile che li elenco tutti.
    -Unica query DATIquery, che contiene tutti i campi della tabella, con un criterio di ricerca in base al cognome e al nome.
    -Maschera PRINCIPALE con pulsante INSERISCI (mi apre la maschera INSERIMENTO DATI) , CERCA (mi apre la maschera CERCA (eseguendo la query) ed ESCI (mi chiude l'applicazione)
    -Maschera INSERIMENTO DATI, dalla quale inserisco tutti i campi nella tabella DATI. In questa maschera ho messo anche due pulsanti : NUOVO (operazione nuovo record) e INDIETRO (mi esegue una macro che mi chiude la maschera corrente e mi riporta alla maschera PRINCIPALE.
    Fin qui tutto funziona benissimo. Cioè se inserisco dei dati dalla maschera di inserimento.... e poi faccio una ricerca cliccando sul pulsante CERCA dalla maschera PRINCIPALE, mi appare un primo popup [inserire cognome] poi un secondo [inserire nome] e voilà ecco il risultato della ricerca nella relativa maschera.
    A questo punto diciamo che mi fermo e chiedo aiuto. Una volta che ho cercato i dati, ho bisogno di stampare il report relativo al record corrente visualizzato nella maschera RICERCA. E qui nasce l'errore del blocco tabella. Spero di essere stato un pò più chiaro e grazie.
  • Re: Errore Report

    Adesso ho capito quadrato, però non cambia la sostanza dei suggerimenti che io e @Alex ti abbiamo dato.
    1. Devi considerare che diventa importantissimo che nella maschera dove compaiono i campi Cognome, Nome ecc... ci sia anche il campo IDSpec...anche se non serve a te, serve per il prosieguo del discorso.
    2. Il report deve poggiare sulla tabella DATI e deve comprendere anche il campo IDSpec, se no non possiamo andare avanti.
    3. Nel creare la macro che deve AprireReport, la condizione WHERE filtra il solo dato che in quel momento appare nella maschera DATI rappresentato dal suo IDSpec. Quindi se la maschera si chiama come la tabella DATI, la sintassi WHERE è la seguente:
    [IDSpec]=[Maschere]![DATI]![IDSpec]
  • Re: Errore Report

    OsvaldoLaviosa ha scritto:


    Quindi se la maschera si chiama come la tabella DATI, la sintassi WHERE è la seguente:
    [IDSpec]=[Maschere]![DATI]![IDSpec]
    La maschera non si chiama come la tabella DATI, ma si chiama RICERCA ed è quella che mi restituisce i dati filtrati dalla query DATIquery
  • Re: Errore Report

    Allora la sintassi WHERE diventa la seguente:
    [IDSpec]=[Maschere]![RICERCA]![IDSpec]
  • Re: Errore Report

    PROBLEMA RISOLTOOOO!!! Allora, ho creato un nuovo report con la creazione guidata e ho visto che con la condizione WHERE che mi hai dato, funziona tutto benissimo (ho solo inserito il nome corretto della maschera e cioè "RICERCA". Poi ho confrontato le proprietà del nuovo report con quello che avevo creato io e mi sono accorto che avevo smanettato un casino sui filtri. In particolare la voce "blocco record" deve essere "nessun blocco" e la sequenza deve essere "tutti i record" (io avevo messo record corrente), poi la voce "consenti filtri" deve essere "si" e la voce "filtro al caricamento deve essere "no".
    Ora funziona tutto alla perfezione. Grazie mille e alla prossima!!!!Troppo forti!!
  • Re: Errore Report

    Salve a tutti. Altro problema!!! Con questo database vorrei inoltre poter visualizzare una maschera con tutti i record (e questo lo faccio con la query che già ho) e poter poi selezionare quelli che mi interessano per poi visualizzarli in un report (e questa è la parte che mi viene difficile fare. Ho fatto varie prove, ma senza buoni risultati). Qualche idea? ho cercato un pò in giro ma non ho trovato proprio quello che fà al caso mio. Grazie anticipatamente a tutti.
  • Re: Errore Report

    Salve a tutti. Altro problema!!!
    credo tu debba aprire un nuovo 3d... regolamento...
Devi accedere o registrarti per scrivere nel forum
15 risposte