Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как открыть таблицу access с паролем в vb


Автор: ArtNeoX 16.1.2006, 05:45
Вот код на открытие незапароленой таблицы

Код

Private Sub Form_Load()
  Dim db As Connection
  Set db = New Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base.mdb;"
  Set adoPrimaryRS = New Recordset
  adoPrimaryRS.Open "select X01,X02,X03,X04,X05,X06,X07,X08,X09,X10 from Таблица1", db, adOpenStatic, adLockOptimistic
  Set grdDataGrid.DataSource = adoPrimaryRS
  Set adoRecordset = adoPrimaryRS
  mbDataChanged = False
End Sub


а если при создании таблицы в access поставлен пароль, то что нужно дописать в этом коде.

Автор: Flotskiy 16.1.2006, 08:10
ArtNeoX
Был на форуме такой вопрос, поищи
Всего

Автор: Akina 16.1.2006, 09:39
Цитата
connectString represents a string that includes information for connecting to the outside data source. This parameter is optional if an ODBC connection is already established between the local server and the outside data source. The connectString parameter can take these forms:
datasource;user id;password
which lists specific connection attributes.

-or-

provider string, which is a single string of named attributes with values for creating the connection, similar to the string used in a .dsn file.

Автор: ArtNeoX 21.1.2006, 00:32
что тут надо дописать чтобы открылась запароленая база?

Код

Private Sub Form_Load()
' открытие не запароленой базы
Data1.DatabaseName = "Files/Base.mdb" 'Ищем базу в той же директории где и сама прога
' Загрузка данных из базы ACCESS в карточку
Data1.RecordSource = "Таблица1" 'Имя таблицы,для доступа к ней
Text1.DataField = "X01" 'В Text1 из Поле1 будет загружаться текст
Text2.DataField = "X02"
Text3.DataField = "X03"
Text4.DataField = "X04"
Text5.DataField = "X05"
Text6.DataField = "X06"
End Sub


Автор: ArtNeoX 24.1.2006, 21:28
Ну что подскажет кто?

Автор: cardinal 24.1.2006, 21:59
Я вот так делал:
Код

...
Public mdb As dao.Database               'база данных
...

Код

Dim pwd As String
Dim strConnect As String
pwd = "bla-bla"
...
strConnect = ";database=" & App.Path & "\db23.mdb" & ";PWD=" & pwd & ""  'data access with password
Set mdb = OpenDatabase("", True, False, strConnect)
...

Автор: ArtNeoX 25.1.2006, 04:53
Открыть то она открывает, а вот сохранение введенных данных невозможно

Код

' Сохранение
Data1.UpdateRecord
Data1.Recordset.Bookmark = Data1.Recordset.LastModified


выдает ошибку
Run-time error '524'
No current record.

должна быть строка определяющая Data1 имя базы данных и ее название.
Data1.DatabaseName = "Files/Base.mdb"
если эту строчку оставить пишет Couldn't use 'Имя базы'; file already in use

и если попытаемся сохраниться выдаст ошибку
Run-time error '91'
Object variable or With block varible not set

Автор: kulibin 30.1.2006, 22:50
Не знаю как в дао - а в адо для БД аксес в строке подключения не password надо а database password - точно не помню добуквенно синтаксиса - что-то такое. там тоже наверное как-то так.

Автор: Exception 31.1.2006, 19:21
Цитата(ArtNeoX @ 25.1.2006, 05:53 Найти цитируемый пост)
выдает ошибку
Run-time error '524'
No current record.

На английский переводить не хочем smile ?
Нет текущей записи. А вообще, убери
Код

Data1.Recordset.Bookmark = Data1.Recordset.LastModified

и поставь
Код

Data1.Recordset.MoveLast

Автор: ArtNeoX 1.2.2006, 20:24
все равно ошибка.

Автор: Exception 1.2.2006, 20:58
Значит, у тебя нет записей в БД.

Автор: ArtNeoX 1.2.2006, 22:31
программа ее просто не открывает

Автор: ArtNeoX 1.2.2006, 23:01

База данных состоит из двух частей.
1. Форма на которой расположено очень много TextBox для ввода определенных данных.
Имеется элемент Data для соединения с созданной базой данных, соответственно информация из TextBox добавляется в базу Access и загружается в них из базы данных

код для формы

Код

' открытие не запароленой базы
Data1.DatabaseName = "Files/Base_2006.mdb" 'Ищем базу в той же директории где и сама прога

' Открытие запароленой базы
 '------------------------------------------------
  'Dim db As Connection
  'Set db = New Connection
  'db.CursorLocation = adUseClient
  'db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base_2006.mdb;Jet OLEDB:Database Password=123"
  'Set adoPrimaryRS = New Recordset
  'adoPrimaryRS.Open "select X01,X02,X03,X04,X05 from Таблица1", db, adOpenStatic, adLockOptimistic
  'Set adoRecordset = adoPrimaryRS
  'mbDataChanged = False
'-------------------------------------------------

Data1.RecordSource = "Таблица1" 'Имя таблицы,для доступа к ней
Text1.DataField = "X01" 'В Text1 из Поле1 будет загружаться текст
Text2.DataField = "X02"
Text3.DataField = "X03"
Text4.DataField = "X04"
Text5.DataField = "X05"
End Sub


'Код на сохранение информации из TextBox'ов в базу

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case Is = "cmdUpdate"
On Error Resume Next
If Text5 = "" Then MsgBox "Не заполнено обязательное поле", vbOKOnly + vbCritical, "Внимание": GoTo xxx160

' Сохранение
Data1.UpdateRecord
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
  
xxx160:
End Select


2. Вторая форма содержит DataGreed - то есть таблицу для вывода в нее данных из файла Base_2006.mdb
Сдесь выполняются определенные действия с содержимым базы данных (сортировка по определенным столбцам, скрытие и включение столбцов, экспорт содержимого в Excel и т.п.)

Код для формы для загрузки данных в таблицу из базы данных

Код

Private Sub Form_Load()
Call Refreh
End Sub

Private Sub Refreh()
 Dim db As Connection
  Set db = New Connection
  db.CursorLocation = adUseClient
  
' Открытие не запароленной базы
 db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base_2006.mdb;"

  ' Открытие запароленной базы
  '-----------------------------------------------------
  'db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base_2006.mdb;Jet OLEDB:Database Password=123"
  '-----------------------------------------------------
  
  Set adoPrimaryRS = New Recordset
  adoPrimaryRS.Open "select X01,X02,X03,X04,X05,X06,X07,X08,X09,X10 from Таблица1", db, adOpenStatic, adLockOptimistic
  Set grdDataGrid.DataSource = adoPrimaryRS
  Set adoRecordset = adoPrimaryRS
  mbDataChanged = False
End Sub




Если во второй форме включить строчку

Код

db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base_2006.mdb;Jet OLEDB:Database Password=123"


то запароленная база открывается.

А вот если в первой форме включить

Код

Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=Files\Base_2006.mdb;Jet OLEDB:Database Password=123"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select X01,X02,X03,X04,X05 from Таблица1", db, adOpenStatic, adLockOptimistic
Set adoRecordset = adoPrimaryRS
mbDataChanged = False


то запороленная база не открывается, загружается форма, но все TextBox на ней пустые, хотя данные в файле Base_2006.mdb есть.

Помогите с кодом для первой формы.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Автор: ArtNeoX 4.2.2006, 10:53
Ну кто нибудь smile

Автор: Exception 5.2.2006, 13:23
Цитата(ArtNeoX @ 2.2.2006, 00:01 Найти цитируемый пост)
запороленная

запароленная
Цитата(ArtNeoX @ 2.2.2006, 00:01 Найти цитируемый пост)
DataGreed

DataGrid
P.S. Не нужно поднимать тему вот такими сообщениями:
Цитата(ArtNeoX @ 4.2.2006, 11:53 Найти цитируемый пост)
Ну кто нибудь

Если кто-нибудь захочет, он поможет.

Автор: ArtNeoX 8.2.2006, 20:33
КТО ХОЧЕТ, МОЖЕТ. ПОДСКАЖИТЕ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)