DBEDIT(50分)

  • 主题发起人 主题发起人 hongbo781202
  • 开始时间 开始时间
H

hongbo781202

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个管理系统,有如下要求请问任何实现:
FORM1中有一EDIT1(接收员工编号,是主键)和一BUTTON,要求单击BUTTON后,弹出
FORM2,FORM2中有6个DBEDIT,是数据库中的一个记录(6个字段)。怎样使该记录是
FORM1中EDIT1的员工编号的那条记录? 谢谢
 
1.修改Tquery中的SQL语句, 加where语句,这个办法就不多说了

2.用TTable或者TQuery的filter属性

TForm1.Button1Click(Sender);
begin
Form2.Query1.close;
Form2.Query1.filter :='员工编号='''+trim(Edit1.text)+'''';
Form2.Query1.filtered :=true;
Form2.Query1.Open;
Form2.ShowModal; //如果是手工创建窗体的话,请自己加点代码

end;
 
where 子句,可以这样写
buttonclick;
begin
with qury1 do
begin
sql.add('select * form tablename where 员工编号=:cs1');
下面的我就不用说了吧
有什么问题再与我联系


end;
 
用Locate,Find系列定位。
 
to:creazyboy
WHERE子句里怎么还有BUTTONCLICK?
能不能请说清楚一些,我是刚学的。
TO:HTW
FORM2中是有DBEDIT的(6个),您的程式里没出现DBEDIT啊?
请问FILTER那本书里讲过?做什么用的?应该在OBJECT INCPECTOR里设置不行吗?
TO:TTJLC
请问LOCATE是干啥的?
TO ALL
能用CURSOR吗?取数据后放到DBEDIT中?我用PARADOX行吗?用SQLSERVER呢?
 
我想creazyboy的意思是说写一个过程BUTTONCLICK,在BUTTON1的ONCLICK事件中调用
procedure buttonclick;
begin
with qury1 do
begin
sql.add('select * form tablename where 员工编号=:cs1');
ParamByName('cs1').asString:=Trim(Edit1.Text);
Prepare;
Open;
end;
end;


 
谢谢大家。
TO:LICHAOGANG
但这还是不行啊。这么做只能用DBGRID,不能用DBEDIT。您和CREAZYBOY的东东
都只能用于DBGRID。只是设置QUERY的SQL和PARAMS属性,然后PREPARE,CLOSE,OPEN。
顺便问一下TRIM是用来干啥的?
 
请看:
procedure TForm1.Button1Click(Sender);
var
i,j:integer;
begin
with form2 do
begin
with query1 do
begin
close;
sql.add('select * form tablename where 员工编号=:cs1');
ParamByName('cs1').asString:=Trim(Edit1.Text);
Open;
end;
j:=0;
for i:=1 to Form2.ComponentCount do
if form2.Components[i-1] is tdbedit then
begin
(form2.Components[i-1] as tdbedit).DataSource:=form2.DataSource1;
(form2.Components[i-1] as tdbedit).DataField:=form2.query1.Fields.Fields[j].FieldName;
inc(j);
end;
end;

end;
end;


大概如此,如有对应关系,则对应关联。
 
多人接受答案了。
 
后退
顶部