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

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

21 Ноябрь 2017, 16:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: База на основании XLS-файла  (Прочитано 3138 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
adi_den2013
Постоялец
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #30: 18 Сентябрь 2017, 14:17 »

Я за кириллицу и в именах таблиц, и в полях, и в именах представлений. Как только я "русифицировал" корпоративную БД - число писателей запросов выросло с 3-х до 8-ми человек, а число новых запросов в месяц - удвоилось. Есть такая важная тема - популяризация. Если нет желания все делать самому - сделай так, чтобы другие могли сделать это по твоему указанию. А еще лучше если они сами захотят этого.

Никто меня не убедит что в базе данных должна быть таблицы с "устоявшимися" именами вида Employers, Enterprises, Counteragents, Warehouses и тд, потому что я попробовал таблицы и поля на русском и офигел от того насколько это удобнее и мне, англоговорящему, и другим. Смотрите насколько понятен запрос "на русском" в моей методичке по объединениям:

Я считаю - русификация это вопрос предпочтений. Мне привычнее работать с латиницей в названиях таблиц и полей. Хотя, когда я начинала в 2013 году на новой работе осваивать OpenOffice Base, я писала программу для расчета баланса на смешанной структуре таблиц (латиница/кириллица). Для изучения - было понятнее. Теперь же не принципиально, но латиница привычнее.

Спасибо за ссылки. DB Browser for SQLite установила, но забыла об этом упомянуть. Импорт/экспорт там мне понравился.


* Image005.jpg (294.45 Кб, 802x951 - просмотрено 8 раз.)
« Последнее редактирование: 18 Сентябрь 2017, 14:29 от adi_den2013 » Записан

Яна (in real)
economist
Ветеран
*****
Offline Offline

Сообщений: 742


« Ответ #31: 18 Сентябрь 2017, 14:39 »

rami - сейчас проверил версию SQLiteStudio 3.1.1 - появилась поддержка кириллицы и сортировка результирующей таблицы (результат выполнения SQL-запроса), но лишь по одной колонке (автор поставил в todo). И, увы, нет (надеюсь только пока) подсветки значений по типу.

Риквесты на все это я писал автору 2 года назад, очень рад что решилась проблема с кириллицей, это уже делает продукт пригодным к внедрению в массы. Также автор пока "не повелся" на хранение истории SQL-запросов в самой базе данных, это делает невозможным коллективное итерационное написание запросов (SQLite Manager хранит все в самой базе в таблице __sm_ext_mgmt - тем самым реализуя в SQLite функционал "хранимых" процедур и среду коллективного одновременного написания SQL-запросов для 3-5 человек, которой могут похвалиться немногие IDE - даже не могу припомнить ни одной).

Очень хорошо что есть такой выбор всего для SQLite - IDE, "оберток" под все мыслимые языки программирования.      
« Последнее редактирование: 18 Сентябрь 2017, 15:33 от economist » Записан

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

Сообщений: 742


« Ответ #32: 18 Сентябрь 2017, 15:12 »

Для тех кто захочет, как и ТС, перейти на СУБД SQLite - стоить знать одну мелкую тонкость. В отличие от почти всех других СУБД - SQLite не требует явной группировки через GROUP BY для агрегирующих функций SUM, TOTAL, MAX, MIN, AVG - т.е. она не даст ошибки там, где почти все остальные будут ругаться! Но это еще не все.

В SQLite функция применяется ко всему результирующему набору строк данного поля, а другие "вызванные" в запросе поля, без агрегирующих функций - выведут "последние", самые "нижние" значения строк таблицы, удовлетворяющие условиям отбора. но не имеющим полного отношения к результатам функций. Это может поначалу сильно сбить с толку (отображается "последнее" значение выборки, обычно это кто-то на "я", если исходная таблица отсортирована по алфавиту). То есть запрос:

SELECT Контрагент, SUM(Задолженность) FROM Таблица
- вернёт, скажем, таблицу 1х2:
Ящур ООО, 15881665454.

Так вот, эта сумма 15881665454 - относится не к Ящур ООО, а ко всем строкам Таблицы - просто "Ящур" оказался в последней строке таблицы из-за ее исходной сортировки А-Я. Чтобы содержимое этого поля обрело смысл и полезность - нужно просто добавить  группировку по контрагентам
GROUP BY 1 или GROUP BY Контрагент. Для "переходящих" это бывает очень непривычно. Впрочем, это бывает полезно - можно в ряде случаев уйти от подзапросов.

Зато SQLite очень либерален к тому, что написано в запросе до слова FROM. Он позволяет писать что-то вроде такого, и все будет работать:

SELECT Поле1, 2, *, 'МЖ', Поле2||Поле3, Поле4/Поле5 Ух FROM ...

И, конечно, нужно проверить - работает ли ваш SQLitе корректно с кириллицей. В частности, обычный SQLite имеет регистрочувствительное сравнение и "санкционный" Like, который не любит русские буквы :-) :  

SELECT 'WORD' like 'word' -- обычно 1, True

SELECT 'СЛОВО' like 'слово' -- обычно 0, False, но ЗА ЧТО?

SELECT CASE WHEN LIKE ('Г','г')=1 THEN 'LIKE (''Г'',''г'')=1 - Like регистроНЕзависим' ELSE 'LIKE (''Г'',''г'')=0 - Like регистроЗАВИСИМ' END

Кроме тoго, обычный Sqlite не умеет функциями LOWER(), UPPER() менять регистр кириллицы:

SELECT UPPER('абвg')

Если будет абвG - то виновата не SQLite, а Windows, которая не умеет полноценно работать с кириллицей до сих пор. Способов решения - много.  
Выполните эти запросы и решите для себя, как вам нужнее. Если интересно - продолжим.  







    
« Последнее редактирование: 18 Сентябрь 2017, 15:41 от economist » Записан

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

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #33: 19 Сентябрь 2017, 11:14 »

Вопрос по подключению(?) к БД SQLite в ООBase - есть какие-то отличия кроме драйвера ODBC? 

В принципе макрос работает без ошибок, к базе подключаюсь, но не могу воспользоваться параметром par_1


  Sub Prov_login                                     ' считывание данных из формы
  Dim oForm, oForms
  Dim oDrawPage as Object
  Dim sql_login, par_1 as String
  Dim sql_passw as String
  Dim oStatement As Object
  Dim oDBSource As Object
  Dim oConnection As Object
  Dim oDatabaseContext As Object
'

  oDatabaseContext = createUnoService( "com.sun.star.sdb.DatabaseContext" )
  oDBSource = oDatabaseContext.GetByName("studenti-adi")
  oConnection = oDBSource.GetConnection("", "")   
  oStatement = oConnection.createStatement()
  oStatement.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE 
   

  oForms = ThisComponent.getDrawPage().getForms()
  oForm  = oForms().getByName("vhodnaya")              'подформа имя из навигатора форм
  getval1_1=oForm.getByName("txtlogin")                 'имя поля из навигатора форм
  getval1_2=oForm.getByName("txtpassw")             'пароль (имя поля из навигатора форм)

  login_user=getval1_1.currentvalue 'текстовое представление поля логин
  passw_user=getval1_2.currentvalue 'текстовое представление поля пароль
 
  sql_passw = "SELECT ""passw"" FROM ""users""  WHERE ""login""="+login_user
 
  Result1= oStatement.executeQuery(sql_passw)
  par_1=Result1.GetString(1)  ' результат выполнения запроса из базы
 
  MsgBox "Внесенный пароль: "+ passw_user +"      Пароль в базе "+ par_1
 End Sub


На этой строке идет ошибка (см.скрин)


* Image006.jpg (46.36 Кб, 459x128 - просмотрено 4 раз.)
Записан

Яна (in real)
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 359


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #34: 19 Сентябрь 2017, 11:19 »

Как насчет сдвинуть Result1 на первую запись после того как убедишься, что он не пустой, и перед считыванием результата? Мы же с тобой это уже как-то проходили... Помнишь?
« Последнее редактирование: 19 Сентябрь 2017, 11:35 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
adi_den2013
Постоялец
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #35: 19 Сентябрь 2017, 11:35 »

Как насчет сдвинуть Result1 на первую запись после того как убедишься, что он не пустой, и перед считыванием результата? Мы же с тобой это уже как-то проходили....

Старость - не радость ....  Грустный

exequteQuery не работает  Злой    Спасибо!
Записан

Яна (in real)
adi_den2013
Постоялец
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #36: 19 Сентябрь 2017, 12:49 »

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

Result1.next  нужно высечь в камне и поставить себе на рабочий стол  Смеющийся

Сэнкс ещё раз за напоминание  Всё хорошо
Записан

Яна (in real)
economist
Ветеран
*****
Offline Offline

Сообщений: 742


« Ответ #37: 21 Сентябрь 2017, 11:42 »

Есть еще одна хрень StarBasic-а в Base с SQLite - ESCAPEPROCESSING

Это та самая кнопка [SQL], которую всегда нужно держать нажатой, иначе BASE исковеркает запрос и сделает его сбойным.
Но есть и исключение - параметрический или интерактивный, требующий ввода пользователя, запрос. Там нужно наоборот, до вызова запроса сказать что-то типа (пишу по памяти):

oStatement.escapeprocessing=true

     
Записан

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

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #38: 22 Сентябрь 2017, 09:20 »

Я подозреваю проблемы с кодировкой. Набор с клавиатуры визуально - кириллица, в БД SQLite попадает черти-что (простите мне мой фр.  Злой)

Региональные настройки ОС  Непонимающий


* Image009.jpg (65.2 Кб, 313x157 - просмотрено 5 раз.)

* Image008.jpg (53.66 Кб, 265x162 - просмотрено 4 раз.)
Записан

Яна (in real)
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #39: 22 Сентябрь 2017, 10:09 »

Странно, всё вокруг — кириллица, а в одной ячейке — кракозябрица, как это получилось? Переписали текст только в этой ячейке?
Записан

adi_den2013
Постоялец
***
Offline Offline

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #40: 22 Сентябрь 2017, 10:29 »

Корректировка  через форму. Набор в поле "Фамилия".


* Image010.jpg (422.54 Кб, 1166x933 - просмотрено 8 раз.)
« Последнее редактирование: 22 Сентябрь 2017, 10:52 от adi_den2013 » Записан

Яна (in real)
economist
Ветеран
*****
Offline Offline

Сообщений: 742


« Ответ #41: 22 Сентябрь 2017, 13:09 »

В настройках ODBC-драйвера нужно поставить флаг OEMCP Translation
А в настройках в BASE - Системная
Записан

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

Пол: Женский
Расположение: Донецкая обл.
Сообщений: 239


« Ответ #42: 22 Сентябрь 2017, 13:32 »

В настройках ODBC-драйвера нужно поставить флаг OEMCP Translation
А в настройках в BASE - Системная

Огромное спасибо! В настройках драйвера было всё дело.
Записан

Яна (in real)
Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

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