Aggiornare tutti i campi calcolati di una maschera continua in access ...

martedì 11 febbraio 2014 - 08.21
Tag Elenco Tags  Access (.mdb)

leoobelix Profilo | Newbie

2 giorni che ci sto sbattendo la testa e non ne vengo fuori
ho bisogno in una illuminazione .

maschera continua con tutti i campi salvati in tabella

Esempio :

ID, PRODOTTO , STOCK,ALARM,RIORDINE ,TotvalueMag etc....

nella casella di testo [stock] dopo aggiornamento
mi calcola il campo[RIORDINE]

CODICE :

calc = Me.Stock.Value - Me.Alarm.Value

Select Case calc
Case Is > 0
calc = -1
Case Is = 0
calc = 0
Case Is < 0
calc = Abs(calc)
End Select

Me.reorder.Value = calc

fin qui tutto bene . Problema seguente :
come faccio alla apertura della maschera ha ricalcolare tutti i campi

cerco di essere piu chiaro . se io modifico il campo stock con una query di update
da un altra funzione ( esempio quando faccio ordine ) , mi trovo i conti sballati
in quanto non mi riesegue tutti i calcoli .
il valore stock sara cambiato ,ma tutti gli altri ad esso collegati non si aggiornano .

grazie

renarig Profilo | Expert

>2 giorni che ci sto sbattendo la testa e non ne vengo fuori
Il tuo problema è che i dati sono rindondanti, se non modifichi la tabella non ne vieni fuori neanche fra 2 anni

Il problema è "filosofico" se tu in tabella hai STOCK e ALARM che con delle regole note e costanti ti danno il valore di RIORDINE
- perche vuoi scrivere in tabella anche il valore di RIORDINE ?????
- perche invece non lo ricalcoli ogni volta che occorre ?? Non sbaglieresti mai

poi per calcolarlo non ci vuole molto:
SELECT T1.ID, T1.Prodotto, T1.Stock, T1.Alarm, IIf(((T1!Stock-T1!Alarm)>0),-1,(Abs((T1!Stock-T1!Alarm)))) AS Riordxx FROM T1 ;
______________________________________________________________________

Se invece vuoi mantenere la tabella (SCONSIGLIATISSIMO) come è allora devi fare un UPDATE prima della apertura della maschera
UPDATE T1 SET T1.Riordine = IIf(((T1!Stock-T1!Alarm)>0),-1,(Abs((T1!Stock-T1!Alarm)))) WHERE (((T1.Riordine)<>IIf(((T1!Stock-T1!Alarm)>0),-1,(Abs((T1!Stock-T1!Alarm)))))) ;
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5