Hola Elite237, no te guarda porque tu función VerificarGuardar no esta devolviendo ningún resultado, por lo tanto te devolvera siempre True y al preguntar tu por False nunca entrara a ese bloque.
Tu función debería quedar así:
Código Delphi
[-]
function TForm1.VerificarGuardar: Boolean;
begin
with query1 do
begin
close;
sql.clear;
sql.add('select * from tevaluacion');
sql.add('where eval_descripcion='''+ednombre.text+'''');
open;
if recordcount<>0 then
begin
application.messagebox('El nombre de la evaluacion ya existe','Error de entrada',mb_Ok+mb_IconExclamation);
Result := True;
end
else
Result := False;
end;
end;
inclusive puedes preguntar por Query.IsEmpty.
Código Delphi
[-]
........................
open;
if Not IsEmpty then
begin
application.messagebox('El nombre de la evaluacion ya existe','Error de entrada',mb_Ok+mb_IconExclamation);
Result := True;
end
else
Result := False; ......................
Sobre tus ultimas preguntas, :nom significa que nom es un parametro, y al hacer query2.ParamByName('
Nom').AsString:= ednombre.text; estamos llenando con el valor de ednombre.text ese parametro. Y sobre query2.fields[0] , si es un arreglo de campos, cuando tu haces en la consulta select * From... , con ese * te trae todos los campos en el orden que los tienes en tu tabla "Fields[0]" se refiere al primer campo. En en tu caso ya no sería necesario ese if "If query2.Fields[0].AsString = ednombre.text then
", ya que en tu consulta estas filtrando por ese nombre y solo sería preguntar si hay resultados o no con IsEmpty.
Saluditos