Recuperare valore da altra tabella

mercoledì 06 agosto 2008 - 09.04

marko80 Profilo | Junior Member

Ciao a tutti,
ho due tabelle cosi composte:
tbl_progetti (idprogetto,titolo,data,ecc...)
tbl_aggiornamenti(idaggiornamento,idprogetto(in questo caso numerico), tipo di aggiornamento,ecc...)
legate tra di loro dall' idprogetto legame uno a molti.

In una maschera vorrei che inserendo l'idprogetto (della tabella aggiornamenti) subito dopo in una casella di testo mi restituisse il titolo del progetto.
Grazie.

Dainesi Profilo | Senior Member

Ogni volta che selezioni un IDProgetto devi far in modo che una procedura interroghi il DB e restituisca il record di testata del progetto. Basta interrogare con questa stringa il DB:

"SELECT * FROM PROGETTI WHERE IDProgetto = " & lngIdProgetto

dove lngIdProgetto rappresenta il valore dell'IdProgetto estratto dai tuoi movimenti

marko80 Profilo | Junior Member

Scusa ma non ho capito molto bene, forse anche perchè sono alle prime esperienze con access.
Nella mia maschera AGGIORNAMENTI il campo idprogetto è una casella di testo (txt_idprogetto) che imputo io a mano.
A seconda del numero presente in questa casella di testo nell'altra (quella del titolo) deve comparire in automatico il titolo che ho precedentmente compilato due,tre giorni o un mese fa... sull'altra maschera PROGETTI dove in questo caso l'idprogetto è un contatore.

in che private sub deve succedere tutto questo?

il codice non è una cosa simile?

Dim strsql As String
Set Rs = New ADODB.Recordset
strsql = "SELECT * FROM tbl_progetti WHERE idprogetto = " & txt_IDProgetto
Rs.Open strsql, CurrentProject.Connection

kloor Profilo | Newbie

>
>in che private sub deve succedere tutto questo?

A logica dovrebbe essere nell'evento Dopo aggiornamento del campo IDprogetto.
Se clicchi nel pulsantino con i 3 puntini dell'evento scelto (nelle proprietà dell'oggetto casella di testo) Access crea automaticamente la sub.
basta riempirla con il codice...
>
>il codice non è una cosa simile?
>
>Dim strsql As String
> Set Rs = New ADODB.Recordset
>strsql = "SELECT * FROM tbl_progetti WHERE idprogetto = " & txt_IDProgetto
> Rs.Open strsql, CurrentProject.Connection
>

Sì a questo punto devi impostare il valore nel campo idprogetto.
Allora puoi utilizzare quello scritto sopra ed assegnare il valore con:
txt_titoloProgetto.value = rs.fields("titoloProgetto")
oppure con la funzione Dlookup:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


M.

sogno_il_canada Profilo | Newbie

>Scusa ma non ho capito molto bene, forse anche perchè sono alle
>prime esperienze con access.
>Nella mia maschera AGGIORNAMENTI il campo idprogetto è una casella
>di testo (txt_idprogetto) che imputo io a mano.
>A seconda del numero presente in questa casella di testo nell'altra
>(quella del titolo) deve comparire in automatico il titolo che
>ho precedentmente compilato due,tre giorni o un mese fa... sull'altra
>maschera PROGETTI dove in questo caso l'idprogetto è un contatore.
>
>in che private sub deve succedere tutto questo?
>
>il codice non è una cosa simile?
>
>Dim strsql As String
> Set Rs = New ADODB.Recordset
>strsql = "SELECT * FROM tbl_progetti WHERE idprogetto = " & txt_IDProgetto
> Rs.Open strsql, CurrentProject.Connection
>
Mamma mia come ti complichi la vita....

Prova a usare la funzione DLookUp che ha la seguente sintassi: DLookup(espr, dominio, [criteri]).
Se non capisci vai sulla guida in linea di access...

Ciao

marko80 Profilo | Junior Member

Grazie a tutti!
Ho risolto gia ieri, ma nn ho avuto il tempo di rispondervi.
Infatti alla fine ho usato la Dlookup.
Ciao e grazie ancora....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5