⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datamodule.cpp

📁 某公司资料管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "DataModule.h"
//#include "MainHead.h"
//#include "MIDesigner.h"
#include "ReConnect.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TMastData *MastData;
//---------------------------------------------------------------------
__fastcall TMastData::TMastData(TComponent* AOwner)
	: TDataModule(AOwner)
{
}
//-------------------------------------------
void TMastData::InitRD(void)
{
    i=0;j=0;
    for(i=0;i<30;i++)
    {
       for(j=0;j<30;j++)
       {
            TmpRouteDetail[i][j].ItemNo=0;
            TmpRouteDetail[i][j].Parameter1="";
            TmpRouteDetail[i][j].Parameter2="";
            TmpRouteDetail[i][j].Parameter3="";
            TmpRouteDetail[i][j].Parameter4="";
            TmpRouteDetail[i][j].Parameter5="";
            TmpRouteDetail[i][j].Parameter6="";
            TmpRouteDetail[i][j].Parameter7="";
            TmpRouteDetail[i][j].Parameter8="";
       }
    }
}
//---------------------------------------------
void TMastData::InsertRouteDetail(void)
{
       MIRoute->First();
       while(!MIRoute->Eof&&MIRouteRouteNo->Value<=RecordNo)
       {
            MIRoute->Next();
       }
       //MIRoute->Next();
       InsertingRouteDetail=true;
       for(j=RecordNo;j<30;j++)
       {

           if(MIRoute->Eof)
           {
            break;
           }
           for(i=0;i<30;i++)
           {
               if(TmpRouteDetail[j][i].ItemNo==0)
               {
                  break;
               }
               RouteDetail->Append();
               RouteDetail->Edit();
               RouteDetailItemNo->Value=TmpRouteDetail[j][i].ItemNo;
               RouteDetailName->Value=TmpRouteDetail[j][i].Parameter1;
               RouteDetailParameter->Value=TmpRouteDetail[j][i].Parameter2;
               RouteDetailMemo->Value=TmpRouteDetail[j][i].Parameter3;
                RouteDetail->Post();
           }
           MIRoute->Next();
       }
       InsertingRouteDetail=false;
      // RecordNo=0;
}
//-----------------------------------------------------
void TMastData::DeleteMIRouteDetail(void)
{
       MIRoute->First();
       while(!MIRoute->Eof&&MIRouteRouteNo->Value<RecordNo)
       {
            MIRoute->Next();
       }
       //MIRoute->Next();
       InsertingRouteDetail=true;
       for(j=RecordNo;j<30;j++)
       {
           if(MIRoute->Eof)
           {
            break;
           }
           for(i=0;i<30;i++)
           {
               if(TmpRouteDetail[j][i].ItemNo==0)
               {
                  break;
               }
               RouteDetail->Append();
               RouteDetail->Edit();
               RouteDetailItemNo->Value=TmpRouteDetail[j][i].ItemNo;
               RouteDetailName->Value=TmpRouteDetail[j][i].Parameter1;
               RouteDetailParameter->Value=TmpRouteDetail[j][i].Parameter2;
               RouteDetailMemo->Value=TmpRouteDetail[j][i].Parameter3;
                RouteDetail->Post();
           }
           MIRoute->Next();
       }
       InsertingRouteDetail=false;
      // RecordNo=0;
}
//-----------------------------------------------------
void  TMastData::DeleteItems(TDataSet *DataSet)
{
  DeletingItems=true;     // Suppress recalc of totals during delete
 // DataSet->DisableControls(); // for faster table traversal.
  try
  {
    DataSet->First();
    while(!DataSet->Eof)
    {
       DataSet->Delete();
      // DataSet->Next();
    }
  }
  catch(...)
  {
    DeletingItems = false;
    //DataSet->EnableControls();   //always re-enable controls after disabling
    return;
  }
  DeletingItems =false;
  //DataSet->EnableControls();     //always re-enable controls after disabling
}
//--------------------------------------------------
void  TMastData::DeleteRouteDetail(TDataSet *DataSet)
{
  DeletingRouteDetail=true;     // Suppress recalc of totals during delete
 // DataSet->DisableControls(); // for faster table traversal.
  try
  {
    DataSet->First();
    while(!DataSet->Eof)
    {
       DataSet->Delete();
      // DataSet->Next();
 
    }
  }
  catch(...)
  {
    DeletingRouteDetail = false;
  //  DataSet->EnableControls();   //always re-enable controls after disabling
    return;
  }
  DeletingRouteDetail =false;
 // DataSet->EnableControls();     //always re-enable controls after disabling
}
//--------------------------------------------------

void __fastcall TMastData::MIRouteBeforeDelete(TDataSet *DataSet)
{
    MIBase->Edit();
    if(!DeletingItems)
    {
       RecordNo=MIRouteRouteNo->Value;
    }
    if(!(MastData->MIRouteRouteCode->Value=="FDRL"||MastData->MIRouteRouteCode->Value=="SDRL"))
    {
        DeleteRouteDetail(RouteDetail);
        RouteDetail->ApplyUpdates();
        Database->Commit();
        Database->StartTransaction();
        RouteDetail->CommitUpdates();
    }
    else
    {
       if(MastData->MIRouteRouteCode->Value=="FDRL")
       {
           MastData->MIDrill->Filtered=false;
           MastData->MIDrill->Filtered=true;
           MastData->MIDrill->Filter="DrillType='FDRL'";
           MastData->MIDrill->First();
           while(!MastData->MIDrill->Eof)
           {
              MastData->MIDrill->Delete();
           }
       }
       if(MastData->MIRouteRouteCode->Value=="SDRL")
       {
           MastData->MIDrill->Filtered=false;
           MastData->MIDrill->Filtered=true;
           MastData->MIDrill->Filter="DrillType='SDRL'";
           MastData->MIDrill->First();
           while(!MastData->MIDrill->Eof)
           {
              MastData->MIDrill->Delete();
           }
       }
       MIDrill->ApplyUpdates();
       Database->Commit();
       Database->StartTransaction();
       MIDrill->CommitUpdates();
    }
}
//---------------------------------------------------------------------------
void __fastcall TMastData::MIRouteBeforeInsert(TDataSet *DataSet)
{
   MIBase->Edit();
   if(!DeletingItems)
   {
       RecordNo=MIRouteRouteNo->Value;
   }
   if(!InsertingMIRoute)
   {
     InitRD();
     InsertRoute=true;
     //HaveInsertRoute=true;
     if(!MIRoute->Eof&&!DeletingItems)
     {

        //MIRoute->DisableControls();
        MIRoute->Last();
        while(MIRouteRouteNo->Value>=RecordNo)
        {
            j=MIRouteRouteNo->Value;
            i=0;
            RouteDetail->First();
            while(!RouteDetail->Eof)
            {
               TmpRouteDetail[j][i].ItemNo=RouteDetailItemNo->Value;
               TmpRouteDetail[j][i].Parameter1=RouteDetailName->Value;
               TmpRouteDetail[j][i].Parameter2=RouteDetailParameter->Value;
               TmpRouteDetail[j][i].Parameter3=RouteDetailMemo->Value;
                RouteDetail->Next();
               i++;
            }

            DeleteRouteDetail(RouteDetail);

            RouteDetail->ApplyUpdates();
            Database->Commit();
            Database->StartTransaction();
            RouteDetail->CommitUpdates();

           MIRoute->Edit();
           MIRouteRouteNo->Value=MIRouteRouteNo->Value+1;
           MIRoute->Post();
           if(MIRouteRouteNo->Value>2&&MIRouteRouteNo->Value>RecordNo+1)      //MIRouteRouteNo->Value>RecordNo+1)
           {
                MIRoute->Prior();
           }
           else
           {    break;  }
        }
        //MIRoute->EnableControls();
     }
   }
}
//---------------------------------------------------------------------------
void __fastcall TMastData::RouteDetailAfterDelete(TDataSet *DataSet)
{
   if(!DeletingRouteDetail)
   {
      //RouteDetail->DisableControls();
      RouteDetail->First();
      while(!RouteDetail->Eof)
      {
        if(RouteDetailItemNo->Value>RecordNo)
        {
          RouteDetail->Edit();
          RouteDetailItemNo->Value=RouteDetailItemNo->Value-1;
        }
          RouteDetail->Next();
      }
      //RouteDetail->EnableControls();
   }

}
//---------------------------------------------------------------------------
void __fastcall TMastData::RouteDetailBeforeDelete(TDataSet *DataSet)
{
  if(!DeletingRouteDetail)
   {
       RecordNo=RouteDetailItemNo->Value;
   }
   MIBase->Edit();
}
//---------------------------------------------------------------------------
void __fastcall TMastData::RouteDetailBeforeInsert(TDataSet *DataSet)
{

   MIBase->Edit();
   if(!InsertingRouteDetail)
   {
     if(!RouteDetail->Eof)  //if(!DeletingItems&&!RouteDetail->Eof)
     {

        RouteDetail->DisableControls();
        RecordNo=RouteDetailItemNo->Value;
        RouteDetail->Last();

        while(RouteDetailItemNo->Value>=RecordNo)
        {
           RouteDetail->Edit();
           RouteDetailItemNo->Value=RouteDetailItemNo->Value+1;
           RouteDetail->Post();

           if(RouteDetailItemNo->Value>2&&RouteDetailItemNo->Value>RecordNo+1)
           {  RouteDetail->Prior();}
           else
              break;
        }
          RouteDetail->EnableControls();
        
      }
      RouteDetail->ApplyUpdates();
      Database->Commit();
      Database->StartTransaction();
      RouteDetail->CommitUpdates();
   }
}
//---------------------------------------------------------------------------
void __fastcall TMastData::MIBaseAfterPost(TDataSet *DataSet)
{
    try
    {
       MIBase->ApplyUpdates();
       MIRoute->ApplyUpdates();
       MIDrill->ApplyUpdates();
       RouteDetail->ApplyUpdates();
       Database->Commit();
       Database->StartTransaction();
       MIBase->CommitUpdates();
       MIRoute->CommitUpdates();
       MIDrill->CommitUpdates();
       RouteDetail->CommitUpdates();
    }
    catch(...)
    {
       MessageBox(NULL,"您没有增加修改或删除记录的权限..","提示",MB_OK);
       Database->Rollback();
       Database->StartTransaction();
       RouteDetail->CancelUpdates();
       MIRoute->CancelUpdates();
       MIDrill->CancelUpdates();
       MIBase->CancelUpdates();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -