#define WINVER 0x0501
CDatabase Db;
CString sFile = "access.mdb";
 
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
   CString sDsn;
   CString Sql;
   CString sDriver = "MICROSOFT ACCESS DRIVER (*.MDB)";
   sDsn.Format("ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=%s",sFile);
 
   [...]  
//________________________ APERTURA DE DATABASE
try
{
   Db.Open(NULL,false,false,sDsn);
}
catch(CDBException* dbError)
{[...]}
catch(...)
{[...]}
try
{
   Sql="DELETE * FROM Artek";
   Db.ExecuteSQL(Sql);
}
catch(...)
{[...]}
 
 
 [...]
 
   //##################################################################################### BUCLE PRINCIPAL
 
   CString Insert;
   MSG Msg;
 
   int NumInserts=0;
 
   do
   {
       if (PeekMessage(&Msg,NULL,0,0,PM_REMOVE))
       {
       TranslateMessage(&Msg);
       DispatchMessage(&Msg);
       }
 
       Sleep(3);
 
                                   //--------------- Leemos Linea
       memset(Line,'\0',500);
       n=Log->ReadLine(Line,500);              
 
 if (n<=0)
           { Parse_Finished=true;break; }
                           //---------------- Interpretar linea
           n=0;
           try{
           n=sscanf(Line,"%s %s [%c] : %x\r\n",Date,Time,&Byte,&Hex);
           }catch(...){           continue;         }
                           //--------------- Insertar Linea si es valida
           if (n!=4)
           {[...]}
           else
           {
           Hex=Hex&0x000000FF;
           if (Hex<0xFE)
           {                               if (Hex>=0x80)
               {
               Hex-=0x80;
               Id_Obra=(int)Hex;
                              try{
                 if (Id_Obra<Registro.Obras.size() && Id_Obra>=0)
                  sprintf(Obra_Nombre,"%s",Registro.Obras[Id_Obra].nombre);                                            }
                   catch(...)
                   {[...]}
 
                   if (Registro.Obras[Id_Obra].Tipo!=-1) //si no esta desactivada
                   if (!(strcmp(Obra_Nombre,LastObra_Nombre)==0 && strcmp(Date,LastDate)==0 && strcmp(Time,LastTime)==0))
                   {
                   try{
                       strcpy(LastObra_Nombre,Obra_Nombre); //----- si es la misma que la ultima incluso en el segundo
                       strcpy(LastDate,Date);                //------ Ignorar
                       strcpy(LastTime,Time);
                       }
                   catch(...)
                       {[...]}
 
                      try
                       {
 
//! aqui esta la insercion
 
                       Sql.Format("INSERT INTO Artek Id_Alarma,Id_Obra,Nombre_Obra,Fecha,Hora) VALUES (%d,%d,'%s','%s','%s')",ID++,Id_Obra,Obra_Nombre,Date,Time);
                       Db.ExecuteSQL(Sql);        //---- la metemos en el Access
                       Sql="";
 
                       }
                   catch(CDBException * dbError)
                       {[...] }
                   catch(...)
                       {[...] }
                   }                                   }
           }
       }
 
   }while(Parse_Finished==0);
 
  
//#####################################################################################
 
//_____________________________________________________________________________________________ Cerrar ACCESS
   Log->Close();
   Db.Close();
 
[... limpieza de otras cosas ...]
}