Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#1: 2020-04-15 20:09:39 ЛС | профиль | цитата
У меня библиотека небольшая - 3 книжных шкафа.
В каждом шкафу по 6 полок, каждая полка разделена пополам.

-- Схема базы данных library.db
--жанр
CREATE TABLE IF NOT EXISTS genre(
id INTEGER PRIMARY KEY,
name TEXT);

--автор
CREATE TABLE IF NOT EXISTS author(
id INTEGER PRIMARY KEY,
fio TEXT);

--книга
CREATE TABLE IF NOT EXISTS books(
id INTEGER PRIMARY KEY,
title TEXT,
id_genre INTEGER,
id_author INTEGER,
cupboard INTEGER, --шкаф
shelf INTEGER, --полка
section INTEGER); --секция
Вот сижу и думаю:
1. Выбрал жанр "Программирование"
2. В выпадающих списках появилось 200 названий книг и немного меньше Ф.И.О. авторов.
3. Искать по автору - бред. Не запоминаю я Ф.И.О.
Может есть идеи ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8926
Рейтинг: 823
#2: 2020-04-15 20:32:27 ЛС | профиль | цитата
Tad, ещё пару столбцов -- "Поджанр" и "Строка (слово), которая запомнилась"
А те книги, из которых строка не запомнилась -- на сва.., ой, Грета будет ругаться, конечно в макулатуру сдать
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#3: 2020-04-16 11:09:45 ЛС | профиль | цитата
"Поджанр" - принимается.
Леонид писал(а):
"Строка (слово), которая запомнилась"
Есть сложности.
Применяю SQLite, а оператор поиска SQLite.Like не "говорит" на русском.
Применять кодер\декодер в\из UTF8 по каждому чиху как-то не тянет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Главный модератор
Ответов: 2999
Рейтинг: 396
#4: 2020-04-16 11:37:29 ЛС | профиль | цитата
Tad писал(а):
Применяю SQLite, а оператор поиска SQLite.Like не "говорит" на русском.

А что происходит, если схема компилируется юникодовским компилятором?
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 16884
Рейтинг: 1239
#5: 2020-04-16 13:47:04 ЛС | профиль | цитата
Nic писал(а):
А что происходит, если схема компилируется юникодовским компилятором?
Не знаю.
И что, при публикации схемы, выводить сообщение: "Для работоспособности программы, необходимо компилировать юникодовским компилятором!!!"? Проще применить компонент CharSet.

Редактировалось 1 раз(а), последний 2020-04-16 14:26:03
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Главный модератор
Ответов: 2999
Рейтинг: 396
#6: 2020-04-16 15:34:12 ЛС | профиль | цитата
Tad писал(а):
И что, при публикации схемы, выводить сообщение: "Для работоспособности программы, необходимо компилировать юникодовским компилятором!!!"?

Наверное так следует делать только в крайнем случае, но если схема заработала бы с ASCII поиском на стандартном компиляторе и без изменений, компилированная юникодовским компилятором, заработала с кирилицей, то можно было бы это указать как опцию: если нужен поиск русского текста, то постройте программу с помощью компилятора с поддержкой юникода.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 1926
Рейтинг: 172
#7: 2020-04-16 20:57:42 ЛС | профиль | цитата
Tad писал(а):
SQLite.Like не "говорит" на русском.

Более того - требуется экранирование текстовых данных, чтобы служебные символы типа кавычек воспринимались интерпретатором как текст, а не команда. Вот мой вариант экранирования (только запрос надо адаптировать для своего проекта):

Add(FormatStr,16448783,161,385)
{
DataCount=1
Mask="SELECT FIO, pwd, tablenum, role FROM users WHERE FIO = '%1'"
link(Str1,2052291:GetData,[(167,293)(461,293)])
}
Add(ComboBox,13392093,448,168)
{
@Color=65365
Left=140
Top=55
Width=202
Height=21
Name="ВыборИнтЕТО"
Text=""
DataType=1
ReadOnly=0
}
Add(MultiElementEx,2052291,455,224)
{
@Hint=#53:Экранирование SQL: \x00, \n, \r, \, ', " и \x1a [26]|
link(Str,13392093:String,[])
}
BEGIN_SDK
Add(EditMultiEx,7033570,21,21)
{
VarCount=#29:GetData=Экранированные данные|
DataCount=#28:Str=Строка для экранирования|
Width=377
link(GetData,14015396:GetData,[(27,189)(41,189)])
}
Add(EventFromData,14015396,35,126)
{
link(onEvent,4748499:doReplace,[])
}
Add(Replace,4748499,77,126)
{
@Hint=#96:Замена одного \ на два. Указано три, т.к. в самом hiasm два \ становятся одним (один экранирует)|
SubStr="\"
DestStr="\\\"
link(onReplace,14853555:doReplace,[])
link(Str,7033570:Str,[(83,74)(27,74)])
}
Add(Replace,14853555,119,126)
{
SubStr="'"
DestStr="\'"
link(onReplace,10315989:doReplace,[])
}
Add(Replace,10315989,161,126)
{
SubStr="""
DestStr="\""
link(onReplace,9917010:doReplace,[])
}
Add(Replace,9917010,203,126)
{
SubStr="\0"
DestStr="\\0"
link(onReplace,963304:doReplace,[])
}
Add(Replace,963304,245,126)
{
SubStr="\r"
DestStr="\\r"
link(onReplace,4668297:doReplace,[])
}
Add(Replace,4668297,287,126)
{
SubStr="\n"
DestStr="\\n"
link(onReplace,15004466:doReplace,[])
}
Add(Replace,15004466,329,126)
{
SubStr="\26"
DestStr="\\Z"
link(onReplace,14015396:doData,[(373,132)(373,120)(23,120)(23,132)])
}
END_SDK

Tad писал(а):
Применять кодер\декодер в\из UTF8 по каждому чиху как-то не тянет.

А вот это не проканает? https://forum.hiasm.com/post/303722 Правда, оно для mysql, не знаю, будет ли работать для lite, просто попробуй.

Tad писал(а):
Может есть идеи ?

Tad, а задача-то какая? Ну, выпал список из 200 книг - а дальше-то что требуется?
карма: 9
0
Ответов: 16884
Рейтинг: 1239
#8: 2020-04-16 22:13:43 ЛС | профиль | цитата
3042 писал(а):
а задача-то какая? Ну, выпал список из 200 книг - а дальше-то что требуется?
Выбрать нужную книгу и получить №-шкафа, №-полки и №-секции, чтобы не лазить по всем шкафам, полкам и секциям.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)