
Творец
   
Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант
Репутация: 29 Всего: 329
|
этому коду уже года 4, так что..... | Код | Function TfmMain.NewDBExport(vPathDBExport:String; TableName:String):Bool;//создание новой БД Var q:integer; begin//копирование записей в новую таблицу try sb2.Panels[0].Text:='Создание новой таблицы...'; application.ProcessMessages; result:=false; Cur(cS); if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridApt') then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.DatabaseName:=vPathDBExport; tNew.TableName:=TableName+'.dbf'; tNew.TableType:=ttDBase; tNew.FieldDefs.Add('AName',ftString,20,False); tNew.FieldDefs.Add('AAddres',ftString,40,False); tNew.FieldDefs.Add('ATel',ftString,40,False); tNew.FieldDefs.Add('AMAIL',ftString,30,False); tNew.FieldDefs.Add('AFA',ftString,10,False); tNew.CreateTable; tNew.Open; for q:=0 to (ActiveControl as TDBGridEh).SelectedRows.Count-1 do begin//пробежка по таблице //переходим к закладке (ActiveControl as TDBGridEh).DataSource.DataSet.GotoBookmark(pointer((ActiveControl as TDBGridEh).SelectedRows.Items[q])); tNew.Append; tNew.FieldByName('AName').AsString:=tAptAName.AsString; tNew.FieldByName('AAddres').AsString:=tAptAAddres.AsString; tNew.FieldByName('ATel').AsString:=tAptATel.AsString; tNew.FieldByName('AMail').AsString:=tAptAMail.AsString; tNew.FieldByName('AFa').AsString:=tAptAFA.AsString; tNew.Post; end;//for end;//if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridApt') then begin //таблица препаратов //((ActiveControl as TDBGridEh).DataSource.DataSet as TTable).TableName; if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridPrep') then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:=TableName+'.dbf'; tNew.TableType:=ttDBase; tNew.FieldDefs.Add('PName',ftString,100); tNew.FieldDefs.Add('PProducer',ftString,30); tNew.FieldDefs.Add('PPrice',ftString,30); tNew.FieldDefs.Add('PDateTime',ftString,30); tNew.FieldDefs.Add('PApt',ftString,30); tNew.CreateTable; tNew.Open; for q:=0 to (ActiveControl as TDBGridEh).SelectedRows.Count-1 do begin//пробежка по таблице //переходим к закладке (ActiveControl as TDBGridEh).DataSource.DataSet.GotoBookmark(pointer((ActiveControl as TDBGridEh).SelectedRows.Items[q])); tNew.Append; tNew.FieldByName('PName').AsString:=tPrepPName.AsString; tNew.FieldByName('PProducer').AsString:=tPrepPProducer.AsString; tNew.FieldByName('PPrice').AsString:=tPrepPPrice.AsString; tNew.FieldByName('PDateTime').AsString:=tPrepPDateTime.AsString; tNew.FieldByName('PApt').AsString:=tPrepPApt.AsString; tNew.Post; end;//for end;//if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridApt') then begin if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridZay') then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:=TableName+'.dbf'; tNew.TableType:=ttDBase; tNew.FieldDefs.Add('ZID',ftInteger);//№ п/п tNew.FieldDefs.Add('ZApt',ftInteger); tNew.FieldDefs.Add('ZName',ftString,100); tNew.FieldDefs.Add('ZPrice',ftString,30); tNew.FieldDefs.Add('ZAmount',ftString,30); tNew.FieldDefs.Add('ZProducer',ftString,30); tNew.FieldDefs.Add('ZApteka',ftString,20); tNew.FieldDefs.Add('ZDate',ftString,30); tNew.FieldDefs.Add('ZFilial',ftInteger); tNew.CreateTable; tNew.Open; for q:=0 to (ActiveControl as TDBGridEh).SelectedRows.Count-1 do begin//пробежка по таблице //переходим к закладке (ActiveControl as TDBGridEh).DataSource.DataSet.GotoBookmark(pointer((ActiveControl as TDBGridEh).SelectedRows.Items[q])); tNew.Append; tNew.FieldByName('ZID').AsInteger:=tZayZID.AsInteger; tNew.FieldByName('ZApt').AsInteger:=tZayZApt.AsInteger; tNew.FieldByName('ZName').AsString:=tZayZName.AsString; tNew.FieldByName('ZAmount').AsString:=tZayZAmount.AsString; tNew.FieldByName('ZProducer').AsString:=tZayZProducer.AsString; tNew.FieldByName('ZPrice').AsString:=tZayZPrice.AsString; tNew.FieldByName('ZDate').AsString:=tZayZDate.AsString; tNew.FieldByName('ZFilial').AsString:=tZayZFilial.AsString; tNew.FieldByName('ZApteka').AsString:=tZayZApteka.AsString; tNew.Post; end;//for end;//if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridApt') then begin
if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridFilt') then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:=TableName+'.dbf'; tNew.TableType:=ttDBase; tNew.FieldDefs.Add('FID',ftInteger);//№ п/п tNew.FieldDefs.Add('FName',ftString,100); tNew.CreateTable; tNew.Open; for q:=0 to (ActiveControl as TDBGridEh).SelectedRows.Count-1 do begin//пробежка по таблице //переходим к закладке (ActiveControl as TDBGridEh).DataSource.DataSet.GotoBookmark(pointer((ActiveControl as TDBGridEh).SelectedRows.Items[q])); tNew.Append; tNew.FieldByName('FID').AsInteger:=(ActiveControl as TDBGridEh).DataSource.DataSet.FieldByName('FID').AsInteger; tNew.FieldByName('FName').AsString:=(ActiveControl as TDBGridEh).DataSource.DataSet.FieldByName('FName').AsString; tNew.Post; end;//for end;//if(ActiveControl is TDBGridEh)and((ActiveControl as TDBGridEh).Name='DBGridApt') then begin
tNew.Close; Cur(cD); result:=true; except tNew.Close; Cur(cD); result:=False; ShowMessage('Ошибка при создании таблиц БД'); end;//try-except end;
|
Добавлено через 1 минуту и 33 секундывот ещёто-то нашёл | Код | procedure TfmMain.actServCreateDBExecute(Sender: TObject); Var sPathForNewDB:String; begin//создание новой БД sPathForNewDB:=ExtractFilePath(ParamStr(0))+'data'; try fmSelFilesDB:=TfmSelFilesDB.Create(self); if fmSelFilesDB.ShowModal=mrOk then begin if MessageDlg('Будет создана новая база данных!'+#13+ 'Продолжить?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then begin FreeAndNil(fmSelFilesDB); Exit; end;//if if SelectDirectory('ВЫБЕРИТЕ КАТАЛОГ ДЛЯ ХРАНЕНИЯ'+#13+ 'НОВОЙ БАЗЫ ДАННЫХ','', sPathForNewDB)=False then begin FreeAndNil(fmSelFilesDB); Exit; end;//if if (FileExists(sPathForNewDB+'\Apteka.db')) OR (FileExists(sPathForNewDB+'\Zayavka.db')) then if MessageDlg('Файлы БД будут перезаписаны!'+#13+ 'Продолжить?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then begin FreeAndNil(fmSelFilesDB); Exit; end;//if Cur(cS); DB.Connected:=False; tNew.Close; tNew.DatabaseName:=sPathForNewDB; //создаем справочник аптек if fmSelFilesDB.cbCreateApt.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Apteka.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('AID',ftAutoInc); tNew.FieldDefs.Add('AName',ftString,20,False); tNew.FieldDefs.Add('AAddres',ftString,40,False); tNew.FieldDefs.Add('ATel',ftString,40,False); tNew.FieldDefs.Add('AMAIL',ftString,30,False); tNew.FieldDefs.Add('AFA',ftString,10,False); tNew.IndexDefs.Add('','AID',[ixPrimary]); tNew.IndexDefs.Add('idxAName','AName',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxAAddres','AAddres',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxATel','ATel',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxAMail','AMail',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxAFA','AFA',[ixCaseInsensitive]); tNew.CreateTable; end;//if //справочник Филиалов if fmSelFilesDB.cbCreateFilials.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Filial.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('FlID',ftAutoInc); tNew.FieldDefs.Add('FlName',ftString,20,False); tNew.FieldDefs.Add('FlAddres',ftString,40,False); tNew.FieldDefs.Add('FlTel',ftString,40,False); tNew.IndexDefs.Add('','FlID',[ixPrimary]); tNew.IndexDefs.Add('idxFlName','FlName',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxFlAddres','FlAddres',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxFlTel','FlTel',[ixCaseInsensitive]); tNew.CreateTable; end;//if //таблица групп if fmSelFilesDB.cbCreateGroup.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='FilterPrep.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('FID',ftAutoInc); tNew.FieldDefs.Add('FName',ftString,30,False); tNew.IndexDefs.Add('','FID',[ixPrimary]); tNew.IndexDefs.Add('idxFName','FName',[ixCaseInsensitive]); tNew.CreateTable; end;//if //таблица препаратов if fmSelFilesDB.cbCreatePrep.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Preparat.DB'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('PID',ftAutoInc); tNew.FieldDefs.Add('PName',ftString,100,False); tNew.FieldDefs.Add('PProducer',ftString,30,False); tNew.FieldDefs.Add('PPrice',ftFloat); tNew.FieldDefs.Add('PDateTime',ftDateTime); tNew.FieldDefs.Add('PApt',ftInteger); tNew.FieldDefs.Add('Code',ftString,30,False); tNew.IndexDefs.Add('','PID',[ixPrimary]); tNew.IndexDefs.Add('idxPApt','PApt',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxPNamePPrice','PName;PPrice',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxPDateTimeDesc','PDateTime',[ixCaseInsensitive, ixDescending]); tNew.IndexDefs.Add('idxPPricePName','PPrice;PName',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxPProducer','PProducer',[ixCaseInsensitive]); tNew.CreateTable; end;//if //таблица заявок if fmSelFilesDB.cbCreateZay.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Zayavka.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('ZID',ftAutoInc); tNew.FieldDefs.Add('ZApt',ftInteger); tNew.FieldDefs.Add('ZName',ftString,100,False); tNew.FieldDefs.Add('ZPrice',ftFloat); tNew.FieldDefs.Add('ZAmount',ftFloat); tNew.FieldDefs.Add('ZProducer',ftString,30,False); tNew.FieldDefs.Add('ZApteka',ftString,20,False); tNew.FieldDefs.Add('ZDate',ftDate); tNew.FieldDefs.Add('ZFilial',ftInteger); tNew.FieldDefs.Add('ZCode',ftString,30,False); tNew.IndexDefs.Add('','ZID',[ixPrimary]); tNew.IndexDefs.Add('idxZApt','ZApt',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZAmount','ZApt;ZAmount',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZApteka','ZApt;ZApteka',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZName','ZApt;ZName',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZPrice','ZApt;ZPrice',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZProducer','ZApt;ZProducer',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZDateDesc','ZApt;ZDate',[ixCaseInsensitive, ixDescending]); tNew.IndexDefs.Add('idxZAptZFilial','ZApt;ZFilial',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxZAptZID','ZApt;ZID',[ixCaseInsensitive]); tNew.CreateTable; end;//if //временная таблица if fmSelFilesDB.cbCreateTemp.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Temp.DB'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('TID',ftAutoInc); tNew.FieldDefs.Add('TName',ftString,100,False); tNew.FieldDefs.Add('TPrice',ftFloat); tNew.FieldDefs.Add('TProducer',ftString,30,False); tNew.FieldDefs.Add('TApt',ftInteger); tNew.FieldDefs.Add('Code',ftString,30,False); tNew.IndexDefs.Add('','TID',[ixPrimary]); tNew.CreateTable; end;//if //таблица реквизитов if fmSelFilesDB.cbCreateRekv.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Rekv.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('RID',ftAutoInc); tNew.FieldDefs.Add('RName',ftString,100,False); tNew.FieldDefs.Add('RAddress',ftString,100,False); tNew.FieldDefs.Add('RTel',ftString,100,False); tNew.FieldDefs.Add('REMail',ftString,50,False); tNew.FieldDefs.Add('ROKPO',ftString,10,False); tNew.FieldDefs.Add('RINN',ftString,20,False); tNew.FieldDefs.Add('RSvidNDS',ftString,10,False); tNew.FieldDefs.Add('RBank',ftString,100,False); tNew.FieldDefs.Add('RGorBank',ftString,50,False); tNew.FieldDefs.Add('RMFO',ftString,20,False); tNew.FieldDefs.Add('RRS',ftString,15,False); tNew.FieldDefs.Add('RLicenze',ftString,35,False);
tNew.FieldDefs.Add('RNameUse',ftBoolean); tNew.FieldDefs.Add('RAddressUse',ftBoolean); tNew.FieldDefs.Add('RTelUse',ftBoolean); tNew.FieldDefs.Add('REMailUse',ftBoolean); tNew.FieldDefs.Add('ROKPOUse',ftBoolean); tNew.FieldDefs.Add('RINNUse',ftBoolean); tNew.FieldDefs.Add('RSvidNDSUse',ftBoolean); tNew.FieldDefs.Add('RBankUse',ftBoolean); tNew.FieldDefs.Add('RGorBankUse',ftBoolean); tNew.FieldDefs.Add('RMFOUse',ftBoolean); tNew.FieldDefs.Add('RRSUse',ftBoolean); tNew.FieldDefs.Add('RLicenzeUse',ftBoolean); tNew.IndexDefs.Add('','RID',[ixPrimary]); tNew.CreateTable; end;//if //справочник единиц измерения if fmSelFilesDB.cbCreateEd.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='EdIzm.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('EID',ftAutoInc); tNew.FieldDefs.Add('EName',ftString,10,False); tNew.IndexDefs.Add('','EID',[ixPrimary]); tNew.IndexDefs.Add('idxEName','EName',[ixCaseInsensitive]); tNew.CreateTable; end;//if //шапка накладной if fmSelFilesDB.cbCreateNakls.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='Nakls.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('NID',ftAutoInc); tNew.FieldDefs.Add('NNumber',ftInteger); tNew.FieldDefs.Add('NApt',ftInteger); tNew.FieldDefs.Add('NFilial',ftInteger); tNew.FieldDefs.Add('NDate',ftDate); tNew.IndexDefs.Add('','NID',[ixPrimary]); tNew.IndexDefs.Add('idxNApt','NApt',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNDate','NDate',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNFilial','NFilial',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNNumber','NNumber',[ixCaseInsensitive]); tNew.CreateTable; end;//if //тело накладной(детализация) if fmSelFilesDB.cbCreateNaklsDet.Checked then begin tNew.FieldDefs.Clear; tNew.IndexDefs.Clear; tNew.TableName:='NaklsDet.db'; tNew.TableType:=ttDefault; tNew.FieldDefs.Add('NdID',ftAutoInc); tNew.FieldDefs.Add('NdMainID',ftInteger); tNew.FieldDefs.Add('NdNumber',ftInteger); tNew.FieldDefs.Add('NdSeries',ftString,20,False); tNew.FieldDefs.Add('NdName',ftString,100,False); tNew.FieldDefs.Add('NdEd',ftInteger); tNew.FieldDefs.Add('NdPrice',ftFloat); tNew.FieldDefs.Add('NdAmount',ftFloat); tNew.IndexDefs.Add('','NdID',[ixPrimary]); tNew.IndexDefs.Add('idxNdMainID','NdMainID',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdAmount','NdMainID;NdAmount',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdEd','NdMainID;NdEd',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdName','NdMainID;NdName',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdNumber','NdMainID;NdNumber',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdPrice','NdMainID;NdPrice',[ixCaseInsensitive]); tNew.IndexDefs.Add('idxNdMainIDNdSeries','NdMainID;NdSeries',[ixCaseInsensitive]); tNew.CreateTable; end;//if if fmSelFilesDB.cbConnectAfterCreate.Checked then begin ConnectToDB(sPathForNewDB); try tApt.IndexName:='idxAName'; tPrep.IndexName:='idxPPricePName'; tZay.IndexName:='idxZApt'; tFilterPrep.IndexName:='idxFName'; tNaklsDet.IndexName:='idxNdMainID'; tEdIzm.IndexName:='idxEName'; except tApt.IndexName:=''; tPrep.IndexName:=''; tZay.IndexName:=''; tFilterPrep.IndexName:=''; tNaklsDet.IndexName:=''; tEdIzm.IndexName:=''; end;//try-except end; ShowMessage('База данных создана'); end;//if finally Cur(cD); FreeAndNil(fmSelFilesDB); end;//try-finally end;
|
|