Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.037 c
1-1108624535
Pavelkq
2005-02-17 10:15
2005.03.06
Длинна переменной типа string


14-1108057598
Franzy
2005-02-10 20:46
2005.03.06
Русификация Win2k eng - проблема


1-1108641643
syte_ser78
2005-02-17 15:00
2005.03.06
Член группы не найден


9-1102199349
El Capone
2004-12-05 01:29
2005.03.06
Estj Ideja, Nado Realizovatj!


8-1100767599
Сергей А
2004-11-18 11:46
2005.03.06
Фармат файлов MIDI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский