Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2013, 21:14   #11
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Stilet
Создал отдельную временную программу, сделал с твоим кодом, вывел 41

Код:
  Form1.ADOQuery1.SQL.Text := 'select count(k) From es_max';;
  Form1.ADOQuery1.Open;
  ES_Otv := Form1.ADOQuery1.Fields[0].AsString;
  ShowMessage(ES_Otv);
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:17   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня такое вчепятление что нужно отлаживать весь проект а не эту часть.
Не тут ошибка, не тут...
Цитата:
сделал с твоим кодом, вывел 41
Значит проблема не в запросе, не в этом участке кода, раз такой запрос отрабатывает без указанных выше ошибок.
I'm learning to live...

Последний раз редактировалось Stilet; 04.08.2013 в 21:20.
Stilet вне форума Ответить с цитированием
Старый 04.08.2013, 21:25   #13
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

может быть... Вставил его в свой проект, на место прошлых строк, вывел тоже 41, но с ошибкой '' is not a valid floating point value.
Этот блок кода находится в отдельной процедуре, где организован поиск по БД с учетом разных условий. На кнопке вызова процедуры просто идет вывод полученных данных в memo на форме, опять же с некоторыми условиями.

Не думаю, что есть смысл скидывать весь код процедур

Последний раз редактировалось maonang; 04.08.2013 в 21:31.
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:30   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Покажи весь проект.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.08.2013, 21:45   #15
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Хорошо.
Я выведу то, что нужно, то есть что используется и выполняется до и после ошибки. Некоторые моменты не оптимизированные, но это дело времени)
Красным выделил проблемный участок. В комментах то, что было раньше.

Код:
var
  i: Integer;
  Form10: TForm10;
  dir_Var: string;
  dir_All_in_One: string;

implementation

{$R *.dfm}

uses Unit1, Unit4, Unit3, Unit5, Unit2;

var
  massiv_TD_name: array [0 .. 21] of string;
  // массив названий полей допусков с полями размеров(2х)-[0],[1]
  OboznPosadki: string; // обозначение посадки по варианту
  D1: string;
  buf: string;
  dq: string;
  ii: string;
  aa: string;
  it: string;
  Str0: string; // Вал/отверстие в данный момент рассчитывается
  // Для отверстия
  H1_Otv: string; // Основное обозначение
  TD_Otv: string;
  TD_Otv_Str: string; // размерность величины
  ES_Otv: string;
  ES_Otv_Str: string; // размерность величины
  EI_Otv: string;
  EI_Otv_Str: string; // размерность величины
  Dmax_Otv: string;
  Dmin_Otv: string;
  KVALITET_Otv: string;
  // Для вала
  H1_Val: string; // Основное обозначение
  TD_Val: string;
  TD_Val_Str: string; // размерность величины
  ES_Val: string;
  ES_Val_Str: string; // размерность величины
  EI_Val: string;
  EI_Val_Str: string; // размерность величины
  Dmax_Val: string;
  Dmin_Val: string;
  KVALITET_Val: string;

procedure Poisc_ES;
label Val;
var
  n_Count: Integer; // Количество полей в таблице
  a11: array [0 .. 100] of string;
begin
  ES_Otv := '';
  EI_Otv := '';
  if Form10.ADOQuery1.Active = true then
    Form10.ADOQuery1.Active := false;
  Form10.ADOQuery1.SQL.Clear;
  // Отверстие
  if H1_Otv = 'H' then
  begin
    EI_Otv := '0';
    EI_Otv_Str := 'мкм';
    ES_Otv := TD_Otv;
    form4.Memo1.Lines.Add('  3) Верхнее отклонение');
    form4.Memo1.Lines.Add('  ES = TD + EI');
    form4.Memo1.Lines.Add('  ES = ' + TD_Otv + ' + 0 = ' + ES_Otv + ' [мкм] = '
      + floattostr(StrToFloat(ES_Otv) / 1000) + ' [мм]');
    form4.Memo1.Lines.Add('  4) Нижнее отклонение');
    form4.Memo1.Lines.Add('  EI = 0 [мкм]');
    Exit;
  end
  else
  begin
    // ES_max
    if (H1_Otv[1] in ['J', 'K', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z'])
    then
    begin
      form4.Memo1.Lines.Add('  3) Верхнее отклонение');
      // J-(6)...J(8)
      if (H1_Otv = 'J') and ((strtoint(KVALITET_Otv) >= 6) and
        (strtoint(KVALITET_Otv) <= 8)) then
      begin
        Form10.ADOQuery1.SQL.Add('select [j-(' + KVALITET_Otv +
          ')] from es_max Where int(mi)<' + D1 + ' and int(ma)>=' + D1 + ';');
        Form10.ADOQuery1.Open;
        ES_Otv := Form10.ADOQuery1.Fields[0].Text;
        ES_Otv_Str := 'мкм';
        form4.Memo1.Lines.Add('  ES = ' + ES_Otv + ' [мкм]');
        goto Val;
      end
      // K-(<=8)-3...K-(<=8)-8
      else if (H1_Otv = 'K') and ((strtoint(KVALITET_Otv) >= 3) and
        (strtoint(KVALITET_Otv) <= 8)) then
      begin
        // Form10.ADOQuery1.SQL.Text := 'select [K-(<=8)-' + KVALITET_Otv +
        // '] From es_max Where int([mi])<' + D1 + ' and int([ma])>=' + D1;   '+''''+'
        // Form10.ADOQuery1.SQL.Text :='select K From es_max Where mi<50 and ma>=50';
        // Form10.ADOQuery1.Open;
        // ES_Otv := Form10.ADOQuery1.Fields[0].AsString;
        // ES_Otv_Str := 'мкм';
        // form4.Memo1.Lines.Add('  ES = ' + ES_Otv + ' [мкм]');

        if Form10.ADOQuery1.Active = true then
          Form10.ADOQuery1.Active := false;
        Form10.ADOQuery1.SQL.Text := 'select count(k) From es_max';;
        Form10.ADOQuery1.Open;
        ES_Otv := Form10.ADOQuery1.Fields[0].AsString;
        ShowMessage(ES_Otv);
        goto Val;
      end
Все не уместилось, поэтому будет в нескольких сообщениях.

Последний раз редактировалось maonang; 04.08.2013 в 21:51.
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:46   #16
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Код:
// K-(>8)
      else if (H1_Otv = 'K') and (strtoint(KVALITET_Otv) > 8) then
      begin
        Form10.ADOQuery1.SQL.Add('select [K-(>8)] from es_max Where int(mi)<' +
          D1 + ' and int(ma)>=' + D1 + ';');
        Form10.ADOQuery1.Open;
        ES_Otv := Form10.ADOQuery1.Fields[0].Text;
        ES_Otv_Str := 'мкм';
        form4.Memo1.Lines.Add('  ES = ' + ES_Otv + ' [мкм]');
        goto Val;
      end
      // [P-(<=7)-[3...7]...ZC-(<=7)-[3...7]
      else if (H1_Otv[1] in ['P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z']) and
        (strtoint(KVALITET_Otv) <= 7) then
      begin
        Form10.ADOQuery1.SQL.Add('select [' + H1_Otv + '-(<=7)-' + KVALITET_Otv
          + '] from es_max Where ' + D1 + '>int(mi) and ' + D1 + '<=int(ma);');
        Form10.ADOQuery1.Open;
        ES_Otv := Form10.ADOQuery1.Fields[0].Text;
        ES_Otv_Str := 'мкм';
        form4.Memo1.Lines.Add('  ES = ' + ES_Otv + ' [мкм]');
        goto Val;
      end
      // P-(>7)...ZC-(>7)
      else if (H1_Otv[1] in ['P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z']) and
        (strtoint(KVALITET_Otv) > 7) then
      begin
        Form10.ADOQuery1.SQL.Add('select [' + H1_Otv +
          '-(>7)] from es_max Where int(mi)<' + D1 + ' and int(ma)>=' +
          D1 + ';');
        Form10.ADOQuery1.Open;
        ES_Otv := Form10.ADOQuery1.Fields[0].Text;
        ES_Otv_Str := 'мкм';
        form4.Memo1.Lines.Add('  ES = ' + ES_Otv + ' [мкм]');
        goto Val;
      end;
      // иначе считаем через EI
      if (ES = '') or (ES = 'n') then
      begin
        if Form10.ADOQuery1.Active = true then
          Form10.ADOQuery1.Active := false;
        Form10.ADOQuery1.SQL.Clear;
        if H1_Otv[1] in ['A', 'B', 'C', 'D', 'E', 'F', 'G'] then
        begin
          Form10.ADOQuery1.SQL.Add('select [' + H1_Otv +
            '] from ei_max Where int(min0)<' + D1 + ' and int(max0)>=' +
            D1 + ';');
          Form10.ADOQuery1.Open;
          EI_Otv := Form10.ADOQuery1.Fields[0].Text;
          EI_Otv_Str := 'мкм';
          if TD_Otv_Str = 'мм' then
          begin
            TD_Otv := floattostr(StrToFloat(TD_Otv) * 1000); // мм -> мкм
            TD_Otv_Str := 'мкм';
          end;
          if EI_Otv_Str = 'мм' then
          begin
            EI_Otv := floattostr(StrToFloat(EI_Otv) * 1000); // мм -> мкм
            EI_Otv_Str := 'мкм';
          end;
          ES_Otv := floattostr(StrToFloat(TD_Otv) + StrToFloat(EI_Otv));
          ES_Otv_Str := 'мкм';
          form4.Memo1.Lines.Add('  ES = TD + EI');
          buf := '';
          buf := '  ES = ' + TD_Otv;
          if StrToFloat(EI_Otv) < 0 then
            buf := buf + EI_Otv
          else
            buf := buf + '+' + EI_Otv;
          form4.Memo1.Lines.Add(buf + ' = ' + ES_Otv + ' [мкм] = ' +
            floattostr(StrToFloat(ES_Otv) / 1000) + ' [мм]');
          form4.Memo1.Lines.Add('  4) Нижнее отклонение');
          form4.Memo1.Lines.Add('  EI = ' + EI_Otv + ' [мкм] = ' +
            floattostr(StrToFloat(EI_Otv) / 1000) + ' [мм]');
        end;
      end
      else
        goto Val;
      if ((EI = '') or (EI = 'n')) and (ES <> '') then
      begin
        form4.Memo1.Lines.Add('  4) Нижнее отклонение');
        if TD_Otv_Str = 'мм' then
        begin
          TD_Otv := floattostr(StrToFloat(TD_Otv) * 1000); // мм -> мкм
          TD_Otv_Str := 'мкм';
        end;
        if ES_Otv_Str = 'мм' then
        begin
          ES_Otv := floattostr(StrToFloat(ES_Otv) * 1000); // мм -> мкм
          ES_Otv_Str := 'мкм';
        end;
        EI_Otv := floattostr(-StrToFloat(TD_Otv) + StrToFloat(ES_Otv));
        EI_Otv_Str := 'мкм';
        form4.Memo1.Lines.Add('  EI = -TD + ES');
        buf := '';
        buf := '  EI = ' + TD_Otv;
        if StrToFloat(EI_Otv) < 0 then
          buf := buf + ES_Otv
        else
          buf := buf + '+' + ES_Otv;
        form4.Memo1.Lines.Add(buf + ' = ' + EI_Otv + ' [мкм] = ' +
          floattostr(StrToFloat(EI_Otv) / 1000) + ' [мм]');
        Exit;
      end;
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:47   #17
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Код:
      if H1_Otv[1] in ['A', 'B', 'C', 'D', 'E', 'F', 'G'] then
      begin
      Val:
        Form10.ADOQuery1.SQL.Add('select [' + H1_Otv +
          '] from ei_max Where int(min0)<' + D1 + ' and int(max0)>=' +
          D1 + ';');
        Form10.ADOQuery1.Active := true;
        EI_Otv := Form10.ADOQuery1.Fields[0].Text;
        EI_Otv_Str := 'мкм';
        if (ES_Otv = '') or (ES_Otv = 'n') then
        begin
          form4.Memo1.Lines.Add('  3) Верхнее отклонение');
          if TD_Otv_Str = 'мм' then
          begin
            TD_Otv := floattostr(StrToFloat(TD_Otv) * 1000); // мм -> мкм
            TD_Otv_Str := 'мкм';
          end;
          if EI_Otv_Str = 'мм' then
          begin
            EI_Otv := floattostr(StrToFloat(EI_Otv) * 1000); // мм -> мкм
            EI_Otv_Str := 'мкм';
          end;
          ES_Otv := floattostr(StrToFloat(TD_Otv) + StrToFloat(EI_Otv));
          ES_Otv_Str := 'мкм';
          form4.Memo1.Lines.Add('  ES = TD + EI');
          buf := '';
          buf := '  ES = ' + TD_Otv;
          if StrToFloat(EI_Otv) < 0 then
            buf := buf + EI_Otv
          else
            buf := buf + '+' + EI_Otv;
          form4.Memo1.Lines.Add(buf + ' = ' + ES_Otv + ' [мкм] = ' +
            floattostr(StrToFloat(ES_Otv) / 1000) + ' [мм]');
          form4.Memo1.Lines.Add('  4) Нижнее отклонение');
          form4.Memo1.Lines.Add('  EI = ' + EI_Otv + ' [мкм] = ' +
            floattostr(StrToFloat(EI_Otv) / 1000) + ' [мм]');
          Exit;
        end;
        form4.Memo1.Lines.Add('  4) Нижнее отклонение');
        form4.Memo1.Lines.Add('  EI = ' + EI_Otv + ' [мкм] = ' +
          floattostr(StrToFloat(EI_Otv) / 1000) + ' [мм]');
      end
    end;
  end;
end;
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:48   #18
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Код:
procedure PR2;
begin
  D1 := '';
  H1_Otv := '';
  TD_Otv := '';
  ES_Otv := '';
  EI_Otv := '';
  Dmax_Otv := '';
  Dmin_Otv := '';
  KVALITET_Otv := '';
  H1_Val := '';
  TD_Val := '';
  ES_Val := '';
  EI_Val := '';
  Dmax_Val := '';
  Dmin_Val := '';
  KVALITET_Val := '';
  // form4.Memo1.Lines.Add('• ');
  if Form10.ADOQuery1.Active = true then
    Form10.ADOQuery1.Active := false;
  Form10.ADOQuery1.ConnectionString :=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + dir_Var +
    ';Mode=Read;Persist Security Info=False';
  Form10.ADOQuery1.SQL.Clear;
  Form10.ADOQuery1.SQL.Add
    ('select [Обозначение] from ПР_2_ВариантыЗадания Where str([Номер_Варианта]) like str('
    + Form10.ComboBox1.Text + ');');
  Form10.ADOQuery1.Active := true;
  OboznPosadki := Form10.ADOQuery1.Fields[0].Text;
  // Вывод
  form4.Memo1.Lines.Add('Исходные данные');
  form4.Memo1.Lines.Add('Обозначение посадки: ' + OboznPosadki);
  form4.Memo1.Lines.Add('');
  form4.Memo1.Lines.Add('Выполнение задания');
  form4.Memo1.Lines.Add('• Система данной посадки: '); // Вал/Отверстие
  form4.Memo1.Lines.Add('• Тип данной посадки: ');
  // С зазором/С натягом/Переходная
  // Рассчет параметров для отверстия
  Str0 := 'Отв';
  form4.Memo1.Lines.Add
    ('• Условные и конкретные значения для графической схемы поля допуска отверстия'
    + Copy(OboznPosadki, 1, pos('/', OboznPosadki) - 1));
  i := 1;
  // Получаем D из Обозначения посадки
  repeat
    D1 := D1 + OboznPosadki[i];
    Inc(i);
  until not(OboznPosadki[i] in ['0' .. '9']);
  // Получаем основное отклонение
  repeat
    H1_Otv := H1_Otv + OboznPosadki[i];
    Inc(i);
  until not(OboznPosadki[i] in ['A' .. 'Z']);
  // Получаем квалитет
  repeat
    KVALITET_Otv := KVALITET_Otv + OboznPosadki[i];
    Inc(i);
  until OboznPosadki[i] = '/';
  form4.Memo1.Lines.Add('  Квалитет: ' + KVALITET_Otv);
  form4.Memo1.Lines.Add('  Основное отклонение: ' + H1_Otv);
  form4.Memo1.Lines.Add('  1) Номинальный размер');
  form4.Memo1.Lines.Add('  D = ' + D1 + ' [мм]');
  form4.Memo1.Lines.Add('  2) Допуск');
  // Нахождение допуска по таблице
  if Form10.ADOQuery1.Active = true then
    Form10.ADOQuery1.Active := false;
  Form10.ADOQuery1.ConnectionString :=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + dir_All_in_One +
    ';Mode=Read;Persist Security Info=False';
  Form10.ADOQuery1.SQL.Clear;
  Form10.ADOQuery1.SQL.Add('select TD_' + KVALITET_Otv +
    ' from TD Where int(min1)<' + D1 + ' and int(max1)>=' + D1 + ';');
  Form10.ADOQuery1.Active := true;
  TD_Otv := Form10.ADOQuery1.Fields[0].Text;
  if strtoint(KVALITET_Otv) >= 12 then
  begin
    form4.Memo1.Lines.Add('  TD = ' + TD_Otv + ' [мм]');
    TD_Otv_Str := 'мм'
  end
  else
  begin
    form4.Memo1.Lines.Add('  TD = ' + TD_Otv + ' [мкм]');
    TD_Otv_Str := 'мкм'
  end;
  // Далее рассчеты для вала
  Delete(OboznPosadki, 1, pos('/', OboznPosadki));
  i := 1;
  repeat
    H1_Val := H1_Val + OboznPosadki[i];
    Inc(i);
  until (OboznPosadki[i] in ['0' .. '9']);
  repeat
    KVALITET_Val := KVALITET_Val + OboznPosadki[i];
    Inc(i);
  until not(i = length(OboznPosadki));
  // Нахождение и вывод ES
  Poisc_ES;
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 21:48   #19
maonang
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 18
По умолчанию

Код:
  // Дописываем вывод для отверстия

  form4.Memo1.Lines.Add('  5) Наибольший предельно допускаемый размер');
  form4.Memo1.Lines.Add('  ES = Dmax - D');
  form4.Memo1.Lines.Add('  Dmax = ES + D');
  if ES_Otv_Str = 'мкм' then
  begin
    ES_Otv := floattostr(StrToFloat(ES_Otv) / 1000);
    ES_Otv_Str := 'мм';
  end;
  Dmax_Otv := floattostr(StrToFloat(ES_Otv) + StrToFloat(D1));
  form4.Memo1.Lines.Add('  Dmax = ' + ES_Otv + ' + ' + D1 + ' = ' + Dmax_Otv
    + ' [мм]');
  form4.Memo1.Lines.Add('  6) Наименьший предельно допускаемый размер');
  form4.Memo1.Lines.Add('  EI = Dmin - D');
  form4.Memo1.Lines.Add('  Dmin = EI + D');
  if EI_Otv_Str = 'мкм' then
  begin
    EI_Otv := floattostr(StrToFloat(EI_Otv) / 1000);
    EI_Otv_Str := 'мм';
  end;
  Dmin_Otv := floattostr(StrToFloat(EI_Otv) + StrToFloat(D1));
  form4.Memo1.Lines.Add('  Dmin = ' + EI_Otv + ' + ' + D1 + ' = ' + Dmin_Otv
    + ' [мм]');
  form4.Memo1.Lines.Add('');
  // Далее дописываем вывод для вала
  form4.Memo1.Lines.Add
    ('• Условные и конкретные значения для графической схемы поля допуска вала'
    + D1 + OboznPosadki);
  form4.Memo1.Lines.Add('  Квалитет: ' + KVALITET_Val);
  form4.Memo1.Lines.Add('  Основное отклонение: ' + H1_Val);
  form4.Memo1.Lines.Add('  1) Номинальный размер');
  form4.Memo1.Lines.Add('  d = ' + D1 + ' [мм]');
  form4.Memo1.Lines.Add('  2) Допуск');
  // Нахождение допуска по таблице
  if Form10.ADOQuery1.Active = true then
    Form10.ADOQuery1.Active := false;
  Form10.ADOQuery1.SQL.Clear;
  Form10.ADOQuery1.SQL.Add('select TD_' + KVALITET_Val +
    ' from TD Where int(min1)<' + D1 + ' and int(max1)>=' + D1 + ';');
  Form10.ADOQuery1.Active := true;
  TD_Val := Form10.ADOQuery1.Fields[0].Text;
  if strtoint(KVALITET_Val) >= 12 then
  begin
    form4.Memo1.Lines.Add('  Td = ' + TD_Val + ' [мм]');
    TD_Val_Str := 'мм'
  end
  else
  begin
    form4.Memo1.Lines.Add('  Td = ' + TD_Val + ' [мкм]');
    TD_Val_Str := 'мкм'
  end;
  // Нахождение и вывод EI
  // Poisc_EI;
  form4.Memo1.Lines.Add('  5) Наибольший предельно допускаемый размер');
  form4.Memo1.Lines.Add('  es = dmax - d');
  form4.Memo1.Lines.Add('  dmax = es + d');
  form4.Memo1.Lines.Add('  dmax = ');
  form4.Memo1.Lines.Add('  6) Наименьший предельно допускаемый размер');
  form4.Memo1.Lines.Add('  ei = dmin - d');
  form4.Memo1.Lines.Add('  dmin = ei + d');
  form4.Memo1.Lines.Add('  dmin = ');
end;
procedure TForm10.Button2Click(Sender: TObject);
begin
  dir_Var := ExtractFilePath(Application.ExeName) + '\Варианты.mdb';
  dir_All_in_One := ExtractFilePath(Application.ExeName) + '\AllInOne.mdb';

  Form10.ProgressBar1.Position := 0;
  form4.GroupBox1.Caption := 'Вариант №' + Form3.ComboBox1.Text;
  form4.Panel2.Caption := 'Вариант№' + Form3.ComboBox1.Text;
  form4.Caption := 'Практическая работа №2';
  // ----------------------------
  form5.Memo1.Clear;
  form5.Memo1.Lines.Add
    ('-укажите в какой системе дана посадка ( в системе вала или отверстия) ;');
  form5.Memo1.Lines.Add('-начертите графическую схему посадки;');
  form5.Memo1.Lines.Add('-укажите к какому типу относится данная посадка;');
  form5.Memo1.Lines.Add
    ('-на схеме укажите основные характеристики данной посадки;');
  form5.Memo1.Lines.Add('-вычислите допуск посадки.');
  // ----------------------------

  form4.Memo1.Clear;
  Form10.ProgressBar1.Position := Form3.ProgressBar1.Position + 75;
  PR2;
  Form10.ProgressBar1.Position := Form3.ProgressBar1.Max;
  form4.show;
  Form10.Close;
end;
end.
maonang вне форума Ответить с цитированием
Старый 04.08.2013, 22:25   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мдя... Не будет этот проект нормально работать. Слишком много в нем дыр. Начиная с select [j-( и заканчивая go to. Я уже не говорю о беспроверочных функциях StrToХХХ().
Что делать? Я бы выкинул это все и переписал с нуля.
В твоем случае однозначно делать пошаговку (F7-F8 и трассировать до ошибки), выяснял бы на какой строке ошибка и почему.
is not a valid floating point value это ошибка не запроса. Это ошибка из функции StrToFloat() которая говорит что в нее передалось не число, или число, но с неверным разделителем. Советую вот что: Все StrTo... заменить на такую конструкцию:
Код:
if TryStrToFloat(TD_Otv,x) then
 TD_Otv := floattostr(x * 1000) // мм -> мкм
else
 ShowMessage('В TD_Otv введена строка, что не может быть преобразована в вещественное - '+TD_Otv);
И так везде. Для всех переменок. После чего получишь полное понимание, какая же переменка не может быть сконвертирована.
Ну про имена полей в БД я пока молчу )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с SQL запросом. (Delphi) maonang Помощь студентам 4 11.08.2012 21:47
Проблемы с запросом в базу VHomer БД в Delphi 10 23.06.2010 00:36
Проблемы с запросом. Cerber24 SQL, базы данных 1 05.06.2010 02:59
Проблемы с запросом Cerber24 SQL, базы данных 10 01.04.2010 14:14
Проблемы с POST запросом... JustKurt Работа с сетью в Delphi 1 26.07.2009 01:02