Локальное сохранение таблиц при использовании ADO

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Локальное сохранение таблиц при использовании ADO

Сообщение Leon_ » 15.06.2004 (Вт) 18:17

Возможно ли сохранять некоторые таблицы локально при использовании ADO?
В приложении предполагается сохранение данных на переднем плане. При использовании модели DAO я хранил таблицы БД смешанно: специфичные для пользователя данные -- локально в файле qwerty.mdb, собственно данные базы -- удаленно (связанные таблицы) в файле qwerty_be.mdb. Смогу ли я продолжить сохранение некоторых данных в локальных таблицах?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.06.2004 (Ср) 11:18

rs.Save FileName, adpersistxml

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.06.2004 (Ср) 11:44

Не о том речь.

Используй такую-же схему, в ADO тоже реализованы связанные таблицы.
Lasciate ogni speranza, voi ch'entrate.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 16.06.2004 (Ср) 23:26

Не совсем точно сформулировал..

Собираюсь перевести используемую базу с MDB+DAO на (MS SQL Server)+DAO. Краем уха слышал, что в этом варианте сохранение на переднем плане недоступно.
Подскажите какие-нибудь идеи по этому поводу?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.06.2004 (Пн) 9:06

Если уж переводить то MS SQL Server+ADO.

DAO уже свое отжила - ADO намного удобней...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 23.06.2004 (Ср) 23:56

с MDB+DAO на (MS SQL Server)+DAO

Это я описался (в смысле -- оговорился ;-)). Конечно на ADO.
Но не стоит списывать со счетов DAO, она нам еще послужит :-)

При конвертации "приложения MDB" на Access в "проект APJ" возможны варианты как "чистого проекта клиент-сервер", так и продолжение использования "связанных" таблиц (источниками для них могут быть как *.mdf так и *.mdb файлы баз данных).
Меня же интересует именно вариант "чистого" клиент-сервера. Как при этом можно локально хранить таблицы (желательно, в *.mdb, или в Persisting Recordsets), чтобы иметь возможность редактировать их напрямую из форм проекта Access?
Нашел какие-то отсылки к MSDataShape, но толком пока ничего не получилось.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 24.06.2004 (Чт) 7:41

Да какие проблемы-то у тебя - непонятно...

У формы Access-a есть свойство Recordset. Этому свойству ты можешь подсунуть Recordset созданный на основе как локальной так и серверной таблицы или на их связке. Все примитивно.

А вообще писать на Access-e довольно неудобно - убог он по своим возможностям (сам несколько лет с ним раньше работал)...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 24.06.2004 (Чт) 23:45

У формы Access-a есть свойство Recordset. Этому свойству ты можешь подсунуть Recordset созданный на основе как локальной так и серверной таблицы или на их связке.

Для проекта Access в варианте "клиент-сервер" (см. выше), так работать не будет. Такой Recordset не будет обновляемым.

Вот во что я уперся, и никак ни могу найти лазейку:
Microsoft Access forms will only allow you to edit data from an ADO recordset if the ADO recordset is created by using a combination of the MSDataShape and SQL Server OLEDB providers.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.06.2004 (Пт) 7:20

Для проекта Access в варианте "клиент-сервер" (см. выше), так работать не будет. Такой Recordset не будет обновляемым


Чего ради? Прекрасно обновлялся, насколько помню - если, конечно, он построен на обновляемом запросе.

Кстати, сам пишу на VB под SQL и такие Recordset-ы подсовываются Grid-ам постоянно - думаешь у меня все не работает?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 25.06.2004 (Пт) 10:39

Прекрасно обновлялся, насколько помню - если, конечно, он построен на обновляемом запросе.


Я пытаюсь просто связать с формой в проекте Access таблицу, которая хранится не на MS SQL Servere. Да так связать, чтобы ее можно было редактировать из формы. При чем здесь Grid? :?:
Код: Выделить всё
SELECT * FROM tblPack

Разве такой запрос не обновляемый?

Кстати, сам пишу на VB под SQL и такие Recordset-ы подсовываются Grid-ам постоянно - думаешь у меня все не работает?

Покажи пример тогда, разберу.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.06.2004 (Пт) 11:54

Сейчас попробовал с Access-ом (ибо давно с ним уже не работаю).

Сам-то Recordset, как и следовало ожидать, получается обновляемый - с ним все нормально. В него записи добавляются и редактируются.

А вот форма, которой он присваивается, действительно открывается как необновляемая. В чем тут дело на скорую руку непонять - ибо влезать опять в потроха Access-a и экспериментировать совершенно нехочется. Может еще кто подскажет...

Код в форме пробовал такой:

Код: Выделить всё
Private Sub Form_Load()
    Dim cn As New ADODB.Connection
    Dim r As New ADODB.Recordset
   
    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    cn.Open "Data Source=" & CurrentProject.Path & "\Table.mdb"
    r.Open "SELECT * FROM [Table]", cn, adOpenStatic, adLockOptimistic
   
    Set Recordset = r
End Sub


Да, если этот код заменить на

RecordSource = "SELECT Table.* FROM [Table] IN 'Table.mdb'"


То форма редактируется нормально.
В принципе запрос может включать таблицы из нескольких баз.
Может этого для тебя и будет достаточно.

P.S. Беги от этого Access-a при первой возможности иначе чем дальше тем больше подобных ограничений будет попадаться...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 1

    TopList  
cron