Newsgroup: it.comp.appl.access
Titolo: qualche progressino ma...

Ho una maschera (Carico Macchine)
Con un campo inizio lavoro e un campo fine e un campo (controllo?) durata.
Ok, facile.
Lavora su una calendario personalizzato, quindi fa questa query per contare
i giorni:
SELECT Count(*) AS CONTGLAV
FROM GLAV
WHERE (((GLAV.DATA)>=[Forms]![carico macchine]![inizio] And
(GLAV.DATA)<=[Forms]![carico macchine]![fine]));
Dovrebbe rendere ContGLav che vorrei passare a "durata", ma come?
Questo evento
Private Sub fine_AfterUpdate()
DoCmd.OpenQuery "ContaGiorniCons", acViewNormal, acEdit
Me.durata = "ContGLav"
End Sub
Mi rende solo runtime errors... ma perche' deve essere tutto cosi'
complicato in access??
--
.

 ha scritto nel messaggio
news:ULzv5.16716$Sm1.2...@news.infostrada.it...

Tutto complicato con Access? Perché a te la vita (questa) sembra semplice?
Forse non è access ad essere complicato ma noi (a volte) a complicarsi la
vita; prova con:
Me.durata = dcount("NomeQualsiasiCampo","GLAV","[data] between cdate('" &
forms![carico macchine]!inizio & "') and cdate('" & forms![carico
macchine]!fine & "')")
Ciao.

 Me.durata = dcount("NomeQualsiasiCampo","GLAV","[data]...
L'ho stampato e stasera dopo una buona cena e qualche bicchiere di rosso
provo a capirlo, ma come ho fatto io, perche' non va?
Perche' non posso lanciare una query e prenderne il risultato e metterlo in
un campo senza studiarmi i metodi d-vattelapesca e una sintassi dei comandi
che sembra inventata da un pazzo sadico?
Me.durata = "il_mio_bel_risultato_della query" con le virgolette o le
graffe, o i punti esclamativi o tutte insieme?

 Me.durata = "ContGLav"
Sarebbe complicarsi la vita mentre:
Me.durata = dcount("NomeQualsiasiCampo","GLAV","[data] between cdate('" &
forms![carico macchine]!inizio & "') and cdate('" & forms![carico
macchine]!fine & "')")
E nota la fine, E commerciale, virgolette, apostrofo, parentesi, virgolette,
parentesi.
Ditelo, siete una setta, una loggia coperta, vi volete tenere il segreto del
sacro codice e per farlo lo dissimulate in mezzo a segni di punteggiatura!
;-)
Onestamente, non potrei mai nemmeno pensare di scrivere del codice che
finisce con sei segni di interiezione.
Come variabili uso delle esclamazioni, SBAM, sock, kapow!
E ho fatto un fumetto.
Stasera, 3 bicchieri di rosso e provo.
Grazie.


!!???!!
Aho! Propongo il vino di Giangi da utilizzare al raduno nazionale; o sono io
che non afferro o, Giangi mio che sbronza che hai preso!
Non ho capito che è successo; tu vuoi sapere il perché non puoi utilizzare:
DoCmd.OpenQuery "ContaGiorniCons", acViewNormal, acEdit
Me.durata = "ContGLav"
Perché il Docmd.OpenQuery esegue un comando che in questo caso è
l'esecuzione di una query e basta. Quindi non puoi fare riferimento alla
variabile ContGLav (Me.durata = "ContGLav") perché "vive" nella query e il
Docmd non la "espone" all'esterno; oltretutto tu fai un'assegnazione di una
stringa (la racchiudi tra virgolette) a Me.durata, non del valore che
eventualmente dovrebbe contenere ContGLav.
Mentre il DCount() è una funzione che restituisce un valore, appunto il
conteggio (dcount) del campo che tu vuoi "conteggiare", nella tabella/query
che indichi e con la condizione where che eventualmente ti serve. La
"complessità" dell'istruzoine che ti ho scritto è data dal fatto che dcount
ha come parametri delle stringhe e a te serve parametrizzare la condizione
where; quindi:
la sintassi del dcount():
Dcount("NomeCampo","NomeTabella/Query","condizioneWhereSenzaLaParolaWhere")
risulta applicata al tuo problema:
1° parametro: dovresti indicare il nome di un campo che vuoi contare;
dcount("NomeQualsiasiCampo",
2° parametro: è il nome tabella o query da utilizzare;
"GLAV",
3° parametro: è la condizione where
"[data] between cdate('" & forms![carico macchine]!inizio & "') and cdate('"
& forms![carico macchine]!fine & "')")
se per esempio "traduciamo" forms![carico macchine]!inizio in 01.01.2000  e
forms![carico macchine]!fine in 31.01.2000, la condizione risulterebbe:
"[data] between 01.01.2000 and 31.01.2000"
ma il campo [data] è (appunto) una data c'è bisogno di un aggiustamento dei
valori:
"[data] between cdate('01.01.2000') and cdate('31.01.2000')"
ma i valori non sono fissi, quindi devo indicare le variabili da utilizzare
al posto dei valori avendo cura di rispettare la sintassi di tutte le
funzioni utilizzate:
"[data] between cdate('" & forms![carico macchine]!inizio & "') and cdate('"
& forms![carico macchine]!fine & "')")
ora il dcount() è una funzione e le funzioni restutiscono sempre dei valori
che guarda caso è (in questo caso) il conteggio del campo che hai indicato:
Me.durata = dcount(bla bla..)
Chiaramente nell'help è tutto documentato...
Ciao.
P.S. A quanti bicchieri di vino sei arrivato?

 P.S. A quanti bicchieri di vino sei arrivato?
Finita la bottiglia sono andato a letto, ma non so se sono piu' confuso dal
cabernet o dalla quantita' di virgolette e parentesi.
Ok, mi hai convinto e come si dice, non lo capisco ma mi adeguo.
In paradox un campo data non aveva bisogno di essere convertito in stringa e
riconvertito in data.
Definito come data, veniva lavorato come data e come data rimaneva.
Ed essendo un relazionale basato sulle query, lanciavi la tua query in shell
e ci prendevi il risultato.
Semplice ed elegante.
Volendo la metti nell script, una specie di sql grafico.
Ancora piu' semplice (niente files in giro) ancora piu' efficace.
Qui bisogna ricorrere a un metodo, avendo deciso prima quale dei mille
possibili, e indovinare una sintassi che non perdona: punti, virgolette,
apostrofi, parentesi, come fossero in saldo.
Comunque, a parte il dispiacere per aver abbandonato mio malgrado un
programma semplice e potente come paradox per uno farraginoso e contorto,
sei una persona molto gentile e disponibile e le tue spiegazioni mi sono
state molto utili, ma se non potessi usare il copia e incolla e tu non mi
avessi svelato l'arcano concatenarsi della punteggiatura starei ancora
frugando il mio naso cercando di interpretare lo strano italiano dell'help
di access.
Do' per scontate troppe cose e sopravvaluto access.
Grazie.

 wrote in message

Beh, ogni "ambiente" ha le sue regole; anch'io sono rimasto traumatizzato
dalla filosofia di access, una volta acquisite le conoscenze dell'ambiente
non è stato difficile camminare; alla fine un programmatore è pur sempre un
programmatore con qualsiasi linguaggio...
Ciao.

 programmatore con qualsiasi linguaggio...
Aspetta che ti trovo un compilatore in cirillico e poi ti voglio vedere....
;-)


Senza andare lontano, non ti ricordi la versione napoletana di office?
Ciao.