Конференция "Базы" » проблемы с переводом программы с FibPlus на Interbase [Firebird]
 
  • Kadzuka (14.12.12 12:04) [0]
    достались исходники от предыдущего програмера, он использовал свой fibplus и ещё кучу всего + своё и при увольнении забрал всё...
    сижу перевожу на ib и уткнулся в проблему:
    при выполнении кода


       while not DS_REP_RASH_TN_Cena.Eof do
       begin
         i := DS_REP_RASH_TN_Cena.FieldByName('R_ID').AsInteger;
         if i > 0 then
         begin
           if Form2.IBDataSet1.Locate('ID', i, []) then
           begin
             curr := Form2.IBDataSet1.FieldByName('G_PRICE').AsCurrency;

             DS_REP_RASH_TN_Cena.Edit;
             if (curr = 0) and (DS_REP_RASH_TN_Cena.Fields[1].AsCurrency > 0) then
               DS_REP_RASH_TN_Cena.Fields[1].AsCurrency := -1
             else
               DS_REP_RASH_TN_Cena.Fields[1].AsCurrency :=
                 DS_REP_RASH_TN_Cena.Fields[1].AsCurrency * curr;

             i := 2;
             while i < iLen do
             begin
               if DBGrid2.Columns[i].Visible then
               begin
                 if (curr = 0) and (DS_REP_RASH_TN_Cena.Fields[i].AsCurrency > 0) then
                   DS_REP_RASH_TN_Cena.Fields[i].AsCurrency := -1
                  else
                   DS_REP_RASH_TN_Cena.Fields[i].AsCurrency :=
                     DS_REP_RASH_TN_Cena.Fields[i].AsCurrency * curr;
               end;
               if DBGrid2.Columns[i + 1].Visible then
               begin
                 if (curr = 0) and
                   (DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency > 0) then
                   DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency := -1
                 else
                   DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency :=
                     DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency * curr;
               end;
               Inc(i, 2);
             end;
             DS_REP_RASH_TN_Cena.Post;
           end;
     
         end;
         DS_REP_RASH_TN_Cena.Next;
       end;



    появляется сообщение IBSQL Open...

    есть подозрения что проблемы в Modify SQL:
    select 1 from RDB$Database
    для чего вобще такой запрос?
  • O'ShinW © (14.12.12 12:20) [1]
    1. просто "1" получить
    2. проверить, что БД доступна
    3. саботаж


    > DS_REP_RASH_TN_Cena

    но

    > 'G_PRICE'


    идентичные блоки

    >            if DBGrid2.Columns[i].Visible then
    >            begin
    >              if (curr = 0) and (DS_REP_RASH_TN_Cena.Fields[i].
    > AsCurrency > 0) then
    >                DS_REP_RASH_TN_Cena.Fields[i].AsCurrency
    > := -1
    >               else
    >                DS_REP_RASH_TN_Cena.Fields[i].AsCurrency
    > :=
    >                  DS_REP_RASH_TN_Cena.Fields[i].AsCurrency
    > * curr;
    >            end;
    >            if DBGrid2.Columns[i + 1].Visible then
    >            begin
    >              if (curr = 0) and
    >                (DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency
    > > 0) then
    >                DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency
    > := -1
    >              else
    >                DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency
    > :=
    >                  DS_REP_RASH_TN_Cena.Fields[i + 1].AsCurrency
    > * curr;
    >            end;


    тут проще инвертировать

    >      i := DS_REP_RASH_TN_Cena.FieldByName('R_ID').AsInteger;
    >
    >      if i > 0 then
    >      begin


    и вообще, жуть с ружьем
  • Anatoly Pogoretsky (14.12.12 12:27) [2]
    > Kadzuka  (14.12.2012 12:04:00)  [0]

    Дешевле приобрести FIB+
  • Виталий Панасенко (19.12.12 11:39) [3]

    >  Anatoly Pogoretsky   (14.12.12 12:27) [2]
    >
    > > Kadzuka  (14.12.2012 12:04:00)  [0]
    >
    > Дешевле приобрести FIB+

    Согласен на все 1000%.. Да и компоненты IB и рядом не лежали с FIB+
  • Ega23 © (19.12.12 19:09) [4]

    >  Да и компоненты IB и рядом не лежали с FIB+

    Есть TIBSQL, его достаточно. Остальное - от лукавого :)
 
Конференция "Базы" » проблемы с переводом программы с FibPlus на Interbase [Firebird]
Есть новые Нет новых   [134430   +2][b:0][p:0.002]