Показать сообщение отдельно
  #2  
Старый 08.04.2009, 15:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Поскольку вы работаете с dbf, то мне кажеться вам лучше всего для запрета ввода повторов использовать запрос к таблице. Вот примерчик такой реализации:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    AppDB: TADOConnection;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 AppDB.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+
 'Data Source=%s;Mode=Share Deny None;Jet OLEDB:Database Password="";'+
 'Jet OLEDB:Engine Type=17';
 AppDB.ConnectionString := Format(AppDB.ConnectionString,[ExtractFilePath(Application.ExeName)]);
 AppDB.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var Q: TAdoQuery;
    MaxID: Integer;
begin
 Q := TAdoQuery.Create(nil);
 Q.Connection := AppDB;
 Q.SQL.Text := 'select * from test.dbf where name=:name';
 Q.Parameters.ParamValues['name'] := Edit1.Text;
 Q.Open;
 if Q.IsEmpty
 then begin
      Q.SQL.Text := 'select max(id) as MaxID from test.dbf';
      Q.Open;
      if Q.FieldValues['MaxID'] = null
      then MaxID := 1
      else MaxID := Q.FieldValues['MaxID'] + 1;
      Q.SQL.Text := 'insert into test.dbf (id,name) values(:id,:name)';
      Q.Parameters.ParamValues['id'] := MaxID;
      Q.Parameters.ParamValues['name'] := Edit1.Text;
      Q.ExecSQL;
      end;
 Q.Close;
 Q.Free;
end;

end.

Код:
object Form1: TForm1
  Left = 294
  Top = 113
  Width = 870
  Height = 640
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Edit1: TEdit
    Left = 64
    Top = 16
    Width = 121
    Height = 21
    TabOrder = 0
    Text = 'Edit1'
  end
  object Button1: TButton
    Left = 192
    Top = 16
    Width = 41
    Height = 25
    Caption = 'Add'
    TabOrder = 1
    OnClick = Button1Click
  end
  object AppDB: TADOConnection
    LoginPrompt = False
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 16
    Top = 16
  end
end
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием