Cita:
Empezado por rogercito
hola tengo el siguiente problema:
Yo realizo una consulta con un tquery, esa consulta se me muestra en un dbgrid, yo lo que neceito es seleccionar una fila del dbgrid y que todos los datos de esa fila se me guarden en sus correspondiente campos en la tabla. Se puede hacer esto??
|
No me queda claro si lo que quieres hacer es guardar los datos en la misma tabla (una vez modificados) o si quieres guardar los datos de la fila seleccionada en otra tabla.
Si es lo segundo, primero tienes que entender, que un DBGrid no contiene datos por sí mismo, sino que se limita a mostrar los datos del dataset asociado, en este caso, un Query.
Puedes leer los datos de la fila seleccionada mediante el método FieldByName del Query:
Código Delphi
[-]
var
CodigoEmpresa: Integer;
HoraInicio: TTime;
begin
CodigoEmpresa := Query1.FieldByName('COD_EMPRESA').AsInteger;
HoraInicio := Query1.FieldByName('HORA_IN').AsDatetTime;
end;
AsInteger, AsDateTime, etc. se usan dependiendo del tipo de datos del campo. Hay para cada tipo (AsBoolean, AsString, etc.)
Para pasar estos datos a otra tabla, necesitas otro Query con una sentencia INSERT del tipo:
Código SQL
[-]
insert into tabla
(COD_EMPRE,COD_LOC_FI,HORA_IN,HORA_FIN)
values(:codigo, :loc, :horaInicio, :horaFin)
Para poner los valores en la consulta INSERT usas el método ParamByName. Puedes asignarlo directamente del otro Query, por ejemplo:
Código Delphi
[-]
Query2.ParamByName('codigo').AsInteger := Query1.FieldByName('COD_EMPRESA').AsInteger;
Después de asignar los parámetros, ejecutas la consulta. Para ello, debes usar el método ExecSQL puesto que Open es sólo para consultas que te devuelven registros (como SELECT).
// Saludos