in una maschera ho 2 campi calcolati, uno si chiama TOT_MATPRIME e un
altro dist_tot1.
vorrei fare un un confronto, se TOT_MATPRIME è > di dist_tot1 allora
prendi il valore ME!dist_valmarg altrimenti Me!dist_valmargfissato
all'apertura della maschera ho inserito questa macro:
If Me!TOT_MATPRIME > Me!dist_tot1 Then
Me!margine = Me!dist_valmarg
Else: Me!margine = Me!dist_valmargfissato
End If
Forms!MSC_VIEWDIST!margine.Format = ("€ ##,##0.000000")
Ma non va, pare che si prenda il primo valore e basta.
Come devo fare? dove sbaglio?
Grazie mille
Samantha
in una maschera ho 2 campi calcolati, uno si chiama TOT_MATPRIME e un
altro dist_tot1.
vorrei fare un un confronto, se TOT_MATPRIME è > di dist_tot1 allora
prendi il valore ME!dist_valmarg altrimenti Me!dist_valmargfissato
all'apertura della maschera ho inserito questa macro:
If Me!TOT_MATPRIME > Me!dist_tot1 Then
Me!margine = Me!dist_valmarg
Else: Me!margine = Me!dist_valmargfissato
End If
Forms!MSC_VIEWDIST!margine.Format = ("? ##,##0.000000")
Ma non va, pare che si prenda il primo valore e basta.
Come devo fare? dove sbaglio?
Grazie mille
Samantha
------------------------------
A prima vista potrebbe essere che il campo calcolato non ha il tempo di
"calcolarsi" che già è partita l'altra istruzione.
Per vedere se è così fai tutto da codice, sia i campi calcolati che il
confronto, togliendo tutte le istruzioni dalla maschera delle proprietà del
controllo.
Per esempio su corrente:
Me.TOT_MATPRIME = il calcolo che vuoi
Me.dist_tot1 = il calcolo che vuoi
If Me!TOT_MATPRIME > Me!dist_tot1 Then...
In aggiunta verifica che il controllo che "non prende il valore" sia vuoto
nella proprietà "Origine controllo".
Ciao, Carlo
> Ciao, Carlo
Ti ci sei svegliato alle 7 per rispondere a SHamHantHaH eh?
Antonio
Ci manca molto la tua presenza.
Ti leggo spesso in un post a proposito di una query...ma poi poco e niente.
Un abbraccio, Carlo
Anzi, in questo periodo sto scrivendo un po' di più...
Antonio
Ciao,
il prete del mio paese, mi prende in giro dicendo SamantHA con l'acca
sospirata....
tutti gli altri invece pensano sempre a Samantha FOX.... il prete
invece questo non sarebbe tanto carino che lo dicesse ... ;) ,
Cmq grazie a Carlo x la risposta, ho fatto un altro test e sono giunta
alla conclusione, che:
TOT_MATPRIME =(Form!sm_CostiArticoli!totcstarticolo)
dist_tot1 -> è un valore memorizzato in tabella
Perciò, se gli dico:
Private Sub Form_Current()
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
Forms!MSC_VIEWDIST!margine.Format = ("€ ##,##0.000000")
End Sub
Lui mi dice sempre che dist_tot1 è maggiore di Tot_matprime, anche se
uno vale 10 e l'altro 100
Detto questo, ho inserito il comando come macro nell'evento della
maschera su corrente... ma non va,
ho inserito un intervallo di timer pari a 3 e su timer ho registrato
l'evento, ma quando sono in visualizzazione maschera mi si è impallato
tutto, non riuscivo neppure a chiudere la form perchè continuava a
presentarsi il msgbox, per fortuna avevo fatto una copia di backup
prima di questa malsana prova.
Come posso fare per automatizzare l'attività? Mi scoccierebbe mettere
un pulsante... Cosa mi consigli?
p.s.: l'origine del controllo Margine non è associato.
Grazie mille in anticipo e buona giornata,
Samantha Cicchelero
Private Sub Form_Current()
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
Forms!MSC_VIEWDIST!margine.Format = ("€ ##,##0.000000")
End Sub
Ciao Carlo,
ho appena trovato un tuo messaggio del 2003, http://groups.google.it/
group/it.comp.appl.access/browse_frm/thread/7ab72cdf847066ec/
cae9f2ab168ea0a8?lnk=gst&q=if%2Bcampi%2Bcalcolati
%2Bevento&rnum=1#cae9f2ab168ea0a8
vedo se riesco quindi a fare il calcolo dentro la macro, ora provo e
poi vi farò sapere.
Ciao,
Samantha
Ciao,
non riesco ad andarne fuori.
Come devo fare con DSUM per fargli calcolare il valore?
Ho guardato l'help, ma ho poca esperienza in VBA, dunque io volevo
fare così:
DSUM("cstarticolo","q_smCostiArticoli" ...
Dove cstarticolo è un campo calcolato dentro la query
q_smcostiarticoli, che è il dominio.... manca però il criterio, ossia
dist_id,
ecco la query q_smcostiarticoli:
SELECT TBL_DART.dart_id, TBL_DART.dart_artid, TBL_ART.art_desc,
TBL_ART.art_coeff, TBL_ART.art_diam, TBL_ART.art_spes,
TBL_ART.art_costo€, TBL_ARTUM.artum_desc, TBL_CSTMP.cstmp_id,
TBL_CSTMP.cstmp_mpid, TBL_MP.mp_desc, TBL_MP.mp_id, TBL_UM.um_desc,
TBL_CSTMP.cstmp_costo, TBL_CSTMP.cstmp_perc, TBL_CSTMP.cstmp_data AS
TBL_CSTMP_cstmp_data, TBL_DIST.dist_id, TBL_DIST.cstmp_data AS
TBL_DIST_cstmp_data, TBL_DART.dart_distid, TBL_DART.dart_qta,
(([cstmp_costo]*[cstmp_perc])+[cstmp_costo]) AS cstmpbase, ([cstmpbase]
+[art_costo€]) AS cstartbase, (([cstartbase]*[art_coeff])) AS
cstartmm, ([cstartmm]*[dart_qta]) AS cstarticolo
FROM TBL_MP AS TBL_MP_1, TBL_ARTUM INNER JOIN ((TBL_UM INNER JOIN
((TBL_MP INNER JOIN (TBL_CSTMP INNER JOIN TBL_DIST ON
TBL_CSTMP.cstmp_data = TBL_DIST.cstmp_data) ON TBL_MP.mp_id =
TBL_CSTMP.cstmp_mpid) INNER JOIN TBL_ART ON TBL_MP.mp_id =
TBL_ART.art_mpid) ON TBL_UM.um_id = TBL_MP.mp_umid) INNER JOIN
TBL_DART ON (TBL_DIST.dist_id = TBL_DART.dart_distid) AND
(TBL_ART.art_id = TBL_DART.dart_artid)) ON TBL_ARTUM.artum_id =
TBL_ART.art_artumid
ORDER BY TBL_DIST.dist_id, TBL_DART.dart_distid;
e qui mi perdo, non so come dirgli il criterio,
allora ho pensato di fare riferimento al campo calcolato dentro la
maschera, ossia
TotCstArticolo =Somma([cstarticolo])
Private Sub Form_Current()
Forms!Msc_ViewDist.Form![Analisi Costi].TOT_MATPRIME = (Forms!
Msc_ViewDist!sm_CostiArticoli.Form!TotCstArticolo)
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
End Sub
Ma mi da errore di runtime 438, ho guardato in google, ma sembra sia
un errore di libreria... non credo probabilmente ho sbagliato io
qualche cosa, ma non so cosa...
Help
Grazie
Samantha
Ci riprovo
la maschera si chiama MSC_VIEWDIST, contiene una struttura a schede
TabCtl12, con 5 schede. In 4 ho delle sottomaschere (clienti,
articoli, lavorazioni, costivari) la 5 scheda ANALISI è un riepilogo
costi, dove convergono le somme degli articoli
(TOT_MATPRIME =(Form!sm_CostiArticoli!totcstarticolo)
(DIST_CSTLAVO=(Form!smDlavo!TotcstLavo), lavorazioni
DIST_CSTVARI =(Form!smDCstvari!SumDcstVariCosto)
Aall'apertura della maschera MSC_VIEWDIST esegue le seguenti macro:
Private Sub Form_Open(Cancel As Integer)
Forms!MSC_VIEWDIST!MSC_CLIENTE.SetFocus
Forms!MSC_VIEWDIST!MSC_CLIENTE.Requery
Forms!MSC_VIEWDIST!sm_CostiArticoli.SetFocus
Forms!MSC_VIEWDIST!sm_CostiArticoli.Requery
Forms!MSC_VIEWDIST!smDlavo.SetFocus
Forms!MSC_VIEWDIST!smDlavo.Requery
Forms!MSC_VIEWDIST!smDCSTVARI.SetFocus
Forms!MSC_VIEWDIST!smDCSTVARI.Requery
Me.Controls("TabCtl12").Value = 4
End Sub
Il campo TOT_MATPRIME e dist_tot1 si trovano nella struttura a schede
Tabctl12.Analisi
Come faccio a riferirmi al campo che si trova in quella posizione?
Grazie,
Samantha
Ciao,
il prete del mio paese, mi prende in giro dicendo SamantHA con l'acca
sospirata....
tutti gli altri invece pensano sempre a Samantha FOX.... il prete
invece questo non sarebbe tanto carino che lo dicesse ... ;) ,
Vuoi dire che c'assomigli pure a Samantah Fox?!!?
Uhm.... interessante
Carlo, ci penso io se vuoi eh?
Per quel criterio, hai visto sull'help la sintassi della DSum?
Antonio
Ciao Antonio,
per mia fortuna non ciassomiglio a Samantha Fox (non aveva gli occhi
storti???? ) o forse la confondo con la Sabrina Salerno... ero troppo
piccola all'epoca... sono del 79, cmq,
dunque per DSUM("cstarticolo","q_smCostiArticoli", CRITERI
ora, i criteri, se io guardo le proprietà della sottomaschera
smCostiArticoli i campi collegati sono dart_distid = dist_id
Quindi:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
Ma mi fornisce l'errore:
errore di runtime 2448, impossibile assegnare un valore all'oggetto
questa è la macro
Private Sub Form_Current()
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
MsgBox Me!TOT_MATPRIME
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
End Sub
Ho provato anche a fare così
MsgBox Forms!MSC_VIEWDIST![Analisi]!TOT_MATPRIME
Dove Analisi è la scheda nr. 4 del controllo a schede TabCtl12, ma lui
lo vede come un campo.
In sostanza, io devo trovare il modo, che una volta aperta la form e
caricati i valori dei campi calcolati, possa confrontarli... ma
tempesticamente (si dice così?) parlando non riesco a farlo... i campi
calcolati si caricano dopo.
Hai qualche suggerimento?
Grazie
Samantha
Ciao Antonio,
per mia fortuna non ciassomiglio a Samantha Fox (non aveva gli occhi
storti???? ) o forse la confondo con la Sabrina Salerno... ero troppo
piccola all'epoca... sono del 79, cmq,
dunque per DSUM("cstarticolo","q_smCostiArticoli", CRITERI
ora, i criteri, se io guardo le proprietà della sottomaschera
smCostiArticoli i campi collegati sono dart_distid = dist_id
Quindi:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
Ma mi fornisce l'errore:
errore di runtime 2448, impossibile assegnare un valore all'oggetto
questa è la macro
Private Sub Form_Current()
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
MsgBox Me!TOT_MATPRIME
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
Ciao Antonio,
per mia fortuna non ciassomiglio a Samantha Fox (non aveva gli occhi
storti???? ) o forse la confondo con la Sabrina Salerno... ero troppo
piccola all'epoca... sono del 79, cmq,
dunque per DSUM("cstarticolo","q_smCostiArticoli", CRITERI
ora, i criteri, se io guardo le proprietà della sottomaschera
smCostiArticoli i campi collegati sono dart_distid = dist_id
Quindi:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
Ma mi fornisce l'errore:
errore di runtime 2448, impossibile assegnare un valore all'oggetto
questa è la macro
Private Sub Form_Current()
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
MsgBox Me!TOT_MATPRIME
If Me!TOT_MATPRIME > Me!dist_tot1 Then
MsgBox "Acquisti più alto è" & Me!TOT_MATPRIME
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
Mettiamola così: non ci riuscivi a guardargli gli occhi alla Fox :-PPP
79? hmmmm... sempre più interessante
dunque per DSUM("cstarticolo","q_smCostiArticoli", CRITERI
ora, i criteri, se io guardo le proprietà della sottomaschera
smCostiArticoli i campi collegati sono dart_distid = dist_id
Quindi:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[dart_distid]" = "[dist_id]")
Allora: devi usare a sinistra il nome del campo così come compare nel
dominio quindi in questo caso nella query.
A destra il valore da confrontare che è sulla form quindi devi riferire alla
form non come stringa ma come variabile.
Pertanto
"[nome campo] = " & me.dist_id
Infine, se nome_campo è numerico allora ok, va bene così.
Se è testo, il valore da confrontare deve essere circondato da apici. Quindi
"[nome campo] = '" & me.dist_id & "'"
Non si legge ma dopo l'uguale c'è ' apice "doppio apice e in fondo doppio
apice apice doppio apice
Alla fine si festeggia a cena insieme eh?
Antonio
Ciao Antonio,
come promesso di là, già stamattina avevo preparato la risposta, ma
volevo vedere prima se riuscivo a venirne fuori... in realtà non ho
concluso nulla, se non in un caso di impallare il programma, con una
macro che mi metteva in attesa... x fortuna avevo la copia del db allo
step prima
Questo è quanto:
-----------------------------------------------------
Ciao Antonio
ah in che brutto mondo viviamo, ormai nessuno fa + nulla per
niente... ;)
Scusa il triplo post, ma mi è partito il mouse a raffica... ero
leggermente... come dire tesa... talvolta rompe perdere un sacco di
tempo su cose che dovrebbero andare liscie liscie come l'olio
Per la DSUM, è + incasinata, ti spiego il contesto:
Maschera principale MSC_VIEWDIST, basata sulla tabella TBL_DIST, campo
chiave dist_id
Nella maschera MSC_VIEWDIST ho creato una struttura a schede, di cui 4
su 5 contengono sottomaschere, tra cui Sottomaschera costi
sm_CostiArticoli, basata sulla query q_smCostiArticoli, dalla quale
devo ricavare la somma del campo CSTARTICOLO
Nella scheda che non contiene sottomaschere, ci sono dei campi
calcolati, tra cui TOT_MATPRIME.
Ora, il calcolo DSUM l'ho impostato nella macro della FORM su
apertura. Ma come tento di aprire la FORM, ricevo un errore di macro,
e il debug indica proprio la riga con
Private Sub Form_Current()
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli", "[)
MsgBox Forms![Analisi].TOT_MATPRIME
Ma l'errore, me lo da anche solo con
Private Sub Form_Current()
MsgBox Forms![Analisi].TOT_MATPRIME
Mi dice che non trova la form analisi, che in realtà è una scheda...
ho cercato anche qui su come riferirsi ad una scheda di una struttura
a schede... uffffffff
E tu sei enta o anta?
Ciao e grazie,
Samantha
*******************************
Non sono riuscito a quotarti con le freccette
Le mie risposte sono tra ***
*******************************
> dunque per DSUM("cstarticolo","q_smCostiArticoli", CRITERI
>
> ora, i criteri, se io guardo le proprietà della sottomaschera
> smCostiArticoli i campi collegati sono dart_distid = dist_id
>
> Quindi:
> Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
> "[dart_distid]" = "[dist_id]")
>
> Allora: devi usare a sinistra il nome del campo così come compare nel
> dominio quindi in questo caso nella query.
> A destra il valore da confrontare che è sulla form quindi devi riferire
alla
> form non come stringa ma come variabile.
> Pertanto
> "[nome campo] = " & me.dist_id
> Infine, se nome_campo è numerico allora ok, va bene così.
> Se è testo, il valore da confrontare deve essere circondato da apici.
Quindi
> "[nome campo] = '" & me.dist_id & "'"
>
> Non si legge ma dopo l'uguale c'è ' apice "doppio apice e in fondo doppio
> apice apice doppio apice
>
> Alla fine si festeggia a cena insieme eh?
>
> Antonio
Ciao Antonio,
Questo è quanto:
-----------------------------------------------------
Ciao Antonio
ah in che brutto mondo viviamo, ormai nessuno fa + nulla per
niente... ;)
*******************************
Ma tu non sei niente, tu vali (cit.dot)
*******************************
Per la DSUM, è + incasinata, ti spiego il contesto:
Maschera principale MSC_VIEWDIST, basata sulla tabella TBL_DIST, campo
chiave dist_id
Nella maschera MSC_VIEWDIST ho creato una struttura a schede, di cui 4
su 5 contengono sottomaschere, tra cui Sottomaschera costi
sm_CostiArticoli, basata sulla query q_smCostiArticoli, dalla quale
devo ricavare la somma del campo CSTARTICOLO
Nella scheda che non contiene sottomaschere, ci sono dei campi
calcolati, tra cui TOT_MATPRIME.
Ora, il calcolo DSUM l'ho impostato nella macro della FORM su
apertura. Ma come tento di aprire la FORM, ricevo un errore di macro,
e il debug indica proprio la riga con
Private Sub Form_Current()
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli", "[)
*******************************
Alla fine che c'era?
*******************************
MsgBox Forms![Analisi].TOT_MATPRIME
Ma l'errore, me lo da anche solo con
Private Sub Form_Current()
MsgBox Forms![Analisi].TOT_MATPRIME
Mi dice che non trova la form analisi, che in realtà è una scheda...
ho cercato anche qui su come riferirsi ad una scheda di una struttura
a schede... uffffffff
*******************************
Ma scusa eh? tu devi riferire ad un controllo che sta dentro ad una scheda?
Embè? non basta metterci il nome? me.nome_controllo
*******************************
E tu sei enta o anta?
*******************************
Enta tendente agli anta...
Se po fa, se po fa
*******************************
Ciao e grazie,
Samantha
Antonio
;) Mi viene in mente la parodia delle Iene in merito alla cit. nella
lettera di Veronica Lario "il personaggio di Catherine Dunne, debba
considerarmi "La metà di niente"" ... quando uno dei due conduttori
dice " La metà di niente o un cogli0n3 del tutto",
se hai visto la puntata capisci l'ilarità della scena
Cmq tnx
>
> Per la DSUM, è + incasinata, ti spiego il contesto:
>
> Maschera principale MSC_VIEWDIST, basata sulla tabella TBL_DIST, campo
> chiave dist_id
>
> Nella maschera MSC_VIEWDIST ho creato una struttura a schede, di cui 4
> su 5 contengono sottomaschere, tra cui Sottomaschera costi
> sm_CostiArticoli, basata sulla query q_smCostiArticoli, dalla quale
> devo ricavare la somma del campo CSTARTICOLO
>
> Nella scheda che non contiene sottomaschere, ci sono dei campi
> calcolati, tra cui TOT_MATPRIME.
>
> Ora, il calcolo DSUM l'ho impostato nella macro della FORM su
> apertura. Ma come tento di aprire la FORM, ricevo un errore di macro,
> e il debug indica proprio la riga con
> Private Sub Form_Current()
> Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli", "[)
>
> *******************************
> Alla fine che c'era?
> *******************************
>
Che c'è? Al presente, non ho risolto, e sto argh... dunque:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " & Me!dist_id)
dist_id è il campo contatore chiave primaria, quindi numerico. La
sintassi mi sembra corretta. Il problema è che oltre a filtrare in
base alla distintaID, devo anche farsì che il campo
TBL_DIST.cstmp_data = TBL_CSTMP.cstmp_data, perchè all'apertura della
maschera collego anche un listino, filtrato per data, che mi calcola i
costi di acquisto delle materie prime.
Perciò, funziona se:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " & Me!dist_id and "[TBL_CSTMP.cstmp_data] =
" & TBL_DIST.cstmp_data)
I campi data sono alla stregua di quelli numerici, oppure sono testo
percui devo mettere gli apici?
Nemmeno così va... errore di runtime 13
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id And "[TBL_CSTMP.cstmp_data] = " & Me!DataListino)
e così invece
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & "[TBL_CSTMP.cstmp_data] = " & Me!DataListino)
Mi risponde:
Errore di runtime 3075
Errore di sintassi (operatore mancante) nell'espressione della query
'[TBL_DART.dart_distid] =10 [TBL_CSTMP.cstmp_data] = 05/01/07'
Dunque dunque dunque, cosa c'è che non rieso a farlo funzionare?
Grazie x la disponibilità,
Samantha
Hola,
e se scrivo così
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & "And [TBL_CSTMP.cstmp_data] = " & "Me!DataListino")
dice che le parentesi per [TBL_CSTMP.cstmp_data] sono sbagliate,
mentre con questo ultimo dice Impossibile assegnare un valore
all'oggetto
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & "And " & "'[TBL_CSTMP.cstmp_data]' = " & Me!
DataListino)
sgrunt
Ciao A tutti,
sono ad un punto di svolta :)
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & " And TBL_CSTMP.cstmp_data = " & Me!DataListino("gg/mm/
aaaa"))
Con questa DSUM ora se passo con il cursore nella finestra vba editor
mi da il valore di TOT_MATPRIME :)
Purtroppo, all'esecuzione mi da anche un brutto messaggio:
Errore di runtime 451
La routine Property Let non è stata definita e la routine Property Get
non ha restituito un oggetto
Che vuol dire?
Grazie
Samantha
Ho trovato un vecchio post http://groups.google.it/group/
it.comp.appl.access/browse_frm/thread/36d6a55d930f2654/
ca1287dfdd61e5be?lnk=gst&q=property%2Blet&rnum=16#ca1287dfdd61e5be
vecchio non tanto del 2006, dove si parla della proprietà property get
let...
E l'ho modificato così, ma al msgbox questo compare vuoto, perciò
significa che c'è qualcosa che non va, di VBA sono una schiappa:
'Per scrivere il valore X
Property Let Valore(Xval As Double)
X = Xval
Xval = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & " And TBL_CSTMP.cstmp_data = " & Me!DataListino("gg/mm/
aaaa"))
End Property
Property Set Valore(Xval As Control)
Set X = Xval
Set objClass.Valore = Me!TOT_MATPRIME
MsgBox Me!TOT_MATPRIME
End Property
Come devo modificarlo per far sì che funzioni?
Tnx in advance
Samantha Cicchelero
> > Alla fine si festeggia a cena insieme eh?
Uhm
> *******************************
> Alla fine che c'era?
> *******************************
>
Che c'č? Al presente, non ho risolto, e sto argh... dunque:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " & Me!dist_id)
dist_id č il campo contatore chiave primaria, quindi numerico. La
sintassi mi sembra corretta. Il problema č che oltre a filtrare in
base alla distintaID, devo anche farsě che il campo
TBL_DIST.cstmp_data = TBL_CSTMP.cstmp_data, perchč all'apertura della
maschera collego anche un listino, filtrato per data, che mi calcola i
costi di acquisto delle materie prime.
Perciň, funziona se:
Me!TOT_MATPRIME = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " & Me!dist_id and "[TBL_CSTMP.cstmp_data] =
" & TBL_DIST.cstmp_data)
I campi data sono alla stregua di quelli numerici, oppure sono testo
percui devo mettere gli apici?
No.
I campi data sono bastardi.
Devi trasformare la tua data che normalmente č semplicemente
gg-mm-aaaa in
#mm-gg-aaaa#
Allora, io ho preparato una funzione pubblica che richiamo ogni volta ce
faccio sti smaneggi.
Te la posto
Public Function converti(X As Date) As String
Dim gg As String, mm As String
gg = Left(X, 3)
mm = Mid(X, 4, 3)
converti = "#" & mm & gg & Right(X, 2) & "#"
End Function
> E tu sei enta o anta?
>
> *******************************
> Enta tendente agli anta...
> Se po fa, se po fa
> *******************************
> Ciao e grazie,
Stai glissando...
Antonio
Scusa l'ignoranza,
che vuol dire glissare?
Samantha
Scusa l'ignoranza,
che vuol dire glissare?
tralasciare di approfondire un argomento, sorvolarlo
Far finta di nulla, dare dei 2dP eleganti
Antonio
Hola Antonio
ma hai letto la mia battuta sulle Iene? O ho io un umorismo... di
scarsa qualità?
Ho il dubbio che non leggi i miei post fino in fondo, un clichè x gli
uomini quello di non ascoltare ... ovviamente sto scherzando :D
Questa DSUM ieri funzionava
DSum("cstarticolo", "q_smCostiArticoli", "[TBL_DART.dart_distid] = " _
& Me!dist_id & " And TBL_CSTMP.cstmp_data = " & Me!DataListino("gg/mm/
aaaa"))
per il discorso del giorno/mese/anno formato data, il problema era che
a questo punto, mi chiede una property let e get...
Non c'è un modo x semplificare la DSUM, dimodo chè non mi chiede il
property?
Essendo alle prime armi con VBA mi trovo spiazzata
Private ACQ As Double
Property Let ABC(SABC As Double)
SABC = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id & " And TBL_CSTMP.cstmp_data = " & Me!DataListino("gg/mm/
aaaa"))
SABC = ACQ
IF ACQ > Me!Dist_tot1 THEN
MsgBox "Acquisti più alto è" & ACQ
Else: MsgBox "Acquisti più alto è" & Me!dist_tot1
End If
End Sub
Logico che questa qui sopra non va, la sto girando e rigirando, ho
difficolta a fare la dichiarazione dentro un evento della maschera,
perchè pare che PROPERTY voglia lavorare da solo, e non insieme a
PRIVATE... dopo il private e prima di Property mi chiede sempre END
SUB...
... Ci ho messo una vita a fare il DSUM calcolandolo come variabile,
e ora non so come farlo funzionare dentro un evento della maschera...
Cmq, non sono abituata ad accettare inviti a cena da sconosciuti, ma
mi incuriosisce sapere se tu li fai spesso a sconosciute?
Data l'ora (11:47) ti auguro buon pranzo,
Samantha
************************************************
DISCLAIMER: quanto qui sopra scritto non vuole essere in nessun modo
offensivo
meglio chiarirlo prima,
Ciao
Hola Antonio
ma hai letto la mia battuta sulle Iene? O ho io un umorismo... di
scarsa qualità?
Ho il dubbio che non leggi i miei post fino in fondo, un clichè x gli
uomini quello di non ascoltare ... ovviamente sto scherzando :D
***************************
Veramente l'ho letto e... ho glissato...
perchè quella puntata non l'avevo vista e quindi non sapevo che rispondere
e allora ho "sfoltito"
***************************
Questa DSUM ieri funzionava
***************************
Allora.
DSUM("[campo da sommare","tabella o query",criterio)
criterio :
campo numerico
"[nome campo] = " & me.nomecontrollo
campo testo
"[nome campo] = '" & me.nomecontrollo & "'"
campo data
"[nome campo] = " & converti(me.nomecontrollo)
con converti la funzione che ti ho postato prima
***************************
Cmq, non sono abituata ad accettare inviti a cena da sconosciuti, ma
mi incuriosisce sapere se tu li fai spesso a sconosciute?
***************************
ovviamente, se non si esce a cena non ci si conosce quindi si stalla...
***************************
Antonio
Antonio,
mi da ancora risultato zero
e non mi da errori
Public Function ValoreAcq() As Double
Dim ACQ As Double
ACQ = DSum("cstarticolo", "q_smCostiArticoli", _
"[dart_distid] = " & Me!dist_id & " And [TBL_CSTMP_cstmp_data] = " &
converti(Me!DataListino))
End Function
Private Sub Form_Current()
MsgBox "Funzione ValoreAcq = " & ValoreAcq
MsgBox Me!DataListino
MsgBox Me!dist_id
End Sub
Come puoi notare sopra ho messo che mi dia il risultato su evento Form
Current, il risultato è che mi da il risultato all'apertura della
maschera... Ho creato anche un pulsante, su evento click, ma mi da
sempre risultato zero.
Come vedi, sono in una doppia situazione di stallo...
Scherzi a parte, forse non va perchè TBL_CSTMP_cstmp_data è un campo
dentro la query q_smcostiarticoli, che magari nella maschera
principale MSC_VIEWDIST non vede.
Quando devi fare una DSUM così quali sono gli step che fai, se i dati
sono contenuti in una sottomaschera? cambia qualche cosa?
Odio quando mi incasino
Grazie in anticipo, anche del sostegno morale
Samantha
Scherzi a parte, forse non va perchè TBL_CSTMP_cstmp_data è un campo
dentro la query q_smcostiarticoli, che magari nella maschera
principale MSC_VIEWDIST non vede.
Non c'entra nulla la form con la Dsum.
[nome campo] deve essere il nome del campo nella query
Antonio
Grazie Antonio,
ora ho capito come funziona la sintassi della DSUM. A questo punto,
devo prendere in mano la query e rielaborarla, lasciando solo le cose
che mi servono realmente. la query è lunga e complessa, pesca da 5
tabelle, e l'ho fatta funzionare creandola con la creazione
automatica. Ieri ne ho fatto una copia e ho cominciato a sfoltirla,
per capire quali sono realmente i campi e i join che usa... alla fine
non andava +nulla. E' un pò incasinata insomma :D
Antonio grazie, visto che è venerdì, e si avvicina il weekend, cosa
combini di bello? Vai x caso a vedere la tour Eiffel, la foresta nera
in germania, oppure il nuovo palazzetto del ghiaccio c/o gli Emirati
arabi (si dice così?)
Io se potessi andrei in SudAmerica.. a vedere i resti dei templi dei
maya
Buon lavoro
Samantha
FUNZIONA!!!
:D
Private Sub Form_Open(Cancel As Integer)
Me!margfly = DSum("cstarticolo", "q_smCostiArticoli",
"[TBL_DART.dart_distid] = " _
& Me!dist_id)
MsgBox "Il margine è " & Me!margfly
End Sub
E la query di origine l'ho semplificata come segue:
SELECT TBL_DART.dart_distid, TBL_DART.dart_id, TBL_ARTUM.artum_desc,
TBL_ART.art_desc, TBL_MP.mp_desc, TBL_DIST.dist_data,
TBL_CSTMP.cstmp_data AS DataCosti, TBL_DART.dart_qta,
(([cstmp_costo]*[cstmp_perc])+[cstmp_costo]) AS cstmpbase, ([cstmpbase]
+[art_costo€]) AS cstartbase, (([cstartbase]*[art_coeff])) AS
cstartmm, ([cstartmm]*[dart_qta]) AS cstarticolo
FROM TBL_MP INNER JOIN ((TBL_CSTMP INNER JOIN TBL_DIST ON
TBL_CSTMP.cstmp_data = TBL_DIST.cstmp_data) INNER JOIN (TBL_ARTUM
INNER JOIN (TBL_ART INNER JOIN TBL_DART ON TBL_ART.art_id =
TBL_DART.dart_artid) ON TBL_ARTUM.artum_id = TBL_ART.art_artumid) ON
TBL_DIST.dist_id = TBL_DART.dart_distid) ON (TBL_MP.mp_id =
TBL_CSTMP.cstmp_mpid) AND (TBL_MP.mp_id = TBL_ART.art_mpid);
Grazie Antonio e Carlo!
Samantha
Antonio grazie, visto che č venerdě, e si avvicina il weekend, cosa
combini di bello? Vai x caso a vedere la tour Eiffel,
Ce l'ho
la foresta nera
in germania,
mi manca
oppure il nuovo palazzetto del ghiaccio c/o gli Emirati
arabi (si dice cosě?)
Ce l'ho (almeno l'albergo a forma di vela e l'isola a forma di palma
Io se potessi andrei in SudAmerica.. a vedere i resti dei templi dei
maya
Ce l'ho (anche se erano incas a matchu pitchu)
Come vedi di cose da raccontarti ne avrei... cenetta?
Antonio
Finalmente, puff pant
Ho la sensazione che tu non mi leggessi, l'avevo scritto dall'inizio
FUNZIONA!!!
E' chiaro
Grazie Antonio e Carlo!
Bella, questa sembra "Grazie Mario. e digli che ho voluto più bene a...
uguale... uguale..."
Antonio
Sai la cavolata... che mi ha bloccata x 3 giorni?
Nella maschera principale, il valore DIST_ID non l'avevo messo, era
nella query di origine della maschera principale ma non presente come
campo nella form MSC_VIEWDIST!!!!
;) Buon lavoro
Samantha
;) Buon lavoro
Samantha
Glissatrice
Antonio
Sei forse invidioso?
:-)
Ciao, Carlo