PDA

Ver la Versión Completa : como seleccionar fila de un dbgrid y que se me guarden los datos en una tabla


rogercito
04-10-2011, 20:13:22
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..

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
Te estoy orientando, no es así?.

http://www.clubdelphi.com/foros/images/icons/icon14.gif
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
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
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:


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:


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:


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