數據集query自帶了一個函數lookup,它會返回一個任意類型的值,需要3個常量參數:
參數1:字段名,參數2:字段值,參數3:需要返回其值的字段名。此函数主要作取值用。
//參數1為string類型,可以為多個值,用英文狀態下的;隔開【field之間要用英文狀態下的分號;隔開,用逗号,会报错】。
//參數2為variant類型,當參數1傳了多個字段時,參數2就要傳數組過去。
//參數3為string類型。
//前面的const表示調用的時候只是把值複製一份過來而已。
注意:參數1不一定要是主鍵,是唯一索引就行,只要能定位到所需的资料【uniquekey唯一索引,主鍵也算唯一索引】
procedure TForm2.Button1Click(Sender: TObject);
VAR
SS:STRING;
begin
ADOQUERY1.Open;
//數據集的lookup函數會返回一個任意類型的值,需要3個常量參數:
//參數1:字段名,參數2:字段值,參數3:需要返回其值的字段名
//SS:=ADOQUERY1.Lookup('NAME','jery','SCORE'); //60
SS:=ADOQUERY1.Lookup('NAME','jery','DATES');//2020/01/04 上午 10:03:50
SHOWMESSAGE(SS);
ADOQUERY1.Close;
end;
lookup的详细参数相关:
详细运用:
procedure TForm2.Button1Click(Sender: TObject);
VAR
TempFieldList: TStringList;
ss:string;
s1:VARIANT;
begin
adoquery1.Open;
//ss:=ADOQUERY1.LOOKUP('name','niki','score'); //90
//參數1為string類型,可以為多個值,用英文狀態下的;隔開【field之間要用英文狀態下的分號;隔開,用逗号,会报错】
//參數2為variant類型,當參數1傳了多個字段時,參數2就要傳數組過去
//參數3為string類型
//前面的const表示調用的時候只是把值複製一份過來而已
//注意:參數1不一定要是主鍵,是唯一索引就行,只要能定位到所需的资料【uniquekey唯一索引,主鍵也算唯一索引】
ss:=VarToStr(adoquery1.Lookup('name;score',vararrayof(['niki',90]),'dates'));//空
//因为返回值是变体类型,當值为null時,赋值给字符串,转换不过去,就會報錯!用VarToStr函數轉換一下即可。
showmessage(ss);
//還可以返回多個字段的值。此時要用variant類型的變量來承接!!
s1:=adoquery1.Lookup('name;score',vararrayof(['niki',90]),'dates;passwords');//,n123
showmessageFMT('%S,%S',[S1[0],S1[1]]);//彈出',n123'
adoquery1.Close;
{ TempFieldList:=TSTRINGLIST.Create;
TempFieldList.CommaText:='PUR_DATE,A.VENDOR,A.PUR_NO';
SHOWMESSAGEFMT('%D',[TempFieldList.Count]); //3
TempFieldList.Free;
TempFieldList:=NIL; }
end;
Adoquery1的sql語句(SELECT * FROM AAA)返回的數據集如下:
NAME PASSWORDs score DATEs
hary n123 90 2019-12-31 08:22:09.253
niki n123 90 NULL
miya n123 80.5 2019-12-31 08:20:51.987
hary n123 90 2019-12-31 08:22:09.253
niki n123 80.5 2019-12-31 08:22:09.253
jery n111111 60 2020-01-04 10:03:50.407
jery n111111 60 2020-01-04 10:03:50.407
jery n111111 60 2020-01-04 10:04:52.670
NANA n123 90 2021-05-20 14:26:02.607