代码有没问题
var
Form1: TForm1;
s:string;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//显示用户资料
begin
s:='select r1_F1 as "用户工号",r1_F2 as "用户名称",r1_F3 as "用户密码"from Rule_SysUsers_Info';
with query1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);//添加用户资料
var sqlstr:string;
begin
sqlstr:='insert into Rule_SysUsers_Info(r1_F1,r1_F2,r1_F3)values(:f1,:f2,:f3)';
with query1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
Params.parambyname('f1').value:= edit1.Text;
Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;
execsql;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;
end.
var
Form1: TForm1;
s:string;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//显示用户资料
begin
s:='select r1_F1 as "用户工号",r1_F2 as "用户名称",r1_F3 as "用户密码"from Rule_SysUsers_Info';
with query1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);//添加用户资料
var sqlstr:string;
begin
sqlstr:='insert into Rule_SysUsers_Info(r1_F1,r1_F2,r1_F3)values(:f1,:f2,:f3)';
with query1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
Params.parambyname('f1').value:= edit1.Text;
Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;
execsql;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;
end.
Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;估计是这参数的问题吧
这些参数需要静态添加好的,不能动态识别。你在设计环境中把参数添加上去才行注意参数是String类型的时候
sqlstr:='insert into Rule_SysUsers_Info(r1_F1,r1_F2,r1_F3)values(:f1,:f2,:f3)';
..
sql.Add(sqlstr);
你只是对query的sql增加sql语句,运行时delphi是不会自动创建params的项的。然后你又直接对params的项进行赋值
Params.parambyname('f1').value:= edit1.Text;
Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;
肯定越界了。
要赋值可以,一在设计时生成sql语句,delphi自动生成params的项,可以直接赋值。
二。动态创建,就在你代码增加三条语句
Params.CreateParam(ftString,'f1', ptInput);
Params.CreateParam(ftString,'f2', ptInput);
Params.CreateParam(ftString,'f3', ptInput);
Params.parambyname('f1').value:= edit1.Text;
Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;
还是,生成了EXE文件后,一执行就出来,还是在IDE环境中打开PROJECT的时候已经出来了?很多时候,总是忘记了在IDE环境中把QUERY的ACTIVE设置为FALSE还有一种可能性,楼主是不是没有把QUERY的CONNECTION设置好呢?楼主 应该把自己的开发环境条件说清楚,这种问题应该是相对问题,在你的电脑上出现,在其他的电脑上不会出 现之类的
var sqlstr, s : string;
begin
s:='select r1_F1 as "用户工号",r1_F2 as "用户名称",r1_F3 as "用户密码"from Rule_SysUsers_Info';
sqlstr:='insert into Rule_SysUsers_Info (r1_F1,r1_F2,r1_F3) values(''%s'', ''%s'', ''%s'')';
sqlstr := Format(sqlstr, [edit1.Text, edit1.Text, edit1.Text]);
with query1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
execsql;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add(s);
open;
end;
end;
sqlstr := Format(sqlstr, [edit1.Text, edit2.Text, edit3.Text]);