Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Заполнение 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.031 c
1-1108958353
Valeriii
2005-02-21 06:59
2005.03.06
Random не работает!!!!!!!


3-1107428374
BioAngel
2005-02-03 13:59
2005.03.06
paradox и пароль


6-1104497406
BVV
2004-12-31 15:50
2005.03.06
TIdTCPConnection.WriteStream


1-1108995066
Q21
2005-02-21 17:11
2005.03.06
При переходе на новый профиль в Windows исчезли все компоненты!


1-1108563308
Timofey
2005-02-16 17:15
2005.03.06
Просмотр страниц в TWebBrowser