Ricerca record

di il
8 risposte

Ricerca record

Ciao a tutti
ho un nuovo quesito da porre agli esperti, ma prima devo descrivere cosa ho realizzato e sopratutto , come...
Ho un dbase , costruito in maniera "poco ortodossa " , anzi per niente ,che contiene tabelle che riguardano la documentazione dei miei interventi di manutenzione , presso vari clienti.
La sua costruzione parte nel "lontano" 2004 e prevede una sola tabella con dentro tutto, cioè "cliente;data;località;provincia;numero intervento;note;descrizione intervento
( che orrore vero ?), ogni inizio anno iniziavo con una nuova tabella da cui ricavavo una nuova maschera, con gli stessi campi
(più o meno) , l'unica differenza era il nome con cui la salvavo , per es, per il 2004 "interventi2004", per il 2005 "interventi2005" e cosi per ogni anno successivo. Tutto molto semplice ,ma mi sono reso conto che è difficile( ma non impossibile) in questo modo , riuscire ad eseguire delle interrogazioni che coinvolgano tutte le tebelle.
Leggendo delle guide in rete , apprendendo dai forum e facendo "esperimenti", ho iniziato a cercare di ordinare un pò , la mole di dati di 12 anni di attività , che sono salvati nel mio dbase (circa 6000 )
Ho iniziato a realizzare una query di UNIONE , che mi consente di unire tutte le tabelle che mi necessitano,e ci sono riuscito , ma chiaramente voglio andare avanti e interrogare il dbase attraverso altre funzioni e per questo , continuo a studiare e apprendere .
Faccio un passo indietro dicendo che parallelamente alle tabelle ho realizzato nel corso degli anni,le maschere corrispondenti , che mi servono per l'immisione dei dati e per visualizzarli un record alla volta.
Attraverso la creazione di maschere di tipo tabellare,( una per anno e solo con alcuni campi), dentro cui ho inserito dei pulsanti di comando, riesco a ricercare singoli record e leggerli nei particolari oltre che naturalmente a correggerli. Ma questa ricerca è limitata solo all'anno corrispondente alla tabella di origine.
questo è il codice del pulsante ( in questo caso per richiamare il record della maschera "interventi2004":
Private Sub Comando12_Click()
DoCmd.OpenForm "interventi2004", , , "ID = " & [ID]
End Sub
Come si vede la ricerca è per "id" che è pk di ogni tabella.
Funziona tutto bene , apro la maschera tabellare che mi interessa , clicco sul pulsante ,che ho etichettato "particolari" e mi appare il record, chiudo il record e ritorno alla maschera tabellare.
Ora però, vorrei fare la stessa cosa , non già partendo dalle singole maschere , visto che ho creato una maschera " tutti gli interventi ", bensi da questa maschera , e qui nasce il problema .Se creo una maschera tabellare di "tutti gli interventi", con inserito un pulsante che mi apra il record relativo, non posso usare più il codice precedente , in quanto l'ID ,non corrisponde più in modo UNIVOCO al record , perchè
tutti i record di tutte le maschere ,sono stati fusi in una unica maschera "tutti gli interventi" appunto e nella colonna "ID" avrò dei valori che si ripetono periodicamente di anno in anno.
L'unico dato che rimane univoco è la DATA, anche se per una certa DATA ci possono essere ( anzi ci sono) più record ( interveti). Vi chiedo come potrei fare a realizzare la ricerca del record utilizzando il campo "DATA" in abbinamento al campo "Int_n°" .che insieme rappresentano il riferimento univoco del record per tutta la maschera di unione realizzata ?
Spero di essere riuscito a spiegare bene il mio quesito , ma se manca qualche particolare fatemi sapere , io intanto continuo nella "sperimantazione" e apprendimento. grazie per l'attenzione
a presto.

8 Risposte

  • Re: Ricerca record

    Avendo effettuato una query di unione (chiaramente rendendo omogenei i dati fra i vari anni) per identificare una occorrenza sarà sufficiente creare una chiave composita che comprenda Anno + ID.
    Auspicabile, comunque, rivedere la struttura in modo normalizzato.
  • Re: Ricerca record

    Ciao grazie per la risposta Willy
    date le mie limitate conoscenze , non riesco a comprendere la procedura che mi suggerisci
    per identificare una occorrenza sarà sufficiente creare una chiave composita che comprenda Anno + ID.
    ho cercato in lungo e in largo e fatto vari tentativi di inserimento codice per il pulsante di ricerca , ma fino ad ora non ottengo nessun risultato.
    Riassumo schematicamente quanto già esposto :
    ho tante maschere (una per anno)di tipo "giustificato" con dentro tutti i campi.
    ho una maschera "continua" riepilogativa, che riunisce tutte le maschere sudette.
    voglio inserire , nella maschera riepilogativa , un pulsante che mi apra il record della maschera a cui la riga fa riferimento, utilizzando come criterio la Data + l'ID della riga.
    Non riesco a trovare il codice giusto , da inserire nella routine Evento del pulsante .
    grazie ....ciao
  • Re: Ricerca record

    obyone ha scritto:


    La sua costruzione parte nel "lontano" 2004 e prevede una sola tabella con dentro tutto, cioè "cliente;data;località;provincia;numero intervento;note;descrizione intervento
    ( che orrore vero ?), ogni inizio anno iniziavo con una nuova tabella da cui ricavavo una nuova maschera, con gli stessi campi
    (più o meno) , l'unica differenza era il nome con cui la salvavo , per es, per il 2004 "interventi2004", per il 2005 "interventi2005" e cosi per ogni anno successivo. Tutto molto semplice ,ma mi sono reso conto che è difficile( ma non impossibile) in questo modo , riuscire ad eseguire delle interrogazioni che coinvolgano tutte le tebelle.

    obyone ha scritto:


    ho tante maschere (una per anno)

    willy55 ha scritto:


    Auspicabile, comunque, rivedere la struttura in modo normalizzato.
    Anch'io la vedo secondo l'ultima frase di willy55. Trovo errato avere molte tabelle, una per ogni anno...con la conseguenza (ulteriore) che non riesci a interrogarle tutte insieme.
    Per me devi avere una sola tabella e porre varie interrogazioni (query):
    - per singolo anno
    - tutti gli anni
  • Re: Ricerca record

    Grazie Osvaldo
    la considerazione della mancanza di normalizzazione del mio db , l'avevo fatta in apertura del post e rifare tutto il db d'accapo proprio non me la sento.
    Volevo trovare una soluzione riferita alla struttura che gia esiste. Dalle Vs risposte devo dedurre che la mia soluzione , non è tecnicamente possibile ?
    beh ! se è cosi abbandono ..... se invece c'è qualche "scappatoia" ... datemi qualche suggerimento.
    grazie
  • Re: Ricerca record

    Vorrei solo innescare in te un meccanismo corretto. Ci capita spesso di leggere di utenti che partono da un database non normalizzato e sperano o pretendono di continuare su tale via. Talvolta si trovano anche soluzioni via VBA, ma si tratta quasi sempre di pezze a colori che riparano al piccolo danno momentaneo. L'esperienza sui forum mi ha insegnato che con Access l'appetito viene mangiando, ossia oggi tu hai proposto questa discussione, domani ne proporrai un'altra più estesa e ingarbugliata di prima, dopodomani sempre di più in maniera esponenziale.
    Rischi:
    1) Tendenza sempre maggiore di incomprensione/impossibilità da parte degli altri utenti di risolvere e/o correggere i tuoi errori.
    2) Rallentamento delle prestazioni di Access che è stato progettato "in un certo modo".

    Consiglio:
    Un buon manuale di base. Il forum propone alcuni titoli. Io ho iniziato da "McGraw-Hill: Computer no problem - Access".
  • Re: Ricerca record

    Ciao Osvaldo
    sono perfettamente d'accordo con te e la penso cosi già da un bel poco , tanto è che ho realizzato altri db "normalizzati" e più consoni alle specifiche di access.
    Quello che rappresenta per me un rompicapo è il db oggetto della discussione , che ho stilato negli anni in cui avevo qualche capello bianco in meno.
    Francamente non mi va di "buttare" quel lavoro , anche se affetto dal "peccato originale ", ti assicuro che i db che ho realizzato successivamente e da quando frequento questo forum, sono "battezzati" e riesco a gestirli bene .
    Continuerò a verificare se trovo la soluzione al mio problema ... grazie lo stesso
    a presto .
  • Re: Ricerca record

    obyone ha scritto:


    Francamente non mi va di "buttare" quel lavoro
    Non si tratta di buttarlo, ma di normalizzarlo. È una operazione di "riparazione" che può essere sempre fatta anche a posteriori. Con opportuni e sapienti giochetti di query di accodamento (o volgari copia/incolla di intere colonne) puoi incanalare le "molte tabelle" in una sola. Puoi anche provare a sfruttare alcuni comandi di Access predisposti (nei limiti del logicamente possibile) all'Analisi tabelle con successiva normalizzazione.
  • Re: Ricerca record

    Beh ! alla fine sono riuscito a trovare la soluzione al mio problema .Mi sono accorto che stavo percorrendo una strada che anzichè avvicinarmi alla soluzione , me ne allontanava .Non sono ancora abbastanza pratico ne di SQL ,ne di VBA per cui ho faticato non poco per cercare il giusto spunto in rete che poi applicato al mio caso me ne permettesse la soluzione . Con questa occasione , penso di avere appreso nozioni e procedure che prima ignoravo completamente e parallelamente ho "preso" qualche libro che tratta di Access e di SQL e dil VBA.
    grazie ancora per le vs risposte , non mancherò di certo di postare altre problematiche in futuro ....
    ciao
    ps. Non ho spiegato nei dettagli ,circa il modo con cui sono giunto alla soluzione del mio problema , dovrei spiegare passo passo ciò che ho fatto e sarebbe troppo lungo e sopratutto non sò se possa essere interessante per qualcuno. Se invece dovesse esserlo , sono pronto a spiegarlo.
Devi accedere o registrarti per scrivere nel forum
8 risposte