Bankir.Ru
7 декабря, среда 13:42

Объявление

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

Как работать с базами Btrive, используя Delphi

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

  • Как работать с базами Btrive, используя Delphi

    Имеется АБС на Btrive 6.15.
    Писал ли кто-нибудь самоделки на Delphi/Builder?
    Как коннектиться/получить данные на клиенте?
    Может существует возможность используя ПО третьих
    производителей писать SQL-запросы?

  • #2
    And_Mark
    писать SQL-запросы? это не пробовали, а вот Transaction - пож-та. Написали компонент с использованием rsbtr.dll С.Кубрина. Есть некоторые нюансы, но в целом работает нормально.
    Жить надо так, чтоб тебя помнили сволочи!

    Комментарий


    • #3
      And_Mark
      Есть такая библиотека Titan Btrieve for Delphi, которая обеспечивает прямой доступ к таблицам Btrieve.

      Комментарий


      • #4
        Непоняткин

        Где бы ее рабочую достать?

        Комментарий


        • #5
          And_Mark
          Можно работать через ODBC. Для 6.15 отдельно были драйвера, а если использовать PSQL, то там все в комплекте идет.

          Комментарий


          • #6
            And_Mark
            Хозяин Titan'а здесь

            Комментарий


            • #7
              2And_Mark

              Где бы ее рабочую достать?
              Есть диск AlexSoft с компонентами для Delphi6 (на 2 дисках, есть в он-лайн магазине maxishop.ru)

              Комментарий


              • #8
                Большое спасибо всем кто ответил - теперь ясно в каком направлении копать

                Комментарий


                • #9
                  And_Mark

                  Если не секрет, то под какую АБС?

                  Комментарий


                  • #10
                    Shuric
                    Инвобанк.
                    Когда приходил в свой старый банк, мы как-раз переходили на "XXI век",
                    теперь сменил место работы - и опять на Инвобанке... ))

                    Комментарий


                    • #11
                      Походи по ссылкам, я в свой время накопал:

                      http://www20.brinkster.com/rozovik/rus/work.asp

                      http://www.janerev.newmail.ru/janer4.htm

                      http://www.rsl.itb.ru/

                      http://www.torry.net/db_btrieve.htm
                      NRA

                      Комментарий


                      • #12
                        NRA
                        Спасибо!

                        Комментарий


                        • #13
                          А еще для пользования Titan Btrieve придется как-то создавать DDF-файлы (описатели полей). Я в свое время наковырял довольно удобную утилитку:
                          "DDF Editor For Btrieve" http://bsl.com.ru

                          Комментарий


                          • #14
                            And_Mark
                            "А если ничего не помогает, то надо прочитать инструкцию"
                            В Инвобанке с целью оптимизации дискового пространства были использованы нестандартные поля переменной длины (история аж с 1991 года.) Посему. если пользоваться стандартными утилитами, а они все перечислены в предыдущих постингах, "общаться" будете только с постоянной частью таблицы. Поэтому если все это перелопачивать самостоятельно - долго и тяжело.
                            Для работы с базами Инвобанка есть несколько утилит, позволяющих организовать доступ через COM объекты, компонента под DELPHI, "надстройка" через EXCEL, есть библиотека под Clipper,... наверное это не все, не спрашивал у программистов. Все это есть в Инверсии, ряд банков этим пользуется.
                            Если Ваш банк официальный пользователь, рекомендую зарегистрироваться на Инверсионном сайте на конфе по Инвобанку. Там эти вопросы обсуждались достаточно подробно.
                            Последний раз редактировалось Кузьмин Олег; 17.01.2003, 11:55.
                            С уважением.

                            Комментарий


                            • #15
                              Кузьмин Олег
                              В Инвобанке с целью оптимизации дискового пространства были использованы нестандартные поля переменной длины (история аж с 1991
                              Ага... с IBS (ЦФТ) история та же самая, поэтому, когда я захотел получить доступ к базам из Excel, пришлось самому писать COM объект для доступа... правда, к сожалению, эту работу еще не закончил,- времени не хватает.

                              Комментарий


                              • #16
                                Кузьмин Олег
                                Банк конечно оффициальный пользователь.
                                Просто в банке куда я пришел была информация
                                что для Delphi у Инверсии нет....
                                Спасибо. так и сделаю

                                Комментарий


                                • #17
                                  Во всех версиях Btrieve (5.0, 6.15, Pervasive 2000) мы работали через функцию BtrCall в библиотеке wbtrv32.dll. Вот ее паскалевское описание:

                                  function BtrCall(operation: word; var posblk; var databuf;
                                  var datalen: longint; var keybuf; keylen: byte;
                                  keynum: word): integer; stdcall;
                                  external 'WBTRV32.DLL' name 'BTRCALL';

                                  Описание полей спрашивай, может и угощу.

                                  Комментарий


                                  • #18
                                    2 Iron

                                    Угости пожалуйста описаниями параметров!!!!

                                    Комментарий


                                    • #19
                                      Маленький пример, в котором открывается база, добавляется запись и база закрывается.

                                      const
                                      boOpen = 0;
                                      boClose = 1;
                                      boInsert = 2;
                                      boUpdate = 3;
                                      boDelete = 4;
                                      boGetEqual = 5;
                                      boGetNext = 6;
                                      { и другие коды...}

                                      baNormal = 0;
                                      baAccelerated = $FF;
                                      baReadOnly = $FE;
                                      baExclusive = $FC;


                                      type
                                      PBtrInfoRec = ^TBtrInfoRec;
                                      TBtrInfoRec = packed record
                                      biRecLen_KeyPos: word;
                                      biPageSize_KeyLen: word;
                                      biNumKey_KeyFlag: word;
                                      biRecNum_KeyNum: longword;
                                      biBaseFlag_KeyType: word;
                                      bi_KeyNilVal: word;
                                      biFreePage_: word;
                                      end;

                                      PBtrIndexArray = ^TBtrIndexArray;
                                      TBtrIndexArray = array [0..255] of byte;

                                      PBtrInfoArray = ^TBtrInfoArray;
                                      TBtrInfoArray = packed array [0..255] of TBtrInfoRec;

                                      PBtrBufArray = ^TBtrBufArray;
                                      TBtrBufArray = array [0..65535] of byte;

                                      var
                                      bbFCB: pchar;
                                      Len, Res, Index, Key: integer;
                                      c: char;
                                      Mode: Byte;
                                      Fname: string;
                                      BtrRec: array[0..153] of Char;
                                      begin
                                      bbFCB := AllocMem(128);
                                      c := Chr(0);
                                      Mode := baNormal;
                                      FName := 'C:\thefile.btr';
                                      Len := 0;
                                      Res := BtrCall(boOpen,bbFCB^, c, Len, pchar(FName)^,
                                      Length(FName), Mode);
                                      Index := 0; {индекс ключа}
                                      Key := 0; {значение ключа}
                                      FillChar(BtrRec, SizeOf(BtrRec), #0); {забьем все нулями}
                                      Len := SizeOf(BtrRec); {длина записи}
                                      Res := BtrCall(boInsert, bbFCB^, BtrRec, Len, Key, 255, Index);
                                      Res := BtrCall(boClose, bbFCB^, nil^, PLongint(nil)^, nil^, 0, 0);
                                      FreeMem(bbFCB);
                                      end.

                                      Пояснения:
                                      Res - содержит код ошибки Btrieve (если 0, то все ОК), по идее его
                                      надо анализировать.
                                      Key - должна быть нужного типа, вплоть до структуры.
                                      Здесь показан низкоуровневый пример, у нас же написаны объекты
                                      (разных уровней) и мы пользуемся их методами.
                                      Все выкладывать я не буду (по разным соображениям).

                                      Комментарий

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

                                      Свернуть

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

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