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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Как передать логическое значение из таблицы в форму?  (Прочитано 523 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


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

Здравствуйте! Есть таблица, несколько полей имеют логический тип Boolean. Нужно передать данные в форму. Все данные, кроме логических, спокойно передаются в Форму. Как это сделать? Вот часть кода моего макроса:

Код:
Sub Main
Dim sForm, SrhIN, SrhTpCrts

sForm = ThisComponent.Drawpage.Forms.getByName("SrhMain")
SrhIN = sForm.getByName("SrhBoxIN")
Const dbName="cartrigi"
DIM sConnectToDataBase AS Object, sStatement  AS Object, sDbContext AS Object, sDataSource AS Object
DIM sSQL as String
If SrhIN.text<>"" then
sDbContext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
sDataSource=sDbContext.getByName(dbName)
sConnectToDataBase=sDataSource.getConnection("","")
sStatement = sConnectToDataBase.createStatement()
sSQL= "SELECT ""Брак"",""Пустой"",""Утиль"",""Склад"",""Выдан"",""Запр"" FROM ""Картриджи"" WHERE ""ИНКр"" = '" & SrhIN.text & "'"
DIM sRes, SrhBrks, SrhEmpts, SrhUtls, SrhSklds, SrhVyds, SrhZprs
sRes=sStatement.executeQuery(sSQL)
SrhBrks =  sForm.getByName("SrhBrk")
SrhEmpts =  sForm.getByName("SrhEmpt")
SrhUtls =  sForm.getByName("SrhUtl")
SrhSklds =  sForm.getByName("SrhSkld")
SrhVyds =  sForm.getByName("SrhVyd")
SrhZprs =  sForm.getByName("SrhZpr")
If sRes.next() Then
SrhBrks.state=sRes.getBoolean(1)
SrhEmpts.state=sRes.getBoolean(2)
SrhUtls.state=sRes.getBoolean(3)
if sRes.getBoolean(4) then SrhSklds.state=true
SrhVyds.state=sRes.getBoolean(5)
SrhZprs.state=sRes.getBoolean(6)
 else
 msgbox "Такого номера НЕТ."
 EndIf
DIM sDb  AS Object
sDb=sConnectToDataBase(dbName)
sDb.close()
sDb.dispose()
Else
msgbox "Номер не введён"
EndIf

End Sub
« Последнее редактирование: 15 Апрель 2022, 16:17 от Ириминаге » Записан

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

Пол: Мужской
Сообщений: 909


WWW
« Ответ #1: 15 Апрель 2022, 13:08 »

Есть таблица, несколько полей имеют логический тип Boolean
Крайне не рекомендую использовать такие поля.
Записан

Владимир.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Ответ #2: 15 Апрель 2022, 13:29 »

Крайне не рекомендую использовать такие поля

Цитата:
Логические величины. Одни СУБД, в частности Microsoft SQL Server, явно поддерживают логические значения (true или false), а другие разрешают выполнять в инструкциях SQL логические операции (сравнение, логическое И/ИЛИ и другие) над данными.

А чем плох этот тип? Памяти занимает мало и делает всё как надо. Мне ещё предстоит подчистка текста макроса с уточнением типов данных переменных, дабы снизить объём зарезервированной памяти. Но всё-таки главный вопрос в том, как получить результаты записей. Самое забавное, что менять эти данные у меня выходит, а вот читать, как выясняется - нет.
Записан

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

Пол: Мужской
Сообщений: 909


WWW
« Ответ #3: 15 Апрель 2022, 13:42 »

Вряд ли Вы собираетесь всегда работать со встроенной базой данных. При прочих равных лучше выбирать типы данных, которые поддерживаются всеми базами.
Записан

Владимир.
Ириминаге
Всем бобра!
Участник
**
Offline Offline

Сообщений: 49


« Ответ #4: 15 Апрель 2022, 13:55 »

Владимир, всё может быть, однако на текущий момент меня волнует только работоспособность этой.
Записан

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

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


« Ответ #5: 15 Апрель 2022, 14:20 »

Используйте 0 и 1, плюсы  те же что и Boolean, минусов нет. 
Записан

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

Сообщений: 49


« Ответ #6: 15 Апрель 2022, 14:26 »

То бишь на поставленный вопрос ответа нет?
Записан

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

Сообщений: 49


« Ответ #7: 15 Апрель 2022, 16:17 »

В общем, проблема решена. State принимает 1 или 0. Пришлось писать If - конструкции, для обработки. Спасибо за посильную помощь.
Записан

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

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