Форум: "Начинающим";
Текущий архив: 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