我需要給學生錄入成績,都是通過固定的一個edit輸入,我現在需要某個功能,比如我從第一個學生開始錄入,在edit里面輸入好第一個后,回車提交成績,并跳轉至第二個學生,并聚焦在edit上面,再次回車,錄入下一個學生,依此類推。現在只能解決手工錄入一個人的成績,不能解決自動跳轉。先上圖

with qry2 do
begin
Close;
sql.Clear;
sql.Add('update '+cbb7.Text+' set '+dbgrdh2.Columns[cbb7.ItemIndex+1].FieldName+'='+trim(rzedit2.Text)+' where s_name='''+trim(rzedit1.Text)+''' ');
//Parameters.ParamByName(dbgrdh2.Columns[cbb7.ItemIndex+1].FieldName).Value:=trim(rzedit2.Text);
ExecSQL;
//update 再次測驗 set ldt_score='2.19' where s_name='范哲銘' 此代碼在查詢分析器中執行成功
RzButton1.Click;
rzedit2.Text:='';
各位仁兄,幫個忙啦!!!!!
uj5u.com熱心網友回復:
with dataset dobegin
post;
next;
if eof then
last;
edit成績.setfocus;
end;
以上只是思路
uj5u.com熱心網友回復:
1、使用SQL陳述句更新本行資料。2、更新后,通過Next進入下一行。
3、重復1-2
uj5u.com熱心網友回復:

參考代碼:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=13) then
begin
with ADOQuery2 do
begin
close;
SQL.Text:='select * from DrawLine where lineid='+edit2.text+' ';
Open;
Edit;
FieldByName('LinePenColor').AsInteger:=StrToInt(edit1.Text);
Post;
end;
if ADOQuery1.RecNo=ADOQuery1.RecordCount then
begin
//ShowMessage('最后一行');
end
else
begin
ADOQuery1.RecNo:=ADOQuery1.RecNo+1;
Edit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('LinePenColor').AsString;
Edit2.Text:=DBGrid1.DataSource.DataSet.FieldByName('LineID').AsString;
end;
//ADOQuery1.DisableControls;
//ADOQuery1.Refresh;
//ADOQuery1.EnableControls;
Edit1.SetFocus;
edit1.SelectAll;
ADOQuery1.Refresh;
end;
end;
uj5u.com熱心網友回復:
SQL陳述句更新本行資料 ,然后nextuj5u.com熱心網友回復:
就這么簡單。
uj5u.com熱心網友回復:
就是這個意思,很不錯!
uj5u.com熱心網友回復:
ADOQuery1和dbgrid組件關聯,ADOQuery2為更新資料所用。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/87381.html
標籤:數據庫相關
下一篇:有辦法實作重啟進入安全模式嗎?
