Newsgroup: it.comp.appl.access
Titolo: Report con un solo Record

Salve,
Come da oggetto sto cercando di fare in modo che alla pressione di
un pulsante in una form venga stampato un report col solo record
attuale,uso il comando Docmd.Openreport,il problema e' la clausola
where,se scrivo:
"[ID_Cliente]='" & Me!ID_Cliente & "'"
Alla pressione del pulsante mi appare la richiesta di inserire il
parametro ID_Cliente,come se tale campo non esistesse,eppure c'e'!
Ho provato la soluzione alternativa di selezionare il record mediante
nome e cognome del cliente,ma non capisco come si fanno a inserire
due criteri,infatti se scrivo :
"[Cognome]='" & Me!Cognome & "'"
o
"[Nome]='" & Me!Nome & "'"
Tutto OK,ma se provo ad inserirli entrambi con:
"[Cognome]='" & Me!Cognome & "'" AND "[Nome]='" & Me!Nome & "'"
Alla pressione del tasto mi da l'errore Type Mismatch.
Come devo fare?
Bye,
    Bigstar.

 wrote in message
bcer40$ng7$1...@lacerta.tiscalinet.it...

Se il campo ID_Cliente è di tipo Contatore o di tipo Numerico, prova così:
"[ID_Cliente]=" & Me!ID_Cliente
Se poi vuoi filtrare il report in base al nome  ed al cognome prova così:
"[Cognome]='" & Me!Cognome & "' AND [Nome]='" & Me!Nome & "'"
Però così se il nome e/o il cognome contengono il valore apice ('), Access
ti segnalerà errore; ti consiglio pertanto questa sintassi:
"[Cognome]=" & Chr$(34) & Me!Cognome & Chr$(34) _
& " AND [Nome]=" & Chr$(34) & Me!Nome & Chr$(34)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:MKCGa.87860$Ny5.2...@twister2.libero.it...

Non capisco...
se una stringa da passare al motore jet contiene un apice, inserire il delimitatore
tramite la funzione chr$(34), oppure più semplicemente e rapidamente, dato che il vba di
access non deve "codificare" il carattere ascii, che cambia? La stringa risultante non è
sempre la stessa cioè in caso di un'apice al suo interno errata?
ipotizziamo che il controllo cognome assuma il valore "Dell'Acqua" ed il controllo nome
Tizio la stringa passata è
[Cognome]='Dell'Acqua' AND [Nome]='Tizio'
ho fatto delle prove (AC2K) e, come mi sembrava ovvio gia da parecchio tempo, quando in un
thread si parlo appunto di questo problema, mi torna errore alla riga di codice:
Docmd.Openreport WhereCondition:= _
    "[Cognome]=" & Chr$(34) & Me!Cognome & _
    Chr$(34) & " AND [Nome]=" & Chr$(34) & _
    Me!Nome & Chr$(34)
mentre tramite una funzione che potremmo poi richiamare per "correggere" ogni stringa da
passare al jet:
Public Function SqlQuote(Valore As String) As String
    SqlQuote= "'" & Replace(Valore, "'", "''") & "'"
End Function
Docmd.Openreport WhereCondition:= _
    "[Cognome]=" & SqlQuote("" & Me!Cognome) & _
    " AND [Nome]=" & SqlQuote("" & Me!Nome)
tutto fila liscio
Ciao, omnitow

 wrote in message
mPEGa.89681$lK4.2...@twister1.libero.it...

Mentre capisco perché la tua seconda soluzione funziona, non mi spiego il
motivo per cui la prima soluzione ti dia errore; io adopero sempre senza
problema la prima sintassi anche perché, usando Access 97, la funzione
Replace non esiste.



Ne sono più che certo, in ac2k non funziona, non è la prima volta che eseguo prove per
verificare questa possibilità.
Particolare questa situazione in ac97 mi chiedo come faccia il jet a tradurre la
stringa... uno tra i tanti misteri di access?
mah!
Ciao, omnitow