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

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

Информация о таблице с помощью 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 ?


Наверх

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