View Full Version : ACCESS: query su un campo tabella
Ciao a tutti,
non sono bravo in Access ma conosco molto bene il linguaggio SQL. Mi risulta molto difficile una cosa che in SAP e forse anche in oracle mi sarebbe facilissima:
ho la necessità che (all'introduzione dei record in una tabella) uno o più campi mi si riempiano in automatico attraverso una select su un'altra tabella. Qualcuno mi sa dire com'è possibile costruire dei campi su cui si effettui tale query?
zakzakit
22-10-2003, 14:33
Tieni presente che in access puoi aggiornare le tabelle attraverso le query, es.
tabella1 (campo1 ..., campo2 ...)
tabella2 /campo3 ... ,campo4 ...)
query1 (select campo1,campo2,campo3,campo4 from tabella1,tabella2 where...)
è lecito:
update query1 set campo1=... where ...
Originariamente inviato da zakzakit
Tieni presente che in access puoi aggiornare le tabelle attraverso le query, es.
tabella1 (campo1 ..., campo2 ...)
tabella2 /campo3 ... ,campo4 ...)
query1 (select campo1,campo2,campo3,campo4 from tabella1,tabella2 where...)
è lecito:
update query1 set campo1=... where ...
Si esatto...se nn ho capito male quando aggiorni una tabella vuoi fare una query successiva di inserimenti....basta che fai un query del tipo INSERT INTO:
INSERT INTO [Tabella] ([Campo1], [Campo2])
VALUES([Valore1], [Valore2])
Per farmi capire meglio, mi occorre questo:
1)devo inserire un nuovo record nella tabella
2)inizio ad aggiornare manualmente i primi tre campi
3)il quarto e il quinto campo dovrebbero inserirsi automaticamente giacchè i primi 3 sono sufficienti ad individuarne i valori attraverso una semplice select... where su un'altra tabella
Non è che l'istruzione va inserita nelle proprietà del campo in visualizzazione struttura?
Il mio principale problema è costituito dal non sapere dove inserire l'istruzione per far in modo che venga usata quando inserisco nuovi record!
zakzakit
22-10-2003, 16:26
Non puoi associare triggers o procedure ad un campo di una tabella. Puoi però associare codice visual basic o macro ad un campo di una form associato al tuo campo di tabella.
disumano
22-10-2003, 20:47
credo che una macro vba faccia al caso tuo...
Vabbè,
ste cose esulano dalle mie capacità immediate: provvederò con una query che selezioni campi da due tabelle!
zakzakit
23-10-2003, 17:58
Esempio molto semplice.
Crei una tabella con due campi numerici e vuoi che il secondo campo si sempre uguale al doppio del primo.
Non puoi imporre delle regole interne al database perchè ciò avvenga.
Decidi di usare un espediente.
Vincoli l'inserimento dei dati nella tua tabella ad una form.
Vai in "maschere", "nuovo", "creazione guidata maschera", selezioni la tua tabella, e la form è bella e creata.
Vai in visualizzazione struttura, clicchi col pulsante destro sul primo campo, selezioni "proprietà", linguetta "evento", clicchi sul pulsante "..." della proprietà "dopo aggiornamento", scegli "generatore di codice".
A questo punto ti appare una maschera visual basic parzialmente precompilata così:
Private Sub campo1_BeforeUpdate(Cancel As Integer)
End Sub
Tu la completi così:
Private Sub campo1_BeforeUpdate(Cancel As Integer)
campo2 = campo1 * 2
End Sub
chiudi il visual basic.
ritorni nella maschera in visualizzazione struttura.
Clicchi con il pulsante destro sul secondo campo, selezioni "proprietà" e imposti "bloccato" a "sì", in modo da impedire l'inserimento diretto in maschera di un valore diverso da quello che hai calcolato tu.
Salvi la maschera e hai finito.
zakzakit
23-10-2003, 18:02
n.b. ovviamente per risolvere il tuo specifico problema nel codice visual basic dovresti inserire le istruzioni select che ti servono e non una semplice moltiplicazione.
E'molto utile la spiegazione che mi hai dato e mi sarà utile per le prossime immediate funzioni che inserirò per il db. Fortunatamente, ripensando a ciò che mi occorreva, sono riuscito a risolvere il mio problema per altra strada e completamente attraverso query!
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.