Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
11-1110739823
Владимир Кладов
2005-03-13 21:50
2006.01.15
версия 2.08


2-1135285494
Crass
2005-12-23 00:04
2006.01.15
из длиного FileName- > сам Name /.без dir и attr


14-1135250639
saNat
2005-12-22 14:23
2006.01.15
Написание программ для ОС Windows в *nix


3-1131959714
nstur
2005-11-14 12:15
2006.01.15
Дерево в базе данных


14-1134971578
Progger
2005-12-19 08:52
2006.01.15
Мессага боссу о контрафакте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский