Newsgroup: it.comp.appl.access
Titolo: Stampa selezionati...

Ciao ragazzi!
Ho una maschera nella quale ho piazzato una ListBox (Lista) nella
quale visualizzo i risultati di una ricerca fatta tramite una casella
di testo e un pulsante di comando.
Tutte le ricerche funzionano perfettamente!
Ora, con un altro pulsante cmdStampa, voglio mandare in stampa verso
un report, SOLO i risultati della ricerca che sono stati SELEZIONATI
nella Lista... ho buttato giu questo codice a fronte dell'evento click
del pulsante ma purtroppo non funziona in quanto mi stampa tutti i
record... anche quelli NON selezionati:
Private Sub cmdStampa_Click()
 Dim strSQL As String
 Dim intSelezionati As Integer
 For intSelezionati = 0 To Lista.ListCount - 1
   If Lista.Selected(intSelezionati) Then
    strSQL = strSQL & Lista.Column(0, intSelezionati) & _
    " " & Lista.Column(1, intSelezionati) & ";"
   End If
  Next intSelezionati
 DoCmd.OpenReport "rptClientiTrovati", acViewPreview, strSQL
End Sub
Secondo me ho sbagliato la costruzione della stringa che fa da filtro
per il report... perché per il resto mi sembra giusto...
Avete sugerimenti?
grazie!

 ha scritto nel messaggio
news:kf7r1v4c5m5k8jckr...@4ax.com...

Infatti.
Intanto usa il parametro successivo della openreport, quella del
criterioWHERE.
Pertanto DoCmd.OpenReport "rptClientiTrovati", acViewPreview, , strSQL
La sintassi della stringa poi č per esempio
"NomeCampo = 'VALORE'"  o
"NomeCampo = VALORE" se il campo č numerico
Per piů valori devi concatenare con OR, quindi
"NomeCampo = 'VALORE' OR NomeCampo = 'VALORE'" ecc.
Forse funziona anche
"NomeCampo In ('VALORE1';'VALORE2')"
ma non sono sicuro.
Da qui puoi costruire correttamente la tua stringa
Antonio


wrote:

gra$ie!  :))

Antonio
Scusami ancora...
ho provato a modificare la stringa che fa da filtro in questo modo:
strSQL = strSQL & "RagioneSociale=" & "'" & Lista.Column(0,
intSelezionati) & "'" & " " & "OR" & " "
ma mi da' un errore di run-time perché dice che c'è una parentesi
chiusa in eccesso! Io la parentesi chiusa in eccesso proprio non la
vedo...
Io devo filtrare solo in base al campo RagioneSociale...

 ha scritto nel messaggio
news:qnbr1vc7n73k9ginn...@4ax.com...

A parte che & " " & "OR" & " " si scrive più semplicemente
& " OR "
a parte questo, il problema è l'ultimo concatenamento. La tua stringa esce
così infatti
"Ragione = 'Pippo' OR Ragione = 'Pluto' OR "
Allora, o alla fine stacchi gli ultimi 4 caratteri dalla stringa creata,
oppure l'OR lo metti all'inizio con un trucchetto per non metterlo la prima
volta.
Esempio:
prima_volta = true
inizio ciclo
if prima_volta then
  prima_volta = false
  strSQL = str_SQL & "Ragione = ...."
else
  str_SQL = str_SQL & " OR Ragione = .....
end if
Antonio

Antonio
Ora mi dice che c'è un operatore mancante nell'espressione della
query..  fosse WHERE!?!? Ma credo che lo metta lui... o no?
Private Sub cmdStampa_Click()
 Dim PrimaVolta As Boolean
 Dim strSQL As String
 Dim intSelezionati As Integer
 For intSelezionati = 0 To Lista.ListCount - 1
   If Lista.Selected(intSelezionati) Then
      If PrimaVolta = True Then
         PrimaVolta = False
         strSQL = strSQL & "RagioneSociale=" & "'" & Lista.Column(0,
intSelezionati) & "'"
      Else
         strSQL = strSQL & " OR RagioneSociale=" & "'" &
Lista.Column(0, intSelezionati) & "'"
      End If
   End If
  Next intSelezionati
DoCmd.OpenReport "rptClientiTrovati", acViewPreview, , strSQL
End Sub

 End Sub
Antonio

Antonio
Avevi perfettamente ragione!!!
Sono stato sbadato...
grazie 1k!!!

 grazie!
Vai sul Sito Comune (link qui sotto) e nella sezione Reports leggi la FAQ
intitolata "Come si può filtrare un report in base alla selezione multipla
effettuata su una casella di riepilogo?".
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------