在数据库中一个表中有ID 和NAME字段
在设计窗口中输入ID,但是不知道怎么才能显示相应的NAME
str:=Edit1.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select name from 学生分数表 Str=ID');
str:=fieldbyname('ID').asinteger;
j:=fieldbyname('name').asinteger;
Edit2.text:=inttostr(j);
ADOQuery1.Open;
程序始终不能实现.请高手.指点怎么样实现这个功能(具体的代码).
在设计窗口中输入ID,但是不知道怎么才能显示相应的NAME
str:=Edit1.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select name from 学生分数表 Str=ID');
str:=fieldbyname('ID').asinteger;
j:=fieldbyname('name').asinteger;
Edit2.text:=inttostr(j);
ADOQuery1.Open;
程序始终不能实现.请高手.指点怎么样实现这个功能(具体的代码).
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select name from 学生分数表 where ID=:Str');
ADOQuery1.Parameters[0].Value:=StrToInt(Str);
ADOQuery1.Open; with ADOQuery1 do
begin
str:=fieldbyname( 'ID ').asinteger;
j:=fieldbyname( 'name ').asinteger; //Name 会是 Integer?!!
end;
Edit2.text:=inttostr(j);
Const
sSQL ='Select Name From StudentGrade Where ID='
Begin
if key =#13 then
With ADOQuery1 do
Begin
Close ;
SQL.Clear;
SQL.ADD(sSQL+QuotedStr(Trim(Edit1.Text)));
Open
End;
If ADOQuery1.RecordCount>0 then
ADOQuery1.FieldByName('Name').AsString
Else
Begin
ShowMessage('很抱歉,没有找到你要的值,请重新输入ID号');
Edit1.Clear;
Edit1.SetFocus;
End;
End;
Const
sSQL = 'Select Name From StudentGrade Where ID= '
Begin
if key =#13 then
With ADOQuery1 do
Begin
Close ;
SQL.Clear;
SQL.ADD(sSQL+QuotedStr(Trim(Edit1.Text)));
Open
End;
If ADOQuery1.RecordCount >0 then
Edit1.Text :=ADOQuery1.FieldByName( 'Name ').AsString
Else
Begin
ShowMessage( '很抱歉,没有找到你要的值,请重新输入ID号 ');
Edit1.Clear;
Edit1.SetFocus;
End;
End; 哈哈,刚才少了个赋值的东东
var
str:string;
begin
with ADOQuery1 do
begin
try
str:=Edit1.text;
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add('select name from TABLE1 where ID='''+str+'''');
ADOQuery1.Open;
i:=fieldbyname('name').AsString;
str:=fieldbyname('ID').AsString;
ADOQuery1.Parameters[0].Value:=Str ;
Edit2.Text:=i;
Edit1.Text:=str; finally
end;
end;end;
end.
这代码还是有错误阿.错误是ADOQuery:field 'ID'not found.
Const
sSQL = 'Select Name From StudentGrade Where ID= ' ;
Begin
if key =#13 then
With ADOQuery1 do
Begin
Close ;
SQL.Clear;
SQL.ADD(sSQL+QuotedStr(Trim(Edit1.Text)));
Open
End;
If ADOQuery1.RecordCount >0 then
Edit1.Text :=ADOQuery1.FieldByName( 'Name ').AsString
Else
Begin
ShowMessage( '很抱歉,没有找到你要的值,请重新输入ID号 ');
Edit1.Clear;
Edit1.SetFocus;
End;
End; 我总是丢三落四的,上面的常量那又少了个分号
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then //在edit1里输入后按回车键执行查询
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select name from test where id=:tempid');
parameters.ParamByName('tempid').Value:=strtoint(trim(edit1.Text));
open;
end;
if adoquery1.RecordCount>0 then
edit2.Text:=adoquery1.fieldbyname('name').AsString;
else
application.MessageBox('没有找到信息','提示',mb_ok+mb_iconinformation);
end;
end;
end.
也可以加个button,在button的onclick事件里执行上述代码即可,也就是最外层begin和end之间的代码
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
with ADOQuery1 do
begin
try
str:=Edit1.text;
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.add('select name,score,scoreduan,xianshi from TABLE1 where ID='''+str+'''');
ADOQuery1.Open;
If ADOQuery1.Recordset.RecordCount >0 then
Edit4.Text:=fieldbyname('scoreduan').asstring;
Edit3.Text:=fieldbyname('name').AsString;
Edit2.Text:=fieldbyname('score').AsString; Memo1.Text:=fieldbyname('xianshi').asstring
else application.MessageBox('没有找到信息','提示',mb_ok+mb_iconinformation);
finally
close;
end;
end; end;
end.提示的错误是[Error] Unit2.pas(71): E2125 EXCEPT or FINALLY expected
[Error] Unit2.pas(89): E2029 '.' expected but ';' found
[Fatal Error] Project2.dpr(5): F2063 Could not compile used unit 'Unit2.pas'
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add( 'select id,kname from 学生分数表 Str='+quotedstr(str));
ADOQuery1.Open;
if adoqurey1.isempty
then
begin
ShowMessage( '很抱歉,没有找到你要的值,请重新输入ID号 ') ;
edit1.clear;edit1.setfocus;
end
else
Edit2.text:=ado.fieldbyname( 'name ').asstring;
在TForm1中声明一个私有的TStringList对象IDNameList,用以存储ID与Name值对。procedure TForm1.Create(Sender: TObject);
begin
IDNameList := TStringList.Create;
with ADOQuery1 do begin
SQL.Text := '';
Open;
While not Eof do begin
IDNameList.Values[FieldByName('ID').AsString] := FieldByName('Name').AsString;
Next;
end;
Close;
end;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
IDNameList.Clear;
IDNameList.Free;
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
Index: Integer;
begin
if key= Chr(VK_RETURN) then begin
Index := IDNameList.IndexOfName(Trim(TEdit(Sender).Text));
if Index > -1
then Edit2.Text := IDNameList.ValueFromIndex[Index]
else ShowMessage('没有找到信息');
end;
end;