Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];

Вниз

ADO + TDBGrid + результат хранимой процедуры   Найти похожие ветки 

 
plastic   (2009-04-03 13:44) [0]

Сильно не бейте, пытаюсь научиться... :)
Есть желание показать в DBGrid набор данных, возвращаемый хранимой процедурой (MSSQL Server). Хранимка из одной строки - select * from mytable

К серверу подключаюсь через ADO. Коннект проходит, далее вызываю:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ADOConnection1.Connected := True;
 ADOStoredProc1.ExecProc;
 DBGrid1.DataSource := ADOStoredProc1.DataSource;
 DBGrid1.DataSource.DataSet.Open;
end;


Грид остается пустой...
Подскажите, плиз, как победить... :)


 
clickmaker ©   (2009-04-03 13:47) [1]

не тот DataSource.

ADOConnection1.Connected := True;
SomeDataSource.DataSet := ADOStoredProc1;
DBGrid1.DataSource := SomeDataSource;
DBGrid1.DataSource.DataSet.Open;


 
Ega23 ©   (2009-04-03 13:48) [2]

ADOStoredProc1.Connection := ADOConnection1;
DataSource1.DataSet := ADOStoredProc1;
DBGrid1.DataSource := DataSource1;
ADOConnection1.Connected := True;
ADOStoredProc1.ExecProc;


 
plastic   (2009-04-03 14:38) [3]

Спасибо, заработало... :)


 
MsGuns ©   (2009-04-03 15:17) [4]

Правильнее не использовать TADOStoredProc вообще:

DBGrid.DataSource.DataSet := ADOCommand.Execute


 
plastic   (2009-04-03 17:25) [5]


> MsGuns ©   (03.04.09 15:17) [4]
> Правильнее не использовать TADOStoredProc вообще:
>
> DBGrid.DataSource.DataSet := ADOCommand.Execute


Не заработало...
Не хочет присваивать DataSet"у значение типа _Recordset


 
clickmaker ©   (2009-04-03 17:28) [6]

ADODataSet1.Recordset := ADOCommand1.Execute;
DBGrid.DataSource.DataSet := ADODataSet1;


 
plastic   (2009-04-03 18:14) [7]


> clickmaker ©   (03.04.09 17:28) [6]
> ADODataSet1.Recordset := ADOCommand1.Execute;
> DBGrid.DataSource.DataSet := ADODataSet1;


Спасибо, но получился AV на последней строке...
Присвоение не проходит.

   ADOCommand1.Connection     := ADOConnection1;
   ADOConnection1.Connected   := True;
   ADODataSet1.Recordset      := ADOCommand1.Execute;
   DBGrid1.DataSource.DataSet := ADODataSet1;


 
plastic   (2009-04-03 18:21) [8]

Вот так получилось с ADOCommand...

   ADOCommand1.Connection     := ADOConnection1;
   ADOConnection1.Connected   := True;

   ADODataSet1.Recordset      := ADOCommand1.Execute;
   DataSource1.DataSet        := ADODataSet1;
   DBGrid1.DataSource         := DataSource1;


Это правильно ? Или я с DataSource1 лишнего накрутил ? :)


 
clickmaker ©   (2009-04-03 18:25) [9]

>   DataSource1.DataSet        := ADODataSet1;
>   DBGrid1.DataSource         := DataSource1;

если это лежит на форме, то можно в дизайнере все назначить


 
plastic   (2009-04-03 18:47) [10]

т.е. DataSource1 по любому обязателен ?
Напрямую передать ADOCommand1.Execute в DBGrid не получится ?
:)


 
Ega23 ©   (2009-04-03 18:49) [11]


> Напрямую передать ADOCommand1.Execute в DBGrid не получится
> ?


Нет. DBGrid работает с TDataSource. О природе набора данных DBGrid ничего не знает.


 
plastic   (2009-04-03 19:00) [12]

Спасибо еще раз.
Если можно, общетеоретический вопрос (если это не ХВ) - почему

> MsGuns ©   (03.04.09 15:17) [4]
> Правильнее не использовать TADOStoredProc вообще:

???
Для чего то же этот компонент предназначен ?


 
Медвежонок Пятачок ©   (2009-04-03 19:08) [13]

Для мигрирующих с бде на адо.
Чтобы не все и не сразу переделывать.


 
sniknik ©   (2009-04-03 19:09) [14]

> Для чего то же этот компонент предназначен ?
афтавизм оставшийся от BDE-шной логики, по идее борланда "для упрощения перехода с него". но по факту это мина ловушка для новичков в ADO. (+ аналоги TADOTable, TADOQuery. для того же)


 
plastic   (2009-04-03 19:20) [15]


> (+ аналоги TADOTable, TADOQuery. для того же)

Т.е. в общем случае для взаимодействия с БД через ADO достаточно ADOConnection + ADOCommand ? И для выполнения запросов, и для вызова хранимок, и вообще ?


 
Ega23 ©   (2009-04-03 19:43) [16]


> Т.е. в общем случае для взаимодействия с БД через ADO достаточно
> ADOConnection + ADOCommand ? И для выполнения запросов,
> и для вызова хранимок, и вообще ?


В самом-самом общем случае достаточно вообще одного TADOConnection. Ибо у него есть методы Execute.
Но с одим - крайне неудобно работать.
Поэтому, если ты новичок, если ты не сопровождаешь старый проект и если ты не экстремальный кодер - на вкладке ADO оставь TADOConnection, TADOCommand и TADODataSet. Остальное просто убери, чтобы не отображалось.


 
Немо ©   (2009-04-03 19:51) [17]

А чем плох TADOquery


 
Ega23 ©   (2009-04-03 20:24) [18]


> А чем плох TADOquery


Есть кран, есть бульдозер.
Нужно ли каждый раз использовать кранобульдозер?
Иногда бывает, что надо. Чаще всего - нет.


 
sniknik ©   (2009-04-03 20:57) [19]

> Иногда бывает, что надо. Чаще всего - нет.
чаще всего? да никогда. точнее будет.

только у людей с исковерканным пониманием ADO может возникнуть подобная необходимость... имхо. а исковеркать понимание можно как раз используя... ;)


 
MsGuns ©   (2009-04-04 17:43) [20]

>sniknik ©   (03.04.09 20:57) [19]
>чаще всего? да никогда. точнее будет.

RowAffects ?


 
sniknik ©   (2009-04-04 18:28) [21]

> RowAffects ?
о да... вся обертка ради того чтобы это возвращала функция вместо var параметра в процедуре.  ценное качество, как это я забыл про это... все, бросаю все и теперь буду использовать только TADOQuery из-за этого... :)



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

Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1238751873
plastic
2009-04-03 13:44
2009.05.17
ADO + TDBGrid + результат хранимой процедуры


15-1237413872
Алексей Ы.
2009-03-19 01:04
2009.05.17
Share режим и TFileStream


2-1238916126
feDOS
2009-04-05 11:22
2009.05.17
Как огранизовать цикл по выдененным записям (MultiSelect) DBGrid?


3-1220966118
Demo_nik
2008-09-09 17:15
2009.05.17
Определение координат ячейки


15-1236871256
It's not me
2009-03-12 18:20
2009.05.17
Делимость бита





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский