很简单的,两个窗体。
在form1窗体中单击按钮事件,并将值传递到form2,将执行查询结果显示在form2的相关控件里.
unit1单元文件相关程序:procedure TForm1.Button1Click(Sender: TObject); //button1是查询按钮begin with adoquery2 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表 where 员工编号=:a');
parameters.ParamByName('a').Value:=ADOQuery1.FieldByName('员工编号').AsString;
open;
end;
procedure TForm1.Button2Click(Sender: TObject); //button2 就是点击该按钮将值传递过去
begin
form2.showmodal;
end;----------------
form2的代码:procedure TReadPDF.FormCreate(Sender: TObject);
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表 where 员工编号=:a');
parameters.ParamByName('a').Value:=form1.ADOQuery1.FieldByName('员工编号').AsString;
open;
end;
if adoquery2.RecordCount>0 then
begin
edit1.text:=adoquery2.fieldbyname('个人档案').asstring;
end;
end;这里就提示adoquery1 找不到员工编号字段!!
窗体单元文件已经引用。请高手指点!!一般一个窗体引用另外一个窗体的数据是 怎么处理的?
在form1窗体中单击按钮事件,并将值传递到form2,将执行查询结果显示在form2的相关控件里.
unit1单元文件相关程序:procedure TForm1.Button1Click(Sender: TObject); //button1是查询按钮begin with adoquery2 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表 where 员工编号=:a');
parameters.ParamByName('a').Value:=ADOQuery1.FieldByName('员工编号').AsString;
open;
end;
procedure TForm1.Button2Click(Sender: TObject); //button2 就是点击该按钮将值传递过去
begin
form2.showmodal;
end;----------------
form2的代码:procedure TReadPDF.FormCreate(Sender: TObject);
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表 where 员工编号=:a');
parameters.ParamByName('a').Value:=form1.ADOQuery1.FieldByName('员工编号').AsString;
open;
end;
if adoquery2.RecordCount>0 then
begin
edit1.text:=adoquery2.fieldbyname('个人档案').asstring;
end;
end;这里就提示adoquery1 找不到员工编号字段!!
窗体单元文件已经引用。请高手指点!!一般一个窗体引用另外一个窗体的数据是 怎么处理的?
procedure TForm1.Button1Click(Sender: TObject); //button1是查询按钮begin with adoquery1 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表');
open;
end;
end;
谢谢!!
对于数据集控件,都统一放在一个datamodule中.
这样用起来比较方便
我所有的数据集组件是放在datamodule里的,没错。
我只是简单说明情况.
procedure TForm1.Button1Click(Sender: TObject); //查询信息放到dbgrid中
begin With DataModule1.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from hr');
Open;
end;
if DataModule1.ADOQuery1.RecordCount>0 then //显示查询结果记录条数
begin
edit1.Text:=inttostr(DataModule1.ADOQuery1.RecordCount);
end;
end;procedure TForm1.Button2Click(Sender: TObject);//按钮2单击打开form2
begin
form2.ShowModal;
end;
fom2 中的代码:procedure TForm2.FormCreate(Sender: TObject);
begin
edit1.text:=datamodule1.ADOQuery1.fieldbyname('empid').asstring;
end;
按照道理说,form1中打开数据集adoquery1的查询结果,应该没被关闭才是。。
我在fom2中引用打开数据集的结果,为什么提示adoquery1中的empid 字段没有找到呢??
因为公共的数据集不定哪里用到它了呢
我这个例子本身就是用来测试的。我看了下。。
在fom2中取在form1中已经打开的的adoquery1的时候..adoquery1里sql值为空...不解,关注!
unit1单元文件相关程序:
procedure TForm1.Button1Click(Sender: TObject); //button1是查询按钮 begin with adoquery1 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表');
open;
end;
end----------------
form2的代码:procedure TReadPDF.FormCreate(Sender: TObject);
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.add('select 个人档案 from 人事信息表 where 员工编号=:a');
parameters.ParamByName('a').Value:=form1.ADOQuery1.FieldByName('员工编号').AsString;
open;
end;
if adoquery2.RecordCount>0 then
begin
edit1.text:=adoquery2.fieldbyname('个人档案').asstring;
end;
end;
1、是否在TForm2中引用了 Unit1 单元
2、如果引用了,可以在Form1中添加一个隐藏的Label控件,让其Caption:= ADOQuery1.FieldByName('员工编号').AsString
3、在 Form2 中: parameters.ParamByName('a').Value:=form1.Label1.Caption;
我写了个简单的例子
form1代码如下-------------一个edit1,两个按钮
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit3, Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
with DataModule2.adoquery1 do
begin
close;
sql.Clear;
sql.add('select * from xue where name1='''+edit1.text+'''');
open;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if not assigned(form3) then
form3 := TForm3.Create(application);
form3.edit1.text := DataModule2.adoquery1.fields[0].asstring;
form3.showmodal;
form3.free;
form3 := nil;
end;end.form2为datamodule 一个adoconnection,两个adoqueryform3代码如下---------------------------------一个edit1
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementation{$R *.dfm}end.