代码如下:unit Unit5;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, ADODB;type
TForm5 = class(TForm)
Label12: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form5: TForm5;
Query1: TADOQuery;implementationuses Unit2,Unit4;{$R *.dfm}procedure TForm5.FormCreate(Sender: TObject);
begin
Query1:= TADOQuery.Create(self);
Query1.Connection:=dmPer.acPer;
Query1.CacheSize := 1000;
Query1.Prepared := true;
end;procedure TForm5.Button1Click(Sender: TObject);
begin
if(Edit1.Text<>'') then
begin
Form4 := TForm4.Create(self);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select 编号,品名规格,脚长 from PM where ps ='+Quotedstr(trim(edit1.text));
Query1.Parameters.ParamByName('ps').Value:= Edit1.Text;
Query1.Open;
Form4.edtsn.Text := Query1.Fields[0].AsString;
Form4.edtps.Text := Query1.Fields[1].AsString;
Form4.edtfl.Text := Query1.Fields[2].AsString;
Form4.ShowModal;
end;
end;end.表PM中有ps ,编号,品名规格,脚长等10几个字段名称 我想实现的功能是,在form5输入ps,点击button1就能弹出form4,并在form4中用三个edit分别显示三个字段值,
编绎完全没问题,在form5输入ps值后,能够从数据库表里查询并显示数据,但是不是跟PS对应的那一行数据,而是显示最后一行的数据。
比如:
ps 编号 品名规格 脚长
1 001 20 20
2 002 30 30
3 003 40 40输入:1,
查询,
结果显示:
编 号:003 品名规格:40 脚长:40就是这样,是不是下面的语句写错了?
Form4.edtsn.Text := Query1.Fields[0].AsString;
Form4.edtps.Text := Query1.Fields[1].AsString;
Form4.edtfl.Text := Query1.Fields[2].AsString;
结束的时候感谢:zxf_feng ,de410 ,starluck ,n29882942 等,谢谢你们昨天关注并帮我解决了那个莫明其妙的问题!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, ADODB;type
TForm5 = class(TForm)
Label12: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form5: TForm5;
Query1: TADOQuery;implementationuses Unit2,Unit4;{$R *.dfm}procedure TForm5.FormCreate(Sender: TObject);
begin
Query1:= TADOQuery.Create(self);
Query1.Connection:=dmPer.acPer;
Query1.CacheSize := 1000;
Query1.Prepared := true;
end;procedure TForm5.Button1Click(Sender: TObject);
begin
if(Edit1.Text<>'') then
begin
Form4 := TForm4.Create(self);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select 编号,品名规格,脚长 from PM where ps ='+Quotedstr(trim(edit1.text));
Query1.Parameters.ParamByName('ps').Value:= Edit1.Text;
Query1.Open;
Form4.edtsn.Text := Query1.Fields[0].AsString;
Form4.edtps.Text := Query1.Fields[1].AsString;
Form4.edtfl.Text := Query1.Fields[2].AsString;
Form4.ShowModal;
end;
end;end.表PM中有ps ,编号,品名规格,脚长等10几个字段名称 我想实现的功能是,在form5输入ps,点击button1就能弹出form4,并在form4中用三个edit分别显示三个字段值,
编绎完全没问题,在form5输入ps值后,能够从数据库表里查询并显示数据,但是不是跟PS对应的那一行数据,而是显示最后一行的数据。
比如:
ps 编号 品名规格 脚长
1 001 20 20
2 002 30 30
3 003 40 40输入:1,
查询,
结果显示:
编 号:003 品名规格:40 脚长:40就是这样,是不是下面的语句写错了?
Form4.edtsn.Text := Query1.Fields[0].AsString;
Form4.edtps.Text := Query1.Fields[1].AsString;
Form4.edtfl.Text := Query1.Fields[2].AsString;
结束的时候感谢:zxf_feng ,de410 ,starluck ,n29882942 等,谢谢你们昨天关注并帮我解决了那个莫明其妙的问题!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, ADODB; type
TForm5 = class(TForm)
Label12: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form5: TForm5;
Query1: TADOQuery; implementation uses Unit2,Unit4; {$R *.dfm} procedure TForm5.FormCreate(Sender: TObject);
begin
Query1:= TADOQuery.Create(self);
Query1.Connection:=dmPer.acPer;
Query1.CacheSize := 1000;
Query1.Prepared := true;
end; procedure TForm5.Button1Click(Sender: TObject);
begin
if(Edit1.Text <>'') then
begin
Form4 := TForm4.Create(self);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select 编号,品名规格,脚长 from PM where ps ='+Quotedstr(trim(edit1.text));
Query1.Parameters.ParamByName('ps').Value:= Edit1.Text;
Query1.Open;
Form4.edtsn.Text := Query1.Fields[0].AsString;
Form4.edtps.Text := Query1.Fields[1].AsString;
Form4.edtfl.Text := Query1.Fields[2].AsString;
Form4.ShowModal;
end;
end;
已经有WHERE了,还用这句干嘛
Query1.Parameters.ParamByName('ps').Value:= Edit1.Text;
Query1.Parameters.ParamByName('ps').Value:= Edit1.Text;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select 编号,品名规格,脚长 from PM where ps = :ps';
昨天就是因为这一句出的问题啊,是参数问题。
二楼大哥,您说的那个代码问题会影响查询结果吗?
放到“Query1.Open; “
后面试试
注意调试方法。基本都是排除法。一步一步做就是了。
这一句可能是不需要的,但是去了这一句运行后会提示“参数ps 没有默认值”