首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 怎么用DBNavigator对DBGrid内的内容进行插入、删除、修改

2012-04-24 
Delphi 如何用DBNavigator对DBGrid内的内容进行插入、删除、修改unit Unit3interfaceusesWindows, Messages

Delphi 如何用DBNavigator对DBGrid内的内容进行插入、删除、修改
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls;

type
  TForm3 = class(TForm)
  Label1: TLabel;
  Label2: TLabel;
  Edit1: TEdit;
  Button1: TButton;
  Button2: TButton;
  ComboBox1: TComboBox;
  ComboBox2: TComboBox;
  ComboBox3: TComboBox;
  Label3: TLabel;
  Label4: TLabel;
  Label5: TLabel;
  DBGrid1: TDBGrid;
  ADOConnection1: TADOConnection;
  ADOQuery1: TADOQuery;
  DataSource1: TDataSource;
  DBNavigator1: TDBNavigator;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
  procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.Active:=false;
  ADOQuery1.SQL.Add('select * from Flght;');
  ADOQuery1.Prepared;
  ADOQuery1.Active:=true;
  Edit1.Text:='F001';
  ComboBox1.Text:='2006';
  ComboBox2.Text:='01';
  ComboBox3.Text:='01';

end;

procedure TForm3.Button1Click(Sender: TObject);
begin
 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select *');
  ADOQuery1.SQL.Add('from Flght');
  ADOQuery1.SQL.Add('where FltNo='''+Edit1.Text+
  '''and FltDate='''+ComboBox1.Text+'-'+
  ComboBox2.Text+'-'+ComboBox3.Text+'''');
  ADOQuery1.Prepared;
  ADOQuery1.Open;
  ADOQuery1.Active:=true;

end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm3.DBNavigator1Click(Sender: TObject; nbInsert: TNavigateBtn);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='insert into Flght (FltNo,FltDate,FltBgnSrc,FltEndTgt,FltBgnTime,FltSeatNum,FltPrice,FltDsctNum,FltDsctRate,FltCompany) values(:字段1,:字段2,:字段3,:字段4,:字段5,:字段6,:字段7,:字段8,:字段9,:字段10 )';
ADOQuery.Parameters.ParamByName('字段1').Value:=trim(Edit1.Text);
ADOQuery.Parameters.ParamByName('字段2').Value:=trim(Edit2.Text);
ADOQuery.Parameters.ParamByName('字段3').Value:=trim(Edit3.Text);
ADOQuery.Parameters.ParamByName('字段4').Value:=trim(Edit4.Text);
ADOQuery.Parameters.ParamByName('字段5').Value:=trim(Edit5.Text);
ADOQuery.Parameters.ParamByName('字段6').Value:=trim(Edit6.Text);
ADOQuery.Parameters.ParamByName('字段7').Value:=trim(Edit7.Text);
ADOQuery.Parameters.ParamByName('字段8').Value:=trim(Edit8.Text);
ADOQuery.Parameters.ParamByName('字段9').Value:=trim(Edit9.Text);
ADOQuery.Parameters.ParamByName('字段10').Value:=trim(Edit10.Text);
ADOQuery.ExecSQL;
end;

end.
初学Delphi,才学了两天,对Delphi的一些组件不是很了解,这是一段插入的代码,是我自己根据理解改的,应该有很多错误,求大神指导,最好能帮忙把删除和修改的代码的例子给我参考一下。

[解决办法]
procedure TForm3.FormCreate(Sender: TObject);
begin
ADOQuery1.Close;//ADOQuery1.Active:=false;两者意义相同,
ADOQuery1.SQL.Clear;
ADOQuery1.Active:=false;//前面有CLOSE,此处不能再Active:=false,且位置应该在SQL前面
ADOQuery1.SQL.Add('select * from Flght;');//;这个分号如果是SQL SERVER可能会出错。
ADOQuery1.Prepared;


ADOQuery1.Active:=true;
………………
end;
---------------------------------------------------------

procedure TForm3.Button1Click(Sender: TObject);
begin
 ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *');
ADOQuery1.SQL.Add(' from Flght ');//*与from之间应该有空格,当然WHERE也是
ADOQuery1.SQL.Add('where FltNo='''+Edit1.Text+
'''and FltDate='''+ComboBox1.Text+'-'+ ComboBox2.Text+'-'+ComboBox3.Text+'''');
ADOQuery1.Prepared;
ADOQuery1.Open;//OPEN和Active:=true;功能相同,SO,二者取一即可
  ADOQuery1.Active:=true;
---------------------------------------------------------
第三段没有错误
---------------------------------------------------------
删除代码:adoquery1.Delete();//即可删除当前选中的记录
--------------------------------------------------------
修改代码和新增类同,只改SQL语句就可以了
--------------------------------------------------------
ADOQuery.SQL.Text:='update Flght set FltNo =:字段1,FltDate =:字段2,FltBgnSrc=:字段3 where xxx =:xxx ';
[解决办法]
ADOQuery1.SQL.Add();
SQL是一个Tstrings,Add方法是整行添加的,上下行之间可不用空格(因为行之间是有回车换行符的)

上面定义的方法是:
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
下面用的是:
procedure TForm3.DBNavigator1Click(Sender: TObject; nbInsert: TNavigateBtn);

自己改吧
[解决办法]
加个POST即可

热点排行