Текущий архив: 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.47 MB
Время: 0.012 c