Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 115
#1

Ошибка при попытке обработать SQL-запрос из recordset - VBA

23.04.2017, 05:13. Просмотров 143. Ответов 1
Метки нет (Все метки)

Здравствуйте! Задача выбрать нужные поля из таблиц и поместить их в ListBox
При попытке обработать SQL-запрос лезет такая ошибка
Кликните здесь для просмотра всего текста
Ошибка при попытке обработать SQL-запрос из recordset

Сам SQL-запрос/VBA
SQL
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private Sub btnSearch_Click()
' Кнопка Поиск
Dim CountBuilding As Integer
' Количество зданий, попавших в запрос
IF IsNull(SearchAddress.Value) THEN
   ' Улица не имеет значения для пользователя
   SelectSearchAddress = 0
Else
   ' Номер улицы для поиска
   SelectSearchAddress = SearchAddress.Value
END IF
IF IsNull(SearchHouse.Value) THEN
   ' Номер дома не имеет значения для пользователя
   SelectSearchHouse = 0
Else
   ' Номер дома для поиска
   ' Номер дома преобразован из
   ' строки символов в число
   SelectSearchHouse = Val(SearchHouse.Value)
END IF
 
' Формирование строки запроса
' Основная часть строки
SQLText = "SELECT tblObject.Address, " & _
    "tblAddress.AddressName AS НАЗВАНИЕ, " & _
    "tblAddress.AddressSign AS ПРИЗНАК, " & _
    "tblObject.House AS ДОМ, " & _
    "tblObject.Flat AS КВАРТИРА, " & _
 "FROM tblAddress, tblObject " & _
    "WHERE  tblAddress.Address = tblObject.Address "
' Дополнительная часть строки
' содержит параметры выбора
IF SelectSearchAddress <> 0 OR SelectSearchHouse <> 0 THEN
      ' Если выбрана улица
      SQLText = SQLText & " AND tblObject.Address =" & _
                SelectSearchAddress
   End If
   If SelectSearchHouse <> 0 Then
      ' Если введен номер дома
      SQLText = SQLText & " AND tblObject.House =" & _
                SelectSearchHouse
   END IF
 
 
' Источник данных поля
ListBox.RowSource = SQLText
' Подсчет количества зданий, попавших в запрос
CountBuilding = CountQuery(SQLText)
IF CountBuilding = 0 THEN
   ' В запросе нет записей
   MsgBox "Зданий, отвечающих условиям вашего " & _
       "запроса, в базе нет. Повторите запрос, " & _
       "изменив требования.", _
       vbOKOnly + vbExclamation, "Внимание"
   ' Возврат на первую вкладку
   ' для повторения запроса
   Exit Sub
End If
' Изменение надписи внизу второй вкладки
 CountRecords.Caption = _
    "Количество зданий, попавших в запрос: " & _
     Str(CountBuilding)
' Выделение первой записи объекта "Поле со списком"
ListBox.Selected(1) = True
End Sub
Сама БД(Access 2010)
47 Маслов 4.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2017, 05:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при попытке обработать SQL-запрос из recordset (VBA):

Передать параметры в sql запрос (ADODB.Recordset) - VBA
как передать параметры в select те в Delphi Это бы так выглядило str:='select * from tableName where pole1=:1' ...

Различие прямого SQL-запроса и через Recordset в MS Access - VBA
ВОПРОС ПО SQL фрагмент кода st = 'SELECT * FROM MainStudentTest WHERE SubjectCode=' &amp; sbjkd &amp; ' AND TestCode=' &amp; tstkd &amp; ' AND...

Не удаётся отображать прогресс выполнения SQL запросов через Recordset - VBA
Возможно, тема уже обсуждалась, но ответа на свой вопрос через поиск не нашёл. Прошу помочь, если кто-то сталкивался с аналогичной...

При попытке создать recordset вылетает ошибка RDS Handler'а - C# ASP.NET
При попытке создать recordset вылетает ошибка RDS Handler'а. Кто-нибудь с этим сталкивался?

при попытке организовать поиск по базе с разбиением на страницы выдается ошибка ADODB.Recordset (0x800A0BCD) - C# ASP.NET
есть база данных, при попытке организовать поис с разбиением на страницы выдается ошибка ADODB.Recordset (0x800A0BCD) Either BOF or EOF...

ГЛЮКИ. Set Табл.Form.Recordset = ДЛИННЫЙ sql-запрос. Возникают проблемы при фильтрации. - MS Access
Есть подчиненная форма ЗаказыТабл. Для неё ставлю: Set ЗаказыТабл.Form.Recordset = CurrentDb.OpenRecordset('SELECT ... ... ORDER BY...

1
snipe
2682 / 817 / 165
Регистрация: 07.08.2013
Сообщений: 1,988
23.04.2017, 06:47 #2
синтаксическая ошибка в 28 строке кода
запятая после слова Квартира

Добавлено через 20 минут
иногда вместо функции select case удобнее использовать функцию choose
т.е. вместо того что у Вас написано
Visual Basic
1
2
3
4
5
6
7
8
Select Case Days
   Case 1
        DayText = "Первое"
   Case 2
        DayText = "Второе"
.......
    Case 31
        DayText = "Тридцать первое"
можно написать так
Visual Basic
1
DayText=Choose(Days,"Первое","Второе", .........., "Тридцать первое")
тоже самое с месяцами
но для месяцев можно применить функцию
MonthText=iif(

Добавлено через 9 минут
Visual Basic
1
MonthText=iif(Months=3 or Months=8, " " & MonthName(Months) & "а", " " & Left(MonthName(Months),Len(MonthName(Months))-1) & "я")
Добавлено через 20 минут
далее
описывать параметры ADO-рекордсета конечно увлекательное занятие
но можно эти параметры указать при открытии
Visual Basic
1
rs.open strSQL, CurrentProject.connection, 3, 3
где strSQL- строка написанная на языке SQL
CurrentProject.connection - соединение
цифры это числовые значения adOpenKeyset ( а вот второй параметр не помню)

еще
пользоваться свойством RecordCount сразу после открытия рекордсета не совсем правильно (может быть возвращено не правильное значение посему рекордсет сначала проверяют на наличие записей и гоняют взад вперед
а уж потом считывают свойство RecordCount
Visual Basic
1
if rs.eof and rs.bof Then: Else rs.movelast: rs.movefirst
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2017, 06:47
Привет! Вот еще темы с ответами:

Ошибка на VBA при работе с ADO.Recordset (таблица SQL Server) - SQL Server
Проект ADP, БД: SQL Server 7.0, таблица TABLE1, поле intgr типа int Делаю так: Dim rst As ADODB.Recordset Set rst = New...

При попытке изменить таблицу в SQL появляется ошибка - SQL Server
Создана база данных, при попытке внести данные в таблицу и при нажатии команды &quot;изменить первые 200 строк&quot; появляется такая...

Ошибка при попытке создать базу MS SQL. Неверный Server Name - C#
Короче говоря, пытаюсь создать базу данных, и Server Name меня не пропускает. Вводил туда и имя компа, и как в книге сказано (local) и...

Recordset is not open при попытке добавить запись в Access - C++ Builder БД
Всем доброго времени суток.Имею связку подключения adoconnection+adodataset+adocommand. При попытке вставить новую запись получаю вот такую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.