servicomp
16-11-2009, 17:04:50
Cordial saludo
Estoy trabajando en D2007 y usando Firebird 2.1, como sistema de conexión de la base de datos estamos usado IBX (IBDatabase, IBTransaction, IbDataset y un DataSource). Creamos una Tabla pequeña para hacer los estudios de práctica usando un gestor de las tantos que recomiendan en las páginas quedando la estructura asi:
CREATE TABLE "FAMILIA"
(
"IDENTIFICACION" INTEGER NOT NULL,
"NOMBRE" VARCHAR(20) NOT NULL,
"APELLIDOUNO" VARCHAR(20) NOT NULL,
"APELLIDODOS" VARCHAR(20) NOT NULL
);
Hemos creado un procedimiento para capturar la información a esta tabla de manera manual o por software, sin usar un DBGrid, el cual me ha funcionado muy bien usando el siguiente codigo
procedure TFManual.Button2Click(Sender: TObject);
begin
Datamodule1.IBDataSet1.Append; {para insertar datos al final}
Datamodule1.IBDataSet1.FieldByName('IDENTIFICACION').AsInteger:=StrToInt(edit1.Text); {primer edit}
Datamodule1.IBDataSet1.FieldByName('NOMBRE').AsString:=Edit2.Text;
Datamodule1.IBDataSet1.FieldByName('APELLIDOUNO').AsString:=Edit3.Text;
Datamodule1.IBDataSet1.FieldByName('APELLIDODOS').AsString:=Edit4.Text;
Datamodule1.IBDataSet1.Post;
Datamodule1.IBTransaction1.CommitRetaining;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit1.SetFocus;
end;
Hasta el momento no hay problema, pero necesitamos que al ingresar el campo IDENTIFICACION, este sea unico, o en otras palabras, que busquemos el valor de este campo y si se encuentra, lo mostremos en pantalla para que no se repita.
Hemos tratado con este codigo usando un IBQuery, pero no se si lo estamos haciendo bien, o es la forma correcta de hacerlo, por eso solicito su colaboración para resolver esta duda.
El codigo que estamos usando es el siguiente
procedure TFBusqueda.Button2Click(Sender: TObject);
begin
IBQ1.Close;
IBQ1.open;
IBQ1.Active;
IBQ1.SQL.Add('SELECT * FROM FAMILIA WHERE IDENTIFICACION='+Edit1.Text);
IBQ1.ExecSQL;
if (IBQ1.RecordCount=0) then
begin
Application.MessageBox('No se encuentra el registro buscado','Mensaje de Busqueda',0);
IBQ1.Close;
end
else begin
Edit2.Text:=inttostr(IBQ1.FieldByName('IDENTIFICACION').AsInteger);
Edit3.Text:=IBQ1.FieldByName('NOMBRE').AsString;
Edit4.Text:=IBQ1.FieldByName('APELLIDOUNO').AsString;
Edit5.Text:=IBQ1.FieldByName('APELLIDODOS').AsString;
Edit1.Text:='';
Edit1.SetFocus;
IBQ1.Close;
end;
De antemano gracias por su colaboración
Estoy trabajando en D2007 y usando Firebird 2.1, como sistema de conexión de la base de datos estamos usado IBX (IBDatabase, IBTransaction, IbDataset y un DataSource). Creamos una Tabla pequeña para hacer los estudios de práctica usando un gestor de las tantos que recomiendan en las páginas quedando la estructura asi:
CREATE TABLE "FAMILIA"
(
"IDENTIFICACION" INTEGER NOT NULL,
"NOMBRE" VARCHAR(20) NOT NULL,
"APELLIDOUNO" VARCHAR(20) NOT NULL,
"APELLIDODOS" VARCHAR(20) NOT NULL
);
Hemos creado un procedimiento para capturar la información a esta tabla de manera manual o por software, sin usar un DBGrid, el cual me ha funcionado muy bien usando el siguiente codigo
procedure TFManual.Button2Click(Sender: TObject);
begin
Datamodule1.IBDataSet1.Append; {para insertar datos al final}
Datamodule1.IBDataSet1.FieldByName('IDENTIFICACION').AsInteger:=StrToInt(edit1.Text); {primer edit}
Datamodule1.IBDataSet1.FieldByName('NOMBRE').AsString:=Edit2.Text;
Datamodule1.IBDataSet1.FieldByName('APELLIDOUNO').AsString:=Edit3.Text;
Datamodule1.IBDataSet1.FieldByName('APELLIDODOS').AsString:=Edit4.Text;
Datamodule1.IBDataSet1.Post;
Datamodule1.IBTransaction1.CommitRetaining;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit1.SetFocus;
end;
Hasta el momento no hay problema, pero necesitamos que al ingresar el campo IDENTIFICACION, este sea unico, o en otras palabras, que busquemos el valor de este campo y si se encuentra, lo mostremos en pantalla para que no se repita.
Hemos tratado con este codigo usando un IBQuery, pero no se si lo estamos haciendo bien, o es la forma correcta de hacerlo, por eso solicito su colaboración para resolver esta duda.
El codigo que estamos usando es el siguiente
procedure TFBusqueda.Button2Click(Sender: TObject);
begin
IBQ1.Close;
IBQ1.open;
IBQ1.Active;
IBQ1.SQL.Add('SELECT * FROM FAMILIA WHERE IDENTIFICACION='+Edit1.Text);
IBQ1.ExecSQL;
if (IBQ1.RecordCount=0) then
begin
Application.MessageBox('No se encuentra el registro buscado','Mensaje de Busqueda',0);
IBQ1.Close;
end
else begin
Edit2.Text:=inttostr(IBQ1.FieldByName('IDENTIFICACION').AsInteger);
Edit3.Text:=IBQ1.FieldByName('NOMBRE').AsString;
Edit4.Text:=IBQ1.FieldByName('APELLIDOUNO').AsString;
Edit5.Text:=IBQ1.FieldByName('APELLIDODOS').AsString;
Edit1.Text:='';
Edit1.SetFocus;
IBQ1.Close;
end;
De antemano gracias por su colaboración