一个关键字edit :edit_by_bh
一个数据显示grid: grid_by
三个button: button_by1,button_by2,button_by3
procedure readonly_by(flag:boolean);//edit框只读
procedure chushihua_by;//edit框初始化
procedure button_by_show(str:string);//button按钮显示
procedure chaxun_by;//查询结果输出
function insert_by:boolean;//添加
function edit_by:boolean;//修改
function delete_by:boolean;//删除
//button_by1.caption:=新建数据 enable:=false;
//click:
chushihua_by;//初始化路线edit
button_by_show('新建数据');
edit_by_rq.SetFocus;
//button_by2.caption:=修改数据 enable:=false;
//click
if button_by2.Caption='修改数据' then begin
button_by_show('修改数据');
edit_by_rq.SetFocus;
exit;
end;
if button_by2.Caption='确认添加' then begin
//执行数据添加操作
if insert_by=false then exit;
button_by_show('原始');
exit;
end;
if button_by2.Caption='确认修改' then begin
//执行数据修改操作
if edit_by=false then exit;
button_by_show('原始');
exit;
end;
//button_by3.caption:='放弃操作' enable:=false;
//click
if button_by3.Caption='删除数据' then begin
//执行删除数据
if delete_by=false then exit;
end
else begin
//执行放弃操作
dllform.grid_byCellClick(nil);
end;
button_by_show('原始');
//button按钮显示
procedure TDLLFORM.button_by_show(str: string);
begin
readonly_by(false);
button_query.Enabled:=false;
button1.Enabled:=false;//主表状态
button2.Enabled:=false;
button3.Enabled:=false;
if str='新建数据' then begin
button_by1.Caption:='新建数据';
button_by1.Enabled:=false;
button_by2.Caption:='确认添加';
button_by2.Enabled:=true;
button_by3.Caption:='放弃操作';
button_by3.Enabled:=true;
//edit_by_lxmc.Text:=edit_lxmc.Text;
end;
if str='修改数据' then begin
button_by1.Caption:='修改数据';
button_by1.Enabled:=false;
button_by2.Caption:='确认修改';
button_by3.Caption:='放弃操作';
end;
if str='原始' then begin
button_by1.Caption:='新建数据';
button_by1.Enabled:=true;
button_by2.Caption:='修改数据';
button_by3.Caption:='删除数据';
button_query.Enabled:=true;
//主表按钮状态
button1.Enabled:=true;
button2.Enabled:=true;
button3.Enabled:=true;
readonly_by(true);
end;
application.ProcessMessages;
end;
//edit框只读
procedure TDLLFORM.readonly_by(flag: boolean);
begin
edit_by_rq.ReadOnly:=flag;
edit_by_lxmc.ReadOnly:=flag;
edit_by_ldmc.ReadOnly:=flag;
edit_by_bynr.ReadOnly:=flag;
edit_by_bz.ReadOnly:=flag;
end;
//edit框初始化
procedure TDLLFORM.chushihua_by;
begin
edit_by_rq.Date:=DATE;
edit_by_lxmc.Text:='';
edit_by_ldmc.Text:='';
edit_by_bynr.Text:='';
edit_by_bz.Text:='';
end;
//查询结果输出
procedure TDLLFORM.chaxun_by;
var
str_lxdm:string;
begin
str_lxdm:=sqlquery_lx.FieldValues['路线代码'];
sqlquery_by.SQL.Text:='select 编号,日期,路线名称,路段名称,保养内容,备注 from db_by where 路线代码='+quotedStr(str_lxdm)+' order by 日期 DESC';
sqlquery_by.ExecSQL;
sqlquery_by.First;
grid_by.Columns[0].Width:=1;
grid_by.Columns[1].Width:=80;
grid_by.Columns[2].Width:=100;
grid_by.Columns[3].Width:=100;
grid_by.Columns[4].Width:=300;
grid_by.Columns[5].Width:=100;
grid_by.Hint:='共有 '+inttostr(sqlquery_by.RecordCount)+' 条记录';
//grid_by. cellclick;//将记录显示到EDIT框中由添加,删除,修改函数中控制
end;
//插入数据
//edit框判断
//生成主键//添加数据库
//刷新GRID
//定位记录
//显示信息:添加成功
//清空EDIT框
function TDLLFORM.insert_by: boolean;
var
bh:string;
begin
result:=false;
//edit框判断
if trim(edit_by_lxmc.Text)='' then begin
application.messagebox(' 错误: 路线名称 不能为空 ','信息',MB_OK);
exit;
end;
if trim(edit_by_ldmc.Text)='' then begin
application.MessageBox(' 错误: 路段名称 不能为空 ','信息',MB_OK);
exit;
end;
if trim(edit_by_bynr.Text)='' then begin
application.MessageBox(' 错误: 保养内容 不能为空 ','信息',MB_OK);
exit;
end;
//生成主键
bh:='BY'+formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
//添加数据库
sqlquery1.SQL.Text:='insert into db_by(编号,日期,路线名称,路段名称,保养内容,备注,路线代码) values(:a,:b,:c,:d,:e,:f,:g)';
sqlquery1.Params.ParamByName('a').Value:=bh;
sqlquery1.Params.ParamByName('b').Value:=trim(edit_by_rq.Text);//路线代码
sqlquery1.Params.ParamByName('c').Value:=trim(edit_by_lxmc.Text);
sqlquery1.Params.ParamByName('d').Value:=trim(edit_by_ldmc.Text);
sqlquery1.Params.ParamByName('e').Value:=trim(edit_by_bynr.Text);
sqlquery1.Params.ParamByName('f').Value:=trim(edit_by_bz.Text);
sqlquery1.Params.ParamByName('g').Value:=UpperCase(sqlquery_lx.FieldValues['路线代码']);
try
sqlquery1.ExecSQL;
except
application.MessageBox(' 错误: 保养数据库添加资料失败 ','信息',MB_OK);
exit;
end;
//刷新GRID
chaxun_by;
//定位记录
sqlquery_by.Locate('编号',bh,[loCaseInsensitive]);
dllform.grid_byCellClick(nil);
//显示信息:添加成功
application.MessageBox(pansichar(' 信息: '+trim(edit_by_ldmc.Text)+' 路段保养记录添加成功 '),'信息',MB_OK);
//将信息写入到db_info
database_edit_end;
result:=true;
end;
//修改数据
//保存主键
//edit框判断
//修改数据库
//刷新GRID数据
//根据主键定位 adoquerydd.Locate('订单编号',ddbh,[loCaseInsensitive]);
//显示信息:修改成功
function TDLLFORM.edit_by: boolean;
var
bh:string;
begin
result:=false;
//保存主键
bh:=trim(edit_by_bh.Text);
//edit框判断
if trim(edit_by_lxmc.Text)='' then begin
application.messagebox(' 错误: 路线名称 不能为空 ','信息',MB_OK);
exit;
end;
if trim(edit_by_ldmc.Text)='' then begin
application.MessageBox(' 错误: 路段名称 不能为空 ','信息',MB_OK);
exit;
end;
if trim(edit_by_bynr.Text)='' then begin
application.MessageBox(' 错误: 保养内容 不能为空 ','信息',MB_OK);
exit;
end;
//修改数据库
sqlquery1.SQL.Text:='update db_by ';
sqlquery1.SQL.Add(' set ');
sqlquery1.SQL.Add(' 日期='+quotedstr(trim(edit_by_rq.Text )));
sqlquery1.SQL.Add(',路线名称='+quotedstr(trim(edit_by_lxmc.Text )));
sqlquery1.SQL.Add(',路段名称='+quotedstr(trim(edit_by_ldmc.Text )));
sqlquery1.SQL.Add(',保养内容='+quotedstr(trim(edit_by_bynr.Text )));
sqlquery1.SQL.Add(',备注='+quotedstr(trim(edit_by_bz.Text )));
sqlquery1.SQL.Add(' where 编号='+quotedStr(bh));
try
sqlquery1.ExecSQL;
except
application.MessageBox(' 错误: 保养数据库修改资料失败 ','信息',MB_OK);
exit;
end;
//刷新GRID
chaxun_by;
//定位记录
sqlquery_by.Locate('编号',bh,[loCaseInsensitive]);
dllform.grid_byCellClick(nil);
//显示信息:添加成功
application.MessageBox(pansichar(' 信息: '+trim(edit_by_ldmc.Text )+' 路段保养资料修改成功 '),'信息',MB_OK);
//将信息写入到db_info
database_edit_end;
result:=true;
end;
//删除数据
//保存主键
//判断是否存在从表
//删除数据
//刷新GRID数据
//将数据显示到edit框中 dllform.grid1cellclick(nil);
//显示信息:删除成功
function TDLLFORM.delete_by: boolean;var
bh:string;
begin
result:=false;
//保存主键
bh:=trim(edit_by_bh.Text);
//判断是否存在从表
//此数据库不需要
//删除数据
if application.messagebox(pansichar('当前选中的 '+trim(edit_by_ldmc.Text)+' 路段 保养记录 是否删除'),'记录删除',MB_YESNO)=IDNo then exit;
sqlquery1.SQL.Text:='delete from db_by where 编号='+quotedstr(bh);
try
sqlquery1.ExecSQL;
except
application.MessageBox(' 错误: 保养数据库删除记录失败 ','信息',MB_OK);
exit;
end;
//刷新GRID数据
chaxun_by;
//显示信息:删除成功
application.MessageBox(pansichar(' 信息: '+trim(edit_by_ldmc.Text)+' 路段 保养记录删除成功 '),'信息',MB_OK);
//将数据显示到edit框中 dllform.grid1cellclick(nil);
dllform.grid_byCellClick(nil);
//将信息写入到db_info
database_edit_end;
result:=true;
end;
//主从表之从表
//GRID单击grid_by cellclick
begin
if sqlquery_by.Eof then begin
edit_by_bh.Text:='';
chushihua_by;
dllform.edit_by_bhChange(nil);
exit;
end;
//处理新建,修改,删除三大按钮
button_by_show('原始');
//将数据显示到EDIT框中
edit_by_bh.Text:=sqlquery_by.FieldValues['编号'];
edit_by_rq.Text:=sqlquery_by.FieldValues['日期'];
edit_by_lxmc.Text:=sqlquery_by.FieldValues['路线名称'];
edit_by_ldmc.Text:=sqlquery_by.FieldValues['路段名称'];
edit_by_bynr.Text:=sqlquery_by.FieldValues['保养内容'];
edit_by_bz.Text:=sqlquery_by.FieldValues['备注'];
//关键字段变化处理
//edit_by_bh onchange
if trim(edit_by_bh.Text)='' then begin
button_by1.Enabled:=true;
button_by2.Enabled:=false;
button_by3.Enabled:=false;
end
else begin
button_by1.Enabled:=true;
button_by2.Enabled:=true;
button_by3.Enabled:=true;
end;