Es que una consulta SQL escrita asi es un lio para entender
Te recomiendo, como siempre decimos, que uses parametros.
Refactoriza tu codigo para que siga mas o menos este estilo
Código Delphi
[-]
QTemp.SQL.Add(' INSERT INTO Factura (Campo1, Campo2, ...CampoN) ');
QTemp.SQL.Add(' VALUES (:Campo1, :Campo2, ... :CampoN ');
QTemp.Parameters.ParamByName('Campo1').DataType:= ftString;
QTemp.Parameters.ParamByName('Campo2').DataType := ftInteger;
QTemp.Parameters.ParamByName('Campo3').DataType := ftCurrency;
QTemp.Parameters.ParamByName('Campo1').Value := ValorCampo1;
QTemp.Parameters.ParamByName('Campo2').Value := ValorCampo2;
QTemp.ParamByName('Campo1').Value := ValorCampo1;
QTemp.ParamByName('Campo2').Value := ValorCampo2;