incrementare automaticamente il valore di un controllo

Anonimo
2016-01-11T14:17:39+00:00

Salve a tutti

da una maschera frm_Inserimento vado a popolare una tabella di nome tbl_Documenti_Archiviati inserendo i record ed effettuare successivamente delle ricerche.

Tre campi sono fondamentali:

Raccoglitore (txtCategoria)

Categoria_Scheda (txtSottocategoria)

N_Interno_scheda (N_Interno_scheda) che dovrebbe crearsi in automatico.

ad esempio

Raccoglitore Categoria_Scheda N_Interno_Scheda
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3

quindi seguire questo ragionamento:

aumentare il valore del N_Interno_Scheda all'interno di quel raccoglitore e della relativa Categoria_scheda, che vengono inseriti

Il cmd_Inserisci dovrebbe inserire all'interno di tbl_Documenti_Archiviati il progressivo N_Interno_Scheda relativo al numero Raccoglitore e della relativa Categoria_Scheda solo se la casella di controllo Stampato è vero

Ho provato a seguire il 3d http://answers.microsoft.com/it-it/office/forum/office\_2010-access/conteggio-in-automatico-per-un-campo/294a815d-b9ef-4999-a584-f6df2ebd9715 sulle funzioni nidificate, ma ahimeè!!! la scatola delle pastiglie per il mal di testa è terminata :-)):

Speriamo di farcela...

Provo a postare il db http://1drv.ms/1P354ts

Grazie a Voi tutti

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
Risposta accettata dall'autore della domanda
Anonimo
2016-01-12T12:29:59+00:00

ciao NebbiaDB,

mmm....

ho provato e tutta funziona meglio del previsto, senza dover clonare la tbl_sottocategoria

qui nel post precedente :

"clonata nelle sottocategorie, il contatore riparte da 1 cambiando raccoglitore pari al raccoglitore con idCategoria 1"

intendo ovviamente non clonare la tabella tbl_sottocategoria in toto, ma i records come mostra l'immagine della tbl_sottocategoria...ho copiato pari pari i records children del raccogliore lavoro personale id1 sui nuovi raccoglitore lavoro personale id4 e id5.

Questa clonazione l'ho eseguita per prova per avere testare il funzionamento della modifica proposta.

In caso di nuovo raccoglitore senza articoli children nella tbl_sottocategoria non inserisci il documento perché non hai modo di selezionare la sottocategoria.

Ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-01-11T22:09:59+00:00

ciao NebbiaDb,

la modifica è questa (vedi grassetto), spezzo le righe altrimenti non capisco un tubo:

If Me.Stampato Then

Me.N_Interno_Scheda = CStr(Nz(DMax("val([N_Interno_Scheda])", _

                               "tbl_Documenti_Archiviati", _

                               "Categoria_Scheda='" & Me.Numero_Scheda_Categoria & _

                               "' and raccoglitore='" & Me.Numero_Raccoglitore & "'"), 0) + 1)

DBEngine(0)(0).Execute "insert into tbl_Documenti_Archiviati " & _

                       "(N_Interno_Scheda,raccoglitore,Categoria_Scheda, stampato) values " & _

                        "('" & Me.N_Interno_Scheda & "','" & Me.Numero_Raccoglitore & "','" & _

                        Me.Numero_Scheda_Categoria & "'," & Me.Stampato & ")", dbFailOnError

Me.Stampato = 0

End If

con questa tabella tbl_categorie :

clonata nelle sottocategorie, il contatore riparte da 1 cambiando raccoglitore pari al raccoglitore con idCategoria 1

ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-01-12T09:04:17+00:00

    Carissimo Sandro,

    ho provato e tutta funziona meglio del previsto, senza dover clonare la tbl_sottocategoria anche perchè serve solo per la fase di inserimento e per gestire i raccoglitori che man mano si esauriscono, come me :-)))

    Tabella iniziale con i Raccogliotori vuoti

    modifico il numero del raccoglitore, perche è pieno e quindi c'è necessità di crearne uno nuovo, ovviamente con le stesse schede, altrimenti viene creato uno specifico

    dopo l'inserimento ottengo quanto desiderato creando anche il CodiceDocumento

    Spero non mi sia illuso del correttto funzionamento, tanto desiderato, e ti ringrazio davvero di cuore per la pasienza e disponibilità mostrata....

    Spero di passare nell'altra fase di sviluppo, cercando di aprire altri 3d,  e cioè di ricerca dei documenti inseriti....

    Grazie infinite Sandro...

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-11T21:28:42+00:00

    ciao Sandro....

    grazie e per soli 5 minuti avevo visto il db funzionare meravigliosamente :-))

    quando vado ad aggiungere il raccoglitore modificando il NRaccoglitoreAttuale ad esempio il raccoglitore numero 1 si è riempito e quindi dovendo creare un nuovo raccogliotore Lavoro Personale gli assegnerò il primo numero disponibile e cioè 4

    succede dopo il command button inserisci

    che il N_interno_Scheda incrementa riferendosi al valore Categoria_Scheda (scusami l'espressione).

    Invece dovrebbe succedere

    1-7-1-

    1-7-2-

    1-7-3-

    2-3-1

    2-3-2

    4-7-1 al posto di 4-7-4

    sicuramente l'impostazione di tutto il db non  è corretto.

    spero sia recuperabile..

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-01-11T19:58:42+00:00

    ciao NebbiaDb,

    beh, visto che hai preso spunto da un 3D a cui ho partecipato, mi devo essere proprio spiegato male.....

    sul command button inserisci, prova in questo modo :

    If Me.Stampato Then

    Me.N_Interno_Scheda = Nz(DMax("[N_Interno_Scheda]", "tbl_Documenti_Archiviati", "Categoria_Scheda='" & Me.Numero_Scheda_Categoria & "'"), 0) + 1

    DBEngine(0)(0).Execute "insert into tbl_Documenti_Archiviati (N_Interno_Scheda,raccoglitore,Categoria_Scheda, stampato) values " & _

                            "('" & Me.N_Interno_Scheda & "','" & Me.Numero_Raccoglitore & "','" & Me.Numero_Scheda_Categoria & "'," & Me.Stampato & ")", dbFailOnError

    End If

    Me.Stampato = 0

    imposta defaulValue 0 sul controllo stampato.

    la execute serve per scrivere il record nella tabella, ne ho inserito alcuni solamente, credo ti sarà facile implementare la logica per gli altri campi.

    Facci sapere!

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento