Salve a tutti ho 2 tabelle DOC_MAST e DOC_DETT collegate tra loro da un campo chiamato donumdoc con integrità referenziale e con relazione uno a molti da mast a dett.
Devo cancellare tutti gli articoli di doc_dett che rispettano delle determinate condizioni su doc_mast così avevo pensato ad una "delete in select".
L'ho scritta così:

codice:
qry = qry & " DELETE FROM dbo.DOC_DETT "
qry = qry & " WHERE dbo.DOC_DETT.DONUMDOC IN (SELECT dbo.DOC_MAST.DONUMDOC  FROM dbo.DOC_MAST  WHERE dbo.DOC_MAST.DODATA = '" + Replace(dataieri, "'", "''") + "' AND dbo.DOC_MAST.DOCODCLI =  " + Replace(codcli, "'", "''") + " AND dbo.DOC_MAST.DOSTATO =  '" + Replace(stato, "'", "''") + "' AND dbo.DOC_MAST.DONUMDOC < 0) "
non mi restituisce nessun errore ma non effettua la cancellazione.

In fondo ho messo questo controllo per vedere se c'è errore in (ASP):

codice:
if err = 0 Then	
	     response.write("OK")
	     else
	     response.Write("Errore in fase di cancellamento dati errore numero " & err)
end if
E la pagina mi scrive sempre OK, quindi non riscontra errori ma non effettua la cancellazione.

se stampo la stringa questo è il risultato:

codice:
DELETE FROM dbo.DOC_DETT WHERE dbo.DOC_DETT.DONUMDOC IN (SELECT dbo.DOC_MAST.DONUMDOC FROM dbo.DOC_MAST WHERE dbo.DOC_MAST.DODATA = '27/04/2010' AND dbo.DOC_MAST.DOCODCLI = 99 AND dbo.DOC_MAST.DOSTATO = 'T' AND dbo.DOC_MAST.DONUMDOC < 0)
quindi i valori sono passati correttamente (anche se la select deve restituire non un record solo ma molti più record.

Come mai non cancella niente??