Вниз
Скачать: CL | DM;

Форма для добавления поля в DBGrid(Eh)   Найти похожие ветки 

 
Brain Force   (2004-04-05 11:16) [0]

Доброе время суток.

Имеется следующая задача. В DBGrig(Eh) существует несколько полей. Часть из них заполняется непосредственно в таблице. Для поля "Info" необходимо вызвать форму, которая позволит заполнить часть скрытых полей данной записи и выведет в соотв. колонку суммарное значение.

Заранее благодарен всем, кто отликнется :)


 
DenK_vrtz ©   (2004-04-05 11:19) [1]

Вопрос самим угадать?


 
Vlad ©   (2004-04-05 11:24) [2]


> Brain Force   (05.04.04 11:16)  

Ну так сделай у поля Info ButtonStyle=cbsEllipsis, и в этом поле (при фокусе ввода) будет отображаться кнопка. По нажатию на которой ты можешь показать какую угодно форму.


 
Brain Force   (2004-04-05 12:37) [3]

Вызвать форму - не проблема. Проблема - в том как вставить введенные значения в текущую запись... При нажатие на кнопку, БД находится в режиме редактирования, однако если попытаться напрямую вставить значения:
table1["field1"] := xxxx;
программа вываливается с сообщением об ошибке "Dataset not in edit or insert mode"


 
Andriy Tysh ©   (2004-04-05 14:12) [4]

Конечно, а Edit-Post кто делать будет?


 
Brain Force   (2004-04-05 16:18) [5]

Разумеется Edit-Post я делаю... однако проблема в следующем - не расчитывается суммарное поле. У меня это реализовано следущим образом:

procedure TDM.Table1CalcFields((DataSet: TDataSet);
begin
 table1["info"] := tabel1["field1"] + tabel1["field2"];
end;

однако, после того, как форма ввода закрывается и вставляются значения в таблицу, значение "info" = NULL (проверял на трассировке) и в соотв. ячейке ничего не отображается


 
Andriy Tysh ©   (2004-04-05 18:43) [6]

Тоесть Calculated-Field, а не сумарное. Тоесть оно у вас "суммарное", а называется калькулятивное(исчесляемое). Попробуйте такой примитив: програмно сделать скролл по записям взад-вперёд.
К тому же у ДБГридЕх есть свойство ExternalRecalc. Попробуйте его поставить в тру.
Иль вызывайте пересчёт самостоятельно. Чего дожидаться пока его сделает кто-то за вас?


 
Vlad ©   (2004-04-05 18:54) [7]


> Brain Force   (05.04.04 16:18) [5]

Нда.. как быстро тема вопроса поменялась ;-)
Добрый совет, так не делай:

>  table1["info"] := tabel1["field1"] + tabel1["field2"];

делай так:
table1.FieldByName("info").AsInteger := table1.FieldByName("field1").AsInteger + table1.FieldByName("field2").AsInteger;

По теме. Ты уверен, что после того как форма закрывается, данные на самом деле вставляются в таблицу ?
Если да, то после этого происходит Post ?
На оба вопроса ответ д.б. положительный.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
1-1081775783
Power_Lich
2004-04-12 17:16
2004.05.02
TChart


14-1081440799
Style
2004-04-08 20:13
2004.05.02
Квартиры в Москве будут отнимать за самовольную перепланировку


1-1081780593
EugeneKo
2004-04-12 18:36
2004.05.02
Как "правильно" читать HTML в Delphi 5


6-1077816770
rrew
2004-02-26 20:32
2004.05.02
TServerSocket & ClientSocket


3-1080953066
olhovik
2004-04-03 04:44
2004.05.02
База данных




   Наверх