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'; SQL.Text:= 'SELECT * FROM TU_TABLA WHERE COD_BARRA = :DATO'; 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.