Newsgroup: it.comp.appl.access
Titolo: campo memo

Ciao a tutti,
ho una query:
 
SELECT Dati.SP3, Dati.CDC, Dati.rispo
FROM Dati
GROUP BY Dati.SP3, Dati.CDC, Dati.rispo;
 
Il campo RISPO viene letto da una maschera in un campo memo (uso campo memo perchè il campo rispo ha + di 255 caratteri) chiamato Testo. 
Ho creato il comando:
 
Private Sub lstSP3_AfterUpdate()
    Me.CDC = Me.lstSP3.Column(1)
    Me.Testo = DLookup("Testo", "dati", "rispo=" & Me.lstSP3.Column(2))
End Sub
 
ma da questo errore che non capisco:
 
Errore di run-time 3075
Errore di sintassi (operatore mancante) nell'espressione della query 'rispo='
 
Grazie del vs. aiuto sempre prezioso.


Forse mancano solo le virgolette che delimitino il campo con valore di testo, così:
 
     Me.Testo = DLookup("Testo", "dati", "rispo='" & Me.lstSP3.Column(2) & "'")
 
Ma quel messaggio mi fa pensare che il campo sia vuoto. Column(2) è la terza colonna, prova a farla visibile per controllare il contenuto.
 
Buon lavoro
Riccardo Baldinotti

Il giorno lunedì 3 novembre 2014 11:52:22 UTC+1, 
0404...@gmail.com
 ha scritto:

Ho provato ma con la tua soluzione il testo non viene.
Comunque ho controllato il campo non è vuoto


Ma scusa, la Dlookup cerca un dato in un campo della tabella 'dati'. Se Testo è una casella della maschera non lo può trovare. Il primo argomento della funzione è un campo della tabella 'dati'; può essere, per esempio, il valore che si trova in SP3, e allora sarà:
 Me.Testo = DLookup("SP3", 'dati', "rispo='" & Me.lstSP3.Column(2) & "'") 
cioè: "trovami nel campo 'SP3' della tabella 'dati' il valore che trovi in Me.lstSP3.Column(2)".
A meno che non ci sia un campo Testo in 'dati'che non fa parte della query come l'hai specificata, e allora va bene.


Ho provato ma l'errore è sempre lo stesso


Mandami tre righe di esempio della tabella, così faccio una prova.


Io leggo una query:
 
SELECT Dati.SP3, Dati.CDC, Dati.rispo 
FROM Dati 
GROUP BY Dati.SP3, Dati.CDC, Dati.rispo; 
 
 
SP3	                        CDC	        rispo
beneficiari ben identificati    Assistenza      Gentile Cliente
beneficiari non identificati    Gestione
 
Utilizzo Dlookup perchè il campo rispo è superiore a 255 caratteri
 
Grazie


Ribadisco: 'Testo', come da tua routine, è un campo della tabella 'dati', altrimenti non può funzionare. Me lo confermi?
 
Secondo punto. Nel campo 'rispo' ho messo del testo e ho ottenuto l'errore che dici. La soluzione sta nel mettere le virgolette:
Me.Testo = DLookup("Testo", "dati", "rispo=<un apostrofo qui>" & Me.lstSP3.Column(2)<e quest'aggiunta:> & "'" <cioè un apostrofo racchiuso tra virgolette>)
 
Se poi il testo contiene a sua volta qualche apostrofo, allora è meglio correggere tutto così:
Me.Testo = DLookup("Testo", "dati", "rispo=" & Chr(34) & Me.lstSP3.Column(2) & Chr(34))
 

non ho letto tutto ma i campi memo danno spesso problemi.....
tu vuoi ordinare su un campo memo .....
 
Se siperi i 255 caratteri ma puoi stare dentro i 510 caratteri consiglio 2 campi testo normali da concatenare a livello applcazione
 
.
 

>Me.Testo = DLookup("Testo", "dati", "rispo=" & Me.lstSP3.Column(2)) 
 
pero a guardarlo meglio hai dimenticato gli apici
 
Me.Testo = DLookup("Testo", "dati", "rispo='" & Me.lstSP3.Column(2) & "'") 



Il giorno martedì 4 novembre 2014 12:12:58 UTC+1, 
bari...@gmail.com
 ha scritto:

Sicuramente sono ott..........
Il risultato è una query che contiene i campi: SP3 - CDC - Rispo in questo ordine
Il campo rispo deve essere visualizzato in una maschera nel campo testo.
 
Me.Testo = Me.lstSP3.Column(2)
Me.Testo = DLookup("rispo", "SP3", "rispo='" & Me.lstSP3.Column(2) & "'")
ho ragionato così: cerco il campo rispo nella query SP3 e memorizzo la colonna 2 in Me.Testo
Ma ancora non funziona

 Me.Testo = DLookup("rispo", "SP3", "rispo='" & Me.lstSP3.Column(2) & "'")
 
A questo punto, se è come avevo capito, e cioè la query è l'origine dati della listbox lstSP3, ti basta scrivere
 
Me.CDC = Me.lstSP3.Column(1)
Me.Testo = Me.lstSP3.Column(2)
 
per avere il risultato.
 
Meglio ancora: elimina l'evento DopoAggiornamento; in Me.CDC, all'origine controllo, scrivi:
=[Maschere]![maschera1]![lstSP3].[column](1)
compreso l'uguale all'inizio e sostituendo [maschera1] col nome della tua maschera. in Me.Testo, ugualmente, scrivi:
=[Maschere]![maschera1]![lstSP3].[column](2)
Nota le differenze, con tutte le 
 
Nota terminologica. Per 'campo' si intendono quelli di una tabella, mentre le caselle di una maschera si chiamano, appunto, 'caselle'.


Grazie. Ma casella mi tronca il testo probabilmente dopo i 255 caratteri

 Grazie. Ma casella mi tronca il testo probabilmente dopo i 255 caratteri
 
Hai ragione, la Listbox contiene solo quei caratteri. Allora scrivi, DopoAggiornamento:
    Me.CDC = Me.lstSP3.Column(1)
    Me.Testo = DLookup("rispo", "dati", "SP3=" & Chr(34) & Me.lstSP3 & Chr(34))
Così DEVE funzionare.   ;-)


Mi spiace ma non funziona. Sempre lo stesso errore 3075
Comunque per capire e imparare...nel comando non è indicato il numero della colonna: nella query il campo rispo è la colonna 2. Cosa significa in questo caso Chr(34)?

 Comunque per capire e imparare...nel comando non è indicato il numero della colonna: nella query il campo rispo è la colonna 2. Cosa significa in questo caso Chr(34)?
 
Siccome la ListBox riporta i soli primi 255 caratteri, usi la DLookUp: trovami il campo 'rispo' della tabella 'dati' nel record il cui valore di SP3 è uguale a Me.lstSP3.
Chr(34) è il codice delle virgolette doppie, per delimitare la stringa di testo. Non c'è numero di colonna perché ho dato per scontato che la colonna di riferimento di lstSP3 sia la prima, quella appunto che riporta il valore di SP3.


EVVIVA!!! Funziona con 
 Me.CDC = Me.lstSP3.Column(1)
    Me.Testo = DLookup("rispo", "dati", "SP3=" & Chr(34) & Me.lstSP3 & Chr(34))
Mi dava errore perchè nel campo SP3 in alcuni casi ci sono le "". Ho corretto la mia tabella ed adesso funziona. 
Non userò mai questa più questa funzione.
Se sei di Firenze ti offro da bere. Grazie di tutto, ho imparato molto

 Se sei di Firenze ti offro da bere. Grazie di tutto, ho imparato molto
 
Non sono di Firenze. (mannaggia, una bevuta persa)
Se dovessi pagare da bere per tutto quello che ho imparato su questo Newsgroup e dintorni, non basterebbero le botti di chianti!
 
Buon lavoro
Riccardo Baldinotti


Come ho detto adesso funziona però se il campo sp3 è a blank non appare il testo di rispo


Bisogna trovare un campo che abbia un valore univoco: ad ogni record un valore unico.
In genere uso un campo numerato, ad ogni inserimento il programma dà un numero progressivo. Non ha a che fare con i dati e quindi rimane sempre quello a dispetto di qualsiasi aggiornamento, evitando arzigogoli di correzioni a cascata e altre complicazioni.


Ho inserito un campo numerico: n_rispo che è associato alla casella riepilogo. Poi
 
Private Sub lstSP3_AfterUpdate()
    Me.CDC = Me.lstSP3.Column(1)
    Me.Testo = DLookup("rispo", "dati", "n_rispo=" & Chr(34) & Me.lstSP3 & Chr(34))
End Sub
Cerca il campo rispo nella tabella dati dove n_rispo è uguale al campo della casella di riepilogo. Ma, e qui viene il bello, non funziona. CHE FATICA
 

 Cerca il campo rispo nella tabella dati dove n_rispo è uguale al campo della casella di riepilogo. Ma, e qui viene il bello, non funziona. CHE FATICA
 
Perché ora deve trovare un valore numerico. Togli le virgolette:
Me.Testo = DLookup("rispo", "dati", "n_rispo=" & Me.lstSP3)
Sono d'accordo: CHE FATICA
 
RB