Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pasar un registro de una DBGird a otra sin que se repitan!! (https://www.clubdelphi.com/foros/showthread.php?t=82090)

y_a_p 24-01-2013 22:41:17

Pasar un registro de una DBGird a otra sin que se repitan!!
 
Hola a todos!!!, con urgencia necesito ayuda!!!, estoy haciendo un programa con Delphi 7, Gestor de Base de Datos SQL Manager 2008 for Interbase, y motor de Base de Dato Firebir tengo una grilla que esta conectada a un dataset que corresponde a una tabla que tiene alimentos cargados y otra que corresponde a una relación entre un plan de alimentación que corresponde a un paciente específico y los alimentos antes mencionados, el tema es que yo tengo que pasar en definitiva alimentos a la tabla de la relación y me pasa siempre el preimero, por favor agradecería su ayuda, gracias!!!:confused:

ecfisa 24-01-2013 22:46:06

Hola y_a_p.
Cita:

tengo una grilla que esta conectada a un dataset que corresponde a una tabla que tiene alimentos cargados y otra que corresponde a una relación entre un plan de alimentación que corresponde a un paciente específico y los alimentos antes mencionados
¿ Podrías especificar como está establecida la relación y ponernos el código del pasaje de alimentos al plan de alimentación ?

Saludos.:)

y_a_p 24-01-2013 22:53:37

Para no enredar mucho necesito pasar alimentos de una grilla a otra sin que se repitan y me pasa siempre el primero... Aqui está el código que yo tengo:
Código Delphi [-]
procedure TPlan_alimenticio.agregar_a_planClick(Sender: TObject);
var
alim:String;
begin
alim:=DM.DSET_alimNOM_ALIM.Value
if not(DM.Q_plan_y_alim.Locate('NOM_ALIMENTO', alim,[]))then
 begin
  DM.DSET_plan_y_alim.Append;
  DM.DSET_plan_y_alimID_ALIM.Value:=DM.DSET_alimID_ALIM.Value;
  DM.DSET_plan_y_alimID_PLAN.Value:=DM.DSET_plan_alimID_PLAN_A.Value;
  DM.DSET_plan_y_alimESTADO.Value:=0;
  DM.DSET_plan_alim.First;
  DM.DSET_plan_y_alim.Post;
  DM.Q_plan_y_alim.SQL.Clear;
  DM.Q_plan_y_alim.SQL.Add('select * from PLAN_Y_ALIM where ID_PLAN=:name and ESTADO=0');
  DM.Q_plan_y_alim.ParamByName('name').AsInteger:=DM.DSET_plan_y_alimID_PLAN.Value;
  DM.Q_plan_y_alim.Open;
 end;
end;

ecfisa 24-01-2013 23:01:56

Hola de nuevo.

Así a primera vista, la línea que pareciera provocar el problema es:
Código Delphi [-]
   DM.DSET_plan_alim.First;
Marcala como comentario (con "//" delante) y fijate si sigue con el mismo comportamiento.

Saludos.

y_a_p 24-01-2013 23:05:35

Uy!!, perdón esa línea había quedado de tanto intentar hacerlo de una forma u otra quedo no me habia dado cuenta, pero asi mismo no funciona sin esa linea...

ozsWizzard 25-01-2013 14:12:56

Abriría, aparte del query, el dataSet (o hacer refresh, no sé que sería mejor).

(Entiendo que DM.Q es un Query [TQuery, TSqlQuery, etc] y DM.DSET el TClientDataSet)

jafera 25-01-2013 18:22:14

Yo lo que hago es una consulta que me reuna los datos que quiero traspasar, select * de la tabla a, lugo voy al primer registro de esta tabla, luego le digo while not consulta de la tabla a.eof do y aqui empiezo a añadir registros a la tabla b
campo1.tabla b:0 campo1.tabla a;
campo2.tabla b:= cam,po2.tabla b;

etc.

Lo he escrito con la urgencia que nos pides, igual me dejo algo

Josep

y_a_p 29-01-2013 04:27:10

Para arrancar quiero agradecer su ayuda!!!, pero desde mi punto de vista el problema está en que localiza siempre un mismo registro, agradezco tu ayuda Jafera, pero yo necesito pasar el campo sobre el que estoy posicionado, es decir selecciono el campo de la grilla y ese es el que debo pasar, pero si por casualidad lo quiero volver a pasar de vuelta no me lo debe dejar cargar si ya esta en la grilla 2 digamos que vendria ser a la que le tengo que pasar los campos... gracias!!!;)

jafera 29-01-2013 10:00:03

Buenos dias.

Como se ha comentado muchas veces por aquí, un grid (grilla) solo es una representacion visual y ordenada del resultado de una tabla o una consulta.

No se con que metodo pasas los registros de una tabla a la otra, si doble click, si menu contextual, etc.

Yo lo que hago habitaualmente en estos casos y lo uso bastante, es con un doble click en el campo que quiero transpasar, en este evento, lanzo una consulta parametrizada con el campo único (id_alimento) por ejemplo sobre la tabla de destino y si el resultado es superior a 0 quiere decir que ya existe el registro y aborto, sino es cuando hago el append.

Espero te sirva

Josep

y_a_p 30-01-2013 23:37:06

Hola!!!, lo voy a intentar y te cuento como me fue, pero me parece una estupenda idea!!!


La franja horaria es GMT +2. Ahora son las 19:38:09.

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