Newsgroup: it.comp.appl.access
Titolo: Errore Query troppo complessa

Ciao a tutti, 
come da oggetto ho una query che deve estrarre alcuni dati da una tabella a condizione che alcuni valori rientrino in un range di date. 
La query viene generata tramite codice Delphi che riporto per completezza ma in breve, genero una query dinamica inserendo nella clausola WHERE una serie di condizioni che si ripetono in base al numero di record di una seconda tabella. 
 
Di seguito il codice T-SQL interminabile:
 
SELECT DISTINCT(Cliente) FROM [t_crediti] 
WHERE 
[Stato] = 'APERTA' AND [Pagato] <> 'SI' AND ( 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'BONIFICO' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'BONIFICO' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'BONIFICO' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'BONIFICO' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'BONIFICO' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '
RI.BA
.' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '
RI.BA
.' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '
RI.BA
.' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '
RI.BA
.' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '
RI.BA
.' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'R.D.' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'R.D.' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'R.D.' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'R.D.' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'R.D.' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '113' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '113' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '113' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '113' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '113' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '2' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '2' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '2' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '2' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '2' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '500' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '500' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '500' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '500' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '500' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '15' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '15' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '15' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '15' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '15' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '106' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '106' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '106' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '106' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '106' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '152' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '152' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '152' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '152' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '152' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RMP' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RMP' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RMP' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RMP' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RMP' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = '100' AND DATEDIFF("d",[Scadenza],DATE()) >= -5) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = '100' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = '100' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = '100' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = '100' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 5' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 5' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 5' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 5' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 5' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 112' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 112' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 112' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 112' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 112' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 80' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 80' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 80' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 80' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 80' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 90' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 90' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 90' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 90' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 90' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 101' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 101' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 101' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 101' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 101' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 114' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 114' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 114' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 114' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 114' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 125' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 125' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 125' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 125' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 125' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 116' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 116' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 116' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 116' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA 116' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
 OR 
(ISNULL([Preavviso]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA ....' AND DATEDIFF("d",[Scadenza],DATE()) >= 7) OR 
(NOT(ISNULL([Preavviso])) AND ISNULL([Sollecito1]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA ....' AND DATEDIFF("d",[Scadenza],DATE()) >= 5) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND ISNULL([Sollecito2]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA ....' AND DATEDIFF("d",[Scadenza],DATE()) >= 15) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND ISNULL([Sollecito3]) AND [ModalitaPagamento] = 'RIMESSA DIRETTA ....' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) OR 
(NOT(ISNULL([Preavviso])) AND NOT(ISNULL([Sollecito1])) AND NOT(ISNULL([Sollecito2])) AND NOT(ISNULL([Sollecito3])) AND [ModalitaPagamento] = 'RIMESSA DIRETTA ....' AND DATEDIFF("d",[Scadenza],DATE()) >= 30) 
) ORDER BY [Cliente] 
 
 
Mi rendo conto che non sia così semplice la comprensione di quanto scritto ma non so come darvi le indicazioni utili per cui chiedete quello che non vi è chiaro. 
 
Una breve spiegazione delle tabelle: 
in t_crediti ho una serie di campi tra cui Cliente, ModalitaPagamento, Scadenza, Preavviso, Sollecito1, Sollecito2, Sollecito3 che contengono alcune date; una seconda tabella t_parametri contiene i campi ModalitaPagamento, Preavviso, Sollecito1, Sollecito2, Sollecito3 con valori numerici. Quello che devo fare è estrarre i dati da t_crediti solo se le date rientrano nel range indicato dai rispettivi parametri in riferimento alla modalità di pagamento assegnata. 
Faccio un esempio: 
 
Tab. t_crediti 
 
Cliente pippo 
ModalitaPagamento RIBA 
Preavviso 10/10/2012 
Sollecito1 10/11/2012 
Sollecito2 
Sollecito3 
 
Tab. t_paramentri 
ModalitaPagamento RIBA 
Preavviso -5 
Sollecito1 5 
Sollecito2 10 
Sollecito3 15 
 
In questo caso devo estrarre tutti dati da t_crediti dove Scadenza è nel range o superiore impostato da t_parametri.Sollecito2, il range lo calcolo con la data di scadenza e quella odierna per cui se la differenza dei giorni è maggiore di 10 devo visualizzare il record. 
Il problema è che la tab. t_parametri può contenere N record per cui nella clausola WHERE devo controllare ogni record presente in t_parametri. 
 
Spero di non aver creato ulteriore confusione. La query che utilizzo funziona perfettamente solo se in t_parametri sono presenti pochi record (credo intorno ai 5/6 o giu di lì) altrimenti mi ritorna errore di query complessa. Sicuramente c'è una via migliore per gestire questa situazione ma per quanto mi riguarda non so come fare. 
 
Spero in un vostro aiuto. 
Grazie

Allora, vediamo, facciamola più semplice:
dovrei estrarre i dati dalla tabella t_crediti solo se soddisfatti i requisiti presenti nella tabella t_parametri.
 
Esempio:
 
Tab. t_crediti 
 
Cliente: pippo 
ModalitaPagamento: RIBA
Scadenza: 05/10/2012 
Preavviso: 10/10/2012 
Sollecito1: 15/10/2012 
Sollecito2: 
Sollecito3: 
 
Cliente: pluto
ModalitaPagamento: RIBA
Scadenza: 05/11/2012 
Preavviso: 10/11/2012 
Sollecito1: 10/11/2012 
Sollecito2: 15/11/2012
Sollecito3: 
 
Tab. t_paramentri 
ModalitaPagamento: RIBA 
Preavviso: -5 
Sollecito1: 5 
Sollecito2: 10 
Sollecito3: 20 
 
Devo estrarre il cliente Pippo perchè il primo campo vuoto che è Sollecito2 soddisfa le regole presenti nella tabella t_parametri, infatti i giorni trascorsi tra la data di scadenza e la data di oggi è > del parametro impostato nella tabella t_parametri in riferimento al Sollecito2 (infatti il 10 si riferisce al numero di giorni). 
Il cliente Pluto invece non va estratto perchè il primo campo vuoto è Sollecito3  e la differenza tra data di scadenza e data di oggi è < del parametro impostato nella tabella t_parametri.
 
Il problema nasce dal fatto che in t_parametri possono esserci N record (nell'esempio viene mostrato solo il record riferito alla modalità di pagamento RIBA) e se inserisco tutti i controlli necessari per la verifica di tutti i record presenti mi trovo l'errore in oggetto. Si può ovviare al problema con una query SQL più idonea o mi conviene gestire il tutto con più query?
 
Grazie