#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 ...]
}