[РЕШЕНО]Как передать логическое значение из таблицы в форму?

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

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

Ириминаге

Здравствуйте! Есть таблица, несколько полей имеют логический тип 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

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

sokol92

Цитата: Ириминаге от 15 апреля 2022, 11:28Есть таблица, несколько полей имеют логический тип Boolean
Крайне не рекомендую использовать такие поля.
Владимир.

Ириминаге

Цитата: sokol92 от 15 апреля 2022, 13:08
Крайне не рекомендую использовать такие поля

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

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

sokol92

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

Ириминаге

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

economist

Используйте 0 и 1, плюсы  те же что и Boolean, минусов нет. 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ириминаге

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

Ириминаге

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