|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
[VISUAL BASIC + ACCES] dubbio
Ciao,
sto lavorando ad un programma Acces. Vorrei creare una funzione da richiamare quando da una maschera in Access clicco il bottone. Vorrei che la funzione andasse a leggere tramite una query da una tabella e quindi restituire il valore letto come valore restituito dalla funzione. E' possibile creare una tale funzione? Mi servirebbe quindi poter chiamare questa funzione nella subroutine legata all'evento click del bottone.. Avete qualche suggerimento? Grazie!! :-) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
certo che si può...ma devi fare delle ipotesi molto forti sulla query in questione.
mi spiego meglio: siccome quello che ti interessa è ritornare un solo dato, la query DEVE ritornare un solo risultato, oppure ipotizzare che il campo in questione sia uguale per tutti i record ritornati dalla query. Quindi per ricavare il valore che stai cercando, devi implementare la query in modo che ritorni il solo record cercato, e a quel punto puoi usare la funzione Dlookup per leggere tale valore. Ad esempio: se tu avessi una tabella clienti, con un campo chiave "CodiceCliente", allora creando una query che cerca un dato cliente partendo dal codice, riusciresti a ricavare un solo record (quello cercato) in quanto il campo "CodiceCliente" è univoco. La funzione Dlookup ritorna il valore di un record a caso, di un campo specifico, all'interno di un dominio specificato. Un esempio può chiarire: Codice:
mioValore = DLookup("Campo", "QueryOTabella")
Riassumendo, per fare questo, basta creare un nuovo modulo (Modulo1) al cui interno inserire una funzione definita "Public" Codice:
Public Function dammiValore() as String
Dim ritVal as String
ritVal = DLookup("Campo", "QueryOTabella")
dammiValore = ritVal
end function
che non fa altro che leggere da "QueryOTabella" e ritornare il valore di "Campo". Poi crei un pulsante e, sull'evento "Su click" di quest'ultimo richiami la funzione "dammiValore()", facendo attenzione che, dato che devi usare il valore di ritorno di tale funzione, la devi richiamare con le parentesi rotonde e utilizzare il valore come meglio credi. se ci son problemi chiedi pure!
__________________
Ultima modifica di akyra : 24-04-2007 alle 10:20. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Ok ottimo ;-)! Grazie per la risposta completa e chiara, ora provo la soluzione..
posso chiederti un'ultima cosa?? Sempre al momento del click del bottone vorrei poter leggere in una funzione TUTTI i valori contenuti nei CAMPI della MASCHERA sulla quale faccio click.. in modo da poterli inserire nel database SQL o aggiornare il database.. E' possibile? E' possibile anche fare una cosa del tipo: if (riga con codice cliente già presente) then AGGIORNA riga con valori della maschera else INSERISCI NUOVA rigra ?? Grazie mille e perdonate la banalità delle domande ma è la prima volta che programma in Visual Basic, thanks ;-) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
certo che puoi, basta implementare un ciclo for (o while) e scorrere le righe e i campi che ti servono e poi eseguire l'if che ti serve....
ad esempio una cosa di questo tipo dovrebbe fare al caso tuo: Codice:
for i=1 to me.recordset.recordcount
'inserisci qui il codice che ti serve
if i < me.recordset.recordcount then
me.recordset.movenext
end if
next i
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Ma se io invece volessi modificare il valore nella maschera e quindi aggiornare-leggere il valore modificato?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
dovresti spiegarti meglio perchè così non ho capito molto bene...
__________________
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
... no problem ;-) Grazie lo stesso, mi è servito TANTISSIMO quello che mi hai detto prima, davvero grazie. L'ultimo post è poco chiaro, me ne rendo conto.. ho risolto il problema..
Grazie ancora ;-)!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:29.



















