Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизIBDataSet, Master-Detail и Insert Найти похожие ветки
← →
grav (2008-05-22 13:53) [80]
> Sergey13 © (22.05.08 13:36) [79]
Спасибо, что не бросаете :)
Данные вводит пользователь. Если под циклом имелась ввиду работа пользователя, то да он есть :) Пользователь вводит данные организации, потом данные первого здания, потом данные объектов первого здания, потом вводит данные второго здания, обекты второго здания и т.д.
← →
Sergey13 © (2008-05-22 14:20) [81]> [80] grav (22.05.08 13:53)
А нужен ли в этих полях NULL? Может проще заполнять значения по умолчанию 0? Например на onNewRecord датасета. Или на потерю фокуса едита.
В любом случае это косяк в программе, ИМХО, если
> [62] grav (22.05.08 11:22)
> Если в предыдущей записи данные в поле присутствуют, то
> при вставке очередной записи с нулевым полем вылетает ошибка.
> Если запись с нулевым полем первая, то ошибку нет.
← →
ANB (2008-05-22 14:45) [82]
> Да, так работает. спасибо.
> Вот только не радует наличие такого кода для каждого поля:
>
>
> if LoadEd.Text="" then
> AddSQL.ParamByName("LOAD").Clear
> else
> AddSQL.ParamByName("LOAD").AsString:=LoadEd.Text;
Особенность ИБ/ФБ, для которого пустая строка и нулл - разные значения.
Не скажу, что плохая особенность, но однако . . .
← →
grav (2008-05-23 10:02) [83]Объясните еще пожалуйста одну вещь по транзакциям.
После того как я сделал MainForm.WriteTr.Commit; почему данные становятся доступными только после отключения/подключения к БД?
И соответственно, если не произвести отключение/подключение, то есть возможность забить дублирующие данные
← →
Reindeer Moss Eater © (2008-05-23 10:08) [84]Потому что транзакции разные и читающая транзакция должна завершиться и начаться заново. Реконнект для этого не нужен (если конечно транзакциями кто-то управляет).
← →
grav (2008-06-11 13:07) [85]Снова проблемка, помогите пожалуйста.
Имеется DBGrid со списком зданий и соответствующий IBDataSet (мастер) к нему. Имеется набор DBEdit"ов с соответствующим IBDataSet (детайл). IBDataSet"ы в режиме CachedUpdates.
Меняю данные в DBEdit, делаю ApplyUpdates. Данные сохраняются. Все ОК.
Делаю много изменений в таком порядке:
Меняю данные в DBEdit, выбираю новое здание, меняю данные в DBEdit и т.д.
Делаю ApplyUpdates. Сохраняются измененные данные только у последнего здания.
Как сохранить все изменения за раз не нажимая каждый раз кнопку сохранить?
← →
Поросенок Винни-Пух © (2008-06-11 13:13) [86]при смене мастер записи детайл датасет переоткрывается. закешированные изменения потерялись если не было апплая.
← →
Поросенок Винни-Пух © (2008-06-11 13:28) [87]Как сохранить все изменения за раз не нажимая каждый раз кнопку сохранить?
Выключить cachedupdates
← →
grav (2008-06-11 13:57) [88]
> Поросенок Винни-Пух © (11.06.08 13:28) [87]
>
> Выключить cachedupdates
Если я выключу, то как отслежу что изменения были?
← →
Поросенок Винни-Пух © (2008-06-11 13:59) [89]а зачем тебе "отслеживать изменения", которые ты сам же и теряешь?
← →
Anatoly Podgoretsky © (2008-06-11 14:03) [90]> grav (11.06.2008 13:57:28) [88]
Отслеживать не надо, должна быть сладкая парочка Insert + Commit
← →
grav (2008-06-11 14:10) [91]
> Поросенок Винни-Пух © (11.06.08 13:59) [89]
> а зачем тебе "отслеживать изменения", которые ты сам же
> и теряешь?
Форма большая, данных много. Жмет пользователь кнопку Выход, ему выдается сообщение, что данные изменились, сохранить? Да, НЕТ.
Если пользователь чего то менял, жмет Да и commit, если не менял, а случайно чего нибудь изменил, жмет НЕТ и rollback.
← →
Поросенок Винни-Пух © (2008-06-11 14:12) [92]и чо?
TDataSet.State in dsEditMode тоже скажет что возможно были изменения и нужен либо пост либо кансел
← →
Поросенок Винни-Пух © (2008-06-11 14:13) [93]тебе уже сказано куда деваются все изменения кроме последнего редактирования.
← →
grav (2008-06-11 14:18) [94]Сейчас добавил ApplyUpdates в событие BeforeScroll, может это и плохо, но все сохраняется.
Правда это не выход, так как если скроллинг был, а следующих изменений не было, сообщение не будет выведено и коммита не будет
← →
grav (2008-06-11 14:19) [95]
> Поросенок Винни-Пух © (11.06.08 14:13) [93]
так я понял, но ищу варианты обхода
← →
Поросенок Винни-Пух © (2008-06-11 14:21) [96]Сейчас добавил ApplyUpdates в событие BeforeScroll
Читай по губам:
При смене мастер записи детайл датасет переоткрывается.
В переводе с древнегреческого это означает, что он сначала закрывается, потом открывается снова.
← →
grav (2008-06-11 14:31) [97]
> Поросенок Винни-Пух © (11.06.08 14:21) [96]
> Сейчас добавил ApplyUpdates в событие BeforeScroll
>
> Читай по губам:
> При смене мастер записи детайл датасет переоткрывается.
> В переводе с древнегреческого это означает, что он сначала
> закрывается, потом открывается снова
Да понял я. Закрытие-открытие и измененные данные потеряны.
Если я делаю ApplyUpdates перед переходом к другой записи, то изменеия сохраняются.
Можно поподробнее про TDataSet.State in dsEditMode? Чтобы можно было от CachedUpdates отказаться?
← →
Поросенок Винни-Пух © (2008-06-11 14:33) [98]Ничего ты не понял.
Перед закрытием есть бефослоз
← →
grav (2008-06-11 14:46) [99]
> Поросенок Винни-Пух © (11.06.08 14:33) [98]
Ну да, про BeforeClose я не подумал. Но пользы в моем случае от него не больше, чем от BeforeScroll.
← →
Поросенок Винни-Пух © (2008-06-11 14:49) [100]Но пользы в моем случае от него не больше, чем от BeforeScroll.
ага, особенно если скрола вообще не было
← →
grav (2008-06-11 14:56) [101]Поставил переменную в BeforeClose. Теперь, если были ApplyUpdates то переменная выставляется в 1 и на выходе сообщение об изменении данных.
Спасибо!
← →
grav (2008-06-11 15:00) [102]
> Поросенок Винни-Пух © (11.06.08 14:49) [100]
Если скрола не было, это хорошо, изменения отслеживаются. А вот если изменения были, потом скрол и потом не было изменений, то получается UpdatesPending:=False, именения которые были перед скролом теряются.
И тут уж все равно где был ApplyUpdates в BeforeScroll или BeforeClose.
← →
grav (2008-06-11 15:16) [103]Только не бейте :) У меня еще вопрос.
Есть DBGrid, в нем 10 записей. На экране видно только 5. Пользователь жмут стрелку вниз на скроле и указатель перемещается сразу на 6-ю запись (на первую невидимую).
Можно как то сделать, чтобы нажатие на кнопку вниз перемещало курсор на одну запись вниз начиная с первой?
PS
Это пользователи хотят, а вовсе не я извращенец :)
← →
MsGuns © (2008-06-12 16:46) [104]>grav (11.06.08 14:10) [91]
>Жмет пользователь кнопку Выход, ему выдается сообщение, что данные изменились, сохранить? Да, НЕТ.
>Если пользователь чего то менял, жмет Да и commit, если не менял, а случайно чего нибудь изменил, жмет НЕТ и rollback.
Совершенно убитая технология в угоду юзеру, причитающему "сделайте как в эксель"
По сути сабжа вообще промолчу ибо там такое нагорожено ;(
Похоже на фонд имущества или страхкомпанию - не лучше ли взять 1С вариант и просто посмотреть как там все организовано ?
>grav (11.06.08 15:16) [103]
>Только не бейте :) У меня еще вопрос.
>Есть DBGrid, в нем 10 записей. На экране видно только 5. Пользователь жмут стрелку >вниз на скроле и указатель перемещается сразу на 6-ю запись (на первую невидимую).
>Можно как то сделать, чтобы нажатие на кнопку вниз перемещало курсор на одну >запись вниз начиная с первой?
Для этого есть клавиши навигации и колесо у мыши. Ползунок имеет смысл тягать только если отображаемый список содержит сотни или тысячи строк. И опять же ползунок не нужен даже на таких монстроидальных датасетах, если нормально реализован сервис поиска и фильтрации.
Не с того конца решаете проблемы.
>Это пользователи хотят, а вовсе не я извращенец :)
Еще один "убойный" аргумент. А если пользователь изъявит желание работать лежа - Вы ему свою форму на 90 градусов повернете ?
Советую почитать статьи о хорошем стиле проектирования пользовательских интерфейсов. В тырнете их моря.
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
Память: 0.64 MB
Время: 0.01 c