Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизЗаполнение DataSet а в два захода. Найти похожие ветки
← →
slaga © (2005-02-02 15:01) [0]Такая вот проблема:
есть один датасет, в нем есть запрос который выводит две колонки значений, и есть еще одна колонка (3) она при выполнении запроса пустая, потом когда запрос выполнился и заполни Датасет нужно, исходя из определенных вычислений, заполнить 3 колонку, я это делаю все заполняется но есть одна порблема, а именно, когда заполняется 3 колонка то Грид в который я все это вывожу постоянно перепрыгивает в то место(на ту строку) которая в текущий момент вставилась в датаСет, таким образом получается что работать с Гридом пока не выполнится заполнение 3 колонки нельзя - а надо.
подскажите как избежать перемещения активного курсора грида во время заполнение 3 колонки.
← →
Соловьев © (2005-02-02 15:03) [1]читать TDataSet.OnCalcField, TDataSet.DisableControls.
← →
slaga © (2005-02-02 15:08) [2]TDataSet.DisableControls неподходит, ибо он блокирует и выведение информации "в живую", тоесть если я сделаю DataSet.DisableControls то я увижу информацию 3 столбика только когда он весь сформируется, а это для меня неочень удобно, хотя как крайний вариант подойдет.
← →
Sergey13 © (2005-02-02 15:09) [3]Если третье поле зависит только от данных в первых двух , то можно подумать так же над тем, что бы это третье поле было сразу не пустым.
← →
Соловьев © (2005-02-02 15:12) [4]
> подскажите как избежать перемещения активного курсора грида
> во время заполнение 3 колонки.
> то я увижу информацию 3 столбика только когда он весь сформируется
не находишь противоречия?
← →
slaga © (2005-02-02 15:12) [5]нельзя, физически информация может быть получена после выполнения запроса в датасете
← →
Sergey13 © (2005-02-02 15:16) [6]2 [5] slaga © (02.02.05 15:12)
Ну тогда смотри [1] Соловьев © (02.02.05 15:03) первую часть.
← →
slaga © (2005-02-02 15:18) [7]ну как :))
мне надо (в идеале) что б информация 3 столбика выводилась, но немешала свободному просмотру/чтению Грида
← →
Sergey13 © (2005-02-02 15:41) [8]2[6] Sergey13 © (02.02.05 15:16)
Тебе еще раз сказать смотреть в [1]? Если алгоритм вычисления не очень медленный, то нормально работает.
← →
slaga © (2005-02-02 15:55) [9]А что именно туда писать ?
← →
Sergey13 © (2005-02-02 15:59) [10]Куда писать? Про калк поля прочитал?
← →
slaga © (2005-02-02 16:15) [11]Почитал, и чем он мне поможет ?
← →
slaga © (2005-02-02 16:19) [12]У меня не калькулятивное и не лукапное поле а простое обычное Data поле.
← →
Sergey13 © (2005-02-02 16:20) [13]2[11] slaga © (02.02.05 16:15)
Блин. От тебя только упоминание про 3 колонки пока было. Чего ты хочешь и на чем ты работаешь мы не знаем. Чего ты ждешь от такого общения?
← →
slaga © (2005-02-02 16:25) [14]А что непонятно в моем вопросе ?!
← →
Sergey13 © (2005-02-02 16:29) [15]2 [14] slaga © (02.02.05 16:25)
Для тебя может и понятно. Мы то твоего проекта не видели.
2[12] slaga © (02.02.05 16:19)
>У меня не калькулятивное и не лукапное поле а простое обычное Data поле.
И ты его каждый раз при открытии пересчитываешь что ли?
← →
slaga © (2005-02-02 16:34) [16]нет, у меня есть 1 датасет, в нем есть 1 запрос который возвращает 2 поля.
еще я добавил 1 поле в этот датасет, просто типа стринг
когда выполняется запрос, заполняются 2 поля датасета
после этого я заполняю 3 поле руками, инсерчю в него значения, и вот когда я это делаю, у меня на гриде курсор перемещается к той строке в которую я заинсертил значение 3 столбца
← →
Sergey13 © (2005-02-02 16:38) [17]2[16] slaga © (02.02.05 16:34)
>еще я добавил 1 поле в этот датасет, просто типа стринг
Посто? И что это за поле? Оно соответствует физическому полю таблицы?
>после этого я заполняю 3 поле руками, инсерчю в него значения,
Код можно увидеть?
>и вот когда я это делаю, у меня на гриде курсор перемещается к той строке в которую я заинсертил значение 3 столбца
Естественно, грид становится на активную запись.
ЗЫ: Ты все таки не читал про калк поля по моему.
← →
msguns © (2005-02-02 16:44) [18]Заинсертил столбец ? Как это ? Может "заупдател" ? Хотя и то, и другое коряво до невозможности
← →
slaga © (2005-02-02 17:01) [19]ну блин, есть 3 столбец, он пустой после выполнения запроса( который заполняет 2 остальных) я его этот 3 столбец заполняю руками
← →
Соловьев © (2005-02-02 17:04) [20]
> еще я добавил 1 поле в этот датасет, просто типа стринг
вот когда добаил, сделай ему тип не Дата, а калк
← →
Johnmen © (2005-02-02 17:11) [21]>я его этот 3 столбец заполняю руками
...и ? Что дальше надо ?
← →
slaga © (2005-02-02 17:21) [22]Да это поля мне нужно только для того что б "визуально" показать некую информацию которую я беру не из базы, просто заполнение 3 столбца занимает 4-5 минут, и все это время смотреть на метающийся столбец плохо.
← →
Соловьев © (2005-02-02 17:27) [23]
> просто заполнение 3 столбца занимает 4-5 минут, и все это
> время смотреть на метающийся столбец плохо.
какие там вычисления? можно глянуть?
приведи код
← →
Sergey13 © (2005-02-02 17:28) [24]2[22] slaga © (02.02.05 17:21)
Опять повторю.
Ты все таки не читал про калк поля по моему.
← →
slaga © (2005-02-02 17:38) [25]Вычесления это типа опрос 150 удаленно расположеных касс на момент запущености сервера Interbase
← →
OnThink © (2005-02-02 17:39) [26]DataSet.DisableControls - и будет тебе щастье
← →
slaga © (2005-02-02 17:43) [27]небудет, если я сделаю DataSet.DisableControls , я несмогу работать с Гридом пока не заполнится 3 столбец, тоесть пока я не сделаю DataSet.EnableControls
← →
Sergey13 © (2005-02-02 17:48) [28]2[25] slaga © (02.02.05 17:38)
>Вычесления это типа опрос 150 удаленно расположеных касс на момент запущености сервера Interbase
Это как? Хотя бы на пальцах, раз код ты не любишь?
← →
zunder © (2005-02-02 17:49) [29]slaga © (02.02.05 17:21) [22]
в дизайнере проекта открой Fields Editor для своего датасета.
в нем создай 3-е поле New Field...
откроется окно в котором
в разделе Field Properties укажи имя и тип поля
в разделе Field Type выбери Calculated
нажми OK
затем в обработчике события OnCalcFields для этого же датасета опиши как вычисляется 3-е поле
← →
slaga © (2005-02-02 17:56) [30]Я 3 поле заполняю вот так:
DM.odsMonitor.Locate("Kassa", gstrKassa, [loCaseInsensitive]);
DM.odsMonitor.Edit;
DM.odsMonitor.FieldValues["Status"] := "Online";
DM.odsMonitor.Post;
и поле типа калькулейт мне не подходит.
А кассы я опрашиваю методом подключения к базам на них.
← →
Sergey13 © (2005-02-02 17:58) [31]2[30] slaga © (02.02.05 17:56)
>и поле типа калькулейт мне не подходит.
Почему?
← →
slaga © (2005-02-02 18:06) [32]Потому что я попробовал поставить его Calculated, при таком типе, грид всеравно метался, а данные не выводились :(
← →
zunder © (2005-02-02 18:10) [33]в пробовал использовать DisableControls/EnableControls?
← →
Sergey13 © (2005-02-02 18:15) [34]2[32] slaga © (02.02.05 18:06)
А где ты писал этот код при калк полях? В OnCalcFields? И правильно дергался. Зачем там Locate? И Edit с Post не нужны.
← →
zunder © (2005-02-02 18:30) [35]вместо
DM.odsMonitor.Locate("Kassa", gstrKassa, [loCaseInsensitive]);
DM.odsMonitor.Edit;
DM.odsMonitor.FieldValues["Status"] := "Online";
DM.odsMonitor.Post;
попробуй что то вроде этогоif DM.odsMonitor.FieldByName("Kassa").AsString = gstrKassa then
DM.odsMonitor.FieldValues["Status"] := "Online"
← →
slaga © (2005-02-02 18:30) [36]to zunder
пробовал, непомагает
to Sergey13
Locate что б найти запись в которой нужно вставить значение 3 столбца
Edit что б редактировать датасет
Post что б сохранить запись в дата сете
и пишу я это все не в OnCalcFields, а просто в одной из своих процедур.
← →
slaga © (2005-02-02 18:38) [37]to zunder
да, но для этого мне надо обойти весь Датасет ?
← →
Соловьев © (2005-02-02 18:55) [38]
> DM.odsMonitor.Locate("Kassa", gstrKassa, [loCaseInsensitive]);
откуда берется gstrKassa?
← →
slaga © (2005-02-02 19:06) [39]передается как параметр из другой процедуры
← →
Соловьев © (2005-02-02 19:21) [40]
> передается как параметр из другой процедуры
из какой?
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.04 c