Elite237, disculpame pero no se de que modo decirte que la consulta SQL está mal hecha, una instrucción SQL de UPDATE no se escribe así.
Es así:
Código SQL
[-]UPDATE tu_tabla SET Campo1 = Parametro1, Campo2 = Parametro2, ..., CampoN = ParametroN WHERE ....
La verdad es que desde la mitad del hilo te estado llamando la atención al respecto del tema. No se de que modo hacerme entender.
Por el otro lado, siempre y cuando en esa variable "i" que tienes en tu código referencie a la fila en cuestión no veo problemas. Lo que si veo que está demás son esos paréntesis cuando haces el paso de los valores a los parámetros.
Como te mencionaba Caro, la consulta UPDATE debe ir con una cláusula de condición. Sin ella lo que consigues es cambiar EN TODOS LOS REGISTROS DE LA TABLA.
Por ello Caro habla de que debes tener de algún modo relacionado a la fila i-ésima con el código del registro al que representa. Es decir que debe haber alguna correspodencia entre las filas y el campo "identificador" en la tabla.
Por darte un ejemplo:
Fila 1 -> corresponde al registro cuyo ID es 100
Fila 2 -> corresponde al registro cuyo ID es 287
Generalmente este ID no cambia (no debería cambiar) y una manera sencilla para evitar que el usuario lo cambie, es que cuando vuelcas los datos al TStringGrid, a la columna 0 (esa columna gris y fija que no se puede modificar) la emplees para "mostrar" ese ID. De este modo en la celda [0,i] tenés "guardado" el ID y lo puedes emplear para ponerlo en la condición; por ejemplo algo asi:
Código SQL
[-]
UPDATE tabla SET Campo = Parametro, ... , CampoN = ParametroN WHERE ID = PARAMETRO_ID
Saludos,