[Risolto]Accodamento blocchi di articoli

di il
16 risposte

[Risolto]Accodamento blocchi di articoli

Buonasera a tutti, premetto che il titolo del 3d è particolare ma non sapevo come ben identificare la cosa...
Ho la classica maschera (FormScarichi) per la creazione di fatture collegata ad una sottomaschara (FormScarichiDettagli) dove inserisco gli articoli con i vari dati (imponibile, iva, sconto...)

La tabella "madre" (tblScarichi) contiene quindi i dati relativi al documento ed è collegata ad una sottotabella (tblScarichiDettagli) con le info degli articoli.
In fase di creazione fattura, gli articoli li inserisco scegliendoli tramite una combobox (collegati ad un'altra tabella tblArticoli). Fin qui tutto ok

In primis la mia tblArticoli era formata da:
IDArticolo|CodArticolo|Articolo...altri campi
1|001|Coltello|...
2|002|Cucchiaio|...
3|003|Fochetta|...

Ora vorrei gestirla in
IDArticolo|IDGruppo|CodArticolo|Articolo...altri campi
1|1|001|Coltello|...
2|1|002|Cucchiaio|...
3|1|003|Fochetta|...

Vorrei poter, invece di eseguire un operazione singola per ogni articolo, accodare blocchi di tipologie... per intenderci, ho creato nella maschera (FormScarichi) un altra maschera (FormGruppi) che identifica con un altro ID il gruppo di appartenenza...
Cliccando sul pulsante affianco al gruppo, volevo poter accodare tutti gli articoli relativi al gruppo, per esempio 1 ma giustamente mi da errore...
Teoricamente è possibile eseguire la cosa?

16 Risposte

  • Re: [Risolto]Accodamento blocchi di articoli

    zio Ken ha scritto:


    Buonasera a tutti, premetto che il titolo del 3d è particolare ma non sapevo come ben identificare la cosa...
    Ho la classica maschera (FormScarichi) per la creazione di fatture collegata ad una sottomaschara (FormScarichiDettagli) dove inserisco gli articoli con i vari dati (imponibile, iva, sconto...)

    La tabella "madre" (tblScarichi) contiene quindi i dati relativi al documento ed è collegata ad una sottotabella (tblScarichiDettagli) con le info degli articoli.
    In fase di creazione fattura, gli articoli li inserisco scegliendoli tramite una combobox (collegati ad un'altra tabella tblArticoli). Fin qui tutto ok

    In primis la mia tblArticoli era formata da:
    IDArticolo|CodArticolo|Articolo...altri campi
    1|001|Coltello|...
    2|002|Cucchiaio|...
    3|003|Fochetta|...

    Ora vorrei gestirla in
    IDArticolo|IDGruppo|CodArticolo|Articolo...altri campi
    1|1|001|Coltello|...
    2|1|002|Cucchiaio|...
    3|1|003|Fochetta|...

    Vorrei poter, invece di eseguire un operazione singola per ogni articolo, accodare blocchi di tipologie... per intenderci, ho creato nella maschera (FormScarichi) un altra maschera (FormGruppi) che identifica con un altro ID il gruppo di appartenenza...
    Cliccando sul pulsante affianco al gruppo, volevo poter accodare tutti gli articoli relativi al gruppo, per esempio 1 ma giustamente mi da errore...
    Teoricamente è possibile eseguire la cosa?
    Non so se ho interpretato correttamente le tue intenzioni.
    Tu parli di "accodare" gli articoli, ma credo piuttosto che tu abbia voluto dire che vuoi "aggiornare" la tabella "tblArticoli" compilando il nuovo campo "IdGruppo", per tutti gli articoli già inseriti, con il relativo valore della "tblGruppi"
    Se è così potresti eseguire l'operazione creando una query d'aggiornamento della "tblArticoli" dove selezionerai i campi da aggiornare, attraverso un filtro applicato su un campo comune (es.: "CodArticolo" piuttosto che "Articolo" o altro).
    Diversamente penso allora di non avere capito le tue necessità e ti chiederei di spiegarmelo meglio.
  • Re: [Risolto]Accodamento blocchi di articoli

    Nono, ho bisogno, in face di creazione documento, di accodare nella sottomaschera tblScarichiDettagli un intero gruppo di articoli...Quindi invece di inserire ogni articolo tramite la cbo che mi propone la scelta, vorrei poter inserire un intero blocco di articoli relativi al gruppo scelto dalla FormGruppi..
  • Re: [Risolto]Accodamento blocchi di articoli

    zio Ken ha scritto:


    Cliccando sul pulsante affianco al gruppo, volevo poter accodare tutti gli articoli relativi al gruppo, per esempio 1 ma giustamente mi da errore...
    Teoricamente è possibile eseguire la cosa?
    Certamente.
    Ma devi farlo a suon di codice.
    Ti basta aprire un recordset sulla tabella Articoli applicando il filtro sul Gruppo selezionato (es. 1), e poi aggiungi record per record ai dettagli.
  • Re: [Risolto]Accodamento blocchi di articoli

    Come indicato, puoi popolare la sotto-maschera con una query di accodamento che, in base al gruppo selezionato, fornisca gli item voluti.
    Visto che devi agire con codice VBA, le seguenti discussioni possono essere di ausilio per partire:
    https://bytes.com/topic/access/answers/649353-append-table-records-recordset-via-vba
    http://www.accessallinone.com/updating-adding-and-deleting-records-in-a-recordset/
    http://www.utteraccess.com/forum/lofiversion/index.php/t1980018.html
    http://forums.databasejournal.com/showthread.php?53131-Access-2007-Copying-Records-Within-The-Same-Table
  • Re: [Risolto]Accodamento blocchi di articoli

    zio Ken ha scritto:


    Nono, ho bisogno, in face di creazione documento, di accodare nella sottomaschera tblScarichiDettagli un intero gruppo di articoli...Quindi invece di inserire ogni articolo tramite la cbo che mi propone la scelta, vorrei poter inserire un intero blocco di articoli relativi al gruppo scelto dalla FormGruppi..
    Se è così, oltretutto, non capisco perché hai modificato la "tblArticoli", aggiungendo il campo "IdGruppo".
  • Re: [Risolto]Accodamento blocchi di articoli

    gibra ha scritto:


    zio Ken ha scritto:


    Cliccando sul pulsante affianco al gruppo, volevo poter accodare tutti gli articoli relativi al gruppo, per esempio 1 ma giustamente mi da errore...
    Teoricamente è possibile eseguire la cosa?
    Certamente.
    Ma devi farlo a suon di codice.
    Ti basta aprire un recordset sulla tabella Articoli applicando il filtro sul Gruppo selezionato (es. 1), e poi aggiungi record per record ai dettagli.
    Stavo provando così, crando prima la funzione
    Public Function AccodaGruppo(lngIDLav, lngIDGruppo As Long)
    
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("tblSottoScarichi")
    
    With rs
        .AddNew
        !IDGruppo = lngIDGruppo
        !ID_Articolo = lngIDGruppo
        .Update
    End With
    
    rs.Close
    Set rs = Nothing
    
    End Function
    e poi l'azione
    Private Sub btnInserisci_Click()
    Dim lngIDLav As Long
    Dim lngIDGruppo As Long
    
        Dim rs As Recordset
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[Gruppo] = '" & Me![IDGruppo] & "'"
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
        
            lngIDLav = Forms![FormInserisciDocumenti]![FormInserisciDocumentiGruppiElenco].IDLavSost.Value
            lngIDGruppo = Forms![FormInserisciDocumenti]![FormInserisciDocumentiGruppiElenco].IDGruppo.Value
        Call AccodaGruppo(lngIDLav, lngIDGruppo)
    
    End Sub
    
    Ma mi da errore, mi dice che non riesce a trovare la form [FormInserisciDocumentiGruppiElenco] che è una sottomaschera contenuta nella Form principale..
  • Re: [Risolto]Accodamento blocchi di articoli

    Francamente non ti seguo.

    Da dove salta fuori la "tblSottoScarichi" ?

    Innanzitutto devi creare le premesse corrette, ovvero:

    1) creare la tabella anagrafica "Gruppi" (IDGruppo, Descrizione, ...)
    2) popolare tale tabella coi gruppi
    3a) nella tabella "Articoli" creare il campo IDGruppo e valorizzarlo
    oppure
    3b) creare una tabella di collegamento molti-a-molti "ArticoliGruppi": ID (PK), IDArticolo, IDGruppo
    e predisporre una maschera per assegnare all'articolo il relativo gruppo.

    4) ora, e solo ora, puoi progettare l'inserimento dei singoli articoli appartenenti al gruppo selezionato.

    In base alla tua prima richiesta, mi pare che invece tu stia facendo tutt'altro...

  • Re: [Risolto]Accodamento blocchi di articoli

    Ciao gibra, perdonami stavo nel fratt testando la cosa su un db gia finito dove la tabella figlia degli scarichi è denominata in quel modo mentre, relativamente agli altri punti avevo gia organizzato così la cosa, x questo parlavo di IDGruppo, prp xke vi è una tabella descrittiva in appoggio
  • Re: [Risolto]Accodamento blocchi di articoli

    zio Ken ha scritto:


    In fase di creazione fattura, gli articoli li inserisco scegliendoli tramite una combobox (collegati ad un'altra tabella tblArticoli). Fin qui tutto ok

    zio Ken ha scritto:


    Vorrei poter, invece di eseguire un operazione singola per ogni articolo, accodare blocchi di tipologie... per intenderci, ho creato nella maschera (FormScarichi) un altra maschera (FormGruppi) che identifica con un altro ID il gruppo di appartenenza...
    Queste due frasi messe a confronto presentano dubbi da chiarire. Normalmente è giusto compilare la sottomaschera ScarichiDettagli secondo la prima frase che ho messo in evidenza.
    La seconda frase dovrebbe essere un "optional" qualora tu volessi scrivere/accodare molti record "appartenenti" al IDGruppo selezionato da qualche parte.
    Interpreto bene il tuo desiderio? Altrimenti potresti chiarire cosa devi fare veramente?
  • Re: [Risolto]Accodamento blocchi di articoli

    Sisi, come detto stò provando questa cosa su un programma già testato e come dici tu, l'optional è questa sottomaschera che contiene le descrizioni dei gruppi. Cliccando su un pulsante (sul record del gruppo identificato dall'IDGruppo) mi dovrebbe accodate alla sottomaschera, relativa agli articoli, un blocco di articoli identificati da un IDGruppo...
  • Re: [Risolto]Accodamento blocchi di articoli

    1. Tu sei con maschera/sottomaschera Scarichi/ScarichiDettagli aperte con IDScarico in evidenza
    2. Crea una nuova query in visualizzazione struttura
    3. Importa le tabelle Scarichi, Articoli, Gruppi (non ScarichiDettagli)
    4. Trascina nella griglia i campi IDArticolo, Gruppi.IDGruppo, IDScarico
    5. Nel Criterio di IDGruppo ci scrivi:
    [Digita IDGruppo]
    6. Nel Criterio di IDScarico ci scrivi:
    [Maschere]![Scarichi]![IDScarico]
    7. Ti consiglio di cliccare anche sul tasto in alto "Parametri query" e scrivere
    Digita IDGruppo --->Intero lungo
    [Maschere]![Scarichi]![IDScarico] --->Intero lungo
    8. Trasforma questa query in "query di accodamento" e digli di accodare in ScarichiDettagli
    9. Salva con nome Query1
    10. Il clic del tuo pulsante deve aprire/eseguire Query1...direi che devi avere l'accortezza di eseguirla una sola volta per ogni IDGruppo che digiterai nella finestra parametro [Digita IDGruppo]
    11. Dopo l'esecuzione di Query1 dovrai anche fare Requery sulla sottomaschera
  • Re: [Risolto]Accodamento blocchi di articoli

    Ciao Osvaldo, grazie mille la query funziona!
    Giusto se volessi "ricamare" la cosa, come potrei accodare solo gli articoli relativi al pulsante (contenente la macro) in linea con il record del gruppo?

    Nel senso, la maschera è popolata con la "txtGruppo" che ne descrive la "categoria" ed in linea alla descrizione vi è il pulsante contenete la macro.
    Come posso fare che, se clicco sul pulsante in linea con un determinato gruppo accoda gli articoli in automatico senza inserire a mano l'IDGruppo?
  • Re: [Risolto]Accodamento blocchi di articoli

    Di quale maschera stai parlando?
    Io ho dato per scontato che tu hai un pulsante in maschera Scarichi, su quello ho giocato il clic.
    Tutto quello che descrivi, fallo usando sempre i nomi propri.
  • Re: [Risolto]Accodamento blocchi di articoli

    La maschera contenente i Gruppi si chiama "FormGruppi" ed è contenuta nella "FormScarichi".
    Il pulsante della "FormGruppi" è denominato btnInserisci e la txtbox contenente la descrizione dei gruppi è txtGruppo

    Per ora ho rimediato utilizzando una tabella di appoggio che, cliccando sul pulsante in riga, accoda in una tabella di appoggio gli articoli del gruppo X, quindi li accoda tramite le istruzioni da te suggeritemi nella tabella tblSottoScarichi (ex ScarichiDettagli ad inizio post) per poi svuotarsi.
    Per ora la cosa va più che bene anche così...anche se prevede innumerevoli accodamenti e svuotamenti in una giornata lavorativa..

    Mentre sarebbe possibile farlo direttamente cliccando sul pulsante in riga col gruppo?
Devi accedere o registrarti per scrivere nel forum
16 risposte