Ok, la risposta te l'ho data... Appena selezioni il fornitore nel caricare la query hai due opzioni
La prima è quella che hai fatto ma devi aggiungere alla where
And campo listino=true
Così, se non esiste un listino ti restituisce un insieme vuoto (non ci sono record che popolano la combo)
La seconda, nel modo della programmazione hai n-mila modi.
Visto che campo listino accetta solo true o false abbiamo queste situazioni
Se true esegue la sql che hai già chiamiamolo insiemeA
Adesso aggiungi la nuova sql che serve se non esiste listino
Union
Select...quello che vuoi where listino=false
Chiamiamolo insiemeB
Poiché non esiste per un boolean il valore contemporaneo true e false abbiamo:
Listino= true
InsiemeA pieno + insiemeB vuoto
Listino=false
InsiemeA vuoto + insiemeB pieno
Non so cosa conterrebbe la sql insieme b, questo lo elabori tu ma in questo modo non devi fare altro.
Per come popoli adesso con listino popoli anche senza listino.
Spero di essermi spiegato meglio.
Aggiungo, se vai a variare il fornitore magari perché hai sbagliato, l'unico campo che cambia sicuramente è idfornitore. Appena cambia l'id riesegui la sql et voilà te ne freghi se ha o no un listino perché avrai almeno lo storico. Sullo storico, nella sql fai attenzione all'ultimo prezzo quindi max idvecchioordine x prodotto ma a questo ci pensi tu che conosci il db.