
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
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
|