Proprietà fields con variabile campo

di il
3 risposte

Proprietà fields con variabile campo

Buonasera,
Ho realizzato una funzione che assegna ad un controllo il valore di un valore campo, passando come variabile il nome del controllo e il nome campo di una Query sfruttando la proprietà recordset.fields:
Public Function carica_valori_rec(camp As String, contr As control)
Dim db As DAO.Database, rst As DAO.Recordset

Set db = DBEngine(0)(0)
Set rst = db.OpenRecordset("Q_Protocollo", dbOpenDynaset)

    rst.FindFirst "ID_Assegnazione=" & N_ID
    If Not rst.NoMatch Then
    contr = rst.Fields("camp")
    End If

rst.Close
db.Close
End Function
utilizzando poi la funzione in una sub, dove Tipo_Campione e Descrizione_Campione sono due campi della Query:
Public Sub valori_rec() ' carica i controlli della main leggendo i campi della sottomaschera
carica_valori_rec Tipo_Campione, Form_Main.cbotipo_camp
carica_valori_rec Descrizione_Campione, Form_Main.txtdescr_camp
end sub
Ottengo un errore Variabile non definita e non capisco perchè.
Potreste aiutarmi?
Grazie.

3 Risposte

  • Re: Proprietà fields con variabile campo

    Mi pare tu abbia poca dimestichezza con l'uso dei Recordset, e ti sconsiglio di usare quel metodo.
    Usa più semplicemente la funzione nativa DLOOKUP.
  • Re: Proprietà fields con variabile campo

    Nella routine ho indicato soltanto due controlli per semplificare ma in realtà sono circa 15 controlli circa.
  • Re: Proprietà fields con variabile campo

    eddy1973 ha scritto:


    Nella routine ho indicato soltanto due controlli per semplificare ma in realtà sono circa 15 controlli circa.
    Ed è proprio per questo che ti ho suggerito il DLOOKUP, perchè non avendo dimestichezza con il Recordset ed è evidente dal codice che hai scritto, lo stai usando come si farebbe con il Dlookup, anzi in realtà peggio perchè leggi tutto un RS per poi filtrare il record richiesto.., usando il findfirst... bassissima efficienza.
    Insomma vedi tu, quello che hai fatto nel concreto è da evitare, quindi hai 2 opzioni:
    1) Usare il DLOOKUP
    2) Usare correttamente un RS per popolare tutti i campi in modo corretto, ma in quel caso non puoi scrivere una funzione in quel modo nè richiamarla in quel modo.
Devi accedere o registrarti per scrivere nel forum
3 risposte