Russian Qt Forum
Ноябрь 24, 2024, 00:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [QSqlQueryModel] редактируемый  (Прочитано 19991 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
re
« Ответ #15 : Март 17, 2010, 17:42 »

Цитировать
последняя команда
Вы привели кусок кода процедуры submitAll() которая вызывается нами вручную по нажатию кнопки "подтвердить изменения" в справочнике и еще раз повторюсь она не вызывается после изменения одной записи!!! Сколько можно об этом говорить - а если бы вызывалась то действительно переоткрывался набор и менялась активная зщапись - мне что видео записать в котором я бегаю по строкам и столбцам - меняю их содержимое и при этом ничего не переоткрывается?

Цитировать
Сделать редактируемый скл набор должен уметь даже новичок,так как это сделано в других фрейворках
редактируемый SQL набор это QSqlQuery
набор который еще и отображается QSqlTableModel - ограничение что работает с 1 таблицей, но выговорите о других фреймворках - так приведите примеры - я работал много с БД только с Делфи - там тоже стандартный компонент называется DBTable или как то так не помню уже и тоже работает с 1 таблицей, и вбитьт в него тело SQL запроса нельзя. Кроме того там стандартом являются компоненты BDE которые имеют проблемы работы с памятью - программа просто периодически может вылетать.

по пунктам
Цитировать
1. Это есть не толко в qt (этим я не опровергаю удобство)
-- кто утверждал обратное? что это есть только в Qt?
Цитировать
2. Также есть во многих библиотеках к языкам (бесплатные или в комплекте с средой)
- если так то примеры приведите, без подтверждения это ваши догадки или мнение а не факты
Цитировать
3. это может сделать дажe FoxPro Dos-времен.
Ну да - только FoxPro это как раз конструктор приложений БД а не библиотека программиста - о чем я вам уже и говорил.
Цитировать
4. А холивар с языками программирования заканчивается...
ну так ваше мнение что модуль SQL в Qt не просто слабоват а один сплошной костыль, вот вы и решайте что вам использовать АСМ или др...
Записан
Troglodit
Гость
« Ответ #16 : Март 17, 2010, 18:29 »

Цитировать
Вы привели кусок кода процедуры submitAll() которая вызывается нами вручную по нажатию кнопки "подтвердить изменения" в справочнике и еще раз повторюсь она не вызывается после изменения одной записи!!! Сколько можно об этом говорить - а если бы вызывалась то действительно переоткрывался набор и менялась активная зщапись - мне что видео записать в котором я бегаю по строкам и столбцам - меняю их содержимое и при этом ничего не переоткрывается?
У нас получается разговор слепого с глухим. Я верю, что это возможно так, как вы описываете. Я говорю, что ваш пример абсолютно не корректен. В много пользовательской БД когда МНОГО пользователей исправлять НЕСКОЛЬКО записей справочника категорически неюзабельно. В случаях когда я изменил 4 записи из 10000000 он ПЕРЕФОРМИРУЕТ запрос. Если вы делает тупой select * from table, то это не страшно , но если время выполнение запроса критично и запрос вида
select field1,sum(fied2) from (select f1,sum(f2) from ....)
inner join ....
where exists (select f1 from ...)
group by ...
having count(.....)>(select ....)
-это КАТАСТРОФА.
можно сделатьдополнительное окно для редактирования, то что вы предлагали, но делать это , например, для редактирования всего ОДНОГО поля бессмысленно.

Цитировать
редактируемый SQL набор это QSqlQuery
набор который еще и отображается QSqlTableModel - ограничение что работает с 1 таблицей, но выговорите о других фреймворках - так приведите примеры - я работал много с БД только с Делфи - там тоже стандартный компонент называется DBTable или как то так не помню уже и тоже работает с 1 таблицей, и вбитьт в него тело SQL запроса нельзя. Кроме того там стандартом являются компоненты BDE которые имеют проблемы работы с памятью - программа просто периодически может вылетать.
Хотите конкретику-пожалуйста. В делфях есть СТАНДАРТНЫЙ набор классов с БД (БДЕ -это устаревшее неудивительно, что у вас не получалось) TQuery и TTable, для ADO TADOQuery,TADOTable- эти классы позволяли получать и ИЗМЕНЯТЬ набор данных.TTable соответственно также как QSqlTableModel работал только с одной таблицей.  но это уже оффтоп.
Цитировать
- если так то примеры приведите, без подтверждения это ваши догадки или мнение а не факты
Пожалуйста. Делфи (уже набившие оскомину) -куча классов для работы с разными БД (сторонние), Java (JDBC-драйвера), C++. Надеюсь хватит?

ЗЫ. Ну и на последок. Я терпеливо отвечал на ваши посты, но вы к сожалению оказать помощь (хотя я допускаю что это в ваших силах) не захотели. Да я еще только изучаю qt, но я не чураюсь помогать. Я больше не буду отвечать на ваши комментарии, они не несут конструктива, но все равно спасибо за пару предложений, которые действительно оказались полезными.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #17 : Март 17, 2010, 19:40 »

Цитировать
У нас получается разговор слепого с глухим.
точно
Цитировать
В много пользовательской БД когда МНОГО пользователей исправлять НЕСКОЛЬКО записей справочника категорически неюзабельно.
Что значит неюзабельно - не удобно для пользователя? Да ему вроде вообще все равно он не знает про транзакции и независимые запросы. Или кому неюзабельно программисту?
Цитировать
В случаях когда я изменил 4 записи из 10000000 он ПЕРЕФОРМИРУЕТ запрос.
Здесь не понял ничего - какой запрос? Кто переформирует?
Цитировать
Если вы делает тупой select * from table, то это не страшно , но если время выполнение запроса критично и запрос вида....
катастрофа если выполнять тяжелый запрос часто!, я же все это время пытаюсь убедить вас что надо делать отложенное выполнение запроса а не по изменению каждого поля. Где логика?
Цитировать
можно сделатьдополнительное окно для редактирования, то что вы предлагали,
не припомню чтобы в этой теме я такое предлагал, может забылся ткните пальцем, и вообще не понял о чем это

Цитировать
куча классов для работы с разными БД (сторонние)
ну а при чем тут сторонние? Было утверждение что во многих языках вообще есть свои нормальные клиентские классы БД.
А из несторонних - BDE не вариант - поэтому TTable, TQuery и т.д. не катят, ADO сейчас не знаю но в свое время по производительности оч. сильно тормозил. IBExpress - сугубо для IB не работали с FB. Где они универсальные удобные классы для работыс БД в комплекте со средой?
Java (JDBC-драйвера), -- я с этим языком не работал если там есть изменяемый ДатаСет в который можно вписать SelectSQL, UpdateSQL, InsertSQL то да!
C++ ---- это к чему где в C++ или стандартной библиотеке STL поддержка БД?

Цитировать
но вы к сожалению оказать помощь (хотя я допускаю что это в ваших силах) не захотели.
утверждение смелое - как я вам помогу если я еще не писал своего наследника SQLModel ? (т.к. он мне не был нужен), если бы писал выложил исходники т.к. не жалко уже не раз так делал.

КУЕЗЫ: ЗЫ!
Записан
asvil
Гость
« Ответ #18 : Март 17, 2010, 23:52 »

Последняя мысль, которая ко мне пришла. Под каждую модель придеться писать особенное представление, учитывающее специфичность модели.
Я наверное неправильно поступаю, что дублирую данные предоставляемые моделью.

Исходный код модели прикреплен к сообщению. Документация в заголовочных файлах.
Записан
Troglodit
Гость
« Ответ #19 : Март 18, 2010, 11:05 »

2asvil
Спасибо. Буду разбираться.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 23.