adoquery2.Close; adoquery2.SQL.Clear; adoquery2.SQL.Add('select * from eteaitems'); adoquery2.Open; for i:=0 to adoquery1.RecordCount-1 do begin//1 for j:=0 to adoquery2.RecordCount-1 do begin//2 if tea7[i]=trim(adoquery2.FieldValues['tname']) then begin//3 for a:=0 to 4 do for b:=0 to 5 do if (a=strtoint(trim(adoquery2.FieldValues['tweek']))) and (b=strtoint(trim(adoquery2.FieldValues['ttime'])))then te[a,b]:=0 else te[a,b]:=1; end//3 else for a:=0 to 4 do for b:=0 to 5 do te[a,b]:=1; end;//2 adoquery2.Next; end;//1 我想实现的功能是:从表eteaitems中查找是否有tea7[i]的记录;如果有就执行 begin//3 for a:=0 to 4 do for b:=0 to 5 do if (a=strtoint(trim(adoquery2.FieldValues['tweek']))) and (b=strtoint(trim(adoquery2.FieldValues['ttime'])))then te[a,b]:=0 else te[a,b]:=1; end//3 如果没有就执行for a:=0 to 4 do for b:=0 to 5 do te[a,b]:=1; 但是这个程序只能识别eteaitems中最后一条记录,不能实现我要的功能,你们说我该怎么改!
----------------------------------------------
-
var szSeleSQL, sztweek, szttime: string; b: boolean; begin for i:=0 to adoquery1.RecordCount-1 do begin szSeleSQL := 'select tweek, ttime from eteaitems where tname = '' + tea7[i] + ''; with adoquery2 do begin close; sql.Clear; sql.Add(szSeleSQL); open; b := eof; if not eof then begin sztweek := fieldbyname('tweek').asstring; szttime := fieldbyname('ttime').asstring; end; close; end;
if b then // 找到相同 begin for a:=0 to 4 do for b:=0 to 5 do if (a=strtoint(trim(sztweek))) and (b=strtoint(trim(szttime)))then te[a,b]:=0 else te[a,b]:=1; end else // 未 找到相同 for a:=0 to 4 do for b:=0 to 5 do te[a,b]:=1; end; end;
----------------------------------------------
-
var szSeleSQL, sztweek, szttime: string; b: boolean; begin for a:=0 to 4 do begin for b:=0 to 5 do begin te[a,b]:=1; end; end; for i:=0 to adoquery1.RecordCount-1 do begin szSeleSQL := 'select tweek, ttime from eteaitems where tname = '' + tea7[i] + ''; with adoquery2 do begin close; sql.Clear; sql.Add(szSeleSQL); open; //这里得确保顶多只能查到一条记录,不然我想逻辑有问题。 b:=eof; if not eof then begin sztweek := fieldbyname('tweek').asstring; szttime := fieldbyname('ttime').asstring; end; close; end; if not b then te[strtoint(trim(sztweek)),strtoint(trim(szttime))] :=0 //此处也不太懂,每循环一次,数组就可能有不同的地方被重写了,要干吗啊? end;