Macrocontro llo data duplicata

di il
14 risposte

Macrocontro llo data duplicata

Ciao a tutti,
non mi dite che cocciutamente continuo con le macro, ma sto continuando in questo percorso, molto ho iniziato a capire e mi farebbe piacere, per mia curiosità e completezza, continuare.
Vi chiedo questa info,

ho una tabella con un campo data e vorrei non si ripetesse
Uso, come farei d'altronte in vba, la funzione DLookUp, ma non funziona
ecco cosa scrivo
DLookUp("[id]";"Proiezione";"[campodata]=#" & Format([txtdata],"mm/dd/yyyy") & "#") Is Not Null ma mi da ereore
dove sbaglio?
Grazie

14 Risposte

  • Re: Macrocontro llo data duplicata

    Prima di tutto usa i TAG quando posti codice.

    Poi spiega cosa vuoi ottenere e cosa fa quello che hai scritto sotto:
    DLookUp("[id]";"Proiezione";"[campodata]=#" & Format([txtdata],"mm/dd/yyyy") & "#") Is Not Null 
    La funzione DlookUp la conosciamo, ma il confronto con Is Not Null...? Lo sai che questo restituisce così come è scritto un Boolean non una data...?
    Sicuro che lo usi in VBA... non funzionerebbe allo stesso modo...

    Spiegaci bene, poi se vuoi usare le Macro.... ognuno è libero di farsi male, e probabilmente riceverai meno aiuti qualificati.
  • Re: Macrocontro llo data duplicata

    Scusate per i tag.
    Si so che così restituisce un boolean, infatti la DLookUp restituisce il valore se trova un record che corrisponde ai criteri altrimenti restituisce NULL.
    A me non interessa il valore, mi interessa solo che se trova un record con la data scritta nel controllo txtdata, quindi non è NULL, significa che la data è già presente e do un messaggio.
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    ho una tabella con un campo data e vorrei non si ripetesse
    Per me ti basterebbe una "query ricerca duplicati", c'è anche la procedura guidata.

    Non riesco a entrare nel merito dell'espressione che hai postato. Né a cosa ti serve. Avrei dubbi sulla sintassi. Nelle macro si usa sempre il punto-virgola (in VBA sempre la virgola), tui hai postato una espressione "mista".
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    Scusate per i tag.
    Si so che così restituisce un boolean, infatti la DLookUp restituisce il valore se trova un record che corrisponde ai criteri altrimenti restituisce NULL.
    A me non interessa il valore, mi interessa solo che se trova un record con la data scritta nel controllo txtdata, quindi non è NULL, significa che la data è già presente e do un messaggio.
    DCOUNT ti piace proprio poco...?
    Se restituisce ZERO altrimenti >0...

    Io, da VBA preferisco scrivere:
    
    DCount("[id]";"Proiezione";"[campodata]=" & Clng(Forms!NomeForm!txtData))>0
  • Re: Macrocontro llo data duplicata

    OsvaldoLaviosa ha scritto:


    Per me ti basterebbe una "query ricerca duplicati", c'è anche la procedura guidata.
    non saprei come questirla con la macro

    OsvaldoLaviosa ha scritto:


    Non riesco a entrare nel merito dell'espressione che hai postato. Né a cosa ti serve. Avrei dubbi sulla sintassi. Nelle macro si usa sempre il punto-virgola (in VBA sempre la virgola), tui hai postato una espressione "mista".
    Si, ho sbalgiato a scrivere, le virgole dovevano essere dei punti e virgola, comunque mi da errore.

    @Alex ha scritto:


    DCOUNT ti piace proprio poco...?
    Se restituisce ZERO altrimenti >0...

    Io, da VBA preferisco scrivere:
    
    DCount("[id]";"Proiezione";"[campodata]=" & Clng(Forms!NomeForm!txtData))>0
    Si in VBA spesso uso anche DCOUNT

    Resta che volevo provare con la macro, mi sa che devo rinunciare
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    OsvaldoLaviosa ha scritto:


    Per me ti basterebbe una "query ricerca duplicati", c'è anche la procedura guidata.
    non saprei come questirla con la macro
    Non conosco il tuo contesto generale di automatizzazione, ma tu predisponi la query ricerca duplicati e dagli un nome, poi esiste l'azione macro ApriQuery
  • Re: Macrocontro llo data duplicata

    @Alex ha scritto:


    Io, da VBA preferisco scrivere:
    
    DCount("[id]";"Proiezione";"[campodata]=" & Clng(Forms!NomeForm!txtData))>0
    Attento @Alex, hai scritto con i punto-virgola...mo mo gli abbiamo detto che in VBA si usa la virgola...
  • Re: Macrocontro llo data duplicata

    OsvaldoLaviosa ha scritto:


    antcru ha scritto:


    OsvaldoLaviosa ha scritto:


    Per me ti basterebbe una "query ricerca duplicati", c'è anche la procedura guidata.
    non saprei come questirla con la macro
    Non conosco il tuo contesto generale di automatizzazione, ma tu predisponi la query ricerca duplicati e dagli un nome, poi esiste l'azione macro ApriQuery
    Il mio contesto è una maschera basata su tabella in cui inserisco i dati, tra cui una data, e non appena inserisco la data, sull'evento prima di aggiornare, vorrei controllare che quella data non sia già presente nella tabella, se già presente apprare un messaggio e non mi muovo da quel controllo(azione AnnullaEvento)

    OsvaldoLaviosa ha scritto:


    @Alex ha scritto:


    Io, da VBA preferisco scrivere:
    
    DCount("[id]";"Proiezione";"[campodata]=" & Clng(Forms!NomeForm!txtData))>0
    Attento @Alex, hai scritto con i punto-virgola...mo mo gli abbiamo detto che in VBA si usa la virgola...
    Cmq c'ero arrivato a capirlo
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    Il mio contesto è una maschera basata su tabella in cui inserisco i dati, tra cui una data, e non appena inserisco la data, sull'evento prima di aggiornare, vorrei controllare che quella data non sia già presente nella tabella, se già presente apprare un messaggio e non mi muovo da quel controllo(azione AnnullaEvento)
    Per quanto si possa gestire tutto "elegantemente" in VBA (o macro?), sappi che potresti impostare nativamente nella tabella al campo [data] la proprietà Indicizzato: Sì (Duplicati non ammessi). Quando vai a inserire una data già esistente, Access ti invia un messaggio di errore.
  • Re: Macrocontro llo data duplicata

    OsvaldoLaviosa ha scritto:


    Per quanto si possa gestire tutto "elegantemente" in VBA (o macro?), sappi che potresti impostare nativamente nella tabella al campo [data] la proprietà Indicizzato: Sì (Duplicati non ammessi). Quando vai a inserire una data già esistente, Access ti invia un messaggio di errore.
    Certo, ma l'errore vorrei gestirlo io, non appena inserisco la data e non quando salvo il record, tra l'altro con un mio messaggio d'errore. (A tal proposito so che potrei intercettare l'errore e farmi stampare un mio messaggio, ma poi cmq mi visualizza il messaggio di sistema)
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    Certo, ma l'errore vorrei gestirlo io, non appena inserisco la data e non quando salvo il record, tra l'altro con un mio messaggio d'errore. (A tal proposito so che potrei intercettare l'errore e farmi stampare un mio messaggio, ma poi cmq mi visualizza il messaggio di sistema)
    Il messaggio di errore ti arriva immediatamente dopo aver lasciato il campo [data] (e non dopo salva record).
    Si può personalizzare il messaggio di errore ed evitare quello di sistema...io non tanto lo so fare…@Alex saprà certamente indicarti la soluzione adeguata. Oppure prova a dare un'occhiata qui
    https://it.comp.appl.access.narkive.com/TLsVfJgG/duplicati-non-ammessi-e-messaggio-di-errore
    https://www.iprogrammatori.it/forum-programmazione/access/messaggio-errore-personalizzato-cliente-gia-esistente-t8667.html
  • Re: Macrocontro llo data duplicata

    OsvaldoLaviosa ha scritto:


    @Alex ha scritto:


    Io, da VBA preferisco scrivere:
    
    DCount("[id]";"Proiezione";"[campodata]=" & Clng(Forms!NomeForm!txtData))>0
    Attento @Alex, hai scritto con i punto-virgola...mo mo gli abbiamo detto che in VBA si usa la virgola...
    Dipende dove inserisci la formula... se si usa l'EDITOR da QBE o GENERATORE di ESPRESSIONI serve il PuntoVirgola.
  • Re: Macrocontro llo data duplicata

    antcru ha scritto:


    OsvaldoLaviosa ha scritto:


    Per quanto si possa gestire tutto "elegantemente" in VBA (o macro?), sappi che potresti impostare nativamente nella tabella al campo [data] la proprietà Indicizzato: Sì (Duplicati non ammessi). Quando vai a inserire una data già esistente, Access ti invia un messaggio di errore.
    Certo, ma l'errore vorrei gestirlo io, non appena inserisco la data e non quando salvo il record, tra l'altro con un mio messaggio d'errore. (A tal proposito so che potrei intercettare l'errore e farmi stampare un mio messaggio, ma poi cmq mi visualizza il messaggio di sistema)
    Ma vuoi usare le Macro... decidi cosa vuoi fare da grande però, io nell'ottica di Macro chiudo il supporto...!
  • Re: Macrocontro llo data duplicata

    OsvaldoLaviosa ha scritto:


    Il messaggio di errore ti arriva immediatamente dopo aver lasciato il campo [data] (e non dopo salva record).
    Questo è vero se inserisci i dati nella tabella, non se li inserisci tramite una maschera.

    @Alex ha scritto:


    Ma vuoi usare le Macro... decidi cosa vuoi fare da grande però, io nell'ottica di Macro chiudo il supporto...!
    Volevo gestirlo con la macro senza usare vba.
    Cmq grazie lo stesso, se troverò una soluzione la posto
Devi accedere o registrarti per scrivere nel forum
14 risposte