ADO: не сохраняется БД. В чем глюк

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
hasuhands
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.11.2004 (Ср) 20:14

ADO: не сохраняется БД. В чем глюк

Сообщение hasuhands » 29.11.2004 (Пн) 1:06

Помогите. Пытаюсь сохранить текущий РС в другой mdb-файл - ничего не выходит.

Исходный РС:
Код: Выделить всё
   Dim path As String
    strTable = "Ñòóäåíòû"
    path = App.path & "\database.mdb"
    cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" & path & ";"
    cn.Open
    If cn.State = adStateClosed Then
        MsgBox "Connection Error", vbCritical, "Error!"
        End
    Else
        Debug.Print "Connection Object Created"
        cn.CursorLocation = adUseClient
    End If
   
    SQL = "Select * From " & strTable
    rs.Open SQL, cn, adOpenStatic, adLockBatchOptimistic
    Debug.Print "Recordset Object Created"


Теперь пытаемся сохранить его в new.mdb
Код: Выделить всё
Set rs.ActiveConnection = Nothing
Set cn2 = New ADODB.Connection
path = App.path & "\new.mdb"
cn2.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" & path & ";"
cn2.Open
rs.ActiveConnection = cn2
rs.MarshalOptions = adMarshalAll
rs.UpdateBatch


new.mdb - пустая база с той же структурой. после выполнения кода так и остается пустой =(
Где копать?

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

Сообщение Leon_ » 29.11.2004 (Пн) 9:14

:? Хм-м, любопытно. Никогда не слышал о подобной технике. Чтобы делать рекодсет "отвязанным" -- да, но чтобы подменять Connection и что-то при этом получить.. Не знаю, не знаю.. :roll:

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

Сообщение Andrey Fedorov » 29.11.2004 (Пн) 12:15

Оно будет работать. Но надо учитывать что таблицы в обоих базах в исходном состоянии должны содержать одинаковые значения полей!

Далее - мы меняем значения Recordset-a, например так:

Код: Выделить всё
    Do Until r.EOF
        r(1) = r(1) + 1
        r.Update
        r.MoveNext
    Loop
    r.UpdateBatch


Ну а rs.MarshalOptions = adMarshalAll - это можно вообще выкинуть из примера...

P.S.
Можно ли куда это дело можно в данном виде приспособить я как-то пока не соображу...
[/u]
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

hasuhands
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.11.2004 (Ср) 20:14

Сообщение hasuhands » 30.11.2004 (Вт) 5:06

Далее - мы меняем значения Recordset-a, например так:


Код:
Do Until r.EOF
r(1) = r(1) + 1
r.Update
r.MoveNext
Loop
r.UpdateBatch

Если честно - не понял ничего в этом коде.

ps Я бы визжал от радости, если бы вы предложили рабочий вариант (без изобретения велосипеда) сохранения текущего РС в любой mdb-файл

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

Сообщение Andrey Fedorov » 30.11.2004 (Вт) 8:14

Я бы визжал от радости, если бы вы предложили рабочий вариант (без изобретения велосипеда) сохранения текущего РС в любой mdb-файл


Ну, посмотрим, сдержишь ли свое слово...

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

hasuhands
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 17.11.2004 (Ср) 20:14

Сообщение hasuhands » 30.11.2004 (Вт) 22:02

Спасибо большое! :)
Действительно работает!


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

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

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList