Was bedeutet denn "scheitert"?
Gibt es einen Fehler? Welchen? Oder wird einfach nicht gelöscht?
Sowohl Firebird als auch die
BDE gehorchen auf "<feldname> is NULL". In einer Löschanweisung -du sprichst von "eines der Felder jedoch keinen Wert"- muss das Löschkriterium dann ggF. mit "or <feldname> is null" kombiniert werden. Bei 2 Kriterienfeldern dann bspw.:
Code:
delete from <tabelle>
where (a_id = :param1 and b_id = :param2)
or (a_id is null and b_id = :param2)
or (a_id = :param1 and b_id is null)
[or (a_id is null and b_id is null)]*
* damit werden u.U. sehr viele Datensätze gelöscht, kommt drauf an, ob das gewollt ist.
Gibt es noch mehr delete Kriterien, die Null sein können, erweitern sich die Kombinationen entsprechend.
BDE selbst arbeitet mit "Local
SQL", siehe z.B. hier
http://www.jpmartel.com/bu02lsql.htm#6.3%20Local)
Firebird findest Du hier:
http://www.firebirdsql.org/en/reference-manuals/