powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxGrid.DataController не обновляет данные в связанном DataSet
25 сообщений из 35, страница 1 из 2
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37562778
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Проблема странная - есть таблица cxGrid, при правке информации в ячейках таблицы через DataController (grLocal.DataController. Values[ARowInfo.RecordIndex,gr_Date.Index] := Date;) - в таблице всё изменяется и отображается прекрасно, но почему-то не изменяются данные в связанном Dataset и соответственно не происходит корректировки данных в БД... из-за чего может быть?? как исправить??? Какие должны быть настроены опции, чтобы DataController сам сразу после EndUpdate сам постил все изменения в Dataset???
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37563472
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка в 17ой строке
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37563617
A V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
A V
Гость
DataController.DataModeController.SyncMode?
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37563623
Фотография Sergij Gromov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

опять прокладка виновата ...........
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564009
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergij GromovX11,

опять прокладка виновата ...........Какая прокладка?! Ты о чём???
Виноват всегда Пушкин!
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564748
Фотография Sergij Gromov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator,

прокладка которая между монитором и стулом
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564791
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторDataController.DataModeController.SyncMode
True

авторошибка в 17ой строке
опять прокладка виновата ....
Какая прокладка?! Ты о чём???
Виноват всегда Пушкин!
Ваш дешёвый пафос школьников совершенно не к месту, тк весь код выражается только одной строкой кода написанной в первом постинге, которая явно работает правильно - данные в таблице меняются как нужно, БОЛЬШЕ НИКАКОГО КОДА НЕТ. Далее работают лишь настройки объектов cxGrid и Dataset... сумеете осилить этот факт?

Вопрос темы как раз и заключается в том - какие настройки объектов cxGrid/Dataset могут мешать синхронизации данных из cxGrid.DataController в Dataset ???
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564910
Бектуров Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чё сразу в dataset не пишите ?
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564921
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Провёл такую проверку - откорректировал одну запись прямо в БД, а другую как написано выше в таблице через DataController.Values, затем проверил чему равен их Колонка.EditValue - оказывается для записи из БД всё верно, но для записи только что скорректированной кодом DataController.Values значение Колонка.EditValue=null ! То есть как будто даже в самой таблице эти данные-значения не изменились, а "только нарисовались в интерфейсе"... что за хрень может быть?
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564933
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автора чё сразу в dataset не пишите ?
Говорят, что если сразу в Dataset, то при изменении множества записей в таблице кодом курсор таблицы мигает и крутит таблицу... кроме того, после изменения в Dataset нужно обновлять таблицу. А так по цепочке через DataController таблицы -> Dataset -> DB наиболее логично было бы...
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37564975
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё интересное наблюдение - если в cxGrid.DataController поставить GridMode=True, то не только данные всё также не доходят до Dataset, но и вообще перестают отображаться в самой таблице... такое впечатление, что строка указанная в первом постинге вообще данные не изменяет... или же какие-то настройки cxGrid/Dataset не дают данным при изменении сохраниться (не Commit)...??
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565104
Бектуров Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineавтора чё сразу в dataset не пишите ?
Говорят, что если сразу в Dataset, то при изменении множества записей в таблице кодом курсор таблицы мигает и крутит таблицу... кроме того, после изменения в Dataset нужно обновлять таблицу. А так по цепочке через DataController таблицы -> Dataset -> DB наиболее логично было бы...



как раз логично в dataset, а что б все работало нормально без морганий делаем так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
dataset.disablecontrols;
try
  dataset.getbookmark...
  try
    ......................
  finally
    dataset.gotobookmark...
    dataset.freebookmark...
  end
finally
  dataset.enablecontrols;
end
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565117
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что не всегда к одному Dataset только одна таблица, иногда 2-3-5-10 таблиц может быть связано с одним Dataset, но отображать разные данные или иметь разные фильтры, поэтому хотелось бы соблюдать логический порядок и не блокировать общий Dataset. Возможно, так и придётся сделать, но всё же хотелось бы решить проблему темы...
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565174
Бектуров Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема темы решается чтением хелпа :-)
лично мое мнение что правильно - править источник данных а не грид
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565260
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так сделано в точности по примеру хелпа!
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565319
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроме того, если править в Dataset, то несколько усложняется поиск нужных для правки записей.
Пример - в Dataset 100'000 записей, в таблице с помощью фильтрации отобразили только 1000 записей. Из них выделили 100 записей которые нужно изменить. Через DataController можно простым перебором ++1 изменить все эти записи подряд. Но чтобы это же сделать через Dataset - нужно через DataController узнавать ID каждой выделенной записи, затем искать этот ID среди всех 100'000 записей Dataset - что должно оказаться значительно дольше и вообще кривее, нежели просто "изменить следующую запись в DataControler".
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565323
Esperito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineили же какие-то настройки cxGrid/Dataset не дают данным при изменении сохраниться (не Commit)...??Нам отсюда твоих настроек не видно.
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565330
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineчтобы это же сделать через Dataset - нужно через DataController узнавать ID каждой выделенной записи, затем искать этот ID среди всех 100'000 записей Dataset - что должно оказаться значительно дольше
а как по твоему датаконтроллер их будет править?
CodeFineи вообще кривее, нежели просто "изменить следующую запись в DataControler"
добрый совет: по максимуму обходись ср-вами датасета и наоборот по минимуму используй девэксовую машинерию только там где без нее либо не обойтись совсем либо дорого
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565364
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНам отсюда твоих настроек не видно.
Ну а как я тебе покажу все настройки??? Считай, что всё дефолт, а теперь предположи что может влиять на проблему...

автора как по твоему датаконтроллер их будет править?
DataController согласно примеру:
Код: pascal
1.
2.
3.
4.
5.
with grLocal.DataController do begin
    BeginUpdate;
    for i := 0 to GetSelectedCount - 1 do begin
      ARowIndex := GetSelectedRowIndex(I);
      ARowInfo := GetRowInfo(ARowIndex);


правит значения ищя номер записи в DataController'е, то есть в описаном dsit примере ища положим 100-ю запись из 1000 отображённых записей. Тогда как для того, чтобы найти эту запись в Dataset - нужно сначала сделать тоже самое - найти эту запись в DataController, затем выяснить для этой записи некий ЗаписьID, и затем ещё искать его уже из 100'000 всех записей Dataset'а... разница есть?
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565378
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineНу а как я тебе покажу все настройки???Кусок dfm?
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565385
Esperito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineНу а как я тебе покажу все настройки???С форматом dfm знаком?
CodeFineСчитай, что всё дефолт, а теперь предположи что может влиять на проблему...Тарифы на телепатию резко возросли после кризиса.
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565391
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineразница есть?
ты не понял
датаконтроллер связанный с датасетом в процессе редактирования в момент поста куда данные помещает? ;)
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565393
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторС форматом dfm знаком?CodeFine
Тарифы на телепатию резко возросли после кризиса.
Видимо дело не в телепатии, а том, что вы понятия не имеете что может влиять на описанную проблему...
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565404
CodeFine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автордатаконтроллер связанный с датасетом в процессе редактирования в момент поста куда данные помещает? ;)
должен бы помещать в Dataset ;)
думаю разработчики этих компонент не совсем дебилы, и cxGrid.DataController хранит для каждой отображаемой в таблице cxGrid записи некий номер этой записи в Dataset, то есть ему не нужно искать записи в Dataset по некоему ЗаписьID, как это придётся делать в случае самописного кода... если это не так - напишите, только с доказательствами и ссылками на источники. Или пример кода чтобы при правке в Dataset этого не требовалось...
...
Рейтинг: 0 / 0
TcxGrid.DataController не обновляет данные в связанном DataSet
    #37565444
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CodeFineдолжен бы помещать в Dataset
ура
CodeFineто есть ему не нужно искать записи в Dataset по некоему ЗаписьIDскажу больше: если у тебя не задан TcxDBDataController.KeyFieldNames то он не сможет твои изменения поместить в датасет
CodeFineесли это не так - напишите, только с доказательствами и ссылками на источникидоказывать я тебе понятно ничего не собираюсь но в качестве ссылки можешь использовать например хелп, сорцы и здравый смысл
CodeFineпример кода чтобы при правке в Dataset этого не требовалось
не совсем то что тебе нужно вероятно но почерпнуть я думаю пригодится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
unsigned MarkSelectedRecords(HandleSelectedRecord const Handle, TcxCustomGridView * View, String const &CheckedFieldName=_T("Checked"))
{
	using vavan::PChar;
	size_t SelectedCnt;
	{
	TcxDBDataController * const dc = polymorphic_downcast<TcxDBDataController*>(View->DataController);
	SelectedCnt=dc->GetSelectedCount();
	if(!SelectedCnt)return 0;
	TVClientDataSet * const dsTarget=polymorphic_downcast<TVClientDataSet*>(dc->DataSource->DataSet);
	CPField fldChecked(BindField(dsTarget,CheckedFieldName));
	DISABLE_ENABLE_CONTROLS_CLONES(dsTarget);
	SAVE_RESTORE_PROPERTY(_T("OnCalcFields"),dsTarget,System::TMethod());
	SHOW_HIDE_BUSY(_T("Отмечаю записи"),SelectedCnt);
	DISABLE_ENABLE_CONSTRAINTS(dsTarget);
	SAVE_RESTORE_PROPERTY(_T("AggregatesActive"),dsTarget,false);
	SAVE_RESTORE_BOOKMARK(dsTarget);
	BEGIN_END_UPDATE(*View,lsimImmediate);
	if(dc->IsGridMode())
	{
		for(size_t i=0;i<SelectedCnt;++i)
		{
			TBookmarkStr bm=dc->GetSelectedBookmark(i);
//			if(/*dsTarget->BookmarkValid(const_cast<TBookmark>(bm.data()))*/true)
			{
				dsTarget->Bookmark=bm;
				DataSetEdit g(dsTarget);
				if(hsrMark==Handle || hsrInvert==Handle && !fldChecked->AsBoolean)
				{
					fldChecked->AsBoolean=true;
				}
				else
				{
					fldChecked->Clear();
				}
				g.Post();
				ProgressBusy();
			}
		}
	}
	else
	{
		SAVE_RESTORE_INDEX(dsTarget,dc->KeyFieldNames);
//		TVVarRec vr[1];
		TcxRowInfo RowInfo;
		for(size_t i=0;i<SelectedCnt;++i)
		{
			RowInfo=dc->GetRowInfo(dc->GetSelectedRowIndex(i));
//			vr[0]=dc->GetRecordId(RowInfo.RecordIndex);
			if(!dsTarget->Locate(dc->KeyFieldNames,dc->GetRecordId(RowInfo.RecordIndex),LocateOptionsAll))
			{
				throw Exception(NewFmtStr(_T("Record not found")));
			}

			DataSetEdit g(dsTarget);
			if(hsrMark==Handle || hsrInvert==Handle && !fldChecked->AsBoolean)
			{
				fldChecked->AsBoolean=true;
			}
			else
			{
				fldChecked->Clear();
			}
			g.Post();
			ProgressBusy();
		}
		dc->ClearSelection();
	}
	}
	return SelectedCnt;
}


CodeFineдумаю разработчики этих компонент не совсем дебилы
а вообще ты о них слишком хорошего мнения. хотя конечно до дебилизма им далеко
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxGrid.DataController не обновляет данные в связанном DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]