Спасибо. Попробую.
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Poputchik писал(а): возможны случаи когда документ под номером был, но его не внесли в базу и чтоб следующий документ имел правильную нумерацию ему в ручную можно изменить ееСложности работы с БД возникают из-за неправильного проектирования БД. Ну не должен ты в качестве номера документа использовать id. У тебя никогда небыло документов с номерами : 123, 123А, 123б, 123-повторный, 123-добавочный и т.д. ? БД тем и хороша, что в ней любая анархия - не помеха правильной выборке любых данных. |
|||
карма: 25 |
|
Ответов: 413
Рейтинг: 57
|
|||
Tad писал(а): У тебя никогда небыло документов с номерами : 123, 123А, 123б, 123(повторный) и т.д.в номере документа закодирован год, тип изделия, номер по порядку. Я формирую автоматом номер соединяя данные введенные пользователем и порядковый номер строки. Т.е. номера могут отличатся одной цифрой и эта цифра номер id. Структура номера документа определена стандартом. Моя задача сделать эту нумерацию автоматически с возможностью ручной правки при необходимости и по возможности правильно использовав возможности SqLite. Tad писал(а): откуда работающий с программой будет знать, что его не внесли ?по началу он будет набирать эту базу из уже существующих документов, если очередного документа не окажется, а следующий будет начинаться с другова номера, то ему нужно будет его изменить вручную. Есть еще вероятность появления дополнений к документу. Тогда номер документа будет тот же но в конце изменится буква или добавится слово. Но самое вероятное, что пользователь будет изменять в номере документа именно порядковый номер, т.е. в моем случае id. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Poputchik писал(а): Тогда номер документа будет тот же но в конце изменится буква или добавится словоЛадно. Хозяин - барин. Ещё раз советую - не привязывай номер документа к ID ! |
|||
карма: 25 |
|
Ответов: 413
Рейтинг: 57
|
|||
Tad если я создам колонку под другим именем и добавлю ей автоприращение это будет тоже самое что и id сейчас или нет. Если id не использовать то как лучше тогда задать номер который будет иметь в себе цифру на единицу больше цифры указанной в предыдущей строке? Считывать ячейку с номером документа и вычленять изменяющуюся часть, затем прибавлять 1 и использовать в следующем номере?
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
1. Я просил что-то типа
2. Poputchik писал(а): как лучше тогда задать номер который будет иметь в себе цифру на единицу больше цифры указанной в предыдущей строке?б) SELECT max(id)+1 FROM tabl; -- то же с использованием id, что выглядит вообще дурью при id INTEGER PRIMARY KEY AUTOINCREMENT, а разрешив пользователю его менять - через какое-то время заимеешь такой геморрой , что "мама не горюй." в) SELECT last_insert_rowid()+1; -- функция SQLite г) нижняя точка в компоненте SQLite_Query+Math ------------ Дoбавленo в 15.15: Poputchik писал(а): есть загвоздочки, например если человек вводит номер который в себе содержит ранее введенный номер (например 1234 содержит в себе 123) то считывание из базы и заполнение полей произойдет в момент ввода 123,А организовать задержку проблема ?
|
|||
карма: 25 |
| ||
файлы: 1 | poputchik_1.rar [3.5KB] [372] |
Ответов: 413
Рейтинг: 57
|
|||
Добрый вечер.
Tad писал(а): tabl -- 14. ??????????таблица с тремя строками в одной из которых записан многострочный текст, в другой даты которые нужно контролировать . .. Если не трудно подскажите разницу между: INSERT OR REPLACE INTO reshenie VALUES (%1, . ..) и INSERT INTO reshenie (nom_res, . . .) VALUES ('%1', . . .) в первом варианте запись вставляется или перезаписывается что ли? Tad писал(а): И пример (насколько я понял задачу)Я приблизительно так и построил програмку, основные вопросы у меня по правильности построения структуры базы SqLite и правильности построения запросов (я в них просто нулевой). За приведенные примеры большое спасибо. Можно ли выводить одновременно данные по отдельным колонкам из разных таблиц одной базы. Т.е. задавать запрос одновременно к нескольким таблицам(например в одной таблице хранить все записи по одним документам, а в другой по другому и дабы отдельные записи не дублировались при необходимости запрашивать их) |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Poputchik писал(а): таблица с тремя строками в одной из которых записан многострочный текст, в другой даты которые нужно контролировать . ..INSERT INTO reshenie (nom_res, . . .) VALUES ('%1', . . .) Перечислять имена колонок нужно если заносятся данные только в несколько колонок. Если во все - то не надо. INSERT OR REPLACE INTO reshenie VALUES (12, . ..); -- Если четко указано значение id, то при наличии такой записи он будет изменена на новые значения values, при отсутствии - будет добавлена. INSERT OR REPLACE INTO reshenie VALUES (NULL, . ..); -- Если на месте id указать NULL , то запись будет просто добавлена. В схеме приведённой выше за это отвечает компонент Memory |
|||
карма: 25 |
| ||
Голосовали: | Poputchik |
Ответов: 413
Рейтинг: 57
|
|||
Tad писал(а): а в третьей ?а в третей . . . В моем случае это ответственное лицо. Tad писал(а): В схеме приведённой выше за это отвечает компонент MemoryЯ усложнил себе схему, сделав отдельные схемы на добавление и замену. Приведенный пример гораздо проще. Спасибо. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Значит должны быть ещё :
Список ответственных лиц
|
|||
карма: 25 |
|
Ответов: 413
Рейтинг: 57
|
|||
Tad,
Спасибо! |
|||
карма: 0 |
|
Ответов: 1535
Рейтинг: 176
|
|||
Tad, помогай!
Если в базе имеется колонка с простым списком имён файлов с расширением, то как мне представить этот список в таблице пользователю без расширения? Какой должен быть запрос? |
|||
карма: 1 |
|
Ответов: 655
Рейтинг: 18
|
|||
ser_davkin,
create table test (file text); insert into test values ('song.mp3'); insert into test values ('verybigexecutable.exe'); insert into test values ('simple.html'); select rtrim(rtrim(file,"htmlexemp3"),'.') from test; п.с. "htmlexemp3" -дописывай туда нужные тебе форматы htmlexemp3docxls и т.д., только точку не ставь. ------------ Дoбавленo в 13.52: первым rtrim'ом (внутри запроса который) мы удаляем ненужные хвосты "htmlexemp3", вторым rtrim'ом убиваем '.' в "htmlexemp3" перечисли символы которые нужно вырезать только точку не ставь., у меня отлично пашет вот такой вариант select rtrim(rtrim(file,'qwertyuiopasdfghjklzxcvbnm1234567890'),'.') from test; п.с. мой вариант не панацея но рабочий.. |
|||
карма: 0 |
|
Ответов: 1535
Рейтинг: 176
|
|||
Gunnman, что не так?
|
|||
карма: 1 |
|
Ответов: 655
Рейтинг: 18
|
|||
ser_davkin, либы старые у Hiasm,я давно их поменял на более свежие) http://forum.hiasm.com/forum_serv.php?q=56&id=3827 -вот либы которые пользую (они кстати с поддержкой шифрования базы, я использую, оч крутая вещь) в папку с Hiasm кинь их, ну и не забудь рядом с приложением держать их. п.п.с вобще используй select rtrim(rtrim(file,'qwertyuiopasdfghjklzxcvbnm1234567890'),'.') from test; 'qwertyuiopasdfghjklzxcvbnm1234567890' - удобнее чем перечислять htmlexedoc и т.д. |
|||
карма: 0 |
| ||
Голосовали: | ser_davkin |