Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать тип поля в открытом датасете?


Страницы:   1 2

SergP. ©   (2006-09-12 11:07:00) 

Имеется ввиду если поле типа number(20,4) то как узнать количество знаков и кол. знаков после точки?


ANB   (2006-09-12 16:16:00) [21]


> SergP.   (12.09.06 16:11) [17]

Весьма приближенно получишь. Тогда уж лучше по словарю лазить.


SergP.   (2006-09-12 16:11:00) [22]

> [4] Reindeer Moss Eater ©   (12.09.06 11:46)
> Кол-во знаков после точки = TField.Size


т.е. типа так: ?


procedure CreateDBF(sql,filename:string);
var
FieldDesc:array of packed record
         Name:array[1..11] of char;  //Имя поля
         Typ : char;                 //тип поля
         Res : longint;              //резерв, х/з для чего
         Len : byte;                 //общая длина поля
         Dec : byte;                 //число десятичных знаков
         Res2: array[1..13] of byte; //еще один резерв
         Tag : byte;                
         end;
...
i:integer;
begin
 with TADODataSet.Create(Application) do
   try
      ...  
      CommandText:=sql;
      Open;
      SetLength(FieldDesc,FieldCount);
      for i:=0 to FieldCount-1 do
        begin
          ...
          FieldDesc[i].Len:=Fields[i].DataSize;
          FieldDesc[i].dec:=Fields[i].Size;

          ...
        end;
     ...
   finally
     free;
   end;
end;


SergP.   (2006-09-12 16:05:00) [23]

> [15] ANB ©   (12.09.06 15:47)
>
> > SergP ©   (12.09.06 14:51) [14]
>
> DBF то зачем нужен ? Для работы напрямую или импорта в другую
> БД ?


Для использования в другом (не мной писаном) ПО.


ANB   (2006-09-12 15:47:00) [24]


> SergP ©   (12.09.06 14:51) [14]

DBF то зачем нужен ? Для работы напрямую или импорта в другую БД ?


SergP   (2006-09-12 14:51:00) [25]

> [12] Anatoly Podgoretsky ©   (12.09.06 14:45)
> И также дата-время, кроме того о чем ты вообще говоришь,
> что такое dbf? Пока это три буквы.


Извиняюсь. это DBASE IV.
Надеялся что будет понятно по умолчанию...

А насчет даты-времени - то преоборазуется в дату (с потерей времени) и засунется в дбф.


SergP   (2006-09-12 14:49:00) [26]

> [11] Anatoly Podgoretsky ©   (12.09.06 14:44)
> Не реально, как ты представишь в дбф numeric или numeric(38,
> 21)


А у меня в выборках будут только такие типы, которые нормально представляются в дбф. (например numeric(16,4) или numeric(16,0).
Вобщем на фоксе (экспорт из Оракла в дбф) элементарно делается (в 4 строчки), просто неудобно для работы. хочу на дельфи сделать.


Anatoly Podgoretsky   (2006-09-12 14:45:00) [27]

И также дата-время, кроме того о чем ты вообще говоришь, что такое dbf? Пока это три буквы.


Anatoly Podgoretsky   (2006-09-12 14:44:00) [28]

Не реально, как ты представишь в дбф numeric или numeric(38,21)


SergP   (2006-09-12 14:42:00) [29]

> [9] Anatoly Podgoretsky ©   (12.09.06 14:37)
> SergP.   (12.09.06 12:40) [7]
> Оракл и дбф - нереально в общем случае.


В данном случае случай не общий...

Если учесть то что в выборке я буду использовать только типы (символьный (varchar), числовой (numeric) и дата (дата-время)) то реально.


Anatoly Podgoretsky   (2006-09-12 14:37:00) [30]

SergP.   (12.09.06 12:40) [7]
Оракл и дбф - нереально в общем случае.


ANB   (2006-09-12 12:41:00) [31]

клади строкой и не мучайся. AsString завсегда отработает


SergP.   (2006-09-12 12:40:00) [32]

> [5] novill ©   (12.09.06 11:50)
> а вам обязательны такие подробности? fieldtype не хватает?


Мне dbf нужно создать той же структуры


Desdechado   (2006-09-12 12:30:00) [33]

> fieldtype не хватает?
Это результат интерпретации типа поля на клиенте. А для создания NUMERIC, например, его недостаточно. Потому как он может интерпретироваться как ftFloat, ftBCD, ftFmtBCD в зависимости от размерности и точности.


novill   (2006-09-12 11:50:00) [34]

а вам обязательны такие подробности? fieldtype не хватает?


Reindeer Moss Eater   (2006-09-12 11:46:00) [35]

Кол-во знаков после точки = TField.Size


SergP.   (2006-09-12 11:46:00) [36]

Хм... Мне нужно сделать select из Оракла и потом результат запихнуть в Dbf

Каким образом тогда можно типы полей узнать?


novill   (2006-09-12 11:40:00) [37]

+1

Такие подробности в датасете обычно не хранятся. надо запрашивать из описания.


ANB   (2006-09-12 11:34:00) [38]

Никак.
Доставай из словаря.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо