Newsgroup: it.comp.appl.access
Titolo: Piccoli errori di Access: come evitarli ?

Ciao a tutti ho due problemucci a cui spero sappiate darmi una solizione:
a) Esiste un comando per verificare quanti elementi ci sono in una combo
basata su query ?
    Mi servirebbe per creare una condizione IF che esegua un gruppo di
istruzioni solo se c'e' almeno un
    elemento elencato...
b) Sempre lavorando su query, mi capita a volte di utilizzare la cunzione
Ccur per arrotondare dei calcoli
    nei campi calcolati. Mi sono accorto della spiacevolezza del fatto che
viene visualizzato il messaggio
    #errore fino a che non si digitano tutti i valori che fanno parte del
calcolo... E' possibile ovviare ?
Grazie mille per l'aiuto!
Fabio

 Fabio
Ciao.

 Nz(Ccur([nomeControllo]),0).
Si, pero' dall'help sembra che tale comando funzioni solo applicato al
codice VB e provando ad inserirlo comunque nelle maschere non produce
l'effetto desiderato :-(
Mi servirebbe adirittura di poterlo applicare su un campo calcolato in una
query, hai idea di cosa si possa fare ?
Grazie mille per la risposta! Ti propongo altri 2 quesiti a cui tu magari
sai rispondere:
- Come faccio ad impedire la modifica di una maschera e della sua
sottomaschera (vedi inserimento ordine)
   Ho impostato su proprieta' maschera "Modificabile = no" e sulla form ho
impostato "Bloccato = Si"
   Pero' ho 2 problemi:
   - se clicco un po' in giro per i controlli misteriosamente la maschera
diventa modificabile
   - ho creato un pulsante che cambia lo stato della maschera me.allowedits
= true che funziona per
     la maschera principale ma non per la secondaria a cui non so come
passare il comando
     locked = false
- Ho impostato un report per la stampa fatture, lui funziona ma la lunghezza
non e' costante, in poche parole
   credo mi servirebbe di applicare quei pezzi di codice che si trovano sul
sito comune per stampare righe
   vuote... ma non ho capito come applicare il tutto al mio caso :-(
Thanks x quanto potrai eventualmente dirmi !


Per la sottomacshera creati un interruttore e nell'evento "dopo
aggiornamento" scrivi:
'-----------
Me!nomeSottomaschera.Enabled = Not Me!nomeBottone
'-----------
diverso è il discorso per la maschera principale; perché dovresti
disabilitare/abilitare tutti i controlli uno ad uno evitando (chiaramente)
il bottone  che sblocca/blocca, ma prima di questo devi spostare il fuoco
sull'unico controllo che rimarrà attivo, cioè il bottone.
Ricapitolando:
'-----------
Me!nomeBottone.SetFocus
Me!nomeControllo1.Enabled = Not Me!nomeBottone
Me!nomeControllo2.Enabled = Not Me!nomeBottone
Me!nomeControllo3.Enabled = Not Me!nomeBottone
etc. etc.
Me!nomeSottomaschera.Enabled = Not Me!nomeBottone
'-----------
se non vuoi scrivere una riga per ogni controllo potresti fare un cliclo:
es.
'-----------
Me!nomeBottone.SetFocus
for each xControllo in Me.Controls
    if xControllo.name = "nomeBottome" then
'non bloccarlo
    else
        xControllo.EnaBled = Not Me!nomeBottone
    end if
next
'-----------
io, per ora, ti consiglio una riga per ogni controllo....
Ciao.
--
Sergio MAZZA

Grazie davvero per il 3 al posto di 2 ! :)
...e per l'indicazione del Dcount...
Il campo calcolato in query che sto cercando di ottenere senza mostrare
#errore e' il seguente:
Importo: (Nz([tblRigaFatturaVendita].[Prezzo])*(Nz([QtaVenduta])))
che cosi' continua a mostrarmi errore...
Per le maschere con sottomaschere thanks, cerchero' di riprovare...mi
sembrava di ricordare qualcosa di piu' facile al corso :-)
Per i report, sapresti mica dirmi un modo veloce per mantenere la lunghezza
del corpo fissa indipendentemente dal numero di righe d'ordine ?
Thanks
PS: sono solito ringraziare inviando il programma completo una volta
terminato... se ti interessa entro la settimana DEVO putroppo farcela :)

cmq ho provato anche con:
Importo: Nz([tblRigaFatturaVendita].[Prezzo],0)*Nz([QtaVenduta],0)
ma non me lo accetta come comando xche' dice che c'e' un carattere
sbagliato...
:-?

 terminato... se ti interessa entro la settimana DEVO putroppo farcela :)
Non pensare a sdebitarti con me, non ce né bisogno; pensa a terminare bene
il lavoro e poi se vuoi me lo invii...
Ciao.
--
Sergio MAZZA

 Espandibile e Riducibile a No.
Qui ho problemi: facendo come dici, che e' anche l'impostazione di default,
ottengo che ogni riga dell'ordine viene spaziata dalla successiva tanto
quanto ho espanso il corpo :-(
Dimmi che sbaglio io... altrimenti dovro' proprio cercare di capire come far
funzionare l'esempio di codice sul sito comune e sin'ora non ci sono
riuscito :(
thnks

"Fabietto" <fab...@NOSPAMsupereva.it> ha scritto nel messaggio
news:4r3U7.19092$o9.6...@news1.tin.it...

Forse devi scrivere:
'-------------
Importo: Nz([tblRigaFatturaVendita].[Prezzo];0)*Nz([QtaVenduta];0)
'-------------
utilizza il punto e virgola per separare i parametri delle funzioni...
--
Sergio MAZZA

 thnks
Ciao.
--
Sergio MAZZA

 di righe, non lasciare fisso il corpo del report.
Ho trovato un rimedio:
ho reso invisibili i controlli che fanno i calcoli su pie' di pagina report
ho creato tutto quello che deve stare in fondo al report nel pie' di pagina
pagina recuperando i valori dai controlli nel pie di pagina report..
funziona ! :-)
...L'unico problema e' che se chi dovra' utilizzare il programma vuole un
filetto nero a lato delle righe ordine il mio metodo sara' da buttare...

Azz... quel maledetto help buggato! :-)
...riprovero', ad ogni modo per ora ho risolto impostando dei valori di
default per i campi che mi generavano l'errore...
grazie

 calcolo... E' possibile ovviare ?
Usa Nz(TuoValore,0) (con il ; al posto della , se lo usi in una query o in
un controllo)
Sib


prova a vedere l'istruzione
rpt.Line (x1, y1)-(x2, y2), intColore, B
Ciao Emanuele.

 rpt.Line (x1, y1)-(x2, y2), intColore, B
Ottimo! grazie
Sull'help dice :
"Per provare questo esempio in Microsoft Access, creare un nuovo report.
Incollare il codice riportato di seguito nella sezione Dichiarazioni del
modulo di report, passare quindi all'Anteprima di stampa."
Dove trovo le Dichiarazioni del modulo report !?
:-?



nel mio scrive infatti:
Line Method Example
The following example uses the Line method to draw a red rectangle
five pixels inside the edge of a report named EmployeeReport. The RGB
function is used to make the line red.
To try this example in Microsoft Access, create a new report. Paste
the following code in the declarations section of the report's module,
then switch to Print Preview.
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
    ' Call the Drawline procedure
    DrawLine
End Sub
Sub DrawLine()
    Dim rpt As Report, lngColor As Long
    Dim sngTop As Single, sngLeft As Single
    Dim sngWidth As Single, sngHeight As Single
    Set rpt = Reports!EmployeeReport
    ' Set scale to pixels.
    rpt.ScaleMode = 3
    ' Top inside edge.
    sngTop = rpt.ScaleTop + 5
    ' Left inside edge.
    sngLeft = rpt.ScaleLeft + 5
    ' Width inside edge.
    sngWidth = rpt.ScaleWidth - 10
    ' Height inside edge.
    sngHeight = rpt.ScaleHeight - 10
    ' Make color red.
    lngColor = RGB(255,0,0)
    ' Draw line as a box.
    rpt.Line(sngTop, sngLeft) - (sngWidth, sngHeight), lngColor, B
End Sub
 
in poche parole devi copiare il codice all'interno del codice di un
report vuoto...
in modalità struttura del report premi  Alt + F11 per andare sul
codice e incolla la procedura dell'help
chiudi quindi l'editor Visual Basic Access ed esegui il report per
vedere l'esempio.
Saluti.
Emanuele.