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

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

Доступ к данным через TDBGrid и TADODataSet


leklerk ©   (2012-03-16 19:11:00) 

Добрый день! Я видел примеры, когда к данным в гриде обращаются так:
DBGrid1.DataSource.DataSet.FieldByName('sum').AsFloat.
Сам же я использую
ADODataSet1.FieldByName('sum').Value.
Это одно и то же?


CRLF   (2012-03-16 23:04:00) [1]

шо ви такое в "начинающих" советуете... полную уверенность может дать только страховой полис. и оператор is...


sniknik   (2012-03-16 22:53:00) [2]

> обращаясь к DBGrid1.DataSource.DataSet -- только к методам и свойствам TDataSet.
при уверенности использования ADODataSet-а привидение типа -
TADODataSet(DBGrid1.DataSource.DataSet)
позволит все.


CRLF   (2012-03-16 22:38:00) [3]


> AsFloat я и не заметил, ну да по контексту вопрос о другом
> был.
А я не с тобой разговаривал. :-) Просто пока я писал ответ на [2], ответил ты.


Inovet   (2012-03-16 21:31:00) [4]

> [4] CRLF   (16.03.12 19:49)

AsFloat я и не заметил, ну да по контексту вопрос о другом был.


Мдя   (2012-03-16 21:14:00) [5]

http://www.sql.ru/forum/actualthread.aspx?tid=927024


CRLF   (2012-03-16 19:49:00) [6]

От того, что ты подразумеваешь под "одно и то же". Первое выражение даёт значение типа Double, второе -- типа Variant. Если ADODataSet1.FieldByName('sum').Value = Null, то var D: Double; D := ADODataSet1.FieldByName('sum').Value приведёт к возбуждению исключения. D := ADODataSet1.FieldByName('sum').AsFloat даст 0.

Обращаясь к ADODataSet1 ты можешь пользоваться свойствами и методами TAdoDataSet, обращаясь к DBGrid1.DataSource.DataSet -- только к методам и свойствам TDataSet.

Обращаясь к DBGrid1.DataSource.DataSet неплохо бы проверять Assigned(DBGrid.DataSource) and Assigned(DBGrid.DataSource.DataSet) -- во избежание.


Inovet   (2012-03-16 19:45:00) [7]

> [2] leklerk ©   (16.03.12 19:35)
> И от чего же оно depends?

Например, сейчас у тебя назначен ADODataSet1, а через минуту ADODataSet2. Или заранее ты не ничего не знаешь о ADODataSet и требуется найти. Ну и кроме того первое несколько дольше.


leklerk   (2012-03-16 19:35:00) [8]


> И да, и нет. It depends.
>
>

И от чего же оно depends?


CRLF   (2012-03-16 19:28:00) [9]

Лучше используй ADODataSet1sum.AsFloat


> Это одно и то же?
И да, и нет. It depends.


Наверх

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