Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Editar Información de BdEdit y tambien en DbGrid (https://www.clubdelphi.com/foros/showthread.php?t=79223)

servicomp 17-06-2012 00:18:23

Editar Información de BdEdit y tambien en DbGrid
 
Cordial saludo

Tengo una pequeña tabla de practica, creada de la siguiente manera.

Código SQL [-]
CREATE TABLE USUARIO (
    CODIGO    CHAR(12) NOT NULL,
    NOMBRE    CHAR(30),
    APELLIDO  CHAR(30),
    CIUDAD    CHAR(20),
    TELEFONO  CHAR(12)
);

Luego hicimos las conecciones a una forma, usando IBX, como se necesita, usando un IbDataset y unos DBEdit, conectamos la base de datos y un DbGrid usando un Datasource.

Usando un IBQuery, hacemos una busqueda en la tabla para buscar la información que ha sido digitada en el DBEdit. Cuando la información se encuentra en la tabla esta se debe poder Editar, y adicionalmente debo poder ver la información en el DbGrig.

Como la información me la entrega un IBQuery, esta solo se puede mirar, pero no se puede entrar a editar en los otros DBEdit, debido a que los DBEdit no estan mirando la tabla, sino la información del IBQuery, y mucho menos apuntando en el DbGrid.

Que procedimiento debemos hacer para buscar la información en la tabla, y adicionamente cuando la encontremos la podamos editar en los DBEdit, y adicionalmente en lso dbgrid se observe la tabla en modo edición y los datos modificandose.

Agradeciendo de antemano la atención prestada

Casimiro Notevi 17-06-2012 00:23:32

Echa un vistazo a este minitutorial que hizo Caral y también puede que te sirva este otro, en pdf.

MartinS 17-06-2012 01:11:40

Hola servícom, podrías también usar edit básicos y un tibupdate de modo que tu consulta la ejecutas an el evento onexit del edit rellenando los restantes y después podes realizar los cambios a través de un botón pasando los parámetros al ibupdate de los edits. La actualización la podes hacer de acuerdo a una variable que te diga si es uno nuevo o uno a editar de acuerdo a si tu consulta genero algún résultado o no. Los cambios se verán reflejados al cerrar y abrir la consulta nuevamente

Saludós

servicomp 17-06-2012 01:16:34

Gracias Marcos, ya lo hemos hecho con los Edit, y deseo inicar ha hacerlo con DBEdit, para aprovechar un poco más el sistema, y aprender nuevas propuestas y ver cuales son más eficientes.

Muchas gracias por su respuesta

MartinS 17-06-2012 01:25:45

y si mas eficiente son los dataset. Yo en esos casos juego con el selectsql de estos componentes para que solo me traiga el que estoy buscando y digo solo porque generalmente hago la búsqueda por el documento y si existe arrancó con edit si no append después con un post confirno. Mas o menos es así. No te pongo ejemplo porque estoy escribiendo desde mi teléfono xq estoy si wifi pero la idea es esa.

Saludos

Pd si el mensaje anterior era para mi yo soy Martin no marcos :D:D

servicomp 21-06-2012 18:22:23

Agradeciendo de antemano todo su colaboración y su tiempo para resolver esta inquietud.

Deseo decirles que el prodimiento se ha hecho ya usando Edit, pero se ha querido realizar usando solo DBEdit, y asi poder comparar los dos procedimiento y cual es mucho mas eficiente, o saber cuando es mejor hacerla.

El problema sique, y lo deseo recordar. Tenemos una Forma con una base de datos que esta conectada con todo lo necesarios, un Database, una transacción y su dataset. Para mostrar la información se ha instalado un Datasource, con el cual conectamos un DbGrid, para mostrar la información de la tabla y saber como esta funcionando el proceso. En El Primer DBEdit, se esta capturando lo que ingresa el usuario y por medio de un IBQuery, se hace la verificación del dato, si se encuentra, este se Edita. al momento de hacer la verificación se desea que el DBGrig tenga marcado el Registro que se quiere editar, y en el DBEdit1 y en los demás, se muestre la información que deseamos modificar.

Como hacemos este proceso, ya que hemos leido lo que me han enviado y no pude resolver el problema.

De antemano les agradezco su atención:confused:

ecfisa 21-06-2012 21:25:42

Hola.

Creo que te va a resultar mas simple utilizar el evento OnSetText del TField en cuestíón:

Código Delphi [-]
...
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    ...
  private
    procedure CampoSetText(Sender: TField; const Text: String);
  public
  end;
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  IBDataSet1.FieldByName('CAMPO_BUSQUEDA').OnSetText:= CampoSetText;
end;

...

procedure TForm1.CampoSetText(Sender: TField; const Text: String);
begin
  if not IBDataSet1.Locate('CAMPO_BUSQUEDA', Text, []) then
   Abort;
end;
Para dar mayor claridad, en el ejemplo asigno el evento en tiempo de ejecución; pero si tenes creados los campos persistentes lo podes hacer en diseño desde el Object Inspector.

Saludos.


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

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