![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не открывается TADODataSet
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"
Хм, достаточно глупая шутка, даже для нового года...