Condividi tramite

Numerazione su pulsante di comando

Anonimo
2016-07-08T14:45:38+00:00

Buonasera

Dovrei stampare dei documenti e dovrei gestire la numerazione in fase di stampa ovvero, su una maschera, dopo aver selezionato alcuni parametri dovrei creare un record all'interno di una tabella che riporti tutti i suddetti valori (Quelli impostati sulla maschera ) e porti avanti un numeratore.

Faccio un esempio pratico

Su una maschera inserisco i seguenti valori cercandoli in caselle combinate;

Codice Agente

Targa automezzo

Data Odierna

Magazzino Viaggiante

Anno Giacenze

Inseriti questi valori, che per la maggior parte dei casi sono ricercati con delle caselle combinate che lavorano con delle query, alla pressione di un pulsante di comando dovrei fare in modo che esegua una serie di query e che alla fine popoli una tabella con i campi di cui sopra con l'aggiunta di un ulteriore campo, il numeratore che deve assumere un valore progressivo ogni volta che viene premuto il pulsante di comando.

Ovviamente nella tabella devo essere in grado manualmente di riportare indietro il numeratore.

Grazie in anticipo per l'aiuto

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

18 risposte

Ordina per: Più utili
  1. Anonimo
    2016-07-08T20:34:14+00:00

    ciao Francesco,

    mmm...bisognerebbe capire l'esigenza di duplicare la riga in un altra tabella...forse c'è qualche errore di impostazione del db.

    per garartirti una progressione senza gaps o buchi che dir si voglia il contatore come lo chiami deve essere personalizzato alla stregua di quanto ti spiegavo nel post iniziale.

    è vero che i buchi possono essere riempiti ma non è pratico e non è la strada giusta.

    generalmente il long Int autonumber viene proprio utilizzato come chiave primaria per garantire univocità alla riga della tabella, perché una volta cancellato il numero assegnato alla riga successiva non sarà mai quella cancellata.

    Guardati questo mini esempio tratto dal secondo post.

    apri la form e prova a cliccare su accoda, un messaggio ti dice record duplicato.

    inseriscine uno nuovo ( bastano nome e cognome compilati) e clicca su accoda, apri la tabella impiegati2 e guarda il valore del campo numeratore.

    clicca nuovamente su accoda, sempre il messaggio di duplicato.

    ora inserisci un altro record e clicca su accoda e guarda il numeratore.

    ora inserisci un altro record e clicca su accoda e guarda il numeratore.

    ora elimina il records dalla tabella impiegati2 con numeratore 3, chiudi la tabella e apri nuovamente la maschera ed inserisci un altro nuovo record e controlla poi la tabella impiegati2, numeratore 3 e non 4.

    In sostanza, puoi trascurare il fatto che il campo longInteger autonumber perde la progressione e genera buchi è fatto apposta per questo.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-08T19:49:42+00:00

    Sandro

    Ti spiego meglio

    La mia tabella si chiama SchedaTV ed ha questa struttura:

    Come vedi c'è un campo contatore che, laddove si rendesse necessario, deve essere modificabile, ovvero se cancello la riga vorrei che tornasse indietro.

    Poi ho una maschera:

    I dati che inserisco o ricerco su questa maschera vorrei che come premo il pulsante genera (Che fondamentamente esegue una query ed apre un report ) venissero inseriti nella tabella SchedaTV e che allo stesso tempo il numeratore avanzasse.

    Se si dovesse premere più volte il pulsante genera (per ristampare il report) il numeratore non deve avanzare

    Si può presentare l'esigenza di dover annullare l'operazione e dunque cancellare il record appena inserito nella tabella e ripristinare il numeratore ovvero riportarlo al numero precedente l'operazione.

    Tutto qua, se ti riesce di essere paziente ed aiutarmi considerando che qualche query riesco a farla ma non vado molto oltre.

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-08T16:27:14+00:00

    ciao Francesco,

    utilizzi dcount per verificare il numero di occorrenze del record che dovresti inserire nella tabella di destino, se maggiore di 0 significa che il record è già inserito e non devi accodare.

    altrimenti, con Dax intercetti il numeratore più alto inserito nella tabella di destino a cui aggiungi 1 e accodi.

    Prova a personalizzare il seguente codice.

    in cui tuaIDKtabelladiDestino l'id long integer nella tabella di destino, corrispondente alla chiave primaria della tabella di origine.

    DominoDiDestino è la tabella di destino.

    Numeratore è il campo progressivo a 1 a n, longInteger della tabella di destino per numerare i records.

    NB.in questo modo il numeratore resta progressivo, nel senso che se primi n volta ed il record è già accodato non accodi e il successivo inserimento del numeratore sarà uguale al precedente +1.

    If DCount("tuaIDKtabelladiDestino", "dominioDiDestino", "tuaIDtabelladiDestino=" & Me.tuaPKtabelladiDestino) > 0 Then

        VBA.MsgBox "record già esistente", vbCritical, "Avviso"

        Exit Sub

    End If

    Dim strSql As String

    Dim lngID  As Long

    lngID = Nz(DMax("numeratore", "dominioDiDestino")) + 1

    strSql = "insert into dominioDiDestino(tuaIDKtabelladiDestino,nome,cognome,numeratore) values (" & Me.tuaIDKtabelladiDestino& ",'" & Me.Nome & "','" & Me.Cognome & "'," & lngID & ")"

    DBEngine(0)(0).Execute strSql, &H80

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-07-08T15:32:01+00:00

    Sandro innanzitutto grazie per la risposta

    è semplice ma sono io che lo spiego male

    In sintesi piazzo dei valori su controlli di una maschera, schiaccio un pulsante di comando e questi valori devono essere accodati in una tabella, ovvero va aggiunto un record con le informazioni dei controlli presenti sulla maschera in quel momento.

    La particolarità consiste nel avere un numeratore che avanza dopo aver premuto il pulsante di comandao.

    Il controllo deve essere in grado di capire che per quella data esiste già un record all'interno della tabella e dunque se premo n volte il pulsante l'operazione deve essere ripetuta ma non va aggiunto un nuovo record

    Spero di aver reso l'idea

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-07-08T15:01:09+00:00

    ciao Francesco,

    capito poco soprattutto questa esigenza:

    [...]

     Ovviamente nella tabella devo essere in grado manualmente di riportare indietro il numeratore.

    [...]

    Secondo  me anziché creare un progressivo con queries, potresti assegnare il  progressivo  automaticamente su evento before update della maschera in modo tale che tutte le righe siano già numerate  progressivamente.

    Se cerchi  all'interno del forum numerazione progressiva fatture ad esempio trovi  alcune soluzioni.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento