代码: unit Unit1;
interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB, ComCtrls, StdCtrls, ToolWin, ImgList; type
TFormTable = class(TForm)
ADOConnection1: TADOConnection; DataSource1: TDataSource; DBGrid1: TDBGrid; ToolBar1: TToolBar; TBAdd: TToolButton; Editname: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel;
Editaddress: TEdit; Label4: TLabel; Editid: TEdit; Label5: TLabel; Label6: TLabel;
ComboBoxsex: TComboBox; DateBirthday: TDateTimePicker; TBUpdate: TToolButton; TBDelete: TToolButton; TBSelect: TToolButton; TBCommit: TToolButton; LabelMode: TLabel;
ToolButton6: TToolButton; Label8: TLabel;
ADOQuery1: TADOQuery; DataSource2: TDataSource; ADOTable1: TADOTable; ImageList1: TImageList;
procedure TBAddClick(Sender: TObject); procedure TBUpdateClick(Sender: TObject); procedure TBDeleteClick(Sender: TObject); procedure TBSelectClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure TBCommitClick(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); private
public
{ Public declarations } end; var
FormTable: TFormTable;
TBStatus : integer; //模式类型,0-查询,1-新增,2-修改,3-删除
SelMode : integer; //第一次按查询按钮进入查询模式--1,再按一次执行查询--2,其他情况下为--0
implementation
{$R *.dfm}
procedure TFormTable.TBAddClick(Sender: TObject); var maxid : integer; var date : string; begin
TBStatus := 1;
Editid.Enabled := false; Editname.Enabled := true; Comboboxsex.Enabled := true; DateBirthday.Enabled := true; Editaddress.Enabled := true; Editid.Text := ''; Editname.Text := ''; SelMode := 0;
LabelMode.Caption := '新增模式'; DBGrid1.DataSource := DataSource1;
date := FormatDateTime('yymm', now); With FormTable.ADOQuery1 do begin
ADOQuery1.Close; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select max(substring(Id,6,3)) maxid from Students where substring(Id,2,4)=' + date); ADOQuery1.Open;
if (ADOQuery1.RecordCount = 0) then Editid.Text := 'S' + date + '001' else
begin if (ADOQuery1.FieldByName('maxid').Text = '') or (ADOQuery1.FieldByName('maxid').Text = 'NULL') then Editid.Text := 'S' + date + '001' else begin
maxid := StrToInt(ADOQuery1.FieldByName('maxid').Text); maxid := maxid + 1;
Editid.Text := 'S' + date + StringOfChar('0', 3-length(IntToStr(maxid))) + IntToStr(maxid); end;
end; end; end;
procedure TFormTable.TBUpdateClick(Sender: TObject); begin
TBStatus := 2;
Editid.Enabled := false; Editname.Enabled := true;
Comboboxsex.Enabled := true; DateBirthday.Enabled := true; Editaddress.Enabled := true; Editid.Text := ''; Editname.Text := ''; SelMode := 0;
LabelMode.Caption := '修改模式'; DBGrid1.DataSource := DataSource1; end;
procedure TFormTable.TBDeleteClick(Sender: TObject); begin
TBStatus := 3;
Editid.Enabled := false; Editname.Enabled := false; Comboboxsex.Enabled := false; DateBirthday.Enabled := false; Editaddress.Enabled := false; Editid.Text := ''; Editname.Text := ''; SelMode := 0;
LabelMode.Caption := '删除模式'; DBGrid1.DataSource := DataSource1; end;
procedure TFormTable.TBSelectClick(Sender: TObject); var id,ename,address:string; begin
if SelMode = 0 then begin
TBStatus := 0;
Editid.Enabled := true; Editname.Enabled := true; Comboboxsex.Enabled := true; DateBirthday.Enabled := true; Editaddress.Enabled := true; Editid.Text := ''; Editname.Text := ''; SelMode := 1;
LabelMode.Caption := '查询模式'; DBGrid1.DataSource := DataSource2; end
else if SelMode = 1 then begin
if Editid.Text = '' then id := 'null' else
id := ''''+Editid.Text+'''';
if Editname.Text = '' then ename := 'null' else
ename := ''''+Editname.Text+'''';
if Editaddress.Text = '' then address := 'null' else
address := ''''+Editaddress.Text+'''';
with ADOQuery1 do begin
ADOQuery1.Close; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select Id, Name, Sex, Birthday, Address from Students' + ' where Id = isnull('+id+',Id)'+
' and Name = isnull('+ename+',Name)'+ ' and Sex = '+''''+Comboboxsex.Text+''''+
' and Birthday = '+''''+DateToStr(DateBirthday.Date)+''''+ ' and Address = isnull('+address+',Address)'); ADOQuery1.Open;
end; end; end;
procedure TFormTable.FormPaint(Sender: TObject); begin
//默认为查询模式,此模式下学号可以输入,其他模式下不可以输入 TBStatus := 0;
Editid.Enabled := true; Editid.Text := ''; SelMode := 1;
DBGrid1.DataSource := DataSource2; end;
procedure TFormTable.TBCommitClick(Sender: TObject);