Calcolo scadenza automatica

di il
3 risposte

Calcolo scadenza automatica

Buongiorno,
vi scrivo per chiedervi un aiuto, premettendo che le mie competenze in merito sono pressoché minime.
Vi spiego il mio problema.
Ho creato, su richiesta del mio capo, un db con il quale dovremmo gestire parte del magazzino.
Ho creato tabelle, query(dove ho incluso tutte le voci) e la relativa maschera.
Nella tabella ci sono le voci:
- da acquisto;
- oggetto;
- opzione 1;
- scadenza prodotto.

Il mio capo vorrebbe che :
- all'inserimento della data di acquisto si calcolasse la scadenza (90, 180, 365 gg) a seconda che l'oggetto contenga la voce "3mesi, 6mesi, 1 anno" e che la scadenza sia visualizzata nella colonna scadenza della tabella e nel rispettivo riquadro della maschera;
- oltre ciò vorrebbe che il dato 90 e 180 avesse la scadenza a 365 giorni se si clicca sul "flag" in maschera dell'opzione 1

Ho provato ad imposta una funzione IIF annidata nella colonna Scadenza prodotto della query ma nella maschera mi compare il risultato #nome?

Come posso risolvere?

grazie

3 Risposte

  • Re: Calcolo scadenza automatica

    Giuseppe12 ha scritto:


    ...
    Ho creato, su richiesta del mio capo, un db con il quale dovremmo gestire parte del magazzino.
    ...
    Il mio capo vorrebbe che :
    - all'inserimento della data di acquisto si calcolasse la scadenza (90, 180, 365 gg) a seconda che l'oggetto contenga la voce "3mesi, 6mesi, 1 anno" e che la scadenza sia visualizzata nella colonna scadenza della tabella e nel rispettivo riquadro della maschera;
    Quanto ne sa il capo di database? O quanto ne sai tu? Ora mi rivolgo a te perché eventualmente faccia da tramite: hai valutato bene il fatto di memorizzare questo dato nella tabella? Una discussione recente in merito

    Quando avrete in piena consapevolezza deciso che è necessario fare questo salvataggio (ma anche se non lo fosse, per poterlo comunque calcolare) a mio avviso dovresti creare una tabella relativa al campo Oggetto (non so perché chiamarlo così), dove insieme alla descrizione testuale (3 mesi, 6 mesi, 1 anno) c'è anche un campo numerico costituito dal numero di giorno da aggiungere alla data di acquisto per calcolare la scadenza. Metti in relazione Uno a Molti le due tabelle. Con una query e l'autolookup, in base alla contenuto del campo "oggetto" prenderai il corrispondente intervallo di tempo e con la funzione DateAdd ottieni la data di scadenza. Non lo farei da maschera ma direttamente nella query. Non è necessario passare da una UDF ma se ti è più "facile da scrivere" non è una tragedia.
    Esempio di "Tabella Scadenze"
    ID-----Descr-----GiorniScad
    1------3 mesi-------90
    2------6 mesi-------180
    3------1 anno-------365
    
    Aiuta molto anche a codificare la dicitura, in modo tale che non ci siano errori di inserimento: [1 mese] che diventa [un mese] e simili
  • Re: Calcolo scadenza automatica

    X Giuseppe12: ho scorporato il tuo post creando una nuova discussione.
    Per la prossima volta ricorda di non intervenire postando un nuovo problema sul thread di un altro autore.
    Ogni autore deve aprire il suo thread.
  • Re: Calcolo scadenza automatica

    Io ho usato questo sistema...
    ho creato una tabella tbModPaga con questi campi
    ID
    Descrizione -> x es Ri.Ba 60 gg Fine Mese
    Scadenze con questa stringa "60ggFM"

    ora tramite vba quando devo creare un pagamento lancio questa sub
    Public Sub insScadenze(nDoc As Integer, TipoPag As Byte, TOTale As Currency)
    	'TOTale è il totale del documento
    	'TipoPag è il tipo di pagamento inserito in tabella
        Dim scadenze As Variant
        Dim rigaScad, tScad As String
        Dim immediato As Boolean
        Dim dataPag, nscad As Date
        Dim Parziale As Currency
        Dim x, TotScad As Integer
        '
        ' variabili per aprire il database
        '
        Dim rInt, dInt As Integer
        Dim dbs As Database
        Dim rst As DAO.Recordset
        Dim Tabella As String
        Tabella = "tbPagamento"
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset(Tabella, dbOpenDynaset)
        MsgBox TOTale
        
        rigaScad = DLookup("[scadenze]", "[tbModPaga]", "[IDMod] = " & TipoPag)
        Cassa = DLookup("[cassa]", "[tbModPaga]", "[IDMod] = " & TipoPag)
        dataPag = DLookup("[DataDoc]", "[tbDocumento]", "[ID] = " & nDoc)
        
        scadenze = Split(rigaScad, "gg")
        '
        '	Divido in stringhe la riga del campo scadenze es
        '	"Rid 30 60 90gg Data Documento"	30gg60gg90ggDF
        '	crea 4 stringhe una con 30 una con 60 una con 90 e una con DF
        '
    
        TotScad = UBound(scadenze)
        '
        '	rileva quante stringhe ci sono nel vettore totscad (3)
        '
        tScad = scadenze(TotScad)
        Parziale = 0
        If scadenze(TotScad) = "FM" Then
            quando = "Fine Mese"
        Else
            quando = "Data Documento"
        End If
        If TotScad = 1 Then
            If scadenze(0) = 0 Then immediato = True
        Else
            diviso = TOTale / TotScad
            For x = 0 To TotScad - 2
                Parziale = Parziale + diviso
                With rst
                    .AddNew
                    !IDDocumento = nDoc
                    !Descrizione = "Acconto " & scadenze(x) & " giorni " & quando
                    nscad = SommaData(scadenze(x), tScad, dataPag)
    
                    If immediato Then !DataPagamento = nscad
                    !ScadPagamento = nscad
                    !Imponibile = diviso
                    !Cassa = Cassa
                    .Update
                End With
            Next
        End If
        With rst
            .AddNew
            !IDDocumento = nDoc
            nscad = SommaData(scadenze(x), tScad, dataPag)
            If immediato Then
                !DataPagamento = nscad
                !Descrizione = "Saldo Immediato"
            Else
                !Descrizione = "Saldo " & scadenze(x) & " giorni " & quando
            End If
            !ScadPagamento = nscad
            !Imponibile = TOTale - Parziale
            !Cassa = Cassa
            .Update
        End With
    End Sub
    questa sub crea automaticamente le scadenze dividendo e dividendo anche gli importi se sono composte da acconti ...
Devi accedere o registrarti per scrivere nel forum
3 risposte