两个窗体的东西了。不过我开始两个都创建了。只不过必要的时候把Form2 show一下就行了。其实这样挺费资源的。

懒得弄了 就这样吧。哈哈。我还是比较懒的。

窗体如下

form1上的组件不多说了。之前的实例都是摆弄那两个东西。

来看看form2上的 TDataSource 和TDBGrid TDBGrid的DataSource属性设成ds1.  TDataSource的DataSet属性设成Form1.qry1 在form2的use中要引用一下form1的单元文件。 form1的implementation部分引用form2的单元。

这样不算循环引用。虽然我也不知道这样为啥。求高人解答啊。

之后万事ok了 直接上代码

这是form 1的 名字取得有点问题 不过这都不是事儿。

unit eg001n2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;

type
TForm1
= class(TForm)
qry1: TQuery;
db1: TDatabase;
btnCreate: TButton;
btnExecute: TButton;
procedure btnCreateClick(Sender: TObject);
procedure btnExecuteClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses eg004n2;

{$R *.dfm}

procedure TForm1.btnCreateClick(Sender: TObject);
begin
try
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add(
'Create Procedure selecttable as select * from 学生表');
ExecSQL;
end;
Application.MessageBox(
'创建储存过程成功','提示',MB_OK);
except
Application.MessageBox(
'创建储存过程失败','提示',MB_OK);
end;
end;

procedure TForm1.btnExecuteClick(Sender: TObject);
begin
with qry1 do
begin
Close;
SQL.Clear;
SQL.Add(
'exec selecttable');
Open;
end;
form2.show;
end;

end.

这是form2的单元文件了

unit eg004n2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, eg001n2;

type
TForm2
= class(TForm)
ds1: TDataSource;
dbgrd1: TDBGrid;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

end.

So nice

运行结果