Newsgroup: it.comp.appl.access
Titolo: Assegnazione di un recordset ad un form

Ho creato un recordset nel codice "su aggiornamento" di una casella di
testo di una maschera.
Quando arrivo alla riga 
Set Application.Forms(strNomeMaschera).Recordset = rs
mi da un'errore del tipo:
l'oggetto immesso non è una proprietà recordset valida.
Ho letto qualcosa a riguardo.
L'errore si verifica quando si tenta di assegnare un oggetto Recordset
ActiveX Data Objects ( ADO ) a un form.
La soluzione ,dicono, consiste nel:
Impostare la proprietà ActiveConnection del recordset ADO a un oggetto
valido ADO Connection prima di assegnarlo al form. 
Ho inserito la riga 
rs.ActiveConnection = CurrentProject.Connection
ma continua a non funzionare.
Grazie per l'aiuto
Ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 -- 
Prova a riadattare questo esempio:
'---
Dim rst As New ADODB.Recordset
rst.Open "Select * from nomeTabella", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
Set rst = Nothing
'---
Ciao.
-- 
Sergio MAZZA 


Vedi questi articoli(il 2° in particolare):
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/modcore/html/deovrthedatabehindformsreports.asp
http://support.microsoft.com/kb/281998
@Alex

 @Alex
Ok ora non mi da più l'errore ed infatti nella maschera mi trovo un numero
di righe corrispondenti al recordset che ho creato.
Ma sono vuote!
Come faccio a dirgli che nel controllo "DESCR" della maschera mi deve
andare a mettere i valori dei record nel campo "DESCR" del mio recordset?
Ho provato ad inserire la riga:
Me.DESCR.Value = rs(DESCR)
ma mi da l'errore:
"impossibile trovare l'oggetto nell'insieme corrispondente al nome o al
numero richiesto"


Raffa74 ha scritto:

Quello ti basta associarlo ....!
Solitamente si crea la Form Associata con i controlli associati, quindi
si rimuove i RecordSource della Form
I Controlli saranno(associati) a nulla manterranno l'OrigineControllo o
ControlSource...!
Facendo questo non appena passi il Recordset alla Form....VOILA'.....
Se invece vuoi fare tutto via Codice ed il NomeControllo=NomeCampo ti
basta ciclare i controlli
ed assegnare alla proprietà
NomeControllo.ControlSource=NomeControllo.Name
Ciao
@Alex

 @Alex
Ho capito grazie ed infatti funziona.
Ti pongo questa variante che mi mette in difficoltà.
Voglio aprire una maschera solo con intestazioni dei campi e i controlli
relativi...vuoti!!
Per esempio nella controllo "descr" digito "casa" e spingo INVIO.
Voglio che la maschera mi si ricompili con tutti i record che nel campo
"descr" contengono la parola "casa" (userei addirittura il LIKE).
Ma non ci riesco.
In apertura di maschera non metto nessuna routine.
Se associo ai controlli i campi della tabella ma non associo nessun
recordset alla maschera ne tantomeno un origine record, appena la apro mi
da #nome.
Forse sto sbagliando l'approccio per ottenere questa funzionalità!!!


 Forse sto sbagliando l'approccio per ottenere questa funzionalità!!!
La cosa è ugualmente semplice.
Ipotizionamo che i controlli abbiano lo stesso NOME del CAMPO della
tabella(è per semplicità ma vedrai che serve)
Ipotiziamo che all'apertura la tua Form contenga tutti controlli
necessari ma vuoti.
Metterai un Pulsante che sul quale gestirai l'Evento di POPOLAZIONE.
Cosa dovrai fare per realizzare quello che ti serve....? Creare la
stringa SQL adeguata....!
Ipotizzo che tutti i controlli di tipo TextBox siano ASSOCIABILI al
CAMPO della Tabella.
Dim ctl as Access.Controls
Dim sSQL as string
For each ctl in Me.Controls
     If ctl.ControlType=acTextBox then
          If Len(ctl.Value)>0 then sSQL=sSQL & "[" & ctl.Name & "] LIKE
" & ctl.Value & " AND "
     End If
Next
If Len(sSQL)>0 then
      sSQL=Mid$(sSQL,1,Len(sSQL)-Len(" AND "))
      sSQL = "SELECT * FROM TuaTabella WHERE " & sSQL
Else
      sSQL = "SELECT * FROM TuaTabella"
End If
ora in sSQL hai la stringa da passare alla routine che hai visto
prima....!
@Alex

 @Alex
Credo di aver capito....ho solo un'altro problemino!
quando digito "ctl" e poi il punto, non mi da l'elenco dei metodi ed
infatti mi da errore sulla riga 
If ctl.ControlType = acTextBox Then........
Credo di dover aggiungere un riferimento...ma quale?
Grazie ancora!!


 Grazie ancora!!
Nessun riferimento.
Si chiama Intellisense, e dovrebbe uscire ma non corrispondente alle
proprietà e metodi del controllo TextBox.
Sapendo che è un TextBox però nonostante l'Intellisense non esponga
Metodi, Proprietà
ed Eventi vedrai che funzionano ugualmente.
Ciao
@Alex

 @Alex
Alex scusami ancora...ma non funzia!!
Ti allego l'immagine dell'errore..forse è più chiaro...
Guarda l'immagine cliccando 
http://attach.mynl.it/img?id=NDE0NA



Raffa, 2 cose importanti:
1) Nei muduli abilita la dichiarazione esplicita delle variabili, in
modo che Compilando ti accorgi prima degli errori.....!
Option Compare Database
Option Explicit
......
Se vai in Opzioni metti la spunta....
2)Probabilmente ti manca qualche Riferimento, vai in Strumenti
---Riferimenti e vedi cosa è contrassegnato con MANCA....!
@Alex


Alex, ha asseganto ctl come Access.Controls mi sembra ci sia una "s" di 
troppo, dici che azzecca?
--
ac

 ac
Caspita... banalissimo errore mio che non avrei mai visto.....!!
Certo che è quello.
@Alex


Nun te allarga'. Ora ti vuoi prendere il merito anche degli errori di altri?
--
ac

 ac
Ho verificato e l'errore è proprio nel codice che ho suggerito io
inizialmente....
Sono disattento----> quindi Genio...!
@Alex

 @Alex
Ragazzi....era proprio quello!!!
Grazie tante per l'aiuto...ora procedo da solo...non dovrei più avere
problemi.......spero!!!!
Ciao ciao
