主题:DELPHI6.0 与SQL SERVER 数据库编程表操作问题请教!
hao70345
[专家分:190] 发布于 2006-03-28 09:23:00
各位DELPHI的朋友您们好!
我是初学者,现在在搞网络数据库编程,我现在是用TQuery和TDataSource连接数据文件
现页面上有一个TDBGrid组件,可以显示数据库的某一个表的数据内容,而他的每一个字段相应值我都在TDBGrid组件上面的位置做了N个字段的TDBEdit组件相应显示,现我还有四个按钮的内容没有写,因不知道怎么操作,四个按钮为“新增内容”“修改内容”“删除内容”“保存内容”都是对数据库里的表操作
我需要所有的新增和修改的内容都在TDBEdit上操作,不想在TDBGrid里面操作,还有本人不想用TDBNavigator组件操作,因为我觉得这样操作不方面!此问题试了好久都没成功,希望各位大侠能提供帮助和支持,谢谢!
最好能提供每个按钮的相应原代码,在此万分感谢!
回复列表 (共3个回复)
沙发
progfan [专家分:2270] 发布于 2006-03-29 08:26:00
请参考下面的代码:
unit MpUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, Buttons, ComCtrls, ToolWin, Grids, DBGrids, StdCtrls,
ExtCtrls;
type
Tform1 = class(TForm)
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
sb_Add: TSpeedButton;
sb_edit: TSpeedButton;
sb_Del: TSpeedButton;
ImageList1: TImageList;
sb_Save: TSpeedButton;
sb_Exit: TSpeedButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label15: TLabel;
edtXLT: TEdit;
edtName: TEdit;
edtZW: TEdit;
edtDWDH: TEdit;
edtZZDH: TEdit;
edtSJ: TEdit;
edtCH: TEdit;
edtJTDZ: TEdit;
edtDWDZ: TEdit;
edtGZDW: TEdit;
edtJTYB: TEdit;
edtDWYB: TEdit;
memoYWWL: TMemo;
edtCZ: TEdit;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
StatusBar1: TStatusBar;
edtDZYJ: TEdit;
Label14: TLabel;
ComboRYLB: TComboBox;
Label16: TLabel;
Label17: TLabel;
ComboJCLX: TComboBox;
procedure edtEmptyAll(Sender: TObject);
procedure sb_AddClick(Sender: TObject);
procedure edtNameExit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sb_SaveClick(Sender: TObject);
procedure sb_ExitClick(Sender: TObject);
procedure sb_DelClick(Sender: TObject);
procedure sb_editClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure ToolBar1AdvancedCustomDraw(Sender: TToolBar;
const ARect: TRect; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
form1: Tform1;
mState:string;
bmpTB:TBitmap;
implementation
uses dmUnit;
{$R *.dfm}
procedure Tform1.sb_AddClick(Sender: TObject); //添加按钮
begin
mState:='stAdd';
edtName.text:='';
edtEmptyAll(Sender);
end;
procedure Tform1.edtNameExit(Sender: TObject); //姓名文本框
begin
if trim(edtName.text)='' then
exit;
dm.Mp.Close;
dm.Mp.CommandText:='select * from 名片 where 姓名=:name';
dm.Mp.Parameters.ParamByName('name').value:=edtName.text;
dm.Mp.Open;
if dm.Mp.RecordCount>0 then
begin
edtZW.Text:=dm.Mp.FieldByName('职务').AsString;
edtDWDH.Text:=dm.Mp.FieldByName('单位电话').AsString;
edtZZDH.Text:=dm.Mp.FieldByName('住宅电话').AsString;
edtSJ.Text:=dm.Mp.FieldByName('手机').AsString;
edtXLT.Text:=dm.Mp.FieldByName('小灵通').AsString;
edtCH.Text:=dm.Mp.FieldByName('传呼').AsString;
edtCZ.Text:=dm.Mp.FieldByName('传真').AsString;
edtGZDW.Text:=dm.Mp.FieldByName('工作单位').AsString;
edtDWDZ.Text:=dm.Mp.FieldByName('单位地址').AsString;
edtDWYB.Text:=dm.Mp.FieldByName('单位邮编').AsString;
edtJTDZ.Text:=dm.Mp.FieldByName('家庭地址').AsString;
edtJTYB.Text:=dm.Mp.FieldByName('家庭邮编').AsString;
memoYWWL.Text:=dm.Mp.FieldByName('业务往来').AsString;
comboJCLX.Text:=dm.Mp.FieldByName('经常联系').AsString;
comboRYLB.Text:=dm.Mp.FieldByName('人员类别').AsString;
edtDZYJ.Text:=dm.Mp.FieldByName('电子邮箱').AsString;
dm.Mp.Edit;
mState:='stEdit';
// edtName.SetFocus;
end
else
if mState='stAdd' then
begin
dm.Mp.Last;
if dm.Mp.FieldByName('姓名').AsString<>'' then
begin
dm.mp.Append;
mState:='stAdd';
end;
end;
end;
板凳
progfan [专家分:2270] 发布于 2006-03-29 08:27:00
procedure Tform1.edtEmptyAll(Sender: TObject); //清空文本框
begin
edtZw.Text:='';
edtDWDH.Text:='';
edtZZDH.Text:='';
edtSJ.Text:='';
edtXLT.Text:='';
edtCH.Text:='';
edtCZ.Text:='';
edtGZDW.Text:='';
edtDWDZ.Text:='';
edtDWYB.Text:='';
edtJTDZ.Text:='';
edtJTYB.Text:='';
memoYWWL.Text:='';
comboJCLX.Text:='';
comboRYLB.Text:='';
edtDZYJ.Text:='';
end;
procedure Tform1.FormCreate(Sender: TObject);
var
dir:string;
begin
mState:='stAdd';
edtName.Text:='';
edtEmptyAll(Sender);
//加载图片
getdir(0,dir);
bmpTB:=Tbitmap.Create;
try
bmpTB.LoadFromFile(dir+'\graph\bmpTB.bmp');
Except
bmpTB.Free;
end;
end;
//保存
procedure Tform1.sb_SaveClick(Sender: TObject);//保存按钮
begin
// if not (dm.mp.State = dsEdit ) then
dm.Mp.edit;
dm.Mp.FieldByName('姓名').AsString:=edtName.Text;
dm.Mp.FieldByName('职务').AsString:=edtZW.Text;
dm.Mp.FieldByName('单位电话').AsString:=edtDWDH.Text;
dm.Mp.FieldByName('住宅电话').AsString:=edtZZDH.Text;
dm.Mp.FieldByName('手机').AsString:=edtSJ.Text;
dm.Mp.FieldByName('小灵通').AsString:=edtXLT.Text;
dm.Mp.FieldByName('传呼').AsString:=edtCH.Text;
dm.Mp.FieldByName('传真').AsString:=edtCZ.Text;
dm.Mp.FieldByName('工作单位').AsString:=edtGZDW.Text;
dm.Mp.FieldByName('单位地址').AsString:=edtDWDZ.Text;
dm.Mp.FieldByName('单位邮编').AsString:=edtDWYB.Text;
dm.Mp.FieldByName('家庭地址').AsString:=edtJTDZ.Text;
dm.Mp.FieldByName('家庭邮编').AsString:=edtJTYB.Text;
dm.Mp.FieldByName('业务往来').AsString:=memoYWWL.Text;
dm.Mp.FieldByName('经常联系').AsString:=comboJCLX.Text;
dm.Mp.FieldByName('人员类别').AsString:=comboRYLB.Text;
dm.Mp.FieldByName('电子邮箱').AsString:=edtDZYJ.Text;
dm.Mp.Post;
end;
procedure Tform1.sb_ExitClick(Sender: TObject);//关闭窗体按钮
begin
self.Close;
end;
procedure Tform1.sb_DelClick(Sender: TObject);
begin
if messagebox(self.Handle,'确实要删除当前记录吗?','提示',mb_yesno+mb_iconinformation)=id_yes then
dm.mp.Delete;
end;
procedure Tform1.sb_editClick(Sender: TObject);//编辑按钮
begin
mState:='stEdit';
dm.Mp.Close;
dm.mp.CommandText:='select * from 名片';
dm.Mp.Open;
dm.mp.Edit;
end;
procedure Tform1.DBGrid1CellClick(Column: TColumn);//单击单元格
begin
edtName.Text:=dm.Mp.FieldByName('姓名').AsString;
edtZW.Text:=dm.Mp.FieldByName('职务').AsString;
edtDWDH.Text:=dm.Mp.FieldByName('单位电话').AsString;
edtZZDH.Text:=dm.Mp.FieldByName('住宅电话').AsString;
edtSJ.Text:=dm.Mp.FieldByName('手机').AsString;
edtXLT.Text:=dm.Mp.FieldByName('小灵通').AsString;
edtCH.Text:=dm.Mp.FieldByName('传呼').AsString;
edtCZ.Text:=dm.Mp.FieldByName('传真').AsString;
edtGZDW.Text:=dm.Mp.FieldByName('工作单位').AsString;
edtDWDZ.Text:=dm.Mp.FieldByName('单位地址').AsString;
edtDWYB.Text:=dm.Mp.FieldByName('单位邮编').AsString;
edtJTDZ.Text:=dm.Mp.FieldByName('家庭地址').AsString;
edtJTYB.Text:=dm.Mp.FieldByName('家庭邮编').AsString;
memoYWWL.Text:=dm.Mp.FieldByName('业务往来').AsString;
comboJCLX.Text:=dm.Mp.FieldByName('经常联系').AsString;
comboRYLB.Text:=dm.Mp.FieldByName('人员类别').AsString;
edtDZYJ.Text:=dm.Mp.FieldByName('电子邮箱').AsString;
end;
procedure Tform1.ToolBar1AdvancedCustomDraw(Sender: TToolBar;//在工具栏上画图
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
begin
sender.Canvas.StretchDraw(arect,bmpTB);
end;
end.
3 楼
hao70345 [专家分:190] 发布于 2006-04-29 15:06:00
谢谢你,我回去试试![em20]
我来回复