Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Проверка на повтор


Автор: SnowSin 11.3.2010, 18:01
Здравствуйте,  нужна небольшая помощь в программе. Моя программа - не большая база данных, задали на дом, наша первая прога связанная с бд. Суть такова что я создаю таблицу, в ней 10 записей, что то типо карточки работника, в таблице 10 работников, в таблице поля - Табельный номер(ключ), фио, дата рождения, военно обязанность, специальность. В программе сделано все что нада, кроме одного, когда я хочу добавить нового человека, ввожу данные,и нажимаю сохранить должна идти проверка на то что бы Табельные номера не повторялись и вот собственно говоря я хз как это сделать

Ссылка на базу - http://ifolder.ru/16795714
Ссылка на код проги - http://ifolder.ru/16795768

Базы данных парадокс
доступ бде администратор

Автор: former 11.3.2010, 22:13
Необходимо использовать Unique Index (уникальный индекс). Он будет гарантировать  отсутствие дубликатов.

Автор: SnowSin 12.3.2010, 09:58
Не, нам нада имено проверкой. Как подсказала училка там нада делать сравнение ДБ эдита и рядом присобаченого эдита на схожесть номеров
Добавляю в базу инсертом. Вот это то уг что получилось и не работает у меня, мб подскажет кто где ошибка? (дбэдит 1 это строка где табельные номера, эдит1 тот эдит с которым сравнивается)


Код

procedure TForm1.Button2Click(Sender: TObject);
var i :integer;
begin
DBedit5.Text:=maskedit1.Text;
table1.Edit;
s:=edit1.Text;
i:=0;
table1.First;
if edit1.text<>dbedit1.text then begin
with form1.Table1 do
begin
while not Eof do begin
if (Fields[0].AsString = edit1.Text)then begin
i:=i+1;
next;
end
else
next;
end;
end;
if (i=0)  then  begin
table1.first;
z1:=1;
table1.edit;
dbedit1.Text:=edit1.Text;
table1.Post;
Button1.Visible:=false;
Button2.Visible:=false;
Button3.Visible:=false;
Button4.Visible:=false;
Button5.Visible:=false;
DBEdit1.ReadOnly:=true;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBEdit4.ReadOnly:=true;
DBmemo1.ReadOnly:=true;
maskedit1.ReadOnly:=true;
combobox1.Enabled:=false;
DBLookupComboBox1.ReadOnly:=true;
DBmemo1.ReadOnly:=true; 
end else
begin
showmessage('Такой табельный номер уже существует');
table1.First;
edit1.clear;
edit1.SetFocus;
z1:=0;
table1.cancel;
edit1.Text:='';
edit1.Text:=dbedit1.Text;
end;

begin
table1.Post;
Button1.Visible:=false;
Button2.Visible:=false;
Button3.Visible:=false;
Button4.Visible:=false;
Button5.Visible:=false;
DBEdit1.ReadOnly:=true;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBEdit4.ReadOnly:=true;
DBmemo1.ReadOnly:=true;
maskedit1.ReadOnly:=true;
combobox1.Enabled:=false;
DBLookupComboBox1.ReadOnly:=true;
DBmemo1.ReadOnly:=true;
end;
end;
end;



Автор: pseud 12.3.2010, 10:17
Код

procedure TForm1.Button2Click(Sender: TObject);
var
  s: string;
begin
  s := Edit1.Text;
  with TQuery.Create(Database1) do
  try
    SQL.Text := 'select count(t.*) from имя_таблицы t where t.поле_табельный_номер = ' + QuotedStr(s);
    Active := True;
    if Fields[0].AsInteger > 0 then
    begin
      ShowMessage('Такой табельный номер уже существует');
      Exit;
    end;
  finally
    Free;
  end;
  {ЗДЕСЬ ПРОИЗВОДИМ ВСТАВКУ}
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)