получился вот такой простатит
Код:
procedure TForm1.Create_out_file;
var
integ : Tfieldtype;
begin
ADO_NSi_Query.Close;
ADO_NSi_Query.sql.clear;
ADO_NSi_Query.SQL.add('select '+fiel+' from NSI where (mask_point='''+masks+''')');
ADO_NSi_Query.Active:= true;
tm:=0;
counter:=0;
while counter < ADO_NSi_Query.FieldCount do //выкидываем пустые значения и счетаем количество записей
begin
if ADO_NSi_Query.Fields[counter].AsString <> '' then
begin
tm:= tm+1;
counter:=counter+1;
end
else
begin
counter:=counter+1;
end;
end;
edit3.Text:= inttostr(tm); //проверка
with TTable.Create(nil) do
begin
ADO_CFG_Query.Close;
ADO_CFG_Query.sql.Clear;
ADO_CFG_Query.sql.add('select PATH_TO_OUT_FILES from NSI where MASK_POINT= ('''+masks+''') ');
ADO_CFG_Query.Active:=true;
DatabaseName:= ADO_CFG_Query.Fields[0].AsString; //(* alias *)
ADO_CFG_Query.sql.Clear;
ADO_CFG_Query.Close;
TableName:= r[0]+r[1]+r[2]+r[3]+r[4]+r[5];
TableType := ttFoxPro;
if TableName = '' then
begin
showMessage('!!!!!!!!!!!!!!!!!!!!!');
end
else
begin
with FieldDefs do
begin
counter:=0;
counter1:=2;
counter2:=3;
while counter < tm do
begin
if ADO_NSi_Query.Fields[counter1].AsString = 'FTInteger' then
begin
integ:= FTInteger;
end;
if ADO_NSi_Query.Fields[counter1].AsString = 'FTString' then
begin
integ:= FTString;
end;
if ADO_NSi_Query.Fields[counter1].AsString = 'FTDate' then
begin
integ:= FTDate;
end;
Add(ADO_NSi_Query.FieldsAdd(ADO_NSi_Query.Fields[counter].AsString,integ,ADO_NSi_Query.Fields[counter2].AsInteger,false);
counter:= counter+4;
counter1:= counter1+4;
counter2:= counter2+4
end;
CreateTable;
ADO_NSi_Query.sql.clear;
ADO_NSi_Query.Close;
ADO_CFG_Query.sql.Clear;
ADO_CFG_Query.Close;
end;
end;
end;
end;
сделал так потомучто не могу понять если я поставлю в код
Add(ADO_NSi_Query.FieldsAdd(ADO_NSi_Query.Fields[counter].AsString,ADO_NSi_Query.Fields[counter1].DataType,ADO_NSi_Query.Fields[counter2].AsInteger,false);
создает таблицу и делает тип полей почемуто строковое.
или он так делает так как берет параметр из структуры базы NSI?