Проблема с БД в VB
От: GnuLLn Украина  
Дата: 11.01.04 21:51
Оценка:
Всем доброго времени суток,

После попытки перезда с DAO на ODBC база открывается только в режиме чтения .Edit и тд не работают. Проверил настройку источника данных там все в порядке... к базе открываю Connaction как админ с полным доступом. Где грабли?

Все это на VB6
Re: Проблема с БД в VB
От: BugMan  
Дата: 11.01.04 23:00
Оценка:
Здравствуйте, GnuLLn, Вы писали:

GLL>Всем доброго времени суток,


GLL>После попытки перезда с DAO на ODBC база открывается только в режиме чтения .Edit и тд не работают. Проверил настройку источника данных там все в порядке... к базе открываю Connaction как админ с полным доступом. Где грабли?


GLL>Все это на VB6

DAO — это data access objects (програмный интерфейс вобщем), а ODBC это вроде как драйвера........ Или имелось ввиду ADO? — тогда посмотри на свойста рекордсета lock type и cursor type — по моему lock type по дефолту read only
Re[2]: Проблема с БД в VB
От: GnuLLn Украина  
Дата: 13.01.04 00:41
Оценка:
BM>DAO — это data access objects (програмный интерфейс вобщем), а ODBC это вроде как драйвера........ Или имелось ввиду ADO? — тогда посмотри на свойста рекордсета lock type и cursor type — по моему lock type по дефолту read only

Мда, вопрос был поставленн мягко говоря не корректно, я использовал Jet воркспейс и открывал в нем database
из mdb файла... после чего создал DSN с этим файлом и открыл ODBCDirect воркспейс в котором все мои старые рекордсеты стали readonly те

dim rs as recordset
set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset)
with rs
  .Edit
  .fields(0) = 2
  .Update
end with
rs.close


выдает ошибку — объект readonly, хотя в хелпе по DAO написанно что рекордсет Dynaset типа через ODBCDirect воркспейс может быть изменен.
Re[3]: Проблема с БД в VB
От: BugMan  
Дата: 13.01.04 04:32
Оценка:
Здравствуйте, GnuLLn, Вы писали:

BM>>DAO — это data access objects (програмный интерфейс вобщем), а ODBC это вроде как драйвера........ Или имелось ввиду ADO? — тогда посмотри на свойста рекордсета lock type и cursor type — по моему lock type по дефолту read only


GLL>Мда, вопрос был поставленн мягко говоря не корректно, я использовал Jet воркспейс и открывал в нем database

GLL>из mdb файла... после чего создал DSN с этим файлом и открыл ODBCDirect воркспейс в котором все мои старые рекордсеты стали readonly те

GLL>
GLL>dim rs as recordset
' вот так правильнее будет
GLL>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset, dbOptimistic)
GLL>with rs
GLL>  .Edit
GLL>  .fields(0) = 2
GLL>  .Update
GLL>end with
GLL>rs.close
GLL>


GLL>выдает ошибку — объект readonly, хотя в хелпе по DAO написанно что рекордсет Dynaset типа через ODBCDirect воркспейс может быть изменен.
Re[4]: Проблема с БД в VB
От: GnuLLn Украина  
Дата: 14.01.04 06:46
Оценка:
Здравствуйте, BugMan, Вы писали:

GLL>>dim rs as recordset
BM>' вот так правильнее будет
GLL>>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset, dbOptimistic)


К сожалению при таком варианте я получаю ошибку о неверном аргументе, даже при пропуске option.
Re[5]: Проблема с БД в VB
От: Аноним  
Дата: 14.01.04 09:46
Оценка:
Здравствуйте, GnuLLn, Вы писали:

GLL>Здравствуйте, BugMan, Вы писали:


GLL>
GLL>>>dim rs as recordset
BM>>' вот так правильнее будет
GLL>>>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset, dbOptimistic)
GLL>


GLL>К сожалению при таком варианте я получаю ошибку о неверном аргументе, даже при пропуске option.

не оч силен в DAO и ODBC но в ADO всетаки надо делать так:

dim rs as NEW recordset
или так
dim rs as recordset
set rs = new recordset

а еще правельнее
dim rs as NEW ADODB.recordset
но это только к ado
Re[5]: Проблема с БД в VB
От: PA  
Дата: 14.01.04 11:43
Оценка:
Здравствуйте, GnuLLn, Вы писали:

GLL>Здравствуйте, BugMan, Вы писали:


GLL>
GLL>>>dim rs as recordset
BM>>' вот так правильнее будет
GLL>>>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset, dbOptimistic)
GLL>


GLL>К сожалению при таком варианте я получаю ошибку о неверном аргументе, даже при пропуске option.


Надо так:

set rs = db.openrecordset("select * from table where x = 1", dbOpenDynamic, ,dbOptimistic)
Re[6]: Проблема с БД в VB
От: Elena_ Россия  
Дата: 14.01.04 11:55
Оценка:
Здравствуйте, PA, Вы писали:

PA>Здравствуйте, GnuLLn, Вы писали:


GLL>>Здравствуйте, BugMan, Вы писали:


GLL>>
GLL>>>>dim rs as recordset
BM>>>' вот так правильнее будет
GLL>>>>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynaset, dbOptimistic)
GLL>>


GLL>>К сожалению при таком варианте я получаю ошибку о неверном аргументе, даже при пропуске option.


PA>Надо так:


PA>
PA>set rs = db.openrecordset("select * from table where x = 1", dbOpenDynamic, ,dbOptimistic)
PA>


В MSDN VBA: Run-Time Error '3027' Using ODBCDirect to Open RecordSet (Q161252)
говорится о чем-то похожем, правда статья древняя (Microsoft Visual Basic for Applications version 5.0
Microsoft Access 97), но ситуация вроде аналогичная

Там предлагается, в частности

For example, the following sample code fragment opens an editable recordset that uses optimistic record locking:
Set RS = conPubs.OpenRecordset("Authors",dbOpenDynamic,0,dbOptimistic)
NOTE: You must supply a zero (0) for the Options argument.

Я не проверяла.
Пользователь — друг программиста!
Re[7]: Проблема с БД в VB
От: Elena_ Россия  
Дата: 14.01.04 12:03
Оценка:
Здравствуйте, Elena_, Вы писали:


E_>В MSDN VBA: Run-Time Error '3027' Using ODBCDirect to Open RecordSet (Q161252)

E_>говорится о чем-то похожем, правда статья древняя (Microsoft Visual Basic for Applications version 5.0
E_>Microsoft Access 97), но ситуация вроде аналогичная

E_>Там предлагается, в частности


E_>For example, the following sample code fragment opens an editable recordset that uses optimistic record locking:

E_> Set RS = conPubs.OpenRecordset("Authors",dbOpenDynamic,0,dbOptimistic)
E_>NOTE: You must supply a zero (0) for the Options argument.

E_>Я не проверяла.


Есть, кстати, и свежая версия статьи

ACC2000: Run-Time Error '3027' Using ODBCDirect to Open RecordSet (Q209943)

с тем же примером
Пользователь — друг программиста!
Re[5]: Проблема с БД в VB
От: BugMan  
Дата: 14.01.04 16:55
Оценка:
Здравствуйте, GnuLLn, Вы писали:

GLL>К сожалению при таком варианте я получаю ошибку о неверном аргументе, даже при пропуске option.

Да забей ты на него — возьми лучше ADO и не мучайся.......
Вобщем что там с аргументом тебе уже сказали, а проблема с неписабельностью рекордсета решается сменой lock type — вроде всё.........
Re[6]: Проблема с БД в VB
От: GnuLLn Украина  
Дата: 15.01.04 03:37
Оценка:
Здравствуйте, Аноним, Вы писали:

A>...

А>а еще правельнее
А>dim rs as NEW ADODB.recordset
А>но это только к ado

Открыл базу в АДО без всяких проблем пол часа поверхносно пробежался по библиотеке взглядом и перешел на нее. всем большое спасибо за ответы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.