Показать сообщение отдельно
  #4  
Старый 27.05.2011, 16:01
VINCENT VINCENT вне форума
Прохожий
 
Регистрация: 03.09.2010
Сообщения: 16
Репутация: 12
По умолчанию

получился вот такой простатит
Код:
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?
Ответить с цитированием