powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ADO при подключении базы данных в Visual Basic 6
24 сообщений из 24, страница 1 из 1
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753299
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток! Как-то уже обращался к форумчанам с подобной проблемой, но не нашёл отклика. Проблема следующая: в VB6 создаю форму, при помощи которой я вывожу базу данных Access в DataGridView по выбору через CommonDialog. Без использования CommonDialog по аналогичному алгоритму база данных беспроблемно отображается в Grid. При попытке использовать CommonDialog для работы с множетсвами баз возникает ADO-ошибка, связанная с построением SQL-запроса(как я предполагаю).
Ниже приведу код, который я использую(если в нём увидите синтаксические ошибки - не обращайте внимания : я переехал на другой системник и ещё не успел поставить Basic , код набирал в Блокноте). Заранее спасибо за помощь!



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Dim strRequest As String

Private Sub Combo1_Click()
Dim strRequest As String

strRequest = " Select * FROM " & Combo1.List(Combo1.ListIndex & " "

End Sub


Private Sub Text1_DblClick()

CommonDialog1.ShowOpen
Text1 = CommonDialog1.FileName
Adodc1.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source = " & Text1 & "; Persist Security Info = False;"
Combo1.Enabled = True
Adodc1.RecordSource = strRequest
Adodc1.CommandType = 4
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1.Recordset
DataGrid1.Refresh
End Sub
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753310
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerНиже приведу кодА можно полюбопытствовать, за каким хреном определены две одноимённые переменные strRequest - уровня модуля и уровня процедуры Combo1_Click? А вы понимаете, что в этой процедуре присвоение будет выполнено в локальную переменную, которая немедленно, в момент завершения метода, будет благополучно похерена?
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753313
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, если это возможно , то поправьте меня. В процедуру Combo я задаю переменную для определения SQL-запроса. А в процедуре модуля переменная нужна, чтобы RecordSource определял, какую именно таблицу нужно выводить в Grid
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753339
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerВ процедуру Combo я задаю переменную для определения SQL-запроса. А в процедуре модуля переменная нужна, чтобы RecordSource определял, какую именно таблицу нужно выводить в GridМужик! Это две РАЗНЫЕ переменные!!! Одна - грубо говоря, Form1.Module.strRequest, а вторая Form1.Module.Combo1_Click.strRequest. И, ясен пень, присвоение значения в одну с последующим использованием значения другой заканчивается полной хреновнёй.

Удали определение переменной из метода. Оставь только определение на уровне модуля.
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753360
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, убрать-то я уберу, но в коде тогда нет ссылки на то, что должно выгружаться в Grid после нажатия Combo. Как мне быть?
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753385
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же сказал убрать "определение переменной". Но не присвоение ей значения.
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753450
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, я убрал, но это к изменениям не привело. Прошёлся в пошаговом режиме и по-прежнему ругается на Refresh. Склоняюсь к тому, что в SQL-запросе загвоздка, но не могу определить какая((
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753476
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerпо-прежнему ругается на RefreshЭто новая информация. Но бесполезная - ибо рефрешей в коде двое.

JamesMilnerСклоняюсь к тому, что в SQL-запросе загвоздкаНу так выведи его после присвлоения в переменную да посмотри... или нам покажи - тоже вариант.

Кстати, CommandTypeEnum Values полагает, что CommandType = 4 - это adCmdStoredProc. А у тебя содержимое strRequest как-то слабо напоминает имя хранимой процедуры.
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753495
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, на первом Refresh - е сразу выдаёт ошибку. А изменение CommandType ни к чему не приводит толковому : вместо предыдущей ошибки ADO выскакивает типична " Syntax error in From clause"
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753529
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerвместо предыдущей ошибки ADO выскакивает типична " Syntax error in From clause" Ну так это требуется понимать буквально. Как и просьбу Акина показать нам содержимое strRequest на момент возникновения ошибки
PS: Честно говоря, я не помню, разве в RecordSource нужно передавать не recordset?
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753533
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adodc - бяка, выбросьте и больше не используйте. делайте на прямом ADODB.Recordset
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753605
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneadodc - бяка, выбросьте и больше не используйте. делайте на прямом ADODB.Recordsetу ТС вообще проблема в коммондиалоге (если ему верить, конечно
)
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753800
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, вариант с указанием конкретной таблицы в RecordSource работает исправно
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Text1_DblClick()
Dim ConStr As String
Me.CommonDialog1.ShowOpen
Me.Text1 = Me.CommonDialog1.FileName
ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Me.Text1 & "; Persist Security Info=False;"
Me.Adodc1.ConnectionString = ConStr
Me.Adodc1.RecordSource = "test"
Me.Adodc1.CommandType = 2
Me.Adodc1.Refresh
Set Me.DataGrid1.DataSource = Me.Adodc1.Recordset
Me.DataGrid1.Refresh
End Sub
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753811
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilnerизменение CommandType ни к чему не приводит толковому : вместо предыдущей ошибки ADO выскакивает типична " Syntax error in From clause"
1) На какое именно значение меняете CommandType?
2) Запрос-то собранный покажите, да...
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753818
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JamesMilner, один из форумчанинов дал мне следующий совет, но я не до конца осознаю, как мне наложить его на свой код:

"При установлении соединения вы указываете только имя файла БД, а в строке работы с ней - имя таблицы. Что мешает сделать в ComboBox или, используя что-то ещё, выбор имени таблицы?
Назначаете строковую переменную. например "Таблица", заносите в неё выбранное имя таблицы и всё. "



Код: vbnet
1.
Таблица As String[SRC VB]


........
conn.Execute "INSERT INTO [Таблица] ............................. "
[/SRC]
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753819
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot JamesMilner]JamesMilner, один из форумчанинов дал мне следующий совет, но я не до конца осознаю, как мне наложить его на свой код:

"При установлении соединения вы указываете только имя файла БД, а в строке работы с ней - имя таблицы. Что мешает сделать в ComboBox или, используя что-то ещё, выбор имени таблицы?
Назначаете строковую переменную. например "Таблица", заносите в неё выбранное имя таблицы и всё. "


Код: vbnet
1.
2.
3.
Таблица As String
........
conn.Execute "INSERT INTO [Таблица] ............................. "
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39753823
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
......
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39754006
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, я попытался переделать код без компонента ADODC (насколько я уловил Ваш посыл) и столкнулся с такими трудностями:
Код: 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.
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub Command1_Click()
Form1.CommonDialog1.ShowOpen
Form1.Text1 = Form1.CommonDialog1.FileName
Form1.Text1.Visible = False
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Text1 & "; Persist Security Info=False;"
rs.CursorLocation = adUseClient
Call Combo1_Click
rs.Open strRequest, con, adOpenKeyset, adLockPessimistic, adCmdText
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
Set rs = Nothing

End Sub



Private Sub Combo1_Click()
Dim strRequest As String

strRequest = " Select * FROM " & Combo1.List(Combo1.ListIndex)

End Sub
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39754008
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, вот такая выскочила ошибка
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39754018
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim rs ...
Dim strRequest as String

Private Sub Command1_Click()
...
End Sub

Private Sub Combo1_Click()
'Dim ... 

strRequest = ....

MsgBox strRequest

End Sub
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39754605
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, не сообразил, что нужно инициализировать Combo1_Click ? А
Код: vbnet
1.
Dim strRequest As String

я уже перенёс в начало модуля, до меня дошло
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39754630
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ты был прав, присутствует синтаксическая ошибка в запросе, оттого видимо он не записывается полностью
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39755516
JamesMilner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JamesMilner, догнал, что ошибка не в синтаксисе , а в том , что Combo1.ListIndex присваивается -1 ( не выбрано значение в ComboBox). Но как мне инициализировать Combo, если база не выгружается, я ума не приложу
...
Рейтинг: 0 / 0
Проблемы с ADO при подключении базы данных в Visual Basic 6
    #39757324
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JamesMilner,

Как совет - научитесь работать с отладчиком в VB6. Да и VBA вообще. Пропадет громадная куча вопросов - сэкономите кучу своего и чужого времени.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ADO при подключении базы данных в Visual Basic 6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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