Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пустой рекордсет / 17 сообщений из 17, страница 1 из 1
01.10.2002, 12:35:07
    #32054364
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Всем привет!
Можно ли в ADO создать пустой recordset, а потом его заполнять.

Проблема такая: у меня база в виде XML-файла. Если он не обнаружен, юзер может создать записи заново. Однако просто в лоб не получается
Код: plaintext
1.
2.
3.
4.
5.
    r.Fields.Append  "val" , adChar,  20 
    r.Fields.Append  "name" , adChar,  20 
    r.AddNew
    r.Fields( "val" ) =  "alex" 
    r.Fields( "name" ) =  "rosa" 

на AddNew валится - объект закрыт. Как решать подобные проблемы.
...
Рейтинг: 0 / 0
01.10.2002, 12:38:40
    #32054368
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
r.Fields.Append "val", adChar, 20

r.Fields.Append "name", adChar, 20

//Это поставьте
r.open

r.AddNew

r.Fields("val") = "alex"

r.Fields("name") = "rosa"
...
Рейтинг: 0 / 0
01.10.2002, 12:50:45
    #32054376
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Большое пасибо!

А на С++ чего-то не получается.
Код следующий
Код: plaintext
1.
2.
3.
4.
m_pRecset->Fields->Append( "id" ,adInteger, 4 ,adFldRowID);
m_pRecset->Fields->Append( "Name" ,adChar, 20 ,adFldMayBeNull);
m_pRecset->Fields->Append( "Value" ,adInteger, 4 ,adFldMayBeNull);
m_pRecset->Open(_variant_t(),_variant_t(),adOpenStatic, adLockOptimistic,adCmdUnspecified);


Открыть не может. Пишет, мол, аргументы неправильного типа или выходят за границы допустимого диапазона и проч. Какие по умолчанию параметры передает VB этому методу?
...
Рейтинг: 0 / 0
01.10.2002, 12:55:26
    #32054383
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Просто open без connection и всего прочего...
...
Рейтинг: 0 / 0
01.10.2002, 12:59:44
    #32054392
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Понятно что без коннекта и всего прочего, однако чего ставить в первый и второй параметры. Пустой вариант не катит. :(
Чего туда VB, то засовывает?
...
Рейтинг: 0 / 0
01.10.2002, 13:13:36
    #32054401
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
У метода open все параметры опциональны.
В VB я заполняю коллекцию полей рекордсета, потом открываю и заполняю поля значениями.

В вашем случае видимо:

m_pRecset->Open()
должно прокатить, хотя в С++ я не спец
...
Рейтинг: 0 / 0
01.10.2002, 13:19:46
    #32054404
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Ок. Большое спасибо что помог. Решение такое
Код: plaintext
1.
m_pRecset->Open(vtMissing,vtMissing,adOpenStatic, adLockOptimistic,adCmdUnspecified);


Но вот еще один вопрос возник. При добавлении записей, поле id не увеличивается автоматически. Как бы это сделать?
Создаю его так:
Код: plaintext
1.
m_pRecset->Fields->Append( "id" ,adInteger, 4 ,adFldRowID);
...
Рейтинг: 0 / 0
01.10.2002, 13:27:46
    #32054410
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
При добавлении записей, поле id не увеличивается автоматически. Как бы это сделать?

Имхо - никак. ADO это не позволит.
Единственный вариант. (Далее в терминах VB):
Объявить рекордсет with events некую переменную счетчик на событие MoveComplete повесить проверку на присутствие значения в "id", если нет - то ставить id и увеличивать счетчик.
...
Рейтинг: 0 / 0
01.10.2002, 13:41:56
    #32054420
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Да это от провайдера зависит!
Ты же когда закачиваешь рекордсет из БД и добавляешь в него записи, поле то увеличивается! Есть специальной динамическое св-во ISAUTOINCREMENT. Если оно установлено в true, происходит сам понимаешь чего. Остается выяснить, поддерживает ли его XML'ый провайдер.
...
Рейтинг: 0 / 0
01.10.2002, 13:43:30
    #32054423
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Вот мля!

MSDN:
The Microsoft OLE DB Persistence Provider exposes no dynamic properties.

:(
...
Рейтинг: 0 / 0
01.10.2002, 13:49:41
    #32054426
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
-->> Да это от провайдера зависит!

Разумеется ISAUTOINCREMENT зависит от провайдера, но поскольку Ваш рекордсет не подключен ни какому connection'у.

Но даже если ISAUTOINCREMENT был true это ничего бы не изменило - id раздает sql сервер, и id поле получило не после добавления записи, а после успешного updat'а на сервере.
...
Рейтинг: 0 / 0
01.10.2002, 14:12:33
    #32054434
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Я думаю, если бы оно было, то все было бы нормально. Т.е. провайдер сам увеличивал значение такого поля.

У меня еще вопрос возник. Когда я открываю рекордсет из БД с adOpenStatic,adLockOptimistic у меня почему-то передвижение по записям с помощью Move не работает. Пишет, мол, провайдер не поддерживает закладки?? Если открыть с adLockReadOnly - все ок.
В чем трабл?
...
Рейтинг: 0 / 0
01.10.2002, 14:30:16
    #32054450
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Если BatchOptimistic?
База какая?
Microsoft OLE DB Persistence Provider или SQL сервер?
Да и курсор на сервере или на клиенте?
Если нетрудно объясните задачу, может проблемы проще будет решить...
...
Рейтинг: 0 / 0
01.10.2002, 14:41:07
    #32054452
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
SQL Server 2000. Родной oledb провайдер.
Курсор серверный.

Задача простая: нужно двигаться по курсору в произвольном порядке.
...
Рейтинг: 0 / 0
01.10.2002, 14:44:17
    #32054454
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
А в более широком смысле?

Получить XML и закинуть его в базу?
...
Рейтинг: 0 / 0
01.10.2002, 14:57:39
    #32054463
alexey_1979
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Да XML здесь вообще не причем! Это так, удобная дополнительная фитча.
...
Рейтинг: 0 / 0
01.10.2002, 17:24:18
    #32054554
Dr
Dr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустой рекордсет
Serverniy kursor ne kanayet - tol`ko Client Cursor.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пустой рекордсет / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]