![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать тип данных в таблице (ODBC) ? [D7]
SkyN © (2007-04-19 17:14:00)Как узнать тип данных хранящихся в таблице?
К БД обращаюсь через ADO -> ODBC
Список таблиц и полей получаю через ADOConnection (GetTableNames, GetFieldNames), осталось узнать какой тип данных в каждом поле.
SkyN (2007-04-20 17:13:00) [1]То, что получилось:
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;
sniknik (2007-04-19 17:57:00) [2]ADOConnection.OpenSchema()
Desdechado (2007-04-19 17:47:00) [3]SELECT * FROM tbl WHERE 1=0
Плохиш (2007-04-19 17:33:00) [4]FieldDefs
SkyN (2007-04-19 17:29:00) [5]Нужно разделение
Целочисленный
Дробное число
Строка
Если тип строка, то размер
Desdechado (2007-04-19 17:19:00) [6]Родной или его дельфийский аналог?