powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не могу открыть Recordset в локальной БД
22 сообщений из 22, страница 1 из 1
Не могу открыть Recordset в локальной БД
    #39239523
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый вечер!
Не могу понять, какая разница в открытии Recordset на сервере и в локальной базе данных.
На сервере проходило а тут - нет.
Делаю как на сервере:

strCompanies = "Companies" ' Таблица локальной БД
rstCompanies.Open(strCompanies, Cnxn, adOpenKeyset, adLockOptimistic, adCmdTable)

Выдается сообщение: "Ссылка на объект не указывает на экземпляр объекта"

Подключение к БД проходит нормально:

strCnxn = "Provider=SQLNCLI11;Server=(localdb)\MSSQLLocalDB;"&
"Trusted_Connection=yes; timeout=30;" &
"AttachDbFileName = E:\Romanov\LocalDBApp5_1\LocalDBApp5_Data.mdf;"
Cnxn = New ADODB.Connection
Cnxn.Open(strCnxn)

Заранее благодарю.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239525
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить: все это относится к VB на VS 2015
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239531
GROM17,

set?
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239532
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
капча-еду-я-не-робот,
не понял!
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239536
GROM17,

где-то set не хватает при открытии рекордсета и присваивании его переменной...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239550
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
капча-печенье-я-не-робот,
Спасибо, там был пропущен оператор, но теперь выдается сообщение:
Invalid object name 'Companies'.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239846
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17, так может действительно нет такой таблицы? Еще, правильно,наверное, все-таки dbo.Companies.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39239868
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stas,
Таблица, конечно есть.
Выходит та же ошибка, только вместо Companies стоит dbo.Companies.
Я могу указать любую таблицу - будет та же ошибка.
Вообще, dbo относится к БД на сервере, а у меня локальная БД.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240325
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17VB на VS 2015

в студии обычно к проекту подключают БД и всё, см. картинку, а далее мастером выбираешь набор, mdb...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240390
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
мне нужно работать с БД не в конструкторе, а в коде.
Для этой цели нужно подключиться к БД - это проходит, и получить доступ к таблице -
открыть Recordset, а это не проходит.
См. переписку с самого начала.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240462
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17мне нужно работать с БД не в конструкторе, а в коде.

1. Из конструктора после компиляции получается код...
2. Ну а если без конструктора, то не забывай, что студия это еще и наличие адаптера , это ж уже не просто vb, а vb-net...
в примере база и форма, базу положи в корень диска D, пример соединения ищи в модуле, там же можно изменить и путь к базе если нет диска D
3. Не в той ветке спрашиваешь...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240687
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Спасибо, посмотрю.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240813
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17Спасибо, посмотрю.

ну а если нужно так (не по взрослому) быстро прочитать без всяких референсов, то можно ридером так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Option Explicit On
Option Strict On
Imports System
Imports System.Data
Imports System.Data.OleDb

Public Class Form1
    'строка подключения
    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\БД.mdb;User Id=admin;Password=;"
    Dim queryString As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Перебор всех записей
        queryString = "SELECT * from t1"
        Using connection As New OleDbConnection(connectionString)
            Dim command As New OleDbCommand(queryString, connection)
            Try
                connection.Open()
                Dim dataReader As OleDbDataReader = command.ExecuteReader()
                Do While dataReader.Read()
                    MsgBox(CStr(dataReader(1)) & "/" & CStr(dataReader(2)) & "/" & CStr(dataReader(3)))
                Loop
                dataReader.Close()
            Catch ex As Exception
            End Try
        End Using
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'Вывод тех у кого возраст > 10
        Dim queryString As String = _
        "SELECT id, fam, ima, vozr, nac from t1 " _
        & "WHERE vozr > ? " _
        & "ORDER BY vozr DESC;"
        Dim paramValue As Integer = 10
        Using connection As New OleDbConnection(connectionString)
            Dim command As New OleDbCommand(queryString, connection)
            command.Parameters.AddWithValue("@vozr_val", paramValue)
            Try
                connection.Open()
                Dim dataReader As OleDbDataReader = command.ExecuteReader()
                Do While dataReader.Read()
                    MsgBox(CStr(dataReader(1)) & "/" & CStr(dataReader(2)) & "/" & CStr(dataReader(3)))
                Loop
                dataReader.Close()
            Catch ex As Exception
            End Try
        End Using
    End Sub
End Class



в архиве форма с двумя кнопками (для наглядности) и бд (согласуй со строкой подключения) первая кнопка листает всех, вторая тех кто старше 10 лет (эта БД отличается от той, что в первом примере)
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240831
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У кого-то хоть гуси улетают ровным стройным косяком )))

Но тут подстерегает страшная, вероломная падлянка ))):

Интересно, как этот скрипт мог попасть в такую центральнейшую базу
Или врут, небось, с важным видом: набрали для мебели, базу наполнять научили с горем пополам
(всё как никогда ровно, ничё нового )
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240932
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
Еще раз большое спасибо. Здесь та же технология, что и во вчерашнем материале.
Эту строку подключения я использовал, когда писал на Delphi, она относится к БД
Access 2000, а вопрос с подключением к локальными БД типа mdf остается открытым.
Спасибо за участие.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240935
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17,

mdf это точно база? на чём ? может это просто образ СD Диска? ...
сорри за невнимательность - я точил действительно для акцесовского mdb...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240936
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если этот mdf от MS SQL, то скорее всего никак, иначе зачем тогда нужен дорогущий MS SQL...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240941
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
MDF - это файлы базы данных SQL Server Express LocalDB
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240955
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17,

Попробуйте так как тут
http://forum.codenet.ru/q67239/VB 2010 Express & SQL Express
пример в самом конце, там как-то попроще...
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39240982
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
спасибо, посмотрю.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39241737
GROM17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag, если Вам это интересно, то вот вариант, который работает через ADO:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Public Class Form1
  Dim objConn As ADODB.Connection,
      ConnectString As String,
      objRecordset As ADODB.Recordset,
      strRes As String

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    objConn = CreateObject("ADODB.Connection")

    ConnectString = "Provider=SQLNCLI11;Server=(localdb)\MSSQLLocalDB;Trusted_Connection=yes;" &
                    "timeout=30;AttachDbFileName = E:\Romanov\LocalDBApp5_1\LocalDBApp5_Data.mdf;"

    objConn.ConnectionString = ConnectString
    objConn.ConnectionTimeout = 15
    objConn.CommandTimeout = 30

    'Подключаемся к базе данных
    Try
      objConn.Open()
      objConn.DefaultDatabase = "E:\Romanov\LocalDBApp5_1\LocalDBApp5_Data.mdf" 'Важная деталь! 
      'Выполняем запрос
      objRecordset = objConn.Execute("SELECT * FROM Companies")

    Catch ex As Exception
      MsgBox(ex.ToString)
    End Try

    'Перебираем результаты запроса
    ListBox1.Items.Clear()
    While Not objRecordset.EOF
      strRes = vbNullString
      For i = 0 To objRecordset.Fields.Count - 1
        strRes = strRes & CStr(objRecordset.Fields(i).Value) & vbTab
      Next
      ListBox1.Items.Add(strRes)
      objRecordset.MoveNext()
    End While
    'Закрываем соединение
    objConn.Close()
    objConn = Nothing
    objRecordset = Nothing

  End Sub
End Class



На форме кнопка и ListBox для вывода результатов.
...
Рейтинг: 0 / 0
Не могу открыть Recordset в локальной БД
    #39241757
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROM17,

Спасибо,
я бы давно перешел на VS, но есть сдерживающие причины...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не могу открыть Recordset в локальной БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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