回 帖 发 新 帖 刷新版面

主题:DELPHI6.0 与SQL SERVER 数据库编程表操作问题请教!

各位DELPHI的朋友您们好!
我是初学者,现在在搞网络数据库编程,我现在是用TQuery和TDataSource连接数据文件
现页面上有一个TDBGrid组件,可以显示数据库的某一个表的数据内容,而他的每一个字段相应值我都在TDBGrid组件上面的位置做了N个字段的TDBEdit组件相应显示,现我还有四个按钮的内容没有写,因不知道怎么操作,四个按钮为“新增内容”“修改内容”“删除内容”“保存内容”都是对数据库里的表操作
我需要所有的新增和修改的内容都在TDBEdit上操作,不想在TDBGrid里面操作,还有本人不想用TDBNavigator组件操作,因为我觉得这样操作不方面!此问题试了好久都没成功,希望各位大侠能提供帮助和支持,谢谢!
最好能提供每个按钮的相应原代码,在此万分感谢!

回复列表 (共3个回复)

沙发

请参考下面的代码:

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;

板凳

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 楼


谢谢你,我回去试试![em20]

我来回复

您尚未登录,请登录后再回复。点此登录或注册