Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

Как узнать тип данных в таблице (ODBC) ?   Найти похожие ветки 

 
SkyN   (2007-04-19 17:14) [0]

Как узнать тип данных хранящихся в таблице?

К БД обращаюсь через ADO -> ODBC

Список таблиц и полей получаю через ADOConnection (GetTableNames, GetFieldNames), осталось узнать какой тип данных в каждом поле.


 
Desdechado ©   (2007-04-19 17:19) [1]

Родной или его дельфийский аналог?


 
SkyN   (2007-04-19 17:29) [2]

Нужно разделение
 Целочисленный
 Дробное число
 Строка
Если тип строка, то размер


 
Плохиш ©   (2007-04-19 17:33) [3]

FieldDefs


 
Desdechado ©   (2007-04-19 17:47) [4]

SELECT * FROM tbl WHERE 1=0


 
sniknik ©   (2007-04-19 17:57) [5]

ADOConnection.OpenSchema()


 
SkyN   (2007-04-20 17:13) [6]

То, что получилось:

uses
 ADODB;
procedure TForm1.Button1Click(Sender: TObject);
var
 adoconnection: Tadoconnection;
begin
 adoconnection := Tadoconnection.Create(Application);
 adoconnection.ConnectionString := "Provider=MSDASQL.1;Persist Security Info=False;Data Source="+BaseName;
 adoconnection.LoginPrompt := False;
 adoconnection.GetTableNames(ListBox1.Items);
 adoconnection.Free;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
 i: integer;
 adoconnection: tadoconnection;
 adodataset: tadodataset;
 S: String;
begin
 for i := 0 to ListBox1.Count-1 do
   if ListBox1.Selected[i] then begin
     ///////////////////
       adoconnection := Tadoconnection.Create(Application);
       adoconnection.ConnectionString := "Provider=MSDASQL.1;Persist Security Info=False;Data Source="+BaseName;
       adoconnection.LoginPrompt := False;
       adodataset := tadodataset.Create(Application);

       adoconnection.OpenSchema(siColumns,VarArrayOf([Null, Null, ListBox1.Items[i]]),EmptyParam,ADODataSet);
       ListBox2.Clear;
       While not ADODataSet.Eof do begin
         if not ADODataSet.FieldByName("CHARACTER_MAXIMUM_LENGTH").IsNull then S := " Текстовый "+ADODataSet.FieldByName("CHARACTER_MAXIMUM_LENGTH").AsString;
         if not (ADODataSet.FieldByName("NUMERIC_PRECISION").IsNull and ADODataSet.FieldByName("NUMERIC_SCALE").IsNull) then S := " Числовой ";
         ListBox2.Items.Add(ADODataSet.FieldByName("COLUMN_NAME").AsString+S);
         ADODataSet.Next;
       end;

       adodataset.Free;

       adoconnection.Free;
     ///////////////////
     Break;
   end;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
2-1182842047
peter
2007-06-26 11:14
2007.07.22
Fast Report


15-1182388452
FBuilder
2007-06-21 05:14
2007.07.22
kiusercallbackdispatcher или почему висим?


2-1182829827
Dreamse
2007-06-26 07:50
2007.07.22
Как из массива который содержит список нескольких DataTime


1-1179163372
Kolan
2007-05-14 21:22
2007.07.22
Управление доступностью кнопок, как организовать?


3-1176974958
Ega23
2007-04-19 13:29
2007.07.22
Псевдо-событийная вычитка данных из БД и вокруг неё