Newsgroup: it.comp.appl.access
Titolo: Un report di un solo record...

Ciao a tutti! Avrei bisogno di un consiglio...
Ho necessità di fare un report di un particolare record.
In poche parole ho una tabella che ha una serie di record, i quali
contengono delle informazioni. Visualizzo tutto con una maschera che mi
permette di "navigare" da un record all'altro... vorrei inserire un pulsante
su questa maschera con il compito di generarmi un report con i dati relativi
al record su cui ero posizionato al momento del click sul pulsante della
maschera.
Come posso fare questa cosa? Qualcuno mi può aiutare? Grazie.
Marco

 ha scritto nel messaggio
news:2yN%9.81315$ZE.22...@twister2.libero.it...

Vedi la sintassi di docmd.openreport, in particolare l'ultimo parametro,
quello dei criteri WHERE
Antonio

Intanto grazie... ho letto l'help in linea relativo al comando che mi hai
suggerito... ma ammetto di non aver molto chiara la situazione... :(
Io ho creato un pulsante sulla maschera che mi visualizza i dati relativi ad
un particolare record su una tabella.
a questo pulsante è' stato associato il seguente codice:
Private Sub Comando5_Click()
On Error GoTo Err_Comando5_Click
    Dim stDocName As String
    stDocName = "Stampa dati"
    DoCmd.OpenReport stDocName, acPreview
Exit_Comando5_Click:
    Exit Sub
Err_Comando5_Click:
    MsgBox Err.Description
    Resume Exit_Comando5_Click
End Sub
Non ho capito cosa bisogna fare però... l'help parla di maschere di
controllo, filtri... non esiste un qualcosa tipo "where current record"? In
fondo è solo quello che mi serve... :(
La voce Where và associata al comando docmd.openreport già esistente oppure
và creata una riga di comando apposta per questa cosa?
Grazie
marco

 và creata una riga di comando apposta per questa cosa?
Ho la sensazione che tu NON abbia letto attentamente l'help sul comando
DoCmd.OpenReport nomereport[, visualizzazione][, nomefiltro][,
condizioneWHERE]
[omissis]
condizioneWHERE Espressione stringa che è una proposizione SQL WHERE valida
senza la parola WHERE.
pertanto utilizzando questo parametro puoi filtrare i record restituiti dal
report.
Come? Selezionando solo quello sulla maschera. Ci sarà un campo chiave no
(chiave)? Sarà sulla maschera no? Supponiamo sul controllo di nome ID
il criterio where sarà allora
crit = "chiave =" & me.ID
e quindi
stDocName = "Stampa dati"
DoCmd.OpenReport stDocName, acPreview, , crit
Antonio

 crit = "chiave =" & me.ID
?
Ma crit cosè? Una variabile? Se cosi immagino che dovrò dichiararla? se non
è una variabile cosè?
Comunque forse ho intuito qualcosa... vado a provare! Grazie! :)
marco

 > crit = "chiave =" & me.ID
Mmm... perdonami... stavo provando a scrivere il codice... ma non riesco a
capire cosa mi rappresenta il controllo di nome ID....... ma me.ID è
un'istruzione vera e propria oppure ci devo aggiungere qualcosa... nel senso
che quando scrivo il codice ed arrivo all' ID l'editor VB mi propone di
completare automaticamente l'istruzione... tra queste ho notato che ci sono
anche i campi della mia tabella ( o maschera!? )... e quindi sono rimasto
disorientato!
Marco

 ha scritto nel messaggio
news:TTR%9.82319$ZE.22...@twister2.libero.it...

Sigh....
me.ID è il riferimento al controllo di nome ID (o il nome che gli hai dato
tu) della maschera associato al campo chiave della tabella.
crit è una variabile di tipo string
crit viene impostata con la stringa corrispondente ad un criterio WHERE, poi
viene passata all'istruzione docmd.openreport
ma se scrivi:
DoCmd.OpenReport stDocName, acPreview, , "chiave =" & me.ID
è ovviamente la stessa cosa...
Antonio

 Antonio
Marco

 > > > crit = "chiave =" & me.ID
Ciao! Ho provato a fare un pò di esperimenti....
Ho aggiunto la variabile crit come mi hai detto tu perche giustamente è il
modo migliore... e poi ho scritto la seguente linea di codice...
crit = "Numero richiesta=" & Me.[Numero richiesta]
Ovviamente devo aver sbagliato qualcosa... perche non funziona... mi viene
detto:
"Errore di sintassi. Operatore mancante nelle espressione della query Numero
richiesta = 13"
13 è il numero del primo record.
Questo DB non l'ho fatto io... Per introdurre questa nuova "funzione" dei
report, ho praticamente fatto una piccola cosa... la tabella originaria non
conteneva tutti i dati necessari al report, quindi ho aggiunto un paio di
campi nella tabella. Poi, per non modificare la maschera relativa alla
tabella ho creato un pulsante sulla maschera stessa che mi porta ad una
seconda piccola maschera dove ci sono i dati per cosi dire "nuovi"... e su
questa piccola maschera ho aggiunto il pulsante a cui è associato il codice
di cui stiamo parlando... non sò se è importante... ma visto che non ho
ancora ben capito quanto il codice che mi hai suggerito lavori sulla
maschera piuttosto che sulla tabella ho pensato di precisarlo.
Per tornare al codice che ho scritto io, Numero richiesta è il campo chiave
della tabella ed è un progressivo.
Marco

 della tabella ed è un progressivo.
pertanto invece di ID avrai numero richiesta
Antonio
P.S.
proseguiamo su un solo flusso di post

> crit = "[Numero richiesta]='" & Me.[Numero richiesta] & "'"
Ho scritto il codice come sopra... ma adesso quando clicco sul pulsante mi
appare una finestrella dove inserire un dato " Numeor richiesta"... ne
inserisco uno ma il report appare comunque completo... :(
Marco

 ha scritto nel messaggio
news:kJa0a.86121$ZE.23...@twister2.libero.it...

Facciamo cosě: io cambio i nomi poi tu verifichi che corrisponda alla tua
situazione
crit = "[CAMPO_NUM]='" & me.CONTROLLO_NUM & "'"
dove CAMPO_NUM deve essere il nome del campo chiave in tabella
CONTROLLO_NUM deve essere il nome del controllo nella maschera associato al
campo CAMPO_NUM della tabella
Antonio

 campo CAMPO_NUM della tabella
AHHH.... adesso ho capito!!! Infatti non capivo come fossero legate tabella
e maschera... adesso provo con questo nuovo input! Ti faccio sapere!
E se campo chiave della tabella e  il controllo associato alla tabella hanno
lo stesso nome? E' possibile?
 Marco

 > Facciamo cosě: io cambio i nomi poi tu verifichi che corrisponda alla

Sě, č possibile e anzi, nelle autocomposizioni ottieni proprio questa cosa.
Ma a lui non gliene frega gnente!!!
Antonio
P.S.
Ci sono problemi solo quando in un controllo con nome = nome di campo scrivi
un'espressione che usa il campo stesso
=fun([CAMPO1]) scritto nel controllo di nome CAMPO1
Antonio

 =fun([CAMPO1]) scritto nel controllo di nome CAMPO1
Non ho capito questo ps. che abbia qualcosa a che fare con il mio
"problema"?
:(
Marco

 "problema"?
No, perchč tu stai lavorando via codice in un altro contesto
Antonio


Eccolo...
Ovviamente dichiaro la variabile:
Dim crit As String
poi scrivo crit = "[Numero richiesta=]" ' "& me.[Numero richiesta] & " '
e poi il solito DoCmd.OpenReport stDocName, acPreview, , crit
Mi è venuto il dubbio smanettando che il secondo Numero richiesta fosse
scritto male, e quindi l'ho sostituito da quello suggerito dal VB, ovvero
numero_richiesta, ma non è cambiato nulla! Dove vedo con precisione il nome
del controllo della maschera? Se clicco sul "campo" sulla maschera e poi
faccio proprietà vedo scritto Numero richiesta... ma non sono sicuro che sia
quello il nome...
Marco

 del controllo della maschera?
Prima regola: non usare nomi con gli spazi per i controlli.
Il nome è quello nella proprietà altro del controllo.
Per vedere come lo usa, basta che crei una procedura evento su quel
controllo e vedi come la chiama, normalmente mette i _ al posto degli
spazi!!!
Antonio

 "[Numero richiesta] ='" & me.[numero richiesta] & "'"
Provo e ti faccio sapere! :)
Marco