Технический форум по робототехнике.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.
blindman » 04 май 2011, 15:22
Привезли мне пистолет. Надо теперь PIN-фотодиодов прикупить
blindman » 03 июн 2011, 18:50
Вот уж не думал, что через 10 лет придется вернуться к паскалю и дельфи. Понадобилось наваять простую программку работающую с базой данных под Linux и Windows. Ну я зная что в Qt есть модуль QtSql, был уверен что напишу все без проблем. Не тут то было. Он собака не может обновить данные из связанной таблицы. То есть если у меня грубо говоря есть клиент по имени Вася, и ему выписан счет, то открыв список счетов и список клиентов, я увижу там и там Вася. Но вот если я поменяю имя Васи на Васёк, в списке счетов оно не обновится. Путем пляски с бубном можно обновить список счетов, вот только текущая запись уедет в начало списка, а запомнить и вернуть ее - фигушки

Пошел устанавливать Lazarus и вспоминать былые времена

avr123.nm.ru » 03 июн 2011, 19:30
Жив курилка!
=DeaD= » 03 июн 2011, 20:27
Что значит обновить данные из связанной таблицы? Компоненты визуальные на формах не так поддерживают или что? Вроде через SQL напрямую связанным JOIN-селектом можно всегда получить актуальные названия. Оно их куда-то буферизует разве?
blindman » 03 июн 2011, 20:34
=DeaD= писал(а):Что значит обновить данные из связанной таблицы?
А что, мой пример с клиентом и счетом не понятен? Изменили имя клиента, в отображаемом списке счетов имя клиента не изменилось - надо заново явно выполнять запрос. При этом состояние View теряется, указатель текущей записи переходит в начало списка
=DeaD= » 03 июн 2011, 21:11
Ну то есть вопросы с завязанным на БД компонентом, так?
Добавлено спустя 8 минут 35 секунд:
Понял про что ты - я бы забил нафиг на такую мелочь, потому что это вопрос кэширования, если его не будет - приложение будет тормозить жестко на крупных базах данных.
blindman » 03 июн 2011, 23:20
Да я бы тоже забил (что и делают как правило - в той же 1С). Но хочется все красиво сделать, тем более что больших объемов данных не предвидится.
Поковырял Lazarus - судя по всему там та же песня. Давно это было, подзабыл уже, почему-то было впечатление что в Delphi такие проблемы как-то решались.
Поиск в интернете еще раз подтвердил - хочешь сделать хорошо, делай все сам

Те, кто решал подобную проблему, отказывались от использования QSqlQueryModel сотоварищи, и писали свои модели доступа к данным, заточенные под задачу и взаимодействующие между собой.
Добавлено спустя 1 минуту 16 секунд:Косвенное подтверждение того, что штатными средствами этого не сделать - молчание на форуме qtcentre.org
=DeaD= » 03 июн 2011, 23:54
Лучше не делать красиво, лучше делать правильно и индустриально, как следствие не дергать сложными запросами базу данных по поводу и без. А красивости обычно выливаются в собранные на коленке решения с неожиданной логикой, которые потом поддерживать - адский ад

blindman » 04 июн 2011, 05:39
Не учите меня жить

=DeaD= » 04 июн 2011, 05:49
Ну почему же сразу учить, делюсь опытом, возможно в некорректной форме

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

blindman » 04 июн 2011, 06:58
Ну не надо так буквально воспринимать

Я к тому, что у самого такого опыта - вагон
blindman » 04 июн 2011, 13:45
=DeaD= писал(а):я бы забил нафиг на такую мелочь, потому что это вопрос кэширования
Забил

Все справочники гружу в оперативку, и оттуда достаю когда надо. По природе своей они маленькие, не более нескольких сотен записей. При необходимости редактирования - изменяю в памяти и одновременно в базе данных.
=DeaD= » 04 июн 2011, 13:47
Кстати, проект под 1 пользователя или под пачку?
blindman » 04 июн 2011, 13:48
Под одного, разумеется.
blindman » 19 июн 2011, 14:50
Почему-то был уверен, что CP2102 может работать от 5 вольт, как и FT232. Только после того, как сгорели 3 микросхемы, удосужился повнимательнее прочитать документацию. А там - 4.2 В максимум

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