Limitazione records

di il
11 risposte

Limitazione records

Ciao, sono inesperto
Data una tabella con le colonne Data; Persona
Come posso impostare un limite <=10 persone per data ?
Grazie

11 Risposte

  • Re: Limitazione records

    Cosa vuol dire impostare un limite per una tabella? Forse intendi una query?
  • Re: Limitazione records

    Ciao, innanzitutto grazie

    Esempio

    Tabella
    Rec 1, 21/9/21, Caio
    Rec 2, 21/9/21, Sempronio

    Al massimo 21/9/21 può avere 10 record poi è necessario passare a 22/9/21 per far ripartire il conteggio
  • Re: Limitazione records

    Penso che direttamente in tabella non si può creare il vincolo proposto. Prova a procedere così:
    1. Crea una maschera M che poggia sulla TuaTabella.
    2. Crea una query che ha gli stessi campi di TuaTabella, con Criterio sul campo Data
    [Maschere]![M]![Data]
    3. Salva la query con nome Q
    4. Sulla maschera M devi prevedere un Evento di tua scelta (adesso non saprei quale di preciso) e una condizione If che prenda in considerazione la funzione DCount("*";"Q") e invia un messaggio qualora sia >10
  • Re: Limitazione records

    Ciao,
    purtroppo essendo inesperto circa il punto 4 non so come fare
  • Re: Limitazione records

    Inserito in evento caricamento della maschera
    if DCount("Data";"BD_QRY") > 10 then msgbox "errore"

    Esito
    Impossibile trovare l'oggetto 'if Dcount…"
  • Re: Limitazione records

    La query avendo il Criterio [Maschere]![M]![Data] ha bisogno di leggere il valore Data mostrato dalla maschera M. "Su caricamento" è un evento non adatto...la maschera si deve ancora aprire: come fa la query a leggere quel valore?
  • Re: Limitazione records

    Ciao, purtroppo come anticipato sono nuovo. Quindi per favore non ti infervorare. Ho solo bisogno di aiuto.
    Pertanto mi stai dicendo che non è come ho scritto il codice ma l'evento.
    Cambiando l'evento in corrente il risultato è lo stesso.
  • Re: Limitazione records

    Ovviamente l'evento "Su caricamento" lo devi eliminare. Prova a scrivere
    If DCount("*","BD_QRY") > 10 Then MsgBox "errore"
    ...dimenticavo, in VBA il simbolo di separazione tra argomenti di una funzione è la virgola, non il punto-virgola.
    Se l'evento "Su corrente" non ti convince, prova "Prima di aggiornare".
  • Re: Limitazione records

    Non riesco ad avere il risultato sperato.
    Ma non posso inviarti il DB in qualche modo ?
  • Re: Limitazione records

    Padano72 ha scritto:


    Non riesco ad avere il risultato sperato.
    In che senso? La maschera va oltre i 10 record e ignora il MsgBox "Errore"?

    Assicurati di aver impostato in TuaTabella, al campo Data un Formato che mostri solo la data. Io ho provato con "Data in cifre" e evento "Prima di aggiornare" e funziona.

    Padano72 ha scritto:


    Ma non posso inviarti il DB in qualche modo?
    Non è nello spirito del regolamento del forum.
  • Re: Limitazione records

    Premesso che serve sempre un minimo di preparazione, altrimenti non è nemmeno possibile interagire, e quello che tu chiami "bisogno di aiuto" in realtà è "bisogno di pappa pronta", e non è giusto.

    Non serve alcuna Query, semplifichiamo le cose.
    Dalla maschera, si deve gestire l'evento beforeinsert e su questo controllare con DCOUNT quanti Records sono presenti con il valore appena immesso.
    Se superano 9, si forza CANCEL=True
    
    
    Private Sub Form_BeforeInsert(Cancel As Integer)
        IF DCOUNT("*","NomeTabella","NomeCampoData=" & clng(Me!ControlloCampoData)>9 Then
            MsgBox "Sono già presenti 10 Records, salvataggio annullato"
            Cancel=True
        End if
    End Sub
Devi accedere o registrarti per scrivere nel forum
11 risposte