En el primero el problema es que estás utilizando "Active:=True" que se utiliza con clausulas SELECT, las que devuelven datos. Cómo este no es el caso, debes utilizar en su lugar el procedimiento llamado
ExecSQL, que es para actualizaciones e inserciones de registro. Por lo anteriormente dicho, tu código debería quedar así:
Código Delphi
[-] AdoQuery1.Active:=False;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Text:='UPDATE MGW10005 SET CPRECIO2=CPRECIO1*1.07';
AdoQuery1.ExecSQL;
Saludos
PD.: El segundo problema está mucho más complicado. Parece que nace del controlador ODBC para Visual Foxpro.