Perdón que me meta pero el error es “Illegal use of floating point”?
Si es así se debe a que tratas de combinar tipos doublé con una cadena de texto, pon ...'"+String(ID1)+"'… y esto aslo con todas las variables tipo float, int o doublé que mescles con cadenas.
Por otro lado porque no usas parámetros en las consultas no es el modo más simple pero es el modo más efectivo de garantizar que los datos que introduzcas son del tipo que quieres y que el codigo se vea ordenado, por ejemplo.
Código:
ad->Close();
ad->CommandText=
"UPDATE"
" Tabla1"
" SET"
" campo1 = :campo1,"//los parametros se indican con ":" antes del nombre del parametro
" campo2 = :campo2"
;
ad->Parameters->ParamByName("campo1")->Value=6; //al darle 6 como valor el ADODataSet da por echo que se trata de un entero.
ad->Parameters->ParamByName("campo2")->Value=6.2;
ad->Open();