Ver Mensaje Individual
  #1  
Antiguo 16-11-2009
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Reputación: 21
servicomp Va por buen camino
Ayuda con una busqueda

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:

Código SQL [-]
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

Código Delphi [-]
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

Código Delphi [-]
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
Responder Con Cita