Главная страница
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.039 c
2-1135416301
RX
2005-12-24 12:25
2006.01.15
Почему не заходит в Брейк ?


3-1132123711
Карелин Артем
2005-11-16 09:48
2006.01.15
Получение всех FK в базе MS SQL 2000.


14-1134734721
Германн
2005-12-16 15:05
2006.01.15
Первый в мире компетентный программист


5-1121170591
Aleksandr.
2005-07-12 16:16
2006.01.15
Почему неправильно работает OnMeasureItem?


14-1134850690
Санёк
2005-12-17 23:18
2006.01.15
На чем написана аська?