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

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

Не открывается TADODataSet


Страницы:   1 2

palva ©   (2008-01-01 12:32:00) 

Пытаюсь открыть ADODataSet1 (метод Open)
получаю "Missing Connection or ConnectionString"
Ну и что тут такого криминального? А если мне надо открыть?
Можно, конечно, использовать CreateOleObject. Но может быть и через VCL как-то можно? Какие-то флаги, опции в DataSet установить? Искал-искал - ничего не нашел.


palva   (2008-01-02 01:54:00) [21]

Спасибо за подсказки, у меня получилось примерно так:

var
 rs: _Recordset;
begin
 rs := CoRecordset.Create;
 rs.Fields.Append('F1', adInteger, 0, adFldUnspecified);
 rs.Fields.Append('F2', adVarChar, 30, adFldUnspecified);
 rs.Fields.Append('F3', adInteger, 0, adFldUnspecified);
 rs.Open(EmptyParam, EmptyParam, 2, 2, 0);
 ADODataSet1.Recordset :=  _Recordset(rs);
 ADODataSet1.Append;
 ADODataSet1.Fields[0].Value := 2;
 ADODataSet1.Fields[1].Value := '11111';
 ADODataSet1.Fields[2].Value := 1;
 ADODataSet1.UpdateRecord;
 ...

ADODataSet1, по-моему, получился живой, возвращает то, что положено. С сортировкой и с присоединением DBGrid'a буду ковыряться завтра. Там какие-то странности.


DrPass   (2008-01-02 01:13:00) [22]


> sniknik ©   (02.01.08 00:18) [12]

Это я о том, как создать произвольный ADOшный набор данных и подсунуть его ADODataSet для дальнейшей работы средствами VCL. Именно так (ADODataSet1.Recordset:= ...) оно стандартно и делается. Причем тут другие языки и привычки - я что-то вас не понял.


sniknik   (2008-01-02 00:18:00) [23]

> Тебе нужно свойство Recordset
эт вы о чем? зачем? все нормально, стандартно (VCL), делается, единственное что нужно, это читать справку предметно, без экивоков на другие языки/привычки.
ну и еще, естественно, до того как в справку лезть, нужно правильно вопрос задать (себе естественно) "а что же мы собственно делаем?", а то можно долго читать в одном месте в то время как делается совсем другое.


DrPass   (2008-01-01 23:42:00) [24]


> palva ©   (01.01.08 19:57) [7]

Свойство ComObject немножко из другой оперы. Тебе нужно свойство Recordset


sniknik   (2008-01-01 21:23:00) [25]

> Вот модельный пример на "голом" ADO (VBScript)
это пример не открытия, а создания рекордсета. создается обьект потом поля... все правильно, все логично (в отличие от вопроса).
пример создания в справке дельфи тоже есть. ну, синтаксис другой..., ну так дельфи не vb не с и т.д.


Anatoly Podgoretsky   (2008-01-01 20:56:00) [26]

> palva  (01.01.2008 19:57:07)  [7]

Ну надо смотреть в реализацию TAdoDataset как там реализовано подключение RecordSet

Я бы попробовал сделать то же самое, что и в VB и попробовать подключить полученый RecordSet к одноименному свойству в TAdoDataset

Проверять тебе самому.


palva   (2008-01-01 20:33:00) [27]

Вот модельный пример на "голом" ADO (VBScript)

Const adVarChar = 200
Const adInteger = 3
Set rs = CreateObject("ADODB.Recordset")
rs.Fields.Append "F1", adInteger
rs.Fields.Append "F2", adVarChar, 30
rs.Fields.Append "F3", adInteger
rs.Open
rs.AddNew
rs.Fields("F1").Value = 2
rs.Fields("F2").Value = "11111"
rs.Fields("F3").Value = 1
rs.AddNew
rs.Fields("F1").Value = 2
rs.Fields("F2").Value = "22222"
rs.Fields("F3").Value = 2
rs.AddNew
rs.Fields("F1").Value = 1
rs.Fields("F2").Value = "33333"
rs.Fields("F3").Value = 2
rs.AddNew
rs.Fields("F1").Value = 1
rs.Fields("F2").Value = "44444"
rs.Fields("F3").Value = 1
rs.Sort = "F1, F3"
rs.MoveFirst
Do While Not rs.EOF
 MsgBox rs.Fields("F2")
 rs.MoveNext
Loop
rs.Sort = "F3 DESC, F1"
rs.MoveFirst
Do While Not rs.EOF
 MsgBox rs.Fields("F2")
 rs.MoveNext
Loop


palva   (2008-01-01 19:57:00) [28]


> В этом случае тебе надо сваливаться ниже, на уровень ADO

Ну здесь вопросов не возникает. Но тогда не будет возможности подключить какие-нибудь DataControls

> DrPass ©   (01.01.08 19:22) [6]
ADODataSet1.ComObject := CreateOleObject('ADODB.RecordSet');
компилятор меня извещает, что
ComObject - Read-only Property
ADOQuery1 еще попробовал. То же самое.


DrPass   (2008-01-01 19:22:00) [29]


> А открыть надо, чтобы наполнить данными, отсортировать по
> некоторой последовательности колонок - ну мало ли для чего
> еще. На VBScript я это делаю, почему бы мне не захотеть
> сделать то же самое на Delphi?

Без проблем. Создаешь СОМ-объект Recordset, подсовываешь его TADODataset'у в соотв. свойство. После этого оно у тебя уже открыто и внимательно слушает :)


Anatoly Podgoretsky   (2008-01-01 18:54:00) [30]

> palva  (01.01.2008 18:11:04)  [4]

В этом случае тебе надо сваливаться ниже, на уровень ADO


palva   (2008-01-01 18:11:00) [31]


>> Какие-то флаги, опции в DataSet установить?
> для чего? что делаем то? телепатор перегорает уже от нагрузки

Так ведь открыть надо. А VCL-ная обертка над ADO почему-то требует, чтобы было соединение с базой данных. А открыть надо, чтобы наполнить данными, отсортировать по некоторой последовательности колонок - ну мало ли для чего еще. На VBScript я это делаю, почему бы мне не захотеть сделать то же самое на Delphi?


sniknik   (2008-01-01 15:15:00) [32]

> Какие-то флаги, опции в DataSet установить?
для чего? что делаем то? телепатор перегорает уже от нагрузки (есть мысль что нужно не открытие... а что тогда? автор не скажет, дельфимастер не перекрестится... пошлет только, сами знаете куда).

> Искал-искал - ничего не нашел.
веревка на балконе, мыло в ванной. очень нужные веши найди их, будет "чтото нашол"...

Плохиш ©   (01.01.08 14:12) [1]
> Хм, достаточно глупая шутка, даже для нового года...
ну да. "не ищите сложных объяснений, тому что можно обьяснить просто глупостью" © ктото. не помню.
но вообщето, возможен и более "сложный" вариант.


easy   (2008-01-01 14:24:00) [33]

http://www.flagalphabet.zmva.ru/sem_int.html


Плохиш   (2008-01-01 14:12:00) [34]


> palva©   (01.01.08 12:32)  
> Пытаюсь открыть ADODataSet1 (метод Open)
> получаю " Missing Connection or ConnectionString"

Хм, достаточно глупая шутка, даже для нового года...


Страницы:   1 2

Наверх

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