Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar registro sin repetir campo (https://www.clubdelphi.com/foros/showthread.php?t=52820)

gulder 31-01-2008 23:17:17

Insertar registro sin repetir campo
 
Hola foro como andan espero que bien, tengo una pequeña duda pero aqui les dejo un pequeño codigo que estoy trabajando. lo que quiero hacer es insertar un registro pero primero buscarlo y si esta decir que el registro se encuentra ya guardado en la BD.
Tengo una tabla llamada link en la cual tengo los siguientes campos numero, fecha, titulo, link, tipo, estado bueno al momento de in sertar el registro esa parte la hace perfecta lo que yo quiero es verificar antes de insertar un registro que el campo link no se repita para eso hago lo siguiente:

Código:

            numer:=0;
              with ADOQuery2 do
                begin
                sql.Text:='select numero '+
                          'from link '+
                          'where link ='+char(39)+Trim(Edit1.Text)+char(39);
                open;
                numer:=strtoint(fields.Fields[0].AsString);  // Variable INT
               
                //despues verifico lo que trae numer
                if numer > 0 then begin
                  // mensaje registro ya esta
                end else begin
                // inserto el registro en la base de datos
                end;
           
                end;

pero el problema de este codigo es cuando el registro no esta en la base de datos me sale un error que dice que entero no valido yo me imagino es como la consulta no debuelve ningun dato, cuando le trato de asignar un entero a la variable numer hay esta el problema pero no se como solucionarlo, tambien lo he intentado con locate y nada gracias de antemano gulder

gulder 31-01-2008 23:21:08

NOTA: El edit1.text esta el valor del campo que deseo comparar

que pena yo intentaba era editar

totote 01-02-2008 00:40:36

Hola Gulder.

Primero, algo que vi en tu codigo es esto

numer:= strtoint(fields.Fields[0].AsString); // Variable INT

podes reemplazarlo por esto

numer:= fields.Fields[0].AsInteger;

y te ahorras una conversion.

Y con respecto con tu problema, no es mas conveniente que en tu tabla link el campo numero sea primary key, entonces si insertas un campo repetido te va a generar un error y ahi lo manejas con un try

Código Delphi [-]
Procedure ....
begin
    Try
        {Código de insert}
    Except
        {Mensaje de error}
    end;
end;

No es lo que estas pidiendo pero es una solución, ah si al momento de compilar te tira error el try no te hagas problema porque en el ejecutable anda ese es un problema que todavia no se como arreglaro :D.

Espero que te ayude y Saludos ;)

gulder 01-02-2008 00:44:42

totote gracias por respondes y denuebo gracias por lo de la conversion no me la sabia por otro lado lo de la validacion del campo antes de insertarlo lo solucione con un locate gracias de todos modos jeje


La franja horaria es GMT +2. Ahora son las 19:07:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi