Ver Mensaje Individual
  #12  
Antiguo 04-10-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por rogercito Ver Mensaje
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;

  // etcétera
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
Responder Con Cita