Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Восстановление соединения с БД в DataEnvironment / 11 сообщений из 11, страница 1 из 1
22.03.2007, 21:40
    #34410039
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
Устанавливаю соединение с баззой данных таким способом:

Private Sub DataEnvironment_Initialize()
DataEnvironment1.Connection1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="BAZA.db;Persist Security Info=False;Jet OLEDB:Database Password=PASSWORD"
End Sub

Работаю с таблицами созданными в режиме дизайна:
rsCommand1; rsCommand2; rsCommand3

Далее по ходу программы требуется отключится, выполнить некие действия и подключится к базе данных.

Выполняю:
DataEnvironment1.Connection1.Close
DataEnvironment1.Connection1.Open (на этом этапе все ОК)

Далее обращаюсь к любой из таблиц:
DataEnvironment1.rsCommand1.Open (и тут возникает ошибка 3709)

Никак не могу понять почему! Как связать таблицы из кода? Почему при отключении теряется эта связь? Прошу Вашей помощи!
...
Рейтинг: 0 / 0
23.03.2007, 07:32
    #34410328
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
...
Рейтинг: 0 / 0
23.03.2007, 09:02
    #34410391
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
1. с програмным определением сурса

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With DataEnvironment1
If .rsCommand1.State = adStateOpen Then .rsCommand1.Close
.rsCommand1.Open "ИмяТаблицы или запрос", .rsCommand1.ActiveConnection, adOpenStatic
If .rsCommand1.RecordCount >  0  Then
.rsCommand1.MoveFirst
Do Until .rsCommand1.EOF
    Debug.Print .rsCommand1.Fields( 0 ).Value
.rsCommand1.MoveNext
Loop
End If
End With
2. способ по готовому сурсу

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With DataEnvironment1
If .rsCommand1.State = adStateOpen Then .rsCommand1.Close
.Command1
If .rsCommand1.RecordCount >  0  Then
.rsCommand1.MoveFirst
    Do Until .rsCommand1.EOF
        Debug.Print .rsCommand1.Fields( 0 ).Value
    .rsCommand1.MoveNext
    Loop
End If
End With
...
Рейтинг: 0 / 0
23.03.2007, 09:06
    #34410396
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
VipFedorУстанавливаю соединение с баззой данных таким способом:

Private Sub DataEnvironment_Initialize()
DataEnvironment1.Connection1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="BAZA.db;Persist Security Info=False;Jet OLEDB:Database Password=PASSWORD"
End Sub

Работаю с таблицами созданными в режиме дизайна:
rsCommand1; rsCommand2; rsCommand3

Далее по ходу программы требуется отключится, выполнить некие действия и подключится к базе данных.

Выполняю:
DataEnvironment1.Connection1.Close
DataEnvironment1.Connection1.Open (на этом этапе все ОК)

Далее обращаюсь к любой из таблиц:
DataEnvironment1.rsCommand1.Open (и тут возникает ошибка 3709)

Никак не могу понять почему! Как связать таблицы из кода? Почему при отключении теряется эта связь? Прошу Вашей помощи!


вроде по логике вещей, на то оно и соединение, что с его разрывом теряется связь с таблицами и рекордсетом ОкруженияДанными, довольно странно такие вопросы задавать, тебе тогда надо создать свой рекордсет в форме как переменную и формировать его посредством загрузки в него записей по запросу из ОкруженияДанными, тогда может и получиться
...
Рейтинг: 0 / 0
23.03.2007, 14:57
    #34411874
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
VipFedorНикак не могу понять почему! Как связать таблицы из кода? Почему при отключении теряется эта связь? Прошу Вашей помощи!

1.Точный текст ошибки в студию. Пдозреваю что это "Error 3709 The connection cannot be used to perform this operation. It is either closed or invalid in this context"
2.О какой связи идет речь? Между таблицами? Или коннект к базе?
...
Рейтинг: 0 / 0
23.03.2007, 15:20
    #34411972
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
Magnus23 VipFedorНикак не могу понять почему! Как связать таблицы из кода? Почему при отключении теряется эта связь? Прошу Вашей помощи!

1.Точный текст ошибки в студию. Пдозреваю что это "Error 3709 The connection cannot be used to perform this operation. It is either closed or invalid in this context"
2.О какой связи идет речь? Между таблицами? Или коннект к базе?

мой лёгкий перевод таков:

Ошибка №....
соединение не может быть использовано для этой операции. Оно или закрыто или не допустимо в данном контексте

короче ты соединение не можешь использовать!
...
Рейтинг: 0 / 0
23.03.2007, 15:39
    #34412073
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
klen_расширение db значит база Paradox ?

Нет это обычная база Access 2003. Просто сменил расширение.

2 TIKO
Благодарю, буду дома, код протестирую.

2 Программист Дёня
Я ведь написал, что использую дизайнер DataEnvironment


Magnus231.Точный текст ошибки в студию. Пдозреваю что это "Error 3709 The connection cannot be used to perform this operation. It is either closed or invalid in this context"


Именно эта ошибка!!!


Magnus23О какой связи идет речь? Между таблицами? Или коннект к базе?

Повторный коннект к базе и работа с таблицами.

P.S. Я так понимаю, что на первом этапе связь с БД и ее таблицами осуществляет DataEnvironment, а вот при разрыве связи, восстановить ее из кода для меня проблема.
На каком этапе сбой, я уже описал выше.
...
Рейтинг: 0 / 0
23.03.2007, 15:51
    #34412119
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
VipFedor klen_расширение db значит база Paradox ?

Нет это обычная база Access 2003. Просто сменил расширение.

2 TIKO
Благодарю, буду дома, код протестирую.

2 Программист Дёня
Я ведь написал, что использую дизайнер DataEnvironment


Magnus231.Точный текст ошибки в студию. Пдозреваю что это "Error 3709 The connection cannot be used to perform this operation. It is either closed or invalid in this context"


Именно эта ошибка!!!


Magnus23О какой связи идет речь? Между таблицами? Или коннект к базе?

Повторный коннект к базе и работа с таблицами.

P.S. Я так понимаю, что на первом этапе связь с БД и ее таблицами осуществляет DataEnvironment, а вот при разрыве связи, восстановить ее из кода для меня проблема.
На каком этапе сбой, я уже описал выше.


причём окружение данными не пойму, для справки ДатаЕнвайронмент это и есть ОкружениеДанными, я тоже пробовал им работать, но пока остановился на АДО объектах,
пока не разберусь с рекордсетом
а оно надо пусть и временно соединение закрывать, тогда используй АДО.Коннект, хотя Окружение, это теже АДО.Объекты, только в виде одного класса Дезайнера
...
Рейтинг: 0 / 0
24.03.2007, 19:54
    #34413661
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
Благодаря помощи TIKO (2 способ), которому я очень благодарен, вывел следующий код для восстановления связи с таблицами дизайнера DataEnvironment

'Собственно восстанавливает связь и открывает таблицы
With DataEnvironment1
.Command1
.Command2
.Command3
End With

'Закрываем открытые таблицы
DataEnvironment1.rsCommand1.Close
DataEnvironment1.rsCommand2.Close
DataEnvironment1.rsCommand3.Close
...
Рейтинг: 0 / 0
24.03.2007, 23:40
    #34413764
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
Программист Дёня
мой лёгкий перевод таков:

Любезный, я их наизусть помню, на обоих языках :). К тому же вольный перевод часто меняет смысл.


2 VipFedor
DE очень громоздкая и глючная штука. Не хочу на ночь ужасы рассказывать но проблем с не й гораздо больше чем преимуществ мнимой простоты использования. Почитай хелп по ADO, все что тебе нужно это один обьект ADOДБ.Connection и несколько ADODB.Recordset. Command вообще используется в довольно специфических случаях и это не один из них.
Как уже сказал Программист Дёня, DE - не что иное как набор ADO обьектов. Но давая возмйожность визуальной разработки "чисто мышкой" он скрывает детали происходящего и не дает тебе контроля над кодом. В слудае чистого АДО - все прозрачно и дебагить гораздо проще.
...
Рейтинг: 0 / 0
26.03.2007, 08:51
    #34414548
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановление соединения с БД в DataEnvironment
Magnus23 Программист Дёня
мой лёгкий перевод таков:

Любезный, я их наизусть помню, на обоих языках :). К тому же вольный перевод часто меняет смысл.


2 VipFedor
DE очень громоздкая и глючная штука. Не хочу на ночь ужасы рассказывать но проблем с не й гораздо больше чем преимуществ мнимой простоты использования. Почитай хелп по ADO, все что тебе нужно это один обьект ADOДБ.Connection и несколько ADODB.Recordset. Command вообще используется в довольно специфических случаях и это не один из них.
Как уже сказал Программист Дёня, DE - не что иное как набор ADO обьектов. Но давая возмйожность визуальной разработки "чисто мышкой" он скрывает детали происходящего и не дает тебе контроля над кодом. В слудае чистого АДО - все прозрачно и дебагить гораздо проще.


Спасибо за подсказку, что Окружение лишь даёт управлять уже имеющимися данными, но не даёт возможности нормально работать с ними:добавлять, исправлять и прочее, поэтому предпочёл иметь и то и другое в проекте: окружение, чтоб видеть ADODB, чтоб ворочить базы как хочу.

>Магнус
А перевод тогда не дадите, а то у меня то по-русски, то по-английски сообщает ошибки
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Восстановление соединения с БД в DataEnvironment / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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