Ver Mensaje Individual
  #18  
Antiguo 20-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
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 negrokau.

Una opción de búsqueda es mediante un while como intentaste en tu mensaje inicial:
Código Delphi [-]
var
  Found: Boolean;
begin
  query1.First;
  Found:= False;
  while not query1.Eof and not Found do
  begin
    Found:= cod_barra.Text = query1.FieldValues['cod_barra'];
    query1.Next;
  end;
  if not Found then
   guardar.Click;
  ...
Creo que el error en tu primer código, parte de la confusión que tenés con las estructuras de control.
Como yá te han dicho más arriba, una cosa es una estructura decisión (if/then/else) y otra una de iteracion (for, while, repeat) aunque las dos últimas puedan evaluar alguna condición.

La otra opción, más eficiente, es mediante una consulta SQL:
Código Delphi [-]
function ExisteCodigo(const Value: string): Boolean;
begin
  with TQuery.Create(nil) do
  try
    DatabaseName:= 'NOMBRE_DE_TU_BD';  // Alias (o Ruta a donde esta la tabla)
    SQL.Text:= 'SELECT * FROM TU_TABLA WHERE COD_BARRA = :DATO';  // Cambia 'TU_TABLA' por tu nombre de tabla
    ParamByName('DATO').AsString:= Value;
    Open;
    Result:= not IsEmpty;
    Close;
  finally
    Free;
  end;
end;
De esta manera tu código inicial queda reducido a:
Código Delphi [-]
  if not ExisteCodigo(cod_barra.Text) then
    guardar.Click;

Un saludo.
__________________
Daniel Didriksen

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