Ricerca record su access

di il
13 risposte

Ricerca record su access

Ciao a tutti…

Questo è il mio primo post su questo forum e su Access.

Premetto di non essere un programmatore professionista. Non mi occupo di programmazione (ma di tutt'altro) ma, nonostante ciò, nel luogo di lavoro, avendo intuito i miei studi (ragioniere programmatore) terminati 15 anni fa, mi hanno “obbligato” a provare a cimentarmi in un database per la gestione dei turni di lavoro giornalieri.

Spiego brevemente. Lavoro in un ente per cui si fanno turni di 7 ore per 5 giorni (compresi i sabati e le domeniche) organizzati in 5 squadre con una rotazione su 5 settimane.

Ergo, un brogliaccio giornaliero mostra chi è in turno al mattino, chi al pomeriggio e la squadra di riposo.

E fin qua ci siamo, un file excel esterno garantisce l'acquisizione dei dati.

Un'altra tabella “vuota” e relazionata con chiave primaria sulla data alla tabella esterna di escel, consente di “scrivere” su campi vuoti, chi è assegnato in un'attività piuttosto che in un'altra. 

C'è pure una terza tabella di reperibilità, ma non ci interessa in questo momento.

Una quarta tabella, TURNI EFFETTIVI, consente la modifica dei turni in funzione delle necessità giornaliere (visto che quella in excel non può essere sovrascritta)

Quindi, in buona sostanza, ho creato una query in modo da affiancare le 4 tabelle. 

Veniamo al punto: la maschera del brogliaccio che lavora sulla query contenente le 4 tabelle, attinge da una query di più di un anno di turni.

Per tanto, ogni volta che si apre, parte dal primo record (supponiamo 1/3/2023). Comodo il 1 / 3, un po' meno a fine marzo, non fruibile a luglio… visto che dovrei scorrere tutti i record fino ad arrivare alla data su cui lavorare.

Come posso fare creare un campo di ricerca per data semplice in modo da passare direttamente al record di mio interesse? 

Grazie

13 Risposte

  • Re: Ricerca record su access

    Hmm… ho capito male oppure hai parlato solo di excel?

    Inoltre da quello che dici vorresti usare access come excel. Anche io ho fatto ragioneria programmatori, era lo sperimentale non esisteva ancora window, andavamo con il dos 5.1, lotus 123 e turbo pascal. Ma come funzionavanoi database ce l hanno insegnato e ce li facevano fare. 

    Ti consiglio vivamente di trovare un buon manuale per studiare access.

    Non è per non aiutarti, ma bisogna almeno parlare la stessa lingua.

  • Re: Ricerca record su access

    In effetti sono perplesso e non ho sicuramente compreso il problema ma se cerchi dati relativi ad una data ti basta una query inserendo come criterio quella data. 

    Ma parliamo di Access?

    Se vuoi passare ad un DB da Excel allora devi rivedere tutto ad iniziare dalle tabelle e relazioni. Insomma non puoi fare un miscuglio…

  • Re: Ricerca record su access

    Ragioniere programmatore.

    Mai una parola/accenno sui db di access. Lasciamo perdere la qualità del percorso scolastico 

    Sto comunque parlando di access.

    Ovvero di alcune tabelle create in access con altre 2 importate da Excel. 

    Tutte le tabelle (escluse quelle in Excel che non la possono avere) hanno come chiave primaria la data.

    Ho creato quindi una query dove mi compaiono tutti i record di tutte le tabelle affiancate.

    Ho bisogno però di un modo per spostarmi in un record specifico scegliendo una data.

    Spero di essere stato più chiaro. Grazie 

    Se volete pubblico uno schema delle tabelle, della query e della maschera della query 

  • Re: Ricerca record su access

    Ovvero di alcune tabelle create in access con altre 2 importate da Excel. 

    Già qui c'è un problema. Hai riprogattato tutto? Hai normalizzato?

    spostarmi in un record specifico scegliendo una data.

    Con una query e una WHERE

  • Re: Ricerca record su access

    Pregiudica il funzionamento del db una query dove più volte compaiono le date? 

    Ho capito che normalizzare significa eliminare i dati ridondanti

  • Re: Ricerca record su access

    Quindi NON puoi passare da Excel ad un DBMS (qualunque sia) senza adottare le regole per la progettazione dei DB perché, a lungo andare, questo fatto pregiudica sicuramente l'efficiente gestione dei dati.

    Devi strutturare il DB con tabelle e relazioni efficaci, prima di utilizzarlo, altrimenti resti su Excel.

    In ogni caso, ti ho già detto che la query (SELECT … WHERE …) ti basta per accedere a qualsiasi record, anche specifico.

    Si tratta di scriverla.

  • Re: Ricerca record su access

    Come già ti hanno suggerito,  devi prima organizzare il tuo db almeno secondo la terza forma normale.

    Leggi qui:

    https://learn.microsoft.com/it-it/office/troubleshoot/access/database-normalization-description

  • Re: Ricerca record su access

    01/03/2023 - drt87 ha scritto:


    Veniamo al punto: la maschera del brogliaccio che lavora sulla query contenente le 4 tabelle, attinge da una query di più di un anno di turni.

    01/03/2023 - drt87 ha scritto:


    Come posso fare creare un campo di ricerca per data semplice in modo da passare direttamente al record di mio interesse? 

    Dopo aver seguito TUTTI i consigli che ti hanno dato riguardo progettazione e normalizzazione del DB che sono fondamentali,

    se ho capito bene hai creato una maschera basata su una query e non vuoi filtrare i dati della maschera ma passare ad un record specifico.

    Questo lo puoi fare creando sulla maschera una casella di testo dove inserirai la data alla quale vuoi passare, poi crei un pulsante di comando sotto il quale scrivi il codice per spostarti al record che vuoi. Che potrebbe essere:

    Private Sub Comando_Click()
        If IsNull(Me.TxtData) Or Me.TxtData = "" Then Exit Sub
        Dim RS As Recordset
        Set RS = Me.Recordset.Clone
        RS.FindFirst "[Data] = #" & Me.TxtData & "#"
        If Not RS.NoMatch Then Me.Bookmark = RS.Bookmark Else: MsgBox "Data Non Trovata!", vbExclamation
    End Sub

    Ovviamente devi sostituire i nomi dei controlli con i tuoi e [Data] con il nome del campo della tua query che contiene la data

  • Re: Ricerca record su access

    Grazie mille a tutti.

    Proverò a mettermi all'opera con i vostri consigli

  • Re: Ricerca record su access

    02/03/2023 - VBAndre ha scritto:


    Dopo aver seguito TUTTI i consigli che ti hanno dato riguardo progettazione e normalizzazione del DB che sono fondamentali,

    se ho capito bene hai creato una maschera basata su una query e non vuoi filtrare i dati della maschera ma passare ad un record specifico.

    Questo lo puoi fare creando sulla maschera una casella di testo dove inserirai la data alla quale vuoi passare, poi crei un pulsante di comando sotto il quale scrivi il codice per spostarti al record che vuoi. Che potrebbe essere:

    Private Sub Comando_Click()
        If IsNull(Me.TxtData) Or Me.TxtData = "" Then Exit Sub
        Dim RS As Recordset
        Set RS = Me.Recordset.Clone
        RS.FindFirst "[Data] = #" & Me.TxtData & "#"
        If Not RS.NoMatch Then Me.Bookmark = RS.Bookmark Else: MsgBox "Data Non Trovata!", vbExclamation
    End Sub

    Ovviamente devi sostituire i nomi dei controlli con i tuoi e [Data] con il nome del campo della tua query che contiene la data

    Sicuro sia giusto…?

    La data va bene cosi…? Oppure meglio considerare l'accezione anglosassone…?

    Proporrei questo:

    Private Sub Comando_Click()
        If Len(Me.TxtData & vbNullstring) = 0 Then Exit Sub
        With Me.Recordset.Clone
        	.FindFirst "[Data] = " & clng(Me.TxtData)
        	' .FindFirst "[Data] = #" & Format(Me.TxtData,"mmddyyyy") & "#" ' Alternativa che considera l'accezione anglosassone
        	If Not .NoMatch Then 
        		Me.Bookmark = .Bookmark 
        	Else
        		MsgBox "Data Non Trovata!", vbExclamation
        	end if
        End With
    End Sub
  • Re: Ricerca record su access

    Niente da eccepire, semmai da studiare…

    Ubi Maior… ;)

  • Re: Ricerca record su access

    Sinceramente trovo molto sconveniente, pieno di incognite e complicato nella gestione, usare la data come chiave primaria. Come farai a ritrovare un singolo record, quando in un giorno molti dipensenti avranno la stessa data? Ed in un anno ci sarannocentinaia di record che hanno la stessa data?  

  • Re: Ricerca record su access

    02/03/2023 - fratac ha scritto:


    Sinceramente trovo molto sconveniente, pieno di incognite e complicato nella gestione, usare la data come chiave primaria. Come farai a ritrovare un singolo record, quando in un giorno molti dipensenti avranno la stessa data? Ed in un anno ci sarannocentinaia di record che hanno la stessa data?  

    Non è solo “sconveniente” m è impossibile… ed ovviamente la Data sarà più facilmente un campo Indice non PK, se va bene… 

    Tuttavia importando da Excel fatico a credere sia stato attribuito al campo data la funzione di PK… e su quella affermazione ho glissato perchè non so bene se realmente siamo allineati al significato di PK in un DB Relazionale… in Excel tutto funziona…

Devi accedere o registrarti per scrivere nel forum
13 risposte