Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с double 
:(
    Опции темы
dize
Дата 25.8.2009, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возникла необходимость работы с дробными числами, а именно: вводимые числа в edit1 и edit3 могут быть не целые. Причем edit3 принимает участие в формуле в качестве переменной stoimost. kolvo[i] должно округляться до наименьшего. Также содержимое edit3 должно заноситься в базу с 2 знаками после запятой. База данных access2000, в которой поле Tek_sredstva(в формуле sredstva) представлено в виде "двойное с плавающей точкой" и точность установлена до 2 знаков. 

Код


var
  new_order: Tnew_order;
  query: array[0..2] of string;  
  queryq: array[0..1] of double;

implementation

{$R *.dfm}

procedure Tnew_order.Button1Click(Sender: TObject);
var
  i,count:integer;
  sql,id_paper,class_code:string;
  id_clients: array of string;
  kolvo: array of double;
  procent,stoimost,sredstva:double;

begin
  if radiobutton1.Checked=true then query[2]:='B'
  else query[2]:='S';

  if edit3.Text='' then
  begin
    ShowMessage('...');
    exit;
  end
  else queryq[0]:= strtofloat(edit3.Text);


  if RadioButton3.Checked=true then
  begin
    if edit1.Text='' then
     begin
       ShowMessage('...');
        exit;
     end
     else queryq[1]:= strtofloat(edit1.Text);
  end;

  if RadioButton4.Checked=true then
  begin
  ADOQ_new.Close;
  ADOQ_new.SQL.Clear;
  ADOQ_new.SQL.Add('SELECT Dengi.Tek_sredstva');
  ADOQ_new.SQL.Add('FROM Dengi INNER JOIN groups ON Dengi.id_group=groups.id_group');
  ADOQ_new.SQL.Add('WHERE groups.group="'+query[0]+'"');
  ADOQ_new.Open;

  SetLength(kolvo,ADOQ_new.RecordCount);
  i:=0;
  procent:= strtofloat(Edit2.text);
  stoimost:= strtofloat(Edit3.text);
  while (not ADOQ_new.Eof) do
    begin
        sredstva := strtofloat(ADOQ_new.FieldByName('Tek_sredstva').AsString);
        kolvo[i] := round(sredstva*procent/100/stoimost);
        ADOQ_new.Next();
        i:=i+1;
    end; 
  end; 

  if (query[0]='') or (query[1]='') then
  begin
    ShowMessage('...');
    exit;
  end;

..................

  for i:=0 to count do
  begin
    if RadioButton3.Checked=true then sql:= 'INSERT INTO New_Order ( Account, Kod_klienta, Type, CLASSCODE, Kod_bumagi, [Action], OPERATION, Order_Price, Quantity, Reverse, Ostatki, Cena_ispoln, Stop_cena ) VALUES ("L01-00000F00", "'+id_clients[i]+'", "L", "'+class_code+'", "'+id_paper+'", "NEW_ORDER", "'+query[2]+'", "'+floattostr(queryq[0])+'", "'+floattostr(queryq[1])+'", "0", "0", "0", "0")'
    else sql:= 'INSERT INTO New_Order ( Account, Kod_klienta, Type, CLASSCODE, Kod_bumagi, [Action], OPERATION, Order_Price, Quantity, Reverse, Ostatki, Cena_ispoln, Stop_cena ) VALUES ("L01-00000F00", "'+id_clients[i]+'", "L", "'+class_code+'", "'+id_paper+'", "NEW_ORDER", "'+query[2]+'", "'+floattostr(queryq[0])+'", "'+floattostr(kolvo[i])+'", "0", "0", "0", "0")';


    ADOQ_new.Close;
    ADOQ_new.SQL.Clear;
    ADOQ_new.SQL.Text:=sql;
    ADOQ_new.ExecSQL;
  end;
end;

--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете.
PM MAIL   Вверх
Romikgy
Дата 25.8.2009, 09:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



и где вопрос ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
dize
Дата 25.8.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Насколько я понял access понимает разделитель только в виде точки. Вопрос в том, как сделать принудительное преобразование введонного числа edit3 в число с разделителем в виде точки. К тому же запись в бд идет в виде числа с запятой, а он почему-то округляет по принципу round.

Это сообщение отредактировал(а) dize - 25.8.2009, 11:33
--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете.
PM MAIL   Вверх
Romikgy
Дата 25.8.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



DecimalSeparator 
Цитата(dize @  25.8.2009,  09:51 Найти цитируемый пост)
К тому же запись в бд идет в виде числа с запятой, а он почему-то округляет по принципу round.

а как хотели ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
dize
Дата 26.8.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



До 4 знаков после запятой. Уже разобрался.
--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете.
PM MAIL   Вверх
Romikgy
Дата 26.8.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



тогда закрывай тему


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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