Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не могу открыть Recordset в локальной БД / 22 сообщений из 22, страница 1 из 1
19.05.2016, 20:13
    #39239523
GROM17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
Всем добрый вечер!
Не могу понять, какая разница в открытии 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
19.05.2016, 20:16
    #39239525
GROM17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
Забыл добавить: все это относится к VB на VS 2015
...
Рейтинг: 0 / 0
19.05.2016, 20:38
    #39239531
Не могу открыть Recordset в локальной БД
GROM17,

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

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

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

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

Спасибо, посмотрю.
...
Рейтинг: 0 / 0
22.05.2016, 01:25
    #39240813
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
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
22.05.2016, 04:56
    #39240831
гурД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
У кого-то хоть гуси улетают ровным стройным косяком )))

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

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

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

Попробуйте так как тут
http://forum.codenet.ru/q67239/VB 2010 Express & SQL Express
пример в самом конце, там как-то попроще...
...
Рейтинг: 0 / 0
22.05.2016, 20:13
    #39240982
GROM17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
vmag,
спасибо, посмотрю.
...
Рейтинг: 0 / 0
23.05.2016, 21:39
    #39241737
GROM17
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
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
23.05.2016, 23:05
    #39241757
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть Recordset в локальной БД
GROM17,

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


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