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

Вниз

Данные из другой таблицы * коеффициент   Найти похожие ветки 

 
Fl@sh ©   (2005-11-16 02:15) [0]

Доброе время суток.
Попробую розяснить мою проблему:
есть 2 таблицы: TableFirm i TableKlients
Нужно из таблицы TableFirm взять поле Add_Pay и вставить его в TableKlients умножив на соотв. коеф.
Вот проблема в том, что немогу вставить данные в таблицу.
делаю так:


procedure TForm1.TableKlientsCalcFields(DataSet: TDataSet);
begin
 TableKlients.DataSource.DataSet["Reduction"] :=  TableFirm.DataSource.DataSet["Add_Pay"] * 0.15;
end;


Вискакивает Access Violation

а если пишу:

TableKlientsReduction.Value := TableFirmAdd_Pay.Value * 0.15;

Вичисляет неправильно!!!
Помогите исправить ошибку, или может есть лучшее решение?


 
dolmat   (2005-11-16 09:21) [1]

>Помогите исправить ошибку
procedure TForm1.TableKlientsCalcFields(DataSet: TDataSet);
begin
TableKlients.fieldbyname["Reduction"].asvariant :=  TableFirm.fieldbyname["Add_Pay"].asvariant * 0.15;
end;

>или может есть лучшее решение?
Использовать SQL примерно такого типа
select TableKlients.*, (TableFirm.Add_Pay*0.15) as Add_Pay from TableKlients
left join TableFirm TableFirm on (TableKlients.поле_связи=TableFirm.поле_связи)


 
Johnmen ©   (2005-11-16 09:41) [2]

Почему же asvariant  ?????????? Чтобы поймать conversion error ?

AsFloat.


 
Fl@sh ©   (2005-11-16 19:47) [3]


> dolmat   (16.11.05 09:21) [1]

Действительно я ступил..
Тип Reduction : Currency
     Add_pay : number


 
Fl@sh ©   (2005-11-17 02:21) [4]


> dolmat   (16.11.05 09:21) [1]


> TableKlients.fieldbyname["Reduction"].asvariant :=  TableFirm.
> fieldbyname["Add_Pay"].asvariant * 0.15;

Попробовал все равно Access Violation


 
Fl@sh ©   (2005-11-17 02:22) [5]


> Использовать SQL примерно такого типа


Как, БД = Парадокс!!!


 
ЮЮ ©   (2005-11-17 04:59) [6]

>Как, БД = Парадокс!!!

И что в этом запросе таеого, что не поддерживается Local SQL?


 
dolmat   (2005-11-17 10:30) [7]

а ежели так
TableKlientsReduction.asFloat := roundto(TableFirmAdd_Pay.asFloat * 0.15,-2);
Относительно roundto() я понял что здесь пеня рассчитывается.


 
Fl@sh ©   (2005-11-18 04:31) [8]


> dolmat   (17.11.05 10:30) [7]
>
> а ежели так
> TableKlientsReduction.asFloat := roundto(TableFirmAdd_Pay.
> asFloat * 0.15,-2);


Всегда видает одинаковое значение 75 копеек, хотя должны быть разные!!


> ЮЮ ©   (17.11.05 04:59) [6]
>
> >Как, БД = Парадокс!!!
>
> И что в этом запросе таеого, что не поддерживается Local
> SQL?


А где задавать запрос?? У меня нет квери, чтоб писать ето прямо в SQL!!!


 
ЮЮ ©   (2005-11-18 05:28) [9]

>Нужно из таблицы TableFirm взять поле Add_Pay и вставить его в TableKlients умножив на соотв. коеф.

Из какой записи таблицы TableFirm? Или там только одна запись? Или для текущей? Или TableFirm и TableKlients связаны?

Кстати, судя по коду, TableFirm и TableKlients не таблицы, а сетки, в смысле TDBGrid, а таблицами принято называть TTable или сущности в БД


 
dolmat   (2005-11-18 09:18) [10]

А в структуре TableKlients поле Reduction будет если открыть ее через Database Desktop?


 
Johnmen ©   (2005-11-18 09:27) [11]

>А в структуре TableKlients поле Reduction будет если открыть ее через Database Desktop?

Будет, если Database Desktop что-нибудь знает про твою программу...
:)


 
Fl@sh ©   (2005-11-20 02:44) [12]

Решил все таки, хотя наверное способ не из лучших:


 TableKlients.First;
 TableFirm.First;
 While not TableKlients.Eof do
 begin
   TableKlients.Edit;
   TableKlientsReduction.Value := TableKlientsPrice.Value * (TableFirmAdd_Pay.Value * 0.01);
   TableKlients.Post;
   TableKlients.Next;
   TableFirm.Next;
 end;




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

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
10-1111350792
TheEd
2005-03-20 23:33
2006.01.15
Как в Excel нарисовать границу между двумя ячейками (областями)?


2-1135504189
bobbyDigital
2005-12-25 12:49
2006.01.15
Яркость контрастность


6-1123189073
klavi
2005-08-05 00:57
2006.01.15
SMS sender


1-1133706825
GanibalLector
2005-12-04 17:33
2006.01.15
передача массива из DLL


2-1135506553
Дмитрий_177
2005-12-25 13:29
2006.01.15
Удаление из списка строк