请教:怎样用数组函数从数据表表中取出函数?(50分)

  • 主题发起人 主题发起人 ywan
  • 开始时间 开始时间
Y

ywan

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥好,小弟在写用数组函数从数据表表中取出函数遇到一些问题,请指教!
具体程序如下:
//从数据表中获得数据,并存进数组
Function GetDatas( GField : Array of string ; DBName : string; Range :string) : string;
var
SQLString :string;
i,j,k :integer;
LSQLString : integer;
Datas : array of string;
begin
for i:=0 to high(Gfield) do
begin
SQLString := SQLString + GField + ' , ';
end;
LSQLString := length(SQLString)-3;
SQlString := copy( SQLString ,0, LSQLString);
SQLString:='select ' +SQLString + ' From ' + DBName + ' '+ Range;
with Aquery do
begin
close;
sql.clear;
sql.add(sqlstring);
open;
k:=0;
while not eof do
begin
for j:=0 to Fieldcount-1 do
begin
Datas[k][j]:=fields[j].asstring;
end;
k:=k+1;
end;
result := Datas[k][j];

end;

end;
出现错误如下:
[Error] fun.pas(145): Incompatible types: 'Char' and 'String'
 
函数声明类型错误。你声明的类型是STRING,而返回值为数组,当然出错了。
你可以这样声明使用
各位大哥好,小弟在写用数组函数从数据表表中取出函数遇到一些问题,请指教!
具体程序如下:
//从数据表中获得数据,并存进数组
procedure GetDatas( GField : Array of string ; DBName : string; Range :string; var Datas : array of string;) : boolean;
var
SQLString :string;
i,j,k :integer;
LSQLString : integer;
begin
try
for i:=0 to high(Gfield) do
begin
SQLString := SQLString + GField + ' , ';
end;
LSQLString := length(SQLString)-3;
SQlString := copy( SQLString ,0, LSQLString);
SQLString:='select ' +SQLString + ' From ' + DBName + ' '+ Range;
with Aquery do
begin
close;
sql.clear;
sql.add(sqlstring);
open;
k:=0;
while not eof do
begin
for j:=0 to Fieldcount-1 do
begin
Datas[k][j]:=fields[j].asstring;
end;
k:=k+1;
end;
end;
Result:=True;
except
result:=False;
end;
 
zhanggm,谢谢你的指教,不过按照你所写的去做还是不行。
 
你怎么定义一维动态数组datas,却用二维数组来表示?不懂!没有试验![:(]
仔细检查,不难的!
 
接受答案了.
 
后退
顶部