Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2014
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Poder: 13
camiz Va por buen camino
Guardar en base de datos desde controles creados en tiempo de ejecucion

hola amigos necesito su ayuda, estoy realizando una aplicación que el usuario diseña su propio formulario y luego lo carga su diseño hasta hay todo bien el problema que tengo es para guardar los datos ingresados en los Edit y Memos he creado este código pero hay un problema que solo me guarda los datos del ultimo control en todos los campos de la tabla, a ver si alguien me da una manito Gracias.

Código Delphi [-]
var
  Field: TField;
  Lista: TList;
  f, I: Integer;
  Edit: TEdit;
  Memo: TMemo;
begin
  frmConeccion.Guardar.SQL.Clear;
  frmConeccion.Guardar.SQL.Text := 'select * from tabla where idtabla=:id';
  frmConeccion.Guardar.Active := True;
  frmConeccion.Guardar.Open;
  frmConeccion.Guardar.insert;
  for f := 1 to frmConeccion.Guardar.FieldCount-1 do
  begin
    if frmConeccion.Guardar.Fields[f] is TField then
    begin
      Field := frmConeccion.Guardar.Fields[f] as TField;

      Lista := TList.Create;
      try
        frmPlantilla.ScrollB.GetTabOrderList(Lista);
        for I := 0 to Lista.Count - 1 do

        if TWinControl(Lista[i]) is TEdit then
          Field.AsString := TEdit(Lista[i]).Text
        else
        if TWinControl(Lista[i]) is TMemo then
          Field.AsString := TMemo(Lista[i]).Lines.Text
        else
      finally
       Lista.Free;
      end;
    end;
  end;
  frmConeccion.Guardar.Post;
  frmConeccion.Guardar.Close;
  Application.MessageBox('Registros Guardados correctamente','Mensaje',MB_ICONINFORMATION or MB_OK);
  frmConeccion.Guardar.Active := False;
Responder Con Cita
  #2  
Antiguo 25-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola camiz.

No estoy seguro de haber interpretado correctamente el planteo..., pero me parece que lo que buscas sería:
Código Delphi [-]
var
  Lista: TList;
  f,i: Integer;
begin
  ...
  Guardar.Open;
  Guardar.Insert;
  Lista:= TList.Create;
  try
    GetTabOrderList(Lista);
    f:= 0;
    for i:= 0 to Lista.Count-1 do
    begin
      if TControl(Lista[i]) is TCustomEdit then
      begin
        if TCustomEdit(Lista[i]) is TEdit then
        begin
          Guardar.Fields[f].AsString:= TEdit(TCustomEdit(Lista[i])).Text;
          Inc(f);
        end;
        if TCustomEdit(Lista[i]) is TMemo then
        begin
          Guardar.Fields[f].AsString:= TMemo(TCustomEdit(Lista[i])).Lines.Text;
          Inc(f);
        end;
      end;
    end;
  finally
    Lista.Free;
  end;
  Guardar.Post;
  Guardar.Close;
  MessageBox(0, 'Registros Guardados correctamente', 'Mensaje', MB_ICONINFORMATION + MB_OK);
end;
Es claro que la tabla deberá poseer una cantidad de campos suficiente para albergar a la suma de edits y memos existentes en el form...

Me surge una pregunta, ¿ Por que no usar TDBEdit y TDBMemo ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 25-03-2014
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Poder: 13
camiz Va por buen camino
ecfisa, eres un genio un grandicimo gracias por tu ayuda. Tu código funciona perfecto...

solo tuve que cambiarle
Código Delphi [-]
f:= 0;
por
Código Delphi [-]
f:= 1;
porque me botaba error a la hora de guardar y quedo asi...
Código Delphi [-]
var
  Lista: TList;
  f,i: Integer;
begin
with frmConeccion do
begin
  Guardar.SQL.Clear;
  Guardar.SQL.Text := 'select * from tabla where idtabla=:id';
  Guardar.Active := True;
  Guardar.Open;
  Guardar.Insert;
  Lista:= TList.Create;
  try
    frmPlantilla.ScrollB.GetTabOrderList(Lista);
    f:= 1;
    for i:= 0 to Lista.Count-1 do
    begin
      if TControl(Lista[i]) is TCustomEdit then
      begin
        if TCustomEdit(Lista[i]) is TEdit then
        begin
          Guardar.Fields[f].AsString:= TEdit(TCustomEdit(Lista[i])).Text;
          Inc(f);
        end;
        if TCustomEdit(Lista[i]) is TMemo then
        begin
          Guardar.Fields[f].AsString:= TMemo(TCustomEdit(Lista[i])).Lines.Text;
          Inc(f);
        end;
      end;
    end;
  finally
    Lista.Free;
  end;
  Guardar.Post;
  Guardar.Close;
  Guardar.Active := False;
  MessageBox(0, 'Registros Guardados correctamente', 'Mensaje', MB_ICONINFORMATION + MB_OK);
end;

con respecto a tu pegunta : ¿ Por que no usar TDBEdit y TDBMemo ?
uso TEdit y TMemo, porque todos los datos ingresados en estos se va ha guardar encriptado en la base de datos y para modificarlos se va ha desencriptar los datos y mostrar en Los Edit y Memo, y al usar TDBEdit y TDBMemo se me complica la vida.
Responder Con Cita
  #4  
Antiguo 25-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola camiz.

Me alegra que te haya servido.

Gracias por publicar el código final y aclarar mi duda.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Controlar componentes creados en tiempo de ejecución. damirua OOP 1 13-05-2010 14:03:58
Destruir Qrlabels creados en tiempo de ejecucion Ade Impresión 6 08-10-2006 19:46:28
Eventos en componentes creados en tiempo de ejecucion joumont OOP 3 27-12-2005 14:48:23
tRABAJO CON CONTROLES CREADOS EN EJECUCION bustio OOP 4 08-02-2005 17:52:23
Objetos creados en tiempo de ejecución Scocc OOP 4 13-06-2003 20:55:29


La franja horaria es GMT +2. Ahora son las 05:00:59.


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
Copyright 1996-2007 Club Delphi