Newsgroup: it.comp.appl.access
Titolo: aggiornamento tabella

Ciao a tutti,
piccolo problemino da risolvere:
in una form [Riparazione e Chiusura] ho tre controlli (caselle di testo):
[costo intervento], [costo chiamata] e [totale costo].
Nella tabella [Generale] questi tre controlli si riferiscono a tre campi di
tipo valuta.
Nella form il controllo [totale costo] ha nell'origine controllo la formula:
 =[Costo intervento]+[Costo chiamata]
Ora, quando vado a inserire nella form il costo intervento e il costo
chiamata, automaticamente mi fa vedere il costo totale ma non lo aggiorna
nella tabella.
Non so che codice usare e in quale evento inserirlo.
Capisco che sia una cosa semplice per chi mastica access, io proprio non ci
riesco,perdonate la mia inesperienza e grazie in anticipo a chi mi aiuta.
cesare

 ha scritto nel messaggio
news:a1_K9.16685$Ou4.5...@twister2.libero.it...

La soluzione è di una semplicità unica: elimina dalla tabella Generale il
campo chiamato [totale costo]; in un database relazionale non si registra
mai in una tabella un campo calcolato il cui computo è basato su altri campi
contenuti nella stessa tabella. Il non rispetto di questa regola ti
procurerà dei fastidiosi quanto indesiderati mal di pancia, dei quali
cominci a sentire i primi sintomi. I campi calcolati sono propri di una
query e NON di una tabella.
Tutte le volte che avrai necessità di conoscere il totale del costo te lo
determinerai "on the fly" nel campo calcolato di una query, nel controllo
calcolato di una maschera (come stai appunto facendo tu) o di un report.
Ci sarebbe anche la soluzione con la quale memorizzare nella tabella il
campo calcolato [totale costo], ma visto che ti sconsiglio vivamente di
farlo, non te la suggerisco neppure. ;-)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ---------------------------------------------
Ciao Roberto,
grazie per il consiglio, hai ragione, ma il motivo del campo calcolato nella
tabella è perchè dopo aver inserito i dati nella form, con un bottone stampo
un report con i dati della form ed ho notato che nel campo [totale costo] mi
stampa il valore ?0,00 anche se negli altri due ho dei valori che danno una
somma superiore allo zero. Sono andato a vedere la tabella e ho notato che
non era stato memorizzato.Forse ci sono altri sistemi per stampare un report
anche con dati che non sono memorizzati su una tabella?se ti può essere
utile ti posto il codice del bottone che stampa la form:
Private Sub Stampa_resoconto_finale_Click()
On Error GoTo Err_Stampa_resoconto_finale_Click
    DoCmd.RunCommand acCmdSaveRecord
    Dim stDocName As String
    stDocName = "Resoconto finale"
    DoCmd.OpenReport stDocName, , , "[Entrata n°]=" & Me.Entrata_n°
Exit_Stampa_resoconto_finale_Click:
    Exit Sub
Err_Stampa_resoconto_finale_Click:
    MsgBox Err.Description
    Resume Exit_Stampa_resoconto_finale_Click
End Sub
Se ti servono altri elementi perchè non sono stato chiaro, dimmi pure.
grazie
cesare


[CUT]

Immagino che anche nel report "Resoconto finale" avrai dei controlli
chiamati [costo intervento] e [costo chiamata] assosiati ai campi che hanno
lo stesso nome; nel report inserisci una casella di testo non associata
nella cui origine controllo scrivi:
 =[Costo intervento]+[Costo chiamata]
insomma, fai la stessa cosa che hai fatto nella maschera.


 ---------------------------------------------
Grazie 1000 per le dritte.
Posso aprofittare della tua pazienza e delle tue competenze o non è molto
corretto? Prometto che per un po' non rompo più. Avrei anche questo
Problemino:
attraverso una maschera di dialogo [Trova n°entrata Riparazione e Chiusura]
trovo il mio record nella form [Riparazione e Chiusura] che è identificato
da un campo [Entrata n°].
devo assegnare al controllo [Costo chiamata] del form [Riparazione e
Chiusura] un valore che cambia a seconda di quello che c'è nel campo
[Provenienza merce]della tabella [Generale]
Cerco di spiegarmi meglio:
Se nel campo [Provenienza merce]della tabella [Generale] c'è "1 Cliente",
nel controllo [Costo chiamata] del form [Riparazione e Chiusura] il codice
mi deve restituire il valore "18" nel momento in cui vado a richiamare
l'identificativo [Entrata n°]=Me![Trova n°entrata Riparazione e Chiusura].
Se nel campo [Provenienza merce]della tabella [Generale] c'è "2 Vettore",
nel controllo [Costo chiamata] del form [Riparazione e Chiusura] il codice
mi deve restituire il valore "18" nel momento in cui vado a richiamare
l'identificativo [Entrata n°]=Me![Trova n°entrata Riparazione e Chiusura].
Se nel campo [Provenienza merce]della tabella [Generale] c'è "3 A mezzo
Sael", nel controllo [Costo chiamata] del form [Riparazione e Chiusura] il
codice mi deve restituire il valore "0" nel momento in cui vado a richiamare
l'identificativo [Entrata n°]=Me![Trova n°entrata Riparazione e Chiusura].
Mi hanno suggerito di usare If Dlookup nel codice della maschera di dialogo
che trova il record,
io però non sono riuscito a saltarci fuori, potresti darmi anche questa
dritta?
P.S. il codice della maschera di ricerca [Trova n°entrata Riparazione e
Chiusura]è:
Private Sub Trova_n°_entrata_Riparazione_e_Chiusura_AfterUpdate()
Forms![Riparazione e Chiusura].Filter = "[Entrata n°]=" & Me![Trova n°
entrata Riparazione e Chiusura]
Forms![Riparazione e Chiusura].FilterOn = True
Forms![Riparazione e Chiusura]![Entrata n°].SetFocus
DoCmd.Close
End Sub
Bella mancia che ti sei beccato eh? Perdonami.
Cesare


[CUT]

Se non ricordo male, la maschera [Riparazione e Chiusura] ha come origine
record proprio la tabella [Generale]; ne consegue che non hai bisogno di una
DLookup per sapere quale sia il valore contenuto nel campo [Provenienza
merce] di tale tabella. Presuppongo che nella maschera [Riparazione e
Chiusura] tu abbia un controllo chiamato [Provenienza merce] associato al
campo con lo stesso nome della tabella [Generale].
Se così è, nella routine VBA che hai postato, prima della riga di codice:
DoCmd.Close
scrivi:
If Forms![Riparazione e Chiusura]![Provenienza merce] = "1 Cliente" Then
    Forms![Riparazione e Chiusura]![Costo chiamata]  = 18
Else
    If Forms![Riparazione e Chiusura]![Provenienza merce] = "2 Vettore" Then
        Forms![Riparazione e Chiusura]![Costo chiamata]  = 18
    Else
        If Forms![Riparazione e Chiusura]![Provenienza merce] = "3 A mezzo
Sael" Then
            Forms![Riparazione e Chiusura]![Costo chiamata]  = 18
        End If
    End If
End If


 [CUT]
[SUPERCUT]

Ciao, purtroppo non ero stato chiaro del tutto.
Il controllo [Provenienza merce] ce l'ho in un'altra form [Accettazione] che
al momento di usare la form [Riparazione e Chiusura] è stata già chiusa. La
form [Accettazione] ha come origine controllo una query che prende/immette i
dati in questione dalla tabella [Generale], la form [Riparazione e Chiusura]
ha come origine controllo una select basata anchessa sulla tabella
[Generale]. In effetti il dato che mi serve: [Provenienza merce] è tutti
sulla stessa tabella.
In poche parole, se con la form [Accettazione] era stato inserito nel
controllo [Provenienza merce] un determinato testo, quando cerco un record
nella form [Riparazione e Chiusura] mi deve restituire un valore 18 o 0 a
seconda di che testo era stato inserito precedentemente (vedi messaggio
precedente).
Boh, a momenti non ci capisco neanche più io. spero che tu riesca anche a
tradurre il mio linguaggio da cavernicolo.
grazie ancora
cesare

 cesare


 ha scritto nel messaggio
news:%xML9.26037$Ou4.7...@twister2.libero.it...

Credo che quello che tu mi abbia suggerito sia possibile, domani lo provo e
comunque grazie per la pazienza.
cesare