菜鸟问:动态数组!!!!!!(20分)

  • 主题发起人 主题发起人 evenzaj
  • 开始时间 开始时间
E

evenzaj

Unregistered / Unconfirmed
GUEST, unregistred user!
VAR
J:INTEGER
MM:ARRAY OF STRING;
以上是全局变量
procedure TForm1.Button2Click(Sender: TObject);
VAR
K,M,X:INTEGER;
begin
WITH ADOQUERY3 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('SELECT COUNT(*)CO1 FROM EMPLOYEE');
OPEN;
IF NOT ADOQUERY3.IsEmpty THEN
J:=FIELDBYNAME('CO1').AsInteger;
SETLENGTH(MM,J);
END;
ADOQUERY2.OPEN;
FOR K:=0 TO J-1 DO
BEGIN
WHILE NOT ADOQUERY2.Eof DO
BEGIN
MM[K]:=ADOQUERY2.FIELDBYNAME('EMP_NAME').AsString;
ADOQUERY2.NEXT;
END
//这里动态数组MM的值显示出数据库里的值,是正确的

END;
FOR X:=0 TO J-1 DO
BEGIN
SHOWMESSAGE(MM[X]);
END;
为什么在X:=0 TO J-1这个循环中,看到的动态数组的值只有上面给它附值的最后一个值
其余的值都看不到了??急!!!
 
//FOR K:=0 TO J-1 DO
// BEGIN
WHILE NOT ADOQUERY2.Eof DO
BEGIN
MM[K]:=ADOQUERY2.FIELDBYNAME('EMP_NAME').AsString;
ADOQUERY2.NEXT;
END
//这里动态数组MM的值显示出数据库里的值,是正确的

//END;
把这里的for循环去掉就好了。
 
setlength(MM,count)没有?
 
//FOR K:=0 TO J-1 DO
// BEGIN
WHILE NOT ADOQUERY2.Eof DO
BEGIN
MM[K]:=ADOQUERY2.FIELDBYNAME('EMP_NAME').AsString;
ADOQUERY2.NEXT;
END
//这里动态数组MM的值显示出数据库里的值,是正确的

//END;

改为
K:=0;
WHILE (NOT ADOQUERY2.Eof) and K<j DO
BEGIN
MM[K]:=ADOQUERY2.FIELDBYNAME('EMP_NAME').AsString;
K:=K+1;
ADOQUERY2.NEXT;
END
//这里动态数组MM的值显示出数据库里的值,是正确的

//END;

 

Similar threads

S
回复
0
查看
677
SUNSTONE的Delphi笔记
S
S
回复
0
查看
636
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
890
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部