Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятки с данными 
:(
    Опции темы
KiSH333
Дата 29.8.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



Прив всем!! 
такая проблема, в БД хранятся данные цен, просматрива данные через IB Expert они выглядят нормально т.е. например 7.56!!!
просматривая данные через SQL Explorer данные выгледят иначе 7.5599999999999999999999!!!

такой вопрос , почему так происходит и какое же число на самом деле??? 
PM MAIL   Вверх
Frees
Дата 29.8.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(KiSH333 @  29.8.2008,  10:38 Найти цитируемый пост)
такой вопрос , почему так происходит и какое же число на самом деле??? 

7.5599999999999999999999

Ехперт округление делает


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
KiSH333
Дата 29.8.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



странно хотя настоящее число 7.56(((
PM MAIL   Вверх
pseud
Дата 29.8.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(KiSH333 @  29.8.2008,  11:00 Найти цитируемый пост)
странно хотя настоящее число 7.56(((


откуда ты знаешь? каким образом это число туда запихано?


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
KiSH333
Дата 29.8.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



Цитата(pseud @  29.8.2008,  11:27 Найти цитируемый пост)
откуда ты знаешь? каким образом это число туда запихано?


т.к. я сам их их таблицы другой запихивал!!! insert  into!!!!
PM MAIL   Вверх
pseud
Дата 29.8.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(KiSH333 @  29.8.2008,  12:03 Найти цитируемый пост)
т.к. я сам их их таблицы другой запихивал!!! insert  into!!!!


вот я и справшиваю - как?
1. просто SQL выполнил в каком-то средстве для работы с СУБД
2. или из дельфи формы формировал (тогда приведи код).



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
KiSH333
Дата 1.9.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



основной код

 
Код

const
    tqInsertIntoCena = 'insert into CENA40(INDE_,TIP_CENA,TIP_TAR,C1,C2,C3,C4,C5,C6,C12,REG)'+
                       'values(:INDE_,:TIP_CENA,:TIP_TAR,:C1,:C2,:C3,:C4,:C5,:C6,:C12,:REG);'  ;

 var qrCena:TQuery;
     od:TOpenDialog;
     d1:TDateTime;
     db:TDataBase;
begin
  od:=TOpenDialog.Create(Application);
  od.Filter:='*.dbf|*.dbf';
  od.FileName:='CENA40.dbf';
  if not od.Execute then exit;
  qrCena:=TQuery.Create(Application);

  DM1.TrCena.StartTransaction;
 try
     with (DM1) do
       begin
       if (not TrCena.InTransaction) then DM1.TrCena.Active:=true;
       QrDelCena.Active:=false;
       QrDelCena.SQL.Clear;
       QrDelCena.SQL.Add('delete from CENA40');
       QrDelCena.ExecSQL;
      end;
  qrCena.SQL.Clear;

  qrCena.SQL.Text:= 'select * from '+'"'+od.FileName+'"';
  qrCena.open;
  ShowMessage(od.FileName);

  while not qrCena.Eof do
  begin
    with (DM1.QrDelCena) do
    begin
      Active:=false;
      SQL.Clear;
      SQL.Add(tqInsertIntoCena);



      ParamByName('INDE_').Value:=qrCena.FieldValues['INDEX'];
      ParamByName('TIP_CENA').Value:=qrCena.FieldValues['TIP_CENA'];
      ParamByName('TIP_TAR').Value:=qrCena.FieldValues['TIP_TAR'];
      ParamByName('C1').Value:=qrCena.FieldValues['C1'];
      ParamByName('C2').Value:=qrCena.FieldValues['C2'];
      ParamByName('C3').Value:=qrCena.FieldValues['C3'];
      ParamByName('C4').Value:=qrCena.FieldValues['C4'];
      ParamByName('C5').Value:=qrCena.FieldValues['C5'];
      ParamByName('C6').Value:=qrCena.FieldValues['C6'];

      ParamByName('C12').Value:=qrCena.FieldValues['C12'];
      ParamByName('REG').Value:=qrCena.FieldValues['REG'];
    DM1.QrDelCena.ExecSQL;
  end;
  qrCena.Next;
  end;
   DM1.QrDelCena.ExecSQL;
   DM1.TrCena.Commit;    


    if MessageDlg('Хотите ли вы обновить цены услуг почты за период '+IntToStr(HalfYear)+'/'+IntToStr(YearPer)+' ?',mtInformation,mbOKCancel,0)= mrOk then
    with (DM1.SpUpdateCena) do
      begin
        ShowMessage(IntToStr(YearPer));
        ParamByName('YEARPER').AsSmallInt:=YearPer;
        ParamByName('HALFPER').AsSmallInt:=HalfYear;
        Prepare;
        ExecProc;
        ShowMessage('Цены услуг успешно обновлены.');
      end
    else
    ShowMessage('Внимание, цены услуг не обновлены.');     

  //ShowMessage('Дата: '+DateTimeToStr(now)+ ' Время обработки данных: '+TimeToStr(now-d1) + ' сек.');

  finally
  od.Free;
  qrCena.Free;
  end;
  if DM1.TrGeneral.InTransaction then DM1.TrGeneral.Commit;

end;



----------------------------------------------------

вот хранимая процедера которую я вызываю

Код

begin
FOR

select i.InDexIzd , c.tip_cena, i.MinInt, c.c1, c.c2, c.c3, c.c4, c.c5, c.c6,c.c12, i.catprice
 from IndexAndPrice i, cena40 c
where i.IndexIzd  = c.inde_  and
i.yearper = :YearPer and i.halfyear = :halfper
and i.KindLgoty = 0
and upper(c.tip_tar) = 'I'
/*and Upper(c.tip_cena) = 'B'*/

INTO :IndexIzd,:str1, :str2, :c1, :c2, :c3, :c4, :c5, :c6,:c12,  :CatPrice


do

begin
 if (str2 =1 ) then cen_a = :c1;
 if (str2 =2 ) then cen_a = :c2;
 if (str2 =3 ) then cen_a = :c3;
 if (str2 =4 ) then cen_a = :c4;
 if (str2 =5 ) then cen_a = :c5;
 if (str2 =6 ) then cen_a = :c6;
 if (str2 =12 ) then cen_a = :c12;

 if (str1='B')  then Klgoty = 0;
 if (str1<>'B') then KLgoty = 1;

Update indexandprice
set postprice = :cen_a - :CatPrice
where InDexIzd = :indexizd and
yearper = :YearPer and halfyear = :halfper
and KindLgoty = :Klgoty;
end
end



И в резельтате всего этого пполучаютсяя такие значения нехорошие((((


Это сообщение отредактировал(а) KiSH333 - 3.9.2008, 07:39
PM MAIL   Вверх
pseud
Дата 1.9.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(KiSH333 @  1.9.2008,  07:41 Найти цитируемый пост)
основной код


во-первых "-" за неформатирование текста
во-вторых, я из кода так и не понял как получилось:
Цитата(KiSH333 @  29.8.2008,  11:00 Найти цитируемый пост)
странно хотя настоящее число 7.56(((




--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
KiSH333
Дата 2.9.2008, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



это и есть основной!!!
если ты имеешь ввиду текст всей проги не получится!!! т.к. общий вес 50 мб

Добавлено через 2 минуты и 6 секунд
З.Ы. а как у вас тут код форматировать??
PM MAIL   Вверх
Frees
Дата 2.9.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(KiSH333 @  2.9.2008,  07:31 Найти цитируемый пост)
это и есть основной!!!

основной код это код который непосредственно вносит такую запись и от куда такое значение берется


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
pseud
Дата 2.9.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(KiSH333 @  2.9.2008,  07:31 Найти цитируемый пост)
З.Ы. а как у вас тут код форматировать??


при редактировании сообщения
выделяешь нужный кусок текста (кода) и в выпадающем списке Код выбираешь Delphi или SQL или че хошь.


Цитата(KiSH333 @  2.9.2008,  07:31 Найти цитируемый пост)
это и есть основной!!!если ты имеешь ввиду текст всей проги не получится!!! т.к. общий вес 50 мб


я имею ввиду от куда взялось 7.56?
могло так
Код

(350*2 + 56)/100 = 7,56

могло так
Код

(350*2 + 56)/100,0000000000001 = 7,5599999999



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
KiSH333
Дата 3.9.2008, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



Код

begin
FOR

select i.InDexIzd , c.tip_cena, i.MinInt, c.c1, c.c2, c.c3, c.c4, c.c5, c.c6,c.c12, i.catprice
 from IndexAndPrice i, cena40 c
where i.IndexIzd  = c.inde_  and
i.yearper = :YearPer and i.halfyear = :halfper
and i.KindLgoty = 0
and upper(c.tip_tar) = 'I'
/*and Upper(c.tip_cena) = 'B'*/

INTO :IndexIzd,:str1, :str2, :c1, :c2, :c3, :c4, :c5, :c6,:c12,  :CatPrice


do

begin
 if (str2 =1 ) then cen_a = :c1;
 if (str2 =2 ) then cen_a = :c2;
 if (str2 =3 ) then cen_a = :c3;
 if (str2 =4 ) then cen_a = :c4;
 if (str2 =5 ) then cen_a = :c5;
 if (str2 =6 ) then cen_a = :c6;
 if (str2 =12 ) then cen_a = :c12;

 if (str1='B')  then Klgoty = 0;
 if (str1<>'B') then KLgoty = 1;

Update indexandprice
set postprice = :cen_a - :CatPrice вот от куды!!! но в значениях два знака после запятой, а тут получается такие нехорошие!!! не все а некоторые такие получаются!!!
where InDexIzd = :indexizd and
yearper = :YearPer and halfyear = :halfper
and KindLgoty = :Klgoty;
end
end


Это сообщение отредактировал(а) KiSH333 - 3.9.2008, 07:37
PM MAIL   Вверх
Frees
Дата 3.9.2008, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



cena40.c1 ... c6
:c1
:cen_a
:CatPrice
indexandprice.postprice

а какие типы у полей и переменных?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
KiSH333
Дата 3.9.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.8.2008

Репутация: 0
Всего: 0



double precision
PM MAIL   Вверх
Frees
Дата 3.9.2008, 11:58 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0635 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.