Hallo LG,
LIKE "*" kann man nicht als Teilausdruck verwenden, bestenfalls nur das "*". Möglich wäre etwas wie
SELECT tblElement.*, qryElementKosten.SummevonE2EtKosten, tblElement.E1Bauteil
FROM qryElementKosten
INNER JOIN tblElement ON qryElementKosten.ID = tblElement.ID
WHERE (tblElement.E1Bauteil = [Formulare]![frmElemente]![cfdBauteilAuswahl]
AND (tblElement.E1Firma LIKE IIf([Formulare]![frmElemente]![cfdFirmaAuswahl] = 1, [Formulare]![frmElemente]![cfdFirmaAuswahl], "*");
wobei mir dabei aufstößt, dass Du auf "1" testet, worauf man direkt testen könnte. Sollte da ein variabler Wert drin stehen könnten, wie ich vermute, wäre besser etwas wie (Rest wie oben):
-- alternativ, wenn cfdFirmaAuswahl nicht nur 1 ist
AND ([Formulare]![frmElemente]![cfdFirmaAuswahl] = '' OR tblElement.E1Firma LIKE [Formulare]![frmElemente]![cfdFirmaAuswahl]);
wobei man programmatisch darauf achten sollte, dass das Eingabefeld ggf. leer ist. Dann entfällt der Teil des Kriteriums.
Zum anderen funktioniert ein RIGHT JOIN nicht auf der Ebene. Dadurch dass Du im WHERE Kriterien anwendest, wird daraus implizit ein INNER JOIN. Muss es ein RIGHT JOIN sein, so müsstest Du die Kritieren ins JOIN ON verschieben.
Gruß Elmar