Пример доступа к базам RS-Bank из C++Builder через RslSrv Кубрина
Сохранить в файлеОбсудить в форуме
Описание
Просто недавно попробовал эту технологию, может кому пригодится.
Практической пользы кроме иллюстрации нет.
На форме 3 поля редактирования, 6 кнопок и статус панель.
Практической пользы кроме иллюстрации нет.
На форме 3 поля редактирования, 6 кнопок и статус панель.
Текст примера
//--------------------------------------------------------------------------- #include <vcl.h> #include <comobj.hpp> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" Variant ob1,ob2,fl; AnsiString datadir = "\\\\bank2\\vol2\\rsbank\\dbfile\\"; //Директория баз данных AnsiString dataname = "document.dbt"; //Используемая база данных AnsiString dicname = "\\\\bank2\\vol2\\rsbank\\dbfile\\bank.def"; //Путь к словарю int keynum = 3; //Номер используемого ключа TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Caption = datadir + dataname; } //--------------------------------------------------------------------------- void __fastcall TForm1::BOpenClick(TObject *Sender) { try { ob1 = CreateOleObject("RSLSrv.RslEngine"); ob2 = ob1.Exec(Function("LoadModule") << "system"); } catch(Exception &e) { ShowMessage(e.Message); } fl = ob2.Exec(Function("TBfile") << dataname << "r" << keynum << datadir+dataname << dicname); int n = fl.Exec(Function("nrecords")); Status->SimpleText = IntToStr(n); } //--------------------------------------------------------------------------- void __fastcall TForm1::BClick(TObject *Sender) { char str1[100]; try { if (Sender == BNext) { fl.Exec(Function("next")); } else if (Sender == BPrev) { fl.Exec(Function("prev")); } else if (Sender == BFirst) { fl.Exec(Function("rewind")); fl.Exec(Function("next")); } else if (Sender == BLast) { fl.Exec(Function("rewind")); fl.Exec(Function("prev")); } else if (Sender == BFind) { AnsiString acc_P = fl.Exec(PropertyGet("item") << "real_payer"); if( InputQuery("Поиск по счету плательщика", "Счет", acc_P) ) { fl.Exec(PropertySet("item") << "sum" << 0); fl.Exec(PropertySet("item") << "real_payer" << acc_P); fl.Exec(Function("getGE")); } } } catch(...) { ShowMessage("Файл базы данных не открыт !!!"); return; } AnsiString str = fl.Exec(PropertyGet("item") << "ground"); OemToChar(str.c_str(),str1); Ground->Text = str1; Sum->Text = fl.Exec(PropertyGet("item") << "sum"); Real_Payer->Text = fl.Exec(PropertyGet("item") << "real_payer"); } //---------------------------------------------------------------------------