PDA

Ver la Versión Completa : encontrar datos en la tabla


moyo18
13-03-2007, 04:10:34
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

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.

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
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.