17 октября, среда 14:40
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Сил моих боле нету...

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Сил моих боле нету...

    Люди добрые поможите кто чем может,месяц уже реверсинженирингом занимаюсь... Нужны доки на Атлантис.
    Головной оффис не дает, а наше начальство наседает, говорит пиши отчет и точка. На кворумовском фтп док нет. Кинте в меня если не жалко, или хотябы расскажите что за загадочнй псевдообъект таблица, и какие у него есть методы!!! Не дайте умереть во цвете лет!!!

  • #2
    1. Неплохо бы темам давать внятное название. Чтобы потом люди не гадали, что в теме скрывается.
    2. Куда кинуть-то ? Готов кинуть файл qrmlan.doc - это официальная документация, которая касается как раз заданных вопросов. Если какую еще доку надо из официальных, тоже готов кинуть. Только это все на ftp должно быть - общий архивчик prog.arj кажись назывался. И еще более странно, что ГО не дает - в чем секрет-то ? Или боятся, что вы сами чего-нибудь налопатите ? Так не давать доку - это весьма неэффективный метод ограничения возможностей программиста.

    3. Касательно псевдообъекта "таблица".
    Первое что надо иметь - исходники словаря. Там для каждой таблицы виден список ее полей (с типами и даже комментариями) и список доступных в Атлантисе индексов таблицы.
    У псевдообъекта "таблица" (когда он добавлен в раздел Tables формулы) есть в памяти буфер под одну запись таблицы. Обращение к полям этого буфера очевидно - имя таблицы>.имя поля>
    Например Accounts.NewAccNum

    Теперь что можно делать с таблицей.
    Поиск. Поиск можно вести только с использованием какого-нибудь индекса.

    Поиск на точное совпадение.
    Заполняем поля буфера, входящие в тот индекс по которому будем искать. Далее вызываем метод GetEqual с параметром - именем индекса и сравниваем результат с коснтантой tsOk.
    Пример:
    Accounts.NewAccNum:='40702810911110012345'; //будем искать этот счет
    if Accounts.GetEqual(tiAccByNewAccNum)=tsOk нашли else не нашли;
    Если метод GetEqual выдал результат tsOk, то поля буфера заполнены значениями полей найденной записи.

    Поиск перебором по индексу с ограничением.
    Заполняем поля буфера, входящие в индекс, начальной границей поиска (например самым маленьким из нужных значений индекса).
    Вызываем метод SetTopBound.
    Затем заполняем поля буфера конечной границей (в нашем примере - самым большим значением), вызываем метод SetBotBound.
    Затем один раз вызываем метод GetFirst и много раз GetNext, пока не получим значение отличное от tsOk. После очищаем ограничения методом ResetBounds.
    Пример:
    Код:
    Accounts.NewAccNum:='40702000000000000000'; //самое маленькое из нужных значений
    Accounts.SetTopBound(tiAccByNewAccNum,rEqual+rGreater);
    //будем искать по индексу AccByNewAccNum все значения большие или равные начальной границе
    
    Accounts.NewAccNum:='40702999999999999999'; //самое ,большое из нужных значений
    Accounts.SetBotBound(tiAccByNewAccNum,rEqual+rLess);
    //... но при этом все значения меньше или равные конечной границе
    
    if Accounts.GetFirst(tiAccByNewAccNum)=tsOk //если нашли хоть одну запись в пределах заданного диапазона
    do   //то в цикле перебираем все подходящие записи
    {
      //здесь что-то делаем с очередной найденной записью
      //...
    } while Accounts.GetNext=tsOk;
    
    Accounts.ResetBounds(tiAccByNewAccNum); //снимаем ограничения
    Если не накладывать Boundы, то методы GetFirst и GetNext пройдут по всем записям таблицы.
    Аналогично GetFirst и GetNext есть пара методов GetLast и GetPrev.

    Для модификации таблицы есть два метода Update и Insert, но они для отчетов не требуются.

    Итого список из методов GetEqual, GetFirst, GetNext, SetTopBound, SetBotBound, ResetBounds - вот весь джентлменский набор для работы с таблицами в отчетах.
    Достаточно ?

    Комментарий


    • #3
      Сообщение от heg Посмотреть сообщение
      1. Неплохо бы темам давать внятное название. Чтобы потом люди не гадали, что в теме скрывается.
      Прошу прощения! Это был крик души человека, заблудившегося в пустыне
      Сообщение от heg Посмотреть сообщение
      2. Куда кинуть-то ....[...etc...]?
      Не,qrmlan.doc не надо, именно после прочтения ВСЕЙ официальной документации, которая валялась на ftp, мне и захотелось лезть на стенку.
      Выдержка из qrmlan.doc
      Работа с таблицами в своей содержательной части основана на объектах системы Access, которая является составной частью “Атлантиса”. Перечень возможных методов псевдообъекта-таблицы совпадает с перечнем методов объекта TTable, который, в свою очередь, содержится в документации по системе Access. Параметры, которые принимают методы псевдообъекта-таблицы, совпадают с соответствующими параметрами объекта TTable. Единственное отличие, касающееся поиска записей с помощью адресов, описано в статье Работа с адресами записей. Функция freeAddr.
      ... что такое хрумба? Это тоже что и мнямба, только с четырьмя ножками...(с)С.Лем
      И больше по поводу методов там ничего нет!!!
      А вот если есть документация по этому самому Access и TTable то
      dato@programist.ru.Буду крайне признателен!
      Не знаю чем обусловлено нежелание ГО дать нам доки. Они очень неадекватно отнеслись к нашей просьбе их переслать, мотивируя тем, что у нас нет обученных специалистов(а вообще бывают такие? кворум проводит какие нибудь курсы для программистов по своей системе?). С другой стороны на просьбу сделать отчет, который нам нужен, они ответили, что мы этот отчет не делаем, так что это ваша проблема разбирайтесь сами. Тупик... Нет, конечно можно сделать отчетик на С++ и кристал репорт, но имхо это не правильный подход. Пользователь должен работать в одной ,привычной для него, среде.

      Сообщение от heg Посмотреть сообщение
      3. Касательно псевдообъекта "таблица"... [...etc...]
      Вот то, что мне и было нужно!
      ОГРОМНОЕ СПАСИБО МНОГОУВАЖАЕМЫЙ СЕР!!!СНИМАЮ ШЛЯПУ!!!
      Я в неоплатном долгу перед Вами.

      Комментарий


      • #4
        после прочтения ВСЕЙ официальной документации, которая валялась на ftp, мне и захотелось лезть ... И больше по поводу методов там ничего нет!!!

        Так и есть. Самые азы дали в доке, а дальше - тот самый реверс-инжениринг, благо он в данном случае не запрещен, а напротив, поощряется. Смотришь как люди делали, и пишешь что-нибудь аналогичное.

        кворум проводит какие нибудь курсы для программистов по своей системе?
        За дополнительные деньги, почему бы нет ? Только я не знаю, обращался ли к ним кто-нибудь с такими вопросами...

        ...СПАСИБО...
        Да ладно, мелочи... Может по ходу написания отчета еще вопросы появятся...

        Комментарий


        • #5
          Сообщение от heg Посмотреть сообщение
          [i] Может по ходу написания отчета еще вопросы появятся...
          Если я еще не очень сильно Вам надоел, не могли бы вы просветить меня еще по такому вопросу. Часто встречаю конструкции типа :
          ClearFarmSQL;
          AddFarmSQL('SELECT траляля ')
          if Not TLSFillBySQL....
          я так понял это функции которые заполняют текущий бокс из селекта? Есть там какие-нибудь подводные камни о которых надо знать?

          Комментарий


          • #6
            Почти верно - это функции, которые заполняют LongSaver (улучшенную версию бокса) из селекта. Работают только в Оракловой версии Кворума, в Бтривной их нет.
            Подводные камни... Черт их знает. В отчетах используются весьма часто. Быстро, просто, удобно.
            Есть пара моментов.
            1. Если что-то неправильно в синтаксисе самого select - вылет из модуля с run-time-error практически гарантирован.
            2. Если не ошибаюсь, тип связанных переменных ЛонгСэйвера должен достаточно точно соответствовать типу полей таблицы. В частности длинну строк надо соответствующую...
            Пример нужен или сами найдете ?

            Комментарий


            • #7
              "2. Если не ошибаюсь, тип связанных переменных ЛонгСэйвера должен достаточно точно соответствовать типу полей таблицы" - тип связанных переменных ЛонгСэйвера должен соответствовать типу данных Select'а

              Комментарий

              Пользователи, просматривающие эту тему

              Свернуть

              Присутствует 1. Участников: 0, гостей: 1.

              Обработка...
              X