Ich kenne zwar
Access-
SQL nicht, aber ich denke, der 'Artikelstatus' vor case ist zuviel. Du willst W.products_shippingtime setzen, Dein Subselect liefert aber zwei Felder zurück. Außerdem sollten die Strings doppelt gequotet sein, wie meine Vorredner schon geschrieben haben. Weiterhin hast Du Dein Subselect nicht auf einen Record beschränkt (falls Komsa nicht nur einen Record enthält), es fehlt also auch noch eine Where-Klausel.
Vermutlich ist es so oder so ähnlich richtig:
ADOQuery1.SQL.Add('UPDATE Warenbestand As W SET W.products_shippingtime = (SELECT CASE ARTIKELSTATUS WHEN ''Sonderbestellung'' THEN 8 WHEN ''Normal'' THEN 7 WHEN ''Auslaufartikel'' THEN 32 END FROM KOMSA as K where W.external_id = K.KOMSANUMMER)');
Viele Grüße