Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

22 Май 2022, 14:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Не работает SQL запрос из макроса.  (Прочитано 421 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Стартовое сообщение: 4 Апрель 2022, 11:53 »

Здравствуйте!
Есть таблица с картриджами(Base), на основе её сделана форма, в форму добавлен список и текстовое поле. Список забивается из поля в основной таблице, с фильтрацией. Идея в том, чтобы по выбору строки из списка, в текстовом поле отображалось значение другого поля этой записи. Но запрос не даёт результатов, хотя на пробной форме, с таким же запросом(из свойства выпадающего списка колонки таблицы) всё работает.
Код:
Sub Main
Dim oForm, TextBoxIN, TextBoxINTxt, TxtTpCrt, TxtTpCrtTxt  'Переменные

oForm = ThisComponent.Drawpage.Forms.getByName("VydMain") 'Подключаем форму
TextBoxIN = oForm.getByName("INCr")       'Подключаем список
TextBoxINTxt=TextBoxIN.StringItemList(TextBoxIN.SelectedItems(0)) 'Получаем результат выбора
Const dbName="cartrigi"
DIM ConnectToDataBase AS Object, Statement  AS Object, dbContext AS Object, oDataSource AS Object
DIM SQL as String
dbContext=CreateUnoService("com.sun.star.sdb.DatabaseContext") ' Создаем сервис
oDataSource=dbContext.getByName(dbName) 'Объявляем базу
ConnectToDataBase=oDataSource.getConnection("","") 'получаем соединение
Statement = ConnectToDataBase.createStatement() 'Создаем объект для отправки SQL запросов
SQL= "SELECT ""ТпКрт"" FROM ""Картриджи"" WHERE ""ИНКр"" = " & TextBoxINTxt 'формируем строку запроса
msgbox sql ' Результат SELECT "ТпКрт" FROM "Картриджи" WHERE "ИНКр" = 512
DIM res
res=Statement.executeQuery(SQL) 'Выполняем запрос
msgbox res.getstring(1) 'Выдает ошибку:

'Ошибка времени выполнения Basic.
'Вызвано исключение
'Type: com.sun.star.sdbc.SQLException
'Message: No data is available.

DIM db  AS Object
db=ConnectToDataBase(dbName)
db.close()
db.dispose()

End Sub

Вопрос: где я накосячил?!
Записан

Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...
economist
Форумчанин
***
Offline Offline

Сообщений: 1 672


« Ответ #1: 4 Апрель 2022, 11:59 »

res=Statement.executeQuery(SQL) 'Выполняем запрос
res.next() ' входим в ResultSet, т.е. в 1-ю строку
msgbox res.getstring(1) 'берем значение из 1-й колонки
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Ответ #2: 4 Апрель 2022, 12:02 »

res.next()
А ларчик просто открывался... Я полагал, что Next только для цикла нужен. Огромнейшее Вам СПАСИБИЩЕ!!!
Записан

Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!