Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   encontrar datos en la tabla (https://www.clubdelphi.com/foros/showthread.php?t=41328)

moyo18 13-03-2007 04:10:34

encontrar datos en la tabla
 
bueno al querer guardar nuevos datos en la tabla pero no quiero q se guarden repetidos entonces antes q se guarden q haga una busqueda y q si esta repetido q sala un mensaje q esta repetido y q no se puede guardar, y q si no lo esta q se guarde.

hasta el momento tengo un pedazo d codigo pero el problema es q siempre me sale el mensaje q esta repetido, asi q no lo peudo guardar, alguien me puee ayudar

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
field: string;
texto: string;
begin
 field:='userID'  ;
 texto:=DBEdit2.Text;
 if ADOTable1.Locate(field,texto,[]) then
  begin
   showmessage('DATO YA  EXISTE');
  end
 else
  begin
   Maskedit1.visible := false;
   Maskedit2.visible := false;
   Maskedit3.visible := false;
   Maskedit4.visible := false;
   ADOTable1.Edit;
    DBEdit9.text := Pri;
    DBEdit2.text := Maskedit1.Text ;
    DBEdit6.text := Maskedit2.Text ;
    DBEdit8.text := Maskedit3.Text ;
    DBEdit10.text := Maskedit4.Text ;
    ADOTable1UserID.AsString := DBEdit2.text;
    ADOTable1LastName.AsString := DBEdit3.text;
    ADOTable1Name.AsString := DBEdit4.text;
    ADOTable1Address.AsString := DBEdit5.text;
    ADOTable1PostalCode.AsString := DBEdit6.text;
    ADOTable1City.AsString := DBEdit7.text;
    ADOTable1Phone.AsString := DBEdit8.text;
    ADOTable1Email.AsString := DBEdit9.text;
    ADOTable1Birthday.AsString := DBEdit10.text;
   ADOTable1.Post;

   DBEdit3.Text := '' ;
   DBEdit4.Text := '' ;
   DBEdit5.Text := '' ;
   DBEdit7.Text := '' ;
   DBEdit9.Text := '' ;
   Maskedit1.Text := '' ;
   Maskedit2.Text := '' ;
   Maskedit3.Text := '';
   Maskedit4.Text := '' ;
   combobox2.visible := false;


  end;
end;

white_zombie 13-03-2007 10:50:12

Hola, mira este codigo, los valores nuevos los meto a traves de dos edit. Primero busco si las entradas ya existen, si es asi muestro un mensaje y si no inserto los nuevos valores.

Código Delphi [-]
if not ClientDataSet1.Locate('nombre',frame41.Edit1.Text,[loCaseInsensitive]) and not ClientDataSet1.Locate('ip',frame41.Edit2.Text,[loCaseInsensitive]) then    // comprueba que no se repiten entradas y las salva
  begin
    ClientDataSet1.Insert;
    ClientDataSet1.FieldByName('nombre').AsString:= frame41.Edit1.Text;
    ClientDataSet1.FieldByName('ip').AsString:= frame41.Edit2.Text;
    ClientDataSet1.ApplyUpdates(0);
    ClientDataSet1.Active:=false;
    ClientDataSet1.Active:=true;

  end

else
  begin
    if ClientDataSet1.Locate('nombre',frame41.Edit1.Text,[loCaseInsensitive]) then    //mensaje advirtiendo que una entrada se repite
      begin
        showmessage('El nombre ya existe en la base de datos');
      end;;
    if ClientDataSet1.Locate('ip',frame41.Edit2.Text,[loCaseInsensitive]) then
      begin
        showmessage('La ip ya existe en la base de datos');
      end;
  end;

Neftali [Germán.Estévez] 13-03-2007 11:17:12

Cita:

Empezado por moyo18
bueno al querer guardar nuevos datos en la tabla pero no quiero q se guarden repetidos entonces antes q se guarden q haga una busqueda y q si esta repetido q sala un mensaje q esta repetido y q no se puede guardar, y q si no lo esta q se guarde.

Te recomiendo que antes de continuar revises documentación sobre Claves primarias e índices únicos en la Base de Datos.
Básicamente podrás hacer lo que necesitas sin necesidad de escribir todo este código; la Base de Datos hará esa comprobación por tí, será mucho más rápido, eficiente y seguro.


La franja horaria es GMT +2. Ahora son las 17:59:11.

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