Newsgroup: it.comp.appl.access
Titolo: unknown or invalid field reference...usando rst.FindFirst in query

Salve a tutti
ho una query con due campi chiamati "descrizione". Per distinguerli
Access mi mette campo1.descrizione e campo2.descrizione.
Ho una routine del tipo:
-----------------------------
dim rst as recordset
set rst = currentdb.OpenRecordset("nome query", dbOpenDynaset)
rsta.FindFirst ("[campo1.descrizione] =" & "ONERI")  'dove "ONERI" e un
valore del campo campo1.descrizione
Do Until rsta.NoMatch
...
rst.FindNext ("[campo1.descrizione] =" & "ONERI")
Loop
-----------------------------
Questo codice mi dà il seguente errore alla penultima riga:
Run-time error '3345' - Unknown or invalid field reference
'[campo1.descrizione]'
Sulla puenultima riga, evidenziata, il compilatore mi dice:
"rst.NoMatch = False"
Cosa sbaglio?
Grazie ad ogni suggerimento
Riccardo


"descrizione" è un nome (description) usato dal sistema, per cui, ti 
consiglio di cambiarlo... o se proprio non puoi, nella tua query gli dai un 
Alias, ovvero qualcosa del tipo "CICCIO : campo1.descrizione" "CICCIO2: 
campo2.descrizione"
-- 
-- 
Ciao
Pablitomf (Maurizio Facciuti)
-----------------------------------------------------------------
Access: 97, 2000, XP e 2003
ASP
-----------------------------------------------------------------
http://www.accessgroup.it/
-----------------------------------------------------------------
Il mio motto :
""Non mi fido molto delle statistiche, perchè un uomo con la testa nel
forno acceso e i piedi nel congelatore statisticamente ha una
temperatura media." 


ha scritto:

Forse sono errori di digitazione, ma hai usato indifferentemente rst e
rsta.
Poi i delimitatori.
Poichè descrizione è un campo di tipo testo, devi racchiudere i valori
fra apici:
rst.FindFirst ("[campo1.descrizione] =" & "'ONERI'") 
Inoltre, perchè lasci rinominare ad Access i campi con nome duplicato
? Dagli tu un nome, così sei sicuro che non cambierà.
Infine suggerirei un ciclo di questo tipo:
dim rst as recordset
set rst = currentdb.OpenRecordset("SELECT * FROM nome query WHERE
[Campo1.descrizione] ='ONERI'", dbOpenDynaset)
if rst.recordcount > 0 then
rst.movefirst
Do While rst.EOF = False 
...
rst.MoveNext
Loop
endif


Pablitomf (Maurizio Facciuti) ha scritto:

Grazie per la dritta dell'alias, semplice ed efficace!
ps bel motto!

 >Riccardo
Grazie per l'hint sul come hai costruito il Loop, lo terrò a memoria!

 ps bel motto!
Guarda che è assurdo aprire un RS in quel modo per poi cercare solo i
Records che
soddisfano il tuo criterio...!
Fossi in te mi leggerei meglio quello che ti ha proposto Vincenzo che
è la soluzione corretta, le indicazioni di Maurizio invece sono la
base per evitare problemi in genere, ma la strada che hai scelto tu è
sbagliata.
@Alex

Alessandro Baraldi ha scritto:

Ciao Alex
Vincenzo mi sembra apra anche lui un recordset o sbaglio?
Inoltre, potresti poi dare più indicazioni/commenti/suggerimenti nel
caso io stia facendo delle cose così assurde e sbagliate? Almeno il
post risulta più utile e me e a chiunque legga.
Grazie

 Grazie
@Alex

 @Alex
Cmq mi riferivo al tuo post, non quello di Vincenzo!
Grazie cmq
Ciao

 Ciao
Si, ma i post vanno letti e valutati .....!
@Alex