请较关于Locate函数的参数的问题——分不多了,请原谅!(30分)

N

nt941

Unregistered / Unconfirmed
GUEST, unregistred user!
我照着书中的例子输入的代码。编译的时候在Locate函数这一行出现如下两个错误:

[error]DataUpDateUnit.pas[82]:Undeclared indentifier:'loPartialKey'
[error]DataUpDateUnit.pas[82]:Incompatible types'TLocate Option' and 'Integer'

请问应该怎么解决?本人分不多了,请原谅!谢谢!
为了大家看清全貌,我把该行(我用“//”标出的地方!)所在的整个函数抄录如下:

procedure TDataUpdateForm.Button1Click(Sender: TObject);
begin
with UpDateDataModule.StudentsTable do
begin
if SpinEdit1.Text='' then
begin
ShowMessage('请输入学号:');
SpinEdit1.SetFocus;
exit;
end;
// if not Locate('SNo',VarArrayof([spinEdit1.text]),[loPartialKey]) then //
begin
ShowMessage('无此记录,不能修改!');
exit;
end;
Edit;
FieldByName('Name').AsString:=Edit1.Text;
FieldByName('SNo').AsString:=SpinEdit1.Text;
FieldByName('Sex').AsString:=Edit3.Text;
FieldByName('Entrance').AsDateTime:=DateTimePicker1.Date;
Post;
ShowMessage('修改成功!');
end;
end;
 
代码没错,检查一下,uses 里面有没有 DB

-----
http://www.8421.org
 
错!
你的字段'SNo'是Integer型,而你给的spinEdit1.Text是String型。类型不匹配。
 
if not Locate('SNo',IntToStr(spinEdit1.value),[loPartialKey]) then
 
定义一个变量
var
LocatOpt:TLocateOptions;

LocatOpt = [loPartialKey];

if not Locate('SNo',VarArrayof([spinEdit1.text]),LocatOpt) then
...
 
增加DB单元
 
看提示应该是类型不匹配吧
 
Creates and fills a one-dimensional variant array.

Unit

Variants

Category

Variant support routines

function VarArrayOf(const Values: array of Variant): Variant;

Description

VarArrayOf returns a one-dimensional variant array with the elements given by the Values parameter.

The low bound of the returned array is zero, the high bound is the number of values given by the Values parameter less one, and the element type is Variant.

增加DB,Variants单元,VarArrayOf会自动类型匹配
 
多人接受答案了。
 
顶部