Есть некая мелкая складская программа для бухгалтерии, написанная лет 5 назад "программистом по-вызову" на C++Builder 05.03. Представляет из себя скомпиленый exe-шник и файл БД Access-а. Исходники тоже есть. Вот код glav.cpp: | Код | //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop
#include "glav.h" #include "intro.h" #include "soob.h" #include "pered.h" #include "history.h" #include "dobav_edit.h" #include "dobav_edit_sto.h" #include "prix_rasx.h" #include "rasx.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "frame_avtopark" #pragma link "frame_nastr" #pragma link "frame_zap" #pragma link "frame_sto" #pragma link "frame_otch" #pragma resource "*.dfm" TForm1 *Form1; int fz=0, fl_bd=0; // признак запуска программы //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Frame11->Visible=false; Frame21->Visible=false; Frame31->Visible=false; Frame41->Visible=false; Frame51->Visible=false; Frame11->StringGrid1->Cells[0][0]="№пп"; Frame11->StringGrid1->Cells[1][0]="Тип"; Frame11->StringGrid1->Cells[2][0]="Номер"; Frame11->StringGrid1->Cells[3][0]="Код затрат"; Frame11->StringGrid1->Cells[4][0]="Отв.лицо";
Frame31->StringGrid1->Cells[0][0]="Дата приоб."; Frame31->StringGrid1->Cells[1][0]="Поставщик"; Frame31->StringGrid1->Cells[2][0]="Наим-ние"; Frame31->StringGrid1->Cells[3][0]="Для авто"; Frame31->StringGrid1->Cells[4][0]="Кол-во"; Frame31->StringGrid1->Cells[5][0]="Сумма"; Frame31->StringGrid1->Cells[6][0]="Сумма(НДС)"; Frame31->StringGrid1->Cells[7][0]="Н/Б"; Frame31->StringGrid1->Cells[8][0]="№ прих"; Frame31->StringGrid1->Cells[9][0]="Прих.док";
Frame31->StringGrid2->Cells[0][0]="Наименование"; Frame31->StringGrid2->Cells[1][0]="№ прих"; Frame31->StringGrid2->Cells[2][0]="гос.номер"; Frame31->StringGrid2->Cells[3][0]="№ расх"; Frame31->StringGrid2->Cells[4][0]="Кол-во"; Frame31->StringGrid2->Cells[5][0]="Дата уст."; Frame31->StringGrid2->Cells[6][0]="Пробег";
Frame31->StringGrid3->Cells[0][0]="Наименование"; Frame31->StringGrid3->Cells[1][0]="Марка авто"; Frame31->StringGrid3->Cells[2][0]="Остаток";
Frame41->StringGrid1->Cells[0][0]="Вид работ"; Frame41->StringGrid1->Cells[1][0]="Гос.номер"; Frame41->StringGrid1->Cells[2][0]="Стоимость"; Frame41->StringGrid1->Cells[3][0]="Стоим.(НДС)"; Frame41->StringGrid1->Cells[4][0]="Н/БН"; Frame41->StringGrid1->Cells[5][0]="СТО"; Frame41->StringGrid1->Cells[6][0]="Дата"; Frame41->StringGrid1->Cells[7][0]="Прих.док";
} //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Caption="АВТОСКЛАД 1.0 - АВТОПАРК"; Frame11->Visible=true; Frame21->Visible=false; Frame31->Visible=false; Frame41->Visible=false; Frame51->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { if(fz==0) { fz++; Form9->ShowModal(); AnsiString Bs1="Provider=MSDASQL.1;Persist Security Info=false;Extended Properties=\"DSN=База данных MS Access;DBQ="; AnsiString Bs1_1=ExtractFilePath(Application->ExeName)+"autobase.mdb"; int Attrs = FileGetAttr(Bs1_1); if (Attrs & faReadOnly) FileSetAttr(Bs1_1, Attrs-1); AnsiString Bs2=";DefaultDir="; AnsiString Bs2_1=ExtractFilePath(Application->ExeName); AnsiString Bs3=";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;\""; char CS0[300]; strcpy(CS0,Bs1.c_str()); strcat(CS0,Bs1_1.c_str()); strcat(CS0,Bs2.c_str()); strcat(CS0,Bs2_1.c_str()); strcat(CS0,Bs3.c_str()); Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select auto_id from avtopark"); Query1->ConnectionString=WideString(CS0); try{Query1->Open();} catch(...) { fl_bd=1; Form3->Memo1->Clear(); Form3->Memo1->Lines->Add("Отсутствует файл базы данных AUTOBASE.MDB"); Form3->ShowModal(); if(OpenDialog1->Execute()) { Bs1_1=OpenDialog1->FileName; Attrs = FileGetAttr(Bs1_1); if (Attrs & faReadOnly) FileSetAttr(Bs1_1, Attrs-1); strcpy(CS0,Bs1.c_str()); fl_bd=0; strcat(CS0,Bs1_1.c_str()); strcat(CS0,Bs2.c_str()); strcat(CS0,Bs2_1.c_str()); strcat(CS0,Bs3.c_str()); Query1->ConnectionString=WideString(CS0); try{Query1->Open();} catch(...) { Form3->Memo1->Clear(); fl_bd=1; Form3->Memo1->Lines->Add("Отсутствует файл базы данных AUTOBASE.MDB"); Form3->ShowModal(); Close(); return; } } } Query1->Close(); if(fl_bd) return; Frame11->Query1->ConnectionString=WideString(CS0); Frame21->Query1->ConnectionString=WideString(CS0); Frame31->Query1->ConnectionString=WideString(CS0); Frame41->Query1->ConnectionString=WideString(CS0); Frame21->Query3->ConnectionString=WideString(CS0); Form2->Query1->ConnectionString=WideString(CS0); Form4->Query1->ConnectionString=WideString(CS0); Form4->Query2->ConnectionString=WideString(CS0); Form5->Query1->ConnectionString=WideString(CS0); Form6->Query1->ConnectionString=WideString(CS0); Form7->Query1->ConnectionString=WideString(CS0); Form8->Query1->ConnectionString=WideString(CS0); Frame31->PageControl1->ActivePage = Frame31->TabSheet1; Form6->DateTimePicker1->Date=Date(); Form6->DateTimePicker2->Date=Date(); Form7->DateTimePicker2->Date=Date(); Form8->DateTimePicker1->Date=Date(); Frame31->DateTimePicker1->Date=Date(); Frame31->DateTimePicker2->Date=Date(); Frame31->DateTimePicker3->Date=Date(); Frame31->DateTimePicker4->Date=Date(); Frame41->DateTimePicker1->Date=Date(); Frame41->DateTimePicker2->Date=Date(); Frame51->DateTimePicker1->Date=Date(); Frame51->DateTimePicker2->Date=Date(); Frame51->DateTimePicker3->Date=Date(); Frame51->DateTimePicker4->Date=Date(); Frame21->CheckBox4->Checked=true; Frame31->RadioGroup1->ItemIndex=2; Frame31->RadioGroup2->ItemIndex=4; Frame31->RadioGroup3->ItemIndex=3; Frame11->RadioGroup1->ItemIndex=6; Frame11->CountRecPark(); Frame21->post_lb(); Frame31->CountRecPrix(); Frame31->CountRecRasx(); Frame31->CountRecOst(); Frame41->CountRecSto(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn2Click(TObject *Sender) { Caption="АВТОСКЛАД 1.0 - НАСТРОЙКИ"; Frame11->Visible=false; Frame21->Visible=true; Frame31->Visible=false; Frame41->Visible=false; Frame51->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::N1Click(TObject *Sender) { Frame11->podg_de2(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N2Click(TObject *Sender) { Frame11->del_rec(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N5Click(TObject *Sender) { Frame11->pered_avto(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N3Click(TObject *Sender) { Frame11->history_avto(); } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn3Click(TObject *Sender) { Caption="АВТОСКЛАД 1.0 - СКЛАД"; Frame11->Visible=false; Frame21->Visible=false; Frame31->Visible=true; Frame41->Visible=false; Frame51->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { Frame11->FreePtr(); Frame31->FreePtr2(); Frame41->FreePtr3(); } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn4Click(TObject *Sender) { Caption="АВТОСКЛАД 1.0 - СТО"; Frame11->Visible=false; Frame41->Visible=true; Frame31->Visible=false; Frame21->Visible=false; Frame51->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn5Click(TObject *Sender) { Caption="АВТОСКЛАД 1.0 - ОТЧЕТЫ (EXCEL)"; Frame11->Visible=false; Frame51->Visible=true; Frame31->Visible=false; Frame41->Visible=false; Frame21->Visible=false; Frame51->clean_proc(); } //---------------------------------------------------------------------------
|
Суть проблемы в том, что недавно я переустановил винду и программа перестала видеть свой AUTOBASE.MDB - при запуске открывается модальное окно сообщения "Отсутствует файл базы данных AUTOBASE.MDB", ОК -> открывается стандартное окно открытия файла, указываю ему этот AUTOBASE.MDB, нажимаю ОК, вновь виду сообщение "Отсутствует файл базы данных AUTOBASE.MDB", ОК -> на долю секунды виднеется главное окно программы и она закрывается. :( Под руками старый комп с Win 2000, на котором эта программа работает. Главное подозрение в каких-то компонентах, которые в Винду надо дополнительно установить. Ставил МС Оффис вместе с Акцессом - ноль эффекта. Вот думаю теперь попробовать поставить на машину C++Builder.
|