![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Информация о таблице с помощью sp_help [D7, MSSQL]
MsGuns © (2006-06-30 14:06:00)Данные об указанной таблице возвращаются блоками: строка о самой таблице, НД о колонках и т.д., что хорошо видно в QA
В Дельфи пытаюсь "достучаться" до полей, ограничений и т.д. :
ADODataSet.RecordSet := ADOCommand.Execute
но получаю только строку о таблице.
Как быть с "остальными" рекодсетами ?
Спасибо
Fay (2006-06-30 17:13:00) [1]2 MsGuns © (30.06.06 15:21) [2]
var
r : _Recordset;
begin
...
r := ADOConnection.Execute('exec sp_help Table');
...
end;
Не пробовал ?
MsGuns (2006-06-30 16:56:00) [2]>stone © (30.06.06 16:15) [7]
>а сразу sp_columns использовать не проще?
Спасибо. Приму к сведению. Правда, там нет информации о ключах и индексах..
>Ega23 © (30.06.06 16:17) [8]
>Я бы на твоём месте не пренебрегал try-finally try-except:
Ежа, я и не пренебрегаю. Только вот лень было набирать тут ;)
В проекте (к сожалению на другой тачке и в другой сетке), конечно, все "научно". Да и объекты я называю, естественно, не Edit17, ADOConnection1 и т.д.
Спасибо еще раз всем. Разобрался ;)))
Ega23 (2006-06-30 16:17:00) [3]
> Переделал на
>
> with TADODataSet.Create(nil) do
> begin
> Connection := TADOConnection;
> CommandText := 'exec sp_help '+TableName;
> Open;
> RecordSet := NextRecordSet();
> <Закачка в TList данных о полях таблицы>
> Close;
> Free;
> end;
Я бы на твоём месте не пренебрегал try-finally try-except:
with TADODataSet.Create(nil) do
begin
try
Connection := TADOConnection;
CommandText := 'exec sp_help '+TableName;
try
Open;
RecordSet := NextRecordSet();
<Закачка в TList данных о полях таблицы>
except
......
end;
finally
Close;
Free;
end;
end;
stone (2006-06-30 16:15:00) [4]а сразу sp_columns использовать не проще?
MsGuns (2006-06-30 16:11:00) [5]>Ega23 © (30.06.06 16:00) [5]
>Ну да, правильно. А тогда нафига ADODataSet.RecordSet := ADOCommand.Execute?
Ну потому что нельзя же вот так сразу, палкой по банановому дереву. Сначала надо попытаться с ее помощью повыше подпрыгнуть ;))
Переделал на
with TADODataSet.Create(nil) do
begin
Connection := TADOConnection;
CommandText := 'exec sp_help '+TableName;
Open;
RecordSet := NextRecordSet();
<Закачка в TList данных о полях таблицы>
Close;
Free;
end;
Ega23 (2006-06-30 16:00:00) [6]
> Да нет, просто после интербэйза, бде и акцеса привык в TXXDataSet/TXXQuery
> писать SELECT, а вот всякие апдейты-инсерты-делеты - в TADOCommand
> (ADO)
Ну да, правильно. А тогда нафигаADODataSet.RecordSet := ADOCommand.Execute?
MsGuns (2006-06-30 15:55:00) [7]>Ega23 © (30.06.06 15:37) [3]
>Не понял. А ты что, всегда запросы на возвращение НД через ADOCommand делаешь?
Да нет, просто после интербэйза, бде и акцеса привык в TXXDataSet/TXXQuery писать SELECT, а вот всякие апдейты-инсерты-делеты - в TADOCommand (ADO)
;)
Ega23 (2006-06-30 15:37:00) [8]
> Зациклился на то, что 'exec sp_help Table' можно указывать
> только в TADOCommand ;((
Не понял. А ты что, всегда запросы на возвращение НД через ADOCommand делаешь?
MsGuns (2006-06-30 15:21:00) [9]>Fay © (30.06.06 14:26) [1]
>NextRecordset ?
Спасибо огромное !
Зациклился на то, что 'exec sp_help Table' можно указывать только в TADOCommand ;((
Код
var rc: integer;
...
with ADODataSet do
begin
CommandText := 'exec sp_help Table';
Open;
RecordSet := NextRecordSet(1);
...
end;
прекрасно отработал
Федя, ты -монстер ;))
Fay (2006-06-30 14:26:00) [10]NextRecordset ?