Не работает SQL запрос из макроса.

Автор Ириминаге, 4 апреля 2022, 11:53

0 Пользователи и 1 гость просматривают эту тему.

Ириминаге

Здравствуйте!
Есть таблица с картриджами(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

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

Ириминаге

Цитата: economist от  4 апреля 2022, 11:59res.next()
А ларчик просто открывался... Я полагал, что Next только для цикла нужен. Огромнейшее Вам СПАСИБИЩЕ!!!
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...