Ver Mensaje Individual
  #5  
Antiguo 30-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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 vmelga.

Creo haberte entendido lo siguiente:

Tenés un DBGrid asociado a una tabla y cuando escribis sobre el mismo DBgrid en determinada celda, querés verificar si el valor de la misma existe en otra tabla. Y si no existe mostrar un mensaje, borrar lo escrito y posicionarte en la misma celda para volver a escribir.

Si es así, probá de la siguiente forma:
Código Delphi [-]
  private
    procedure CampoSetText(Sender: TField; const Text: String);
  end;
...
implementation

procedure TForm1.CampoSetText(Sender: TField; const Text: String);
begin
  if Text <> '' then
  begin
    TuQuery.Close;
    TuQuery.SQL.Clear;
    TuQuery.SQL.Add('Select * From TuTabla');  // tabla donde realizas la busqueda
    TuQuery.SQL.Add('Where Campo = :Dato');    // Campo a comparar con valor de la celda(Dato)
    TuQuery.ParamByName('Dato').AsString:= Text;
    TuQuery.Open;
    if TuQuery.IsEmpty then
    begin
      ShowMessage('Dato inexistente');
      TField(Sender).Value:= '';
      Abort;
    end
    else
      TField(Sender).Value:= Text;
    TuQuery.Close;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TuDataSet.FieldByName('TuCampo').OnSetText:= CampoSetText;  // Asignar evento al campo asociado a la celda a evaluar
end;

...

procedure TForm1.FormDestroy(Sender: TObject);
begin
  TuDataSet.FieldByName('TuCampo').OnSetText:= nil; 
end;

Con un TDBGrid, en lugar de referenciar al TDataSet, podrías hacer:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  with DBGrid1.DataSource.DataSet do
    FieldByName('TuCampo').OnSetText:= CampoSetText;
end;
Pero ignoro si es igual para un TdxDBGrid.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-07-2011 a las 11:14:50. Razón: Agregar comentarios
Responder Con Cita