Вниз
Скачать: 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.02 c
4-1078427268
reel_geek
2004-03-04 22:07
2004.05.02
Событие мыши вне окна вообще...


3-1081242857
YurikGl
2004-04-06 13:14
2004.05.02
Запрос предка и потомка


1-1081853193
Soldat
2004-04-13 14:46
2004.05.02
Сокрытие события


11-1065719451
Wiz@rd
2003-10-09 21:10
2004.05.02
Как сделать прокси?


1-1081740909
John
2004-04-12 07:35
2004.05.02
Rave Report




   Наверх