Partendo dal presupposto che io ho delle competenze molto basilari,
Sto cercando di aggiornare il campo Fatturazione.QTA con il valore presente in Clienti.QTAfinale:
il mio problema sorge nel collegamento delle due tabelle che non sono collegate tra loro direttamente bensì da una terza tabella (CSC) come riportato di seguito:
Clienti (ID_Cliente*,Codice,QTAfinale,...)
ClientiServiziCosti (ID_CSC*,ID_Cliente,ID_Servizio,...) --> abbreviata CSC
Fatturazione (ID_Fatturazione*,QTA,Numero,Data,ID_CSC)
chiavi primarie segnate con *, Foreign Key sottolineate
ho provato come segue:
UPDATE Fatturazione
INNER JOIN ClientiServiziCosti ON Fatturazione.ID_CSC = ClientiServiziCosti.ID_CSC
INNER JOIN Clienti ON ClientiServiziCosti.ID_Cliente = Clienti.ID_Cliente
SET Fatturazione.QTA=Clienti.QTAfinale;
ma non funziona, purtroppo non ne comprendo il motivo, dato anche che provando a fare un UPDATE con sole due tabelle coinvolte e tra loro collegate l'aggiornamento mi riesce usando la stessa sintassi ( UPDATE.... INNER JOIN... ON ...=... SET ....=....)
Mi sorge la domanda, è possibile eseguire un UPDATE facendo il collegamento tra 3 tabelle??
Il risultato finale che dovrei ottenere dalla query oltre ad avere il dato QTA nella tabella Fatturazione aggiornato è che segua queste condizioni:
Fatturazione.ID_Periodicita=18
AND ClientiServiziCosti.ID_Servizi=1
Vale a dire: aggiornare Fatturazione.QTA con il dato che si trova in Clienti.QTAfinale solo se Fatturazione.ID_Periodicita=18 AND ClientiServiziCosti.ID_Servizi=1
per tutti gli altri record che non soddisfano tali condizioni la qta rimane invariata.
Io ho una query che mi estrapola tutti i dati di cui necessito che seguano le due condizioni riportate sopra:
SELECT Clienti.CodiceDBS, Clienti.Denominazione, Fatturazione.QTA, Fatturazione.Prezzo, Fatturazione.ToT, ClientiServiziCosti.ID_Servizi
FROM (Fatturazione INNER JOIN ClientiServiziCosti ON Fatturazione.ID_CSC = ClientiServiziCosti.ID_CSC) INNER JOIN Clienti ON ClientiServiziCosti.ID_Cliente = Clienti.ID_Cliente
WHERE (((ClientiServiziCosti.ID_Servizi)=[Maschere]![consuntivo]![cboServizio]) AND ((Fatturazione.ID_Periodicita)=[Maschere]![consuntivo]![cboPeriodicita]));
Originariamente l'UPDATE doveva avvenire direttamente sul dato Fatturazione.QTA della query di selezione tramite un file .csv che conteneva appunto tale indicazione, tuttavia non riuscendo a fare questo aggiornamento da file esterno su una query ho dovuto trovare un'alternativa, quella di inserire il dato nella tabella Clienti (in quanto unica che mi permettesse il collegamento diretto tra il file e il db) e cercare di aggiornare la tabella Fatturazione usando un'altra tabella (problema posto all'inizio)
Premetto che non conosco il linguaggio VBA quindi se esiste una soluzione al problema che faccia uso di tale vi prego di segnalarmela o se sapete come aggiornare il dato nella query di selezione con file esterno ancora meglio.
Spero di essere stata quanto più chiara possibile, in caso contrario mi scuso e ringrazio in anticipo per l'aiuto.