PDA

Ver la Versión Completa : Editar Información de BdEdit y tambien en DbGrid


servicomp
17-06-2012, 00:18:23
Cordial saludo

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

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 (http://www.clubdelphi.com/foros/showthread.php?t=68708) minitutorial que hizo Caral y también puede que te sirva este (http://www.intitec.com/varios/Delphi_conexion_firebird_con_ibx.pdf) 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:


...
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.