代碼有沒問題
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.
uj5u.com熱心網友回復:
Params.parambyname('f1').value:= edit1.Text;Params.parambyname('f2').value:= edit2.Text;
Params.parambyname('f3').value:= edit3.Text;
估計是這引數的問題吧
這些引數需要靜態添加好的,不能動態識別。你在設計環境中把引數添加上去才行
注意引數是String型別的時候
uj5u.com熱心網友回復:
問題在以下代碼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;
uj5u.com熱心網友回復:
試過了,還是有那個錯誤uj5u.com熱心網友回復:
沒有測驗環境,建議嘗試Tform1關閉 時,query1.close;uj5u.com熱心網友回復:
除錯的時候在Params.parambyname('f1').value:= edit1.Text;設一中斷點檢查一下Params.cout值和項就知道了。uj5u.com熱心網友回復:
想清楚一點,樓主的錯誤到底是在哪一行出來還是,生成了EXE檔案后,一執行就出來,還是在IDE環境中打開PROJECT的時候已經出來了?
很多時候,總是忘記了在IDE環境中把QUERY的ACTIVE設定為FALSE
還有一種可能性,樓主是不是沒有把QUERY的CONNECTION設定好呢?
樓主 應該把自己的開發環境條件說清楚,這種問題應該是相對問題,在你的電腦上出現,在其他的電腦上不會出 現之類的
uj5u.com熱心網友回復:
procedure TForm1.Button2Click(Sender: TObject);//添加用戶資料
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;
uj5u.com熱心網友回復:
額, 格式化引數賦值寫錯了,應該是sqlstr := Format(sqlstr, [edit1.Text, edit2.Text, edit3.Text]);
uj5u.com熱心網友回復:
這種錯誤是在物件沒有Create,然后參考才出的。樓主查一下uj5u.com熱心網友回復:
學習一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83435.html
標籤:數據庫相關
