Modifica codice VBA - Gestione magazzino

Anonimo
2016-09-19T07:22:27+00:00

Buongiorno,

ho in fase di completamento un piccolo Dbase per la gestione del magazzino.

Nella maschera principale di inserimento dei movimenti di carico e scarico è implementato un pulsante "Aggiorna" che provvede ad aggiornare la giacenza dell'articolo dopo l'inserimento della movimentazione. Con lo stesso pulsante la maschera di inserimento delle movimentazioni si chiude. 

Ho provato a modificare il codice ma senza risultato. Il codice è il seguente

Private Sub cmdAggiorna_Click()

Dim wGiacenza As Double

    wGiacenza = DLookup("Giacenza", "Articoli", "Id_Articolo = " & Me.cboArticolo)

    If cboMovimento.Column(2) = "U" Then

       If wGiacenza < Qta_Movimento Then

          MsgBox "Movimentazione non possibile, quantità non disponibile"

          Exit Sub

       Else

          wGiacenza = wGiacenza - Qta_Movimento

       End If

    Else

       wGiacenza = wGiacenza + Qta_Movimento

    End If

    DoCmd.RunSQL ("Update Articoli Set Giacenza = " & wGiacenza & " Where Id_Articolo = " & cboArticolo)

    ID_Articolo = cboArticolo

    IDMovimento = cboMovimento

    DoCmd.Close

End Sub

Come posso modificare il codice di cui sopra in modo tale che la maschera, dopo l'aggiornamento della giacenza, torni ad avere i campi vuoti per l'inserimento di un'altra movimentazione?

Avrei anche un'altra domanda:

vorrei che l'inserimento dei movimenti possa avvenire in modo multiplo. Mi spiego:

adesso l'inserimento è per singolo articolo mentre sarebbe più veloce che, per lo stesso cliente/Fornitore, si possano movimentare più articoli e, successivamente, procedere al ricalcolo della giacenza, poichè, all'utilizzatore del Dbase, capita spesso che per lo stesso cliente deve associare più articoli e lo stesso capita anche per i fornitori e, quindi, per il carico del magazzino.

Per maggior chiarezza allego delle immagini:

ATTUALE MASCHERA DI INSERIEMNTO:

MODELLO DI MASCHERA CHE IMMAGINO:

P.S: questa maschera l'ho costruita per interrogare il Dbase degli articoli di ogni specifico fornitore. Io immagino di selezionare il Fornitore/Cliente e, nella sottomaschera, l'inserimento degli articoli.

Grazie per l'aiuto 

Luca

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-09-19T12:20:09+00:00

ciao Luca,

[...]

il campo Giacenza mi è indispensabile ed utile per altre azioni - tipo: la proposta di riorganizzazione delle scorte -

[...]

non lo metto in dubbio ma lo ritengo un errore. E' ridondante.

[...]

Come posso modificare il codice di cui sopra in modo tale che la maschera, dopo l'aggiornamento della giacenza, torni ad avere i campi vuoti per l'inserimento di un'altra movimentazione?

[...]

se ho capito credo di basti inserire un nuovo record :

DoCmd.GoToRecord objecttype:=acDataForm, objectName:=Me.Name, record:=acNewRec

per quanto a :

[...]

adesso l'inserimento è per singolo articolo mentre sarebbe più veloce che, per lo stesso cliente/Fornitore, si possano movimentare più articoli e, successivamente....

[...]

la soluzione che proponi di machera/sottomaschera è la strada corretta seconda me, procedi  pure su  questa strada.

ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-09-19T13:50:21+00:00

    ciao Luca,

    modifica in me.name al posto di me.gestione, come da   post precedente, devi passare il nome della form e me.name è il  nome della form.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-09-19T13:27:26+00:00

    Ciao Sandro

    ho provato a riscrivere il codice con il tuo suggerimento, ma la procedura mi dà errore.

    Questo il codice riscritto

    Private Sub cmdAggiorna_Click()

    Dim wGiacenza As Double

        wGiacenza = DLookup("Giacenza", "Articoli", "Id_Articolo = " & Me.cboArticolo)

        If cboMovimento.Column(2) = "U" Then

           If wGiacenza < Qta_Movimento Then

              MsgBox "Movimentazione non possibile, quantità non disponibile"

              Exit Sub

           Else

              wGiacenza = wGiacenza - Qta_Movimento

           End If

        Else

           wGiacenza = wGiacenza + Qta_Movimento

        End If

        DoCmd.RunSQL ("Update Articoli Set Giacenza = " & wGiacenza & " Where Id_Articolo = " & cboArticolo)

        ID_Articolo = cboArticolo

        IDMovimento = cboMovimento

        DoCmd.GoToRecord objecttype:=acDataForm, objectGestione:=Me.Gestione, record:=acNewRec

    End Sub

    Questo l'errore restituito:

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-09-19T09:36:33+00:00

    Ciao Sandro

    il campo Giacenza mi è indispensabile ed utile per altre azioni - tipo: la proposta di riorganizzazione delle scorte -

    Ciao

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-09-19T09:24:33+00:00

    ciao Luca,

    da come capisco hai un campo in una tabella preposto per la memorizzazione della giacenza.

    Non sarebbe il caso invece di calcolare al volo la giacenza alla bisogna come risultato della somma algebrica di carichi e scarichi, anziché lanciare un'action query per il ricalcolo e  memorizzazione della stessa...?

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento