Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como seleccionar fila de un dbgrid y que se me guarden los datos en una tabla (https://www.clubdelphi.com/foros/showthread.php?t=76025)

rogercito 04-10-2011 20:13:22

como seleccionar fila de un dbgrid y que se me guarden los datos en una tabla
 
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??

Caral 04-10-2011 20:16:36

Hola
Si
Saludos

rogercito 04-10-2011 20:23:09

y como hago eso?

Caral 04-10-2011 20:25:51

Hola
Ha, ahora si:
Tienes un dbgrid, este MUESTRA los datos de un datasource que a su vez esta ligado a un query, bien....
Donde están los datos ??????.
Quien los Tiene, el dbgrid o el query ????????.
Dime.
Saludos

rogercito 04-10-2011 20:32:10

yo soy muy nuevo asi que te digo lo que supongo.

Yo en el dbgrid creo que solamente me muestra los datos de la consulta, pero yo supongo que los datos estan guardados en la consulta, te paso como hice la consulta a ver si sirve de ayuda..

Código Delphi [-]
procedure TForm36.Button1Click(Sender: TObject);
var
 loca:integer;

begin

 with Query1 do
  begin
    DatabaseName:= 'C:\Documents and Settings\Administrador\Escritorio\taf\tablas';  // <- Aqui indicas la nueva ruta a la BD
    loca:=strtoint(edit1.text);
    SQL.Clear;
    SQL.Add('select COD_EMPRE,COD_LOC_FI,HORA_IN,HORA_FIN');
    SQL.Add('from tabla_recorrido.dbf');
    SQL.Add('where COD_LOC_FI=:parametro_loca');
    SQL.Add('order by COD_EMPRE');
    ParamByName('parametro_loca').Asinteger:= loca;
    Open;
  end;
end;

Caral 04-10-2011 20:35:28

Hola
Bien, lo que quiero es que entiendas, no me apetece darte el codigo resuelto por que se que lo puedes hacer tu.
Lo has dicho, el dbgrid muestra lo que esta en el query, cuando recorres el dbgrid, de arriba a abajo y viceversa lo que haces es recorrer lo que se llama dataset, que es lo que esta en el query ni mas ni menos.
Si quieres capturar la información que esta en el query que haces?????.
Saludos

rogercito 04-10-2011 20:39:45

yo supongo que tengo que utilizar el datasource pero no se como hacer para que llame a cada codigo en particular. Si me podes orientar un poco lo agradeceria

rogercito 04-10-2011 20:40:53

a parte a mi en el dbgrid me muestra muchas filas de datos, yo tengo que eligir una y guardarla en una tabla.

Caral 04-10-2011 20:44:34

Hola
Te estoy orientando, no es así?.
Te explico:
1- Tienes un query que tiene la informacion que quieres.
2- Esta informacion EXACTA es la que estara en la linea donde estes parado en el dbgrid.
Quieres pasar esa informacion a otra tabla.
1- Para pasar u obtener informacion se necesita un query (adicional al que tiene la informacion).
2- Se necesita hacer un Update de los campos que esten en esa informacion.
3- Se pasara la informacion COMO PARAMETRO de un query al otro.
Captas ?.
Saludos

Casimiro Notevi 04-10-2011 21:19:29

Cita:

Empezado por Caral (Mensaje 414545)
Te estoy orientando, no es así?.


Claro, rogercito, lo que está haciendo Caral es perfecto para que entiendas el concepto. TIENES que conseguirlo, si no lo entiendes entonces... mejor que ni lo pienses ;)

oscarac 04-10-2011 21:30:56

Cita:

Empezado por rogercito (Mensaje 414535)
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 entendi....

se me guarden en sus correspondiente campos en la tabla en que tabla? la misma?, los datos los editas?

roman 04-10-2011 21:35:35

Cita:

Empezado por rogercito (Mensaje 414535)
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


La franja horaria es GMT +2. Ahora son las 06:33:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi