Newsgroup: it.comp.appl.access
Titolo: Problema con query di cancellazione

Ciao a tutti,
Ho un problema con la seguente query di cancellazione:
DELETE Query6.Update_date, Tbl_InvoiceAttachments.*
FROM Tbl_InvoiceAttachments LEFT JOIN Query6 ON
Tbl_InvoiceAttachments.DocumentID = Query6.a
WHERE (((Query6.Update_date) Is Null));
questa query e' collegata con un'altra query (Query6) che e' la
seguente:
SELECT Tbl_Invoices.Update_date, Tbl_Invoices.Attachment,
Tbl_Invoices.Customer_ID, Tbl_Invoices.Document_Number,
Tbl_Invoices.Customer_reference, Tbl_Invoices.Type, Tbl_Invoices.Date,
Left([document_number] & "       ",7) & Left([Date] & "          ",10)
& [Type] & Left([Customer_reference] & "               ",15) AS a
FROM Tbl_Invoices
WHERE (((Tbl_Invoices.Update_date)=Date()) AND
((Tbl_Invoices.Attachment)=True));
Quando lancio la prima query ottengo un errore che mi dice di non
poter cancellare dalla tabelle specificate.
Non riesco a capire come mai perché' in passato ho già' usato query di
cancellazione che fanno riferimento ad altre query.
Grazie 1000 a tutti
Stay alive !
Pio Pio


Se le tabelle sono Relazionate, e tu cerchi di cancellare un Recod che
contiene Records lato MOLTI è ovvio che non ti consenta la
cancellazione a meno che tu non setti anche il DeleteCascade ovvero la
proprietà
della Relazione di attivare i Trigger di Eliminazione a cascata dei
Records nelle Tabelle lato Molti.
@Alex

 ...
Imposta la proprietą "record univoci" della query di cancellazione
a Sģ.
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 - Mostra testo citato -
Ciao Alex,
C'e' qualcosa che non capisco. In sostanza ho due tabelle, A e B, e
queste due tabelle sono in relazione tra di loro tramite un campo
chiave . Quello che voglio ottenere e' cancellare le righe della
tabella "A" la cui chiave non e' presente nella query di nome "Query6"
che mi fa una selezione particolare di record dalla tabella "B". Come
hai giustamente detto tu la tabella "A" e' in relazione uno a molti
con la tabella "B" seppur tramite query pero' a questo punto non so
come fare a risolvere il mio problema.
Grazie
Pio Pio

 Access FAQ:  
http://www.donkarl.com/it
Ciao Karl,
Ho provato quesa opzione ma l'errore risultante che access mi da e'
sempre lo stesso.



Frena.... le relazioni sono tra Tabelle, nelle Query ci sono i JOIN
che non sono Relazioni ma legami basati anche su Relazioni
Fondamentali(tra tabelle).
Se pertanto Hai le 2 Tabelle: A(1)<---->(M)B
non potrai MAI eliminare un Record di A se in B ci sono record
correlati alla Chiave di A che devi eliminare.
Per farlo devi andare nel Diagramma relazionale selezionare la
Relazione tra A-B premere DestroMouse ed andare a definire "Cancella
Record Correlati a Catena...." che corrisponde al DELETE CASCADE che
dicevo prima...!
Tutto questo INDIPENDENTEMENTE dalle tue Query.
Tieni presente che l'opzione di cui ti ho parlato, normalmente se uno
gestisce bene il CLIENT è da attivare... altrimenti per eliminare i
Record in A devi prima ELIMINARE i RECORDS in B con FK(B)=PK(A)
Spero ti sia chiaro FK(Chiave Esterna) e PK(Chiave Primaria)...
@Alex


Si, mi e' chiaro il concetto di PK e FK e dell'impossibilita' di
cancellare record in una tabella con chiave primaria presente in
un'altra tabella con chiave esterna.
Pero' non ti ho detto che la chiave esterna e' un campo calcolato, che
non esiste nella tabella reale. Cambia qualcosa in questo caso ? Penso
di si perche' non e' possibile settare il delete cascade che mi dicevi
prima dato che non c'e' nessun legame, almeno nel diagramma.
A questo punto, visto che non si puo' settare nessun legame mi viene
da pensare che non sia possibile fare quello che voglio tramite query
di cancellazione... o sbaglio ?
Grazie ancora
Pio Pio