powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разрешить изменение RecordSet
15 сообщений из 15, страница 1 из 1
Разрешить изменение RecordSet
    #38263059
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
' Microsoft ActiveX Data Objects 2.x Library
Dim cn As New adodb.Connection, rs As New adodb.Recordset
Dim Cmd1 As New adodb.Command
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=" & prevMonth & ";Extended Properties=dBase IV"
    .CursorLocation = adUseClient
    .Open
End With

Cmd1.CommandText = "Select * From main"
rs.CursorLocation = adUseClient
rs.Open Cmd1, cn, adOpenDynamic, adLockPessimistic
rs.Fields(0).Value = "999999"



Ошибка на строке rs.Fields(0).Value:
"не удается изменить свойство ActiveConnection объекта recordset с объектом command в качестве источника"

Делал через метод cn.Execute - тоже не дает что-то делать с набором.
Мне нужно вносить изменения в RecordSet, при этом мне не надо отправлять эти изменения на сервер - таблицы источника должны остаться в оригинале.
Как тут правильно развести ситуацию?
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263094
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исправил

CmdText = "Select * From main"
rs.CursorLocation = adUseClient
rs.Open CmdText, cn, adOpenDynamic, adLockPessimistic
rs.Fields(0).Value = "999999"

Для Rs.Open первым параметром строка, а передавать эту строку в объект Command было не нужно.

Теперь другая ошибка:
"Недостаточные сведения о ключевом столбце для обновления"
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263117
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shizuku Теперь другая ошибка:
"Недостаточные сведения о ключевом столбце для обновления"
PK есть в таблице ?
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263121
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112PK есть в таблице ?

Нету. Точнее он там где-то есть, но это же DBASE IV ! Там dbf и cdx, составные индексы и т.п. Отправляю SELECT и всё... Как там указать, где какое поле? Молча возвращает данные.
Вот если бы можно было в самой выборке или recordset пометить ключевое поле/поля...
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263139
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя не dBase, у тебя FoxPro (возможно, даже VFP).
Попробуй подключиться через другого провайдера - там, ЕМНИП, ODBC-драйвер более качественный...
Код: vbnet
1.
2.
    .Provider = "vfpoledb"
    .ConnectionString = "Data Source=" & prevMonth
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263144
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMУ тебя не dBase, у тебя FoxPro (возможно, даже VFP).


Ну, если быть точным, то DBASE III - ранний FopxPro v2.6a

Ошибка: "Не удаётся найти указанный поставщик..."
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263201
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага... А какие у вас вообще ODBC-драйверы установлены? И ОСь какая?
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263346
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Win8, мною дополнительно скачаны и установлены:
VFPODBC.msi

VFPOLEDBSetup.msi

И еще MySQL ODBC, но он к этой задаче отношения не имеет
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263543
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShizukuWin8, мною дополнительно скачаны и установлены:
VFPODBC.msi

VFPOLEDBSetup.msi
Отсюда ? ИМХО, вам надо качать и ставить vfpoledb.msm
Ну и шерстить именно этот раздел на предмет разных видов подключений к тем самым dbf от последней версии FPD...
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263608
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMИМХО, вам надо качать и ставить vfpoledb.msm
Оттуда. А vfpoledb.msm не устанавливается (regsvr32 его не берет). Потом я вычитал, что он нужен лишь при создании инсталляторов и всякого такого...
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263660
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот там было то же самое. Майские что-ли плохо проходят?..
Попробуйте запустить мой пример оттуда - если не пойдет, то проблема действительно в драйверах ODBC/OLEDB. Как помочь - не скажу даже отдаленно; у меня для работы с ADODB отдельные компы как (на которых я занимаюсь разработкой) как настроены раз - так и пашут... и да, на них фокс установлен (либо есть, либо был). Так шта

Могу только посоветовать попробовать проделать "поставить-удалить" VFP9 (это недолго и небольно :)) - может, заработают драйверы.
Ещё как вариант - поднять виртуальную машину с XP и на ней уже "по рельсам, по шпалам" работать с базами FPD.
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263666
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и ещё - попробуйте прокрутить проверку вот этим
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263670
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заодно - вот вам файлик из комплекта VFP9sp2.
Закиньте его в "С:\Program Files\Common Files\System\Ole DB\" и перерегистрируйте.
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38263712
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит у меня FoxPro, куда ж без него... Последний. И кстати, вопреки всем утверждениям прекрасно себя чувствует на восьмерке.
Вот если Excel не осилю, придется все сначала, под лисиц, делать. Там есть отличная штука - которая CursorAdapter
...
Рейтинг: 0 / 0
Разрешить изменение RecordSet
    #38279113
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблему до конца не решил, но для моей задачи неважно чтобы именно исходный курсор был "живым". И я просто переписал его содержимое в динамический (программный, виртуальный... - не знаю как правильно назвать) RecordSet, с которым уже игрался как душе угодно.

Пример такого RecordSet:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
With rsBuild
 .CursorLocation = adUseClient
 .Fields.Append "num_ls", adDouble, 8
 .Fields.Append "num_dog", adVarWChar, 7, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "datdog", adDate, 8, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "fam", adVarWChar, 30, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "im", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "ot", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "nname", adVarWChar, 30
 .Fields.Append "n_dom", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "n_kv", adVarWChar, 4, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "crsumma", adDouble, 8
 .Fields.Append "prsumma", adDouble, 8
 .Fields.Append "kolmes", adDouble, 8
 .Open
' Здесь действия над таблицей
 .Close
End With
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разрешить изменение RecordSet
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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