|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2003
Città: Torino
Messaggi: 122
|
[Access] Riferimenti record + aiuto codice SQL complesso
Eccomi di nuovo qui a chiedervi aiuto per altri due problemini in cui mi sono imbattuto (a proposito, ringrazio di nuovo Kewell e cionci per l'aiuto che mi hanno dato l'ultima volta
Premetto che sto lavorando con Access 97. Ho lavorato sulle versioni successive, ma mai a questi livelli quindi non so se ci siano limitazioni nel programma che sono state colmate in seguito. Inizio dai riferimenti ai record; è più una finezza che vorrei introdurre nella base dati, ma può anche essere un utile risparmio di tempo. Ho 2 tabelle con queste colonne e relativi record: Famiglie (Fam, SubFam) > sono le famiglie di prodotti Prodotti (P#, Fam, SubFam) > sono tutti i prodotti a cui sono associate delle famiglie I record di Prodotti.Fam sono dati un SELECT DISTINCT su Famiglie.Fam (compare un elenco a discesa con le possibili famiglie); una volta scelta la famiglia, vorrei creare un'istruzione che fa un SELECT per SubFam, mostrando nell'elenco a discesa solo le sottofamiglie appartenenti alla famiglia scelta. Secondo problema: vorrei inserire più istruzioni in una query; dovrei inserire una creazione di tabella tramite SELECT (non CREATE, perché seleziono record e formato da una tabella preesistente e la tabella creata è provvisoria), un UPDATE di tutti i record di un certo tipo, un INSERT nella tabella preesistente a cui facevo riferimento prima e infine DROP per eliminare la tabella provvisoria. Per ora ho creato una macro, ma mi chiede 7-8 conferme prima di effettuare tutti i passaggi; è la prima macro che creo dato che mi sono sempre rifiutato di imparare a usarle, ma penso si tratti di controlli di sicurezza eliminabili dalle impostazioni, impostazioni che vorrei mantenere tali. Riporto le 4 query: 1) SELECT * INTO Temp FROM Tab WHERE (((Tab.[Campo1])=[Valore:])); 2) UPDATE Temp SET Temp.[Campo1] = [Nuovo valore:]; 3) INSERT INTO Tab ( [Campo1], [Campo2], [Campo3] ) SELECT * FROM Temp; 4) DROP TABLE Temp; Nella prima query, [Valore:] fa comparire una finestra in cui l'utente deve digitare il valore da ricercare nel Campo1, mentre nella seconda, [Nuovo valore:] richiede all'utente un valore che poi sostituisce tutti i record del Campo1 nella tabella temporanea E' possibile mettere tutto in una query unica? Devo mettere delle parentesi e fare una query annidata? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ciao. Per il primo problema prova a dare uno sguardo qui
http://www.rogersaccesslibrary.com/f...ts.asp?TID=389 questo sito è fenomenale. Per il secondo non mi è chiaro tutto il giro che vuoi fare, ma magari è colpa mia vista l'ora. Buona notte. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Nov 2003
Città: Torino
Messaggi: 122
|
Quote:
Per il secondo problema, in breve vorrei riunire tutte le query in un'unica istruzione: SELECT * INTO Temp FROM Tab WHERE (((Tab.[Campo1])=[Valore:])) UPDATE Temp SET Temp.[Campo1] = [Nuovo valore:] INSERT INTO Tab ( [Campo1], [Campo2], [Campo3] ) SELECT * FROM Temp DROP TABLE Temp; Ho provato come sopra, togliendo i ";" (punto e virgola), ma, una volta terminata la prima riga, mi restituisce un errore ed evidenzia l'UPDATE, dicendo che è un'istruzione non prevista Edit: Ciao, john. Ho dato uno sguardo alla query sul sito. E' proprio quello che cercavo. Non sono riuscito ad applicarlo alla tabella, ma dovrebbe funzionare con le maschere. Grazie P.S. Per quanto riguarda le istruzioni consecutive, mi sono arreso all'uso della macro. Ho disattivato gli avvisi di modifica alle tabelle per velocizzarne il funzionamento. Ultima modifica di ciopin83 : 28-09-2008 alle 22:39. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:57.




















