Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 22:12   #1
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
Вопрос Как сделать чтобы Dataset без SQL считал себя не read-only ?

Здравствуйте!
Совершенно идиотская проблема - есть FIBDataset и связанным с ним cxGrid. Прописан SelectSQL. Данные из БД получаются, отображаются, но нельзя ничего изменить ни прямо в таблице cxGrid, ни через Dataset.FN('TEST').Value:=1. Изменение данных начинает работать только после прописки InsertSQL,UpdateSQL - но они в данном Dataset не нужны, тк данные после исправления юзером обрабатываются иначе. Можно как-то сделать, чтобы FIBDataset считал себя не read-only без ненужных insert/update/delete-sql ???
delphicoding вне форума Ответить с цитированием
Старый 21.03.2012, 22:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я в таких случаях просто вместо DBGrid использовал обычный StringGrid, в который вкачивал данные из бд. Пользователь что-то там менял, но в БД это не попадало (необходимость такая была).
Короче, мой совет - не использовать DBGrid.
Цитата:
тк данные после исправления юзером обрабатываются иначе
Если не секрет как? Они в БД назад не попадают?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.03.2012, 22:28   #3
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Это тоже криво, тк требует ручной перекачки данных из Dataset в Grid и пропадают все возможности Dataset.

Данные в БД обратно попадают, просто ради удобства юзера же интерфейс не соответствует напрямую данным в БД, поэтому деяния юзера в интерфейсе приходится разбирать и вручную создавать SQL строки.
delphicoding вне форума Ответить с цитированием
Старый 21.03.2012, 22:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
поэтому деяния юзера в интерфейсе приходится разбирать и вручную создавать SQL строки.
Что в этом такого? Юзер то все равно не увидит что делает программа. А если в Программе грамотно построена реакция на деяния пользователя, то и самому программисту не будет сложно ее накодить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.03.2012, 22:40   #5
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Цитата:
Что в этом такого? Юзер то все равно не увидит что делает программа. А если в Программе грамотно построена реакция на деяния пользователя, то и самому программисту не будет сложно ее накодить.
В данном случае используется Dataset.FieldByNameN.OldValue и др. - есть избавиться от Dataset ещё куча нового гемора обретается. Так что нужно решение попроще, чтобы Dataset остался, просто перестал себя считать read-only.
delphicoding вне форума Ответить с цитированием
Старый 21.03.2012, 22:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
просто перестал себя считать read-only.
Не знаю как в FB, а в классических ДатаСетах при присосе к SQL запросу связь с базой всегда была только на чтение. Механизмы самого провайдера не позволяли реплицировать в базу данные из вьюшек, которые клиент получает. Одна из причин - выборка может быть с огромнейшими реляциями, тогда бы провайдеру пришлось бы каскадно изменять записи во всех упоминаемых в запросе таблицах - а это одна из самых трудных задач.
Так что думаю твой Датасет будет упираться до последнего.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2012, 01:14   #7
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Тупо, что многолетний навороченный FIBDataset в этом вопросе совершенно не разделяет понятий "редактировать данные в Dataset и постить в БД" и просто "редактировать данные в Dataset не отправляя ничего в БД" (для чего совершенно ни к чему insert/update/итп).
delphicoding вне форума Ответить с цитированием
Старый 22.03.2012, 09:45   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Тупо, что многолетний навороченный FIBDataset в этом вопросе совершенно не разделяет понятий
Не обижайся, но это ты беса гонишь )
FB правильно сделали, иначе бы получилась огромная похуже Оракла СУБД, которая тормозила бы нещадно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2012, 11:08   #9
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

FB то тут при чём?! Я говорю Dataset получив данные и сопутствующие параметры (default value, итп) вполне мог бы работать внутри программы и для правки данных без указания строк insert/update. Очевидная недоработка.
Может ты пропустил это, уточню - данные после правки в Dataset ПОСТИТЬ В БД НЕ НУЖНО (по крайней мере этим Dataset).

Последний раз редактировалось delphicoding; 22.03.2012 в 11:18.
delphicoding вне форума Ответить с цитированием
Старый 22.03.2012, 22:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Очевидная недоработка.
Они не для этого делались. Они делались как связующие звено между клиентом и провайдером. Смысла нет Датасеты так наворачивать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы прога скопировала саму себя(Delphi) netiv Помощь студентам 2 10.12.2011 13:10
Как сделать так чтобы приложение базы данных работала на компьютерах без установленной программы delphi? Даниил_глазко БД в Delphi 6 09.11.2010 16:26
[Делфи] Как сделать чтобы символ много раз повторялся (без массивов) zotox Помощь студентам 4 01.05.2009 22:10