帮我看下,一个查询用函数处理返回2个不同类型的值的问题。不知能不能行得通。(50分)

  • 主题发起人 主题发起人 blude
  • 开始时间 开始时间
B

blude

Unregistered / Unconfirmed
GUEST, unregistred user!
学生表里面有sid,age,score,需要用到的字段,分别是:学号、年龄、分数;数据类型是:integer/integer/real
窗体上有一个EDIT输入学号,一个BUTTON,2个LABEEL分别显示年龄和分数。
想通过查询输入的学号查到相应的年龄和分数。但需要通过一个函数来处理。

////////////////////
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TPar = record
b: Integer; // 年龄
c: real; //分数
end;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


function sinfo(id:integer):tpar;
var
sinfoqry:tadoquery;
sage:integer; //年龄
score:real;//分数
begin
sqry:=tadoquery.Create(sqry);
with sqry do
begin
connection:=tform1.adoconnection1;
sql.Clear ;
sql.add ('select sid,age,score from paper where score ='+''''+id+'''');
open;
sage:=sqry['age'];
score :=sqry['score'];
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
id:integer;//学号
begin
id:=strtoint(edit1.Text);
sinfo(id);
end;

end.
 
Result.b:=sqry.FieldByname('age').asinteger;
Result.C :=sqry.FieldByName('score').asFloat;

procedure TForm1.Button1Click(Sender: TObject);
var
id:integer;//学号
a : TPar;
begin
id:=strtoint(edit1.Text);
a := sinfo(id);
Label1.caption := inttoStr(a.b);
Label2.Caption := floattoStr(a.c);
end;
 
后退
顶部