//--------------------------------------------------------------------------- #include #include #include "Esergui.h" #include "stdlib.h" #include "stdio.h" #include #pragma hdrstop //--------------------------------------------------------------------------- // class TAutorizacion // { // protected: // private: // Declaraciones // DatosAutorizacion sDatos; // bool ComprobarCaducidad(dbiTabla Tabla,char *Campo); // unsigned int IndRegORC; // public: //Declaracion de funciones Locales // TAutorizacion(void); // void CapturarFechaGen(char *pszFechaActual); // int ComprobarEstado(char *Estado,char *Valor,char *Campo,hDBIDb hBaseDatos); // int ComprobarConductor(char *pszCodConductor,hDBIDb hBaseDatos); // int ComprobarCisterna(char *pszCodCisterna,hDBIDb hBaseDatos); // int ComprobarTractor(char *pszMatriculaTra,char *pszInternoTra,hDBIDb hBaseDatos); // int ComprobarSuministrador(char *pszCodSum,hDBIDb hBaseDatos); // int ComprobarPedidos(char *pszCodPed,hDBIDb hBaseDatos); // int CalcularPesoVolCarga(hDBIDb hBaseDatos); // int ComprobarPesoCarga(hDBIDb hBaseDatos); // int ComprobarDistribucionCarga(void); // bool Cabe_Cis (void); // bool Capacidad_Ok(int n_Prod,int *psnCapacidad_Prod,int *psnCantidad_Prod); // void ActualizaEstado(char *pszEstado,bool bActualizaOrden,hDBIDb hBaseDatos); // void BuscarNumeroViaje(hDBIDb hBaseDatos); // void RellenarSIMICCAR(dbiTabla TCAR); // void ReservarMemoriaEstructura(hDBIDb hBaseDatos); // void LiberarEstructura(void); // void LeerEstructura(DatosAutorizacion *psDat); // void InicializaEstructura(void); // }; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Constructor de la clase Autorizacion //--------------------------------------------------------------------------- TAutorizacion::TAutorizacion(void) { } //--------------------------------------------------------------------------- // bool ComprobarCaducidad(dbiTabla Tabla,char *pszCampo); // // Entrada: // Tabla: Tabla con la que se va a trabajar // Campo: Campo de la tabla a comprobar // // Salida: // true: No ha caducado // false: Si ha caducado // // Descripcion: Comprueba si el carnet de conducir esta caducado //--------------------------------------------------------------------------- bool TAutorizacion::ComprobarCaducidad(dbiTabla Tabla,char *pszCampo) { bool bCorrecto; char szFecha[TAM_FECHA]; char szFechaCampo[TAM_FECHA]; //Obtenemos la fecha actual CapturarFechaGen(szFecha); //Leemos la fecha de caducidad del carnet LeerCampoNBDE(&Tabla,pszCampo,szFechaCampo,NULL); //Comprobamos si el carnet caduco if((strcmp(szFechaCampo,szFecha))>0) bCorrecto=true; else bCorrecto=false; //Devolvemos el resultado return bCorrecto; } //--------------------------------------------------------------------------- // int ComprobarConductor(char *pszCodConductor,hDBIDb hBaseDatos) // // Entrada: // CodConductor: codigo NMT del conductor // hBaseDatos: Base de Datos a emplear // // Salida: // Error si lo hubo sino un cero // // Descripcion: Comprueba si esta borrada la Tabla SIMICCON, // si caduco el carnet de conducir y // si caduco el ADR //--------------------------------------------------------------------------- int TAutorizacion::ComprobarConductor(char *pszCodConductor,hDBIDb hBaseDatos) { bool bCorrecto; int nValorDevuelto; dbiTabla TConductor; //Inicializamos variable de devolucion nValorDevuelto=AUT_CON_CORRECTO; //Abrimos la la tabla de conductor if(!AbrirTablaBDE(&TConductor,"SIMICCON","CONNTMCON",false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TConductor,pszCodConductor,NULL)) { //Vemos si esta marcado como borrado if(!EstaRegBorBDE (&TConductor,&bCorrecto)) { sDatos.bBorradoCon=bCorrecto; if(!bCorrecto) { //Almacenamos variables LeerCampoNBDE(&TConductor,"CONNTMCON",sDatos.pszCodigoCon,NULL); LeerCampoNBDE(&TConductor,"CONCCACON",sDatos.pszCadCarnetCon,NULL); LeerCampoNBDE(&TConductor,"CONCADCON",sDatos.pszCadADRCon,NULL); LeerCampoNBDE(&TConductor,"CONNOMCON",sDatos.pszNombreCon,NULL); LeerCampoNBDE(&TConductor,"CONNCACON",sDatos.pszCarnetCon,NULL); LeerCampoNBDE(&TConductor,"CONINTCON",sDatos.pszInternoCon,NULL); //Comprobamos si el carnet esta caducado bCorrecto=ComprobarCaducidad(TConductor,"CONCCACON"); if(bCorrecto) { //Comprobamos si el ADR esta caducado bCorrecto=ComprobarCaducidad(TConductor,"CONCADCON"); if(!bCorrecto) nValorDevuelto=AUT_CON_ADR_CADUCADO; } else nValorDevuelto=AUT_CON_CARNET_CADUCADO; } else nValorDevuelto=AUT_CON_BORRADO; } else nValorDevuelto=ERROR_BDE; } else nValorDevuelto=AUT_CON_VALOR_NO_ENCONTRADO; } else nValorDevuelto=ERROR_BDE; if(CerrarTablaBDE(&TConductor) && nValorDevuelto==AUT_CON_CORRECTO) nValorDevuelto=ERROR_BDE; //Guardamos el valor del resultado sDatos.nResultadoCon=nValorDevuelto; //Devolvemos el resultado return nValorDevuelto; } //--------------------------------------------------------------------------- // int ComprobarCisterna(char *pszCodCisterna,hDBIDb hBaseDatos) // // Entrada: // CodCisterna: codigo NMT de la cisterna // hBaseDatos: Base de Datos a emplear // // Salida: // Error si lo hubo sino un cero // // Descripcion: Comprueba si esta borrada la Tabla SIMICCIS, // Comprueba si la tarjeta de transporte esta caducada // Comprueba si el ADR esta caducado // Comprueba si la ITV esta caducada // Comprueba si el Seguro esta caducado //--------------------------------------------------------------------------- int TAutorizacion::ComprobarCisterna(char *pszCodCisterna,hDBIDb hBaseDatos) { bool bCorrecto; int nValorDevuelto; dbiTabla TCisterna,TTRP; //Inicializamos variable de devolucion nValorDevuelto=AUT_CIS_CORRECTO; //Abrimos la la tabla de Cisterna if(!AbrirTablaBDE(&TCisterna,"SIMICCIS","CISNTMCIS",false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TCisterna,pszCodCisterna,NULL)) { //Vemos si esta marcado como borrado if(!EstaRegBorBDE(&TCisterna,&bCorrecto)) { sDatos.bBorradoCis=bCorrecto; if(!bCorrecto) { //Almacenamos variables LeerCampoNBDE(&TCisterna,"CISNTMCIS",sDatos.pszCodigoCis,NULL); LeerCampoNBDE(&TCisterna,"CISCTRCIS",sDatos.pszCTRCis,NULL); LeerCampoNBDE(&TCisterna,"CISCODTRP",sDatos.pszCodTransCis,NULL); LeerCampoNBDE(&TCisterna,"CISNOMTRP",sDatos.pszNombreTransCis,NULL); LeerCampoNBDE(&TCisterna,"CISCTTCIS",sDatos.pszCadTarjetaCis,NULL); LeerCampoNBDE(&TCisterna,"CISCADCIS",sDatos.pszCadADRCis,NULL); LeerCampoNBDE(&TCisterna,"CISCITCIS",sDatos.pszCadITVCis,NULL); LeerCampoNBDE(&TCisterna,"CISCASCIS",sDatos.pszCadSeguroCis,NULL); LeerCampoNBDE(&TCisterna,"CISINTCIS",sDatos.pszInternoCis,NULL); LeerCampoNBDE(&TCisterna,"CISTARCIS",sDatos.pszTaraCis,NULL); LeerCampoNBDE(&TCisterna,"CISBRUCIS",sDatos.pszBrutoCis,NULL); LeerCampoNBDE(&TCisterna,"CISCAMCIS",sDatos.pszCamionCis,NULL); LeerCampoNBDE(&TCisterna,"CISMATCIS",sDatos.pszMatriculaCis,NULL); LeerCampoNBDE(&TCisterna,"CISMATTRA",sDatos.pszMatriculaTraCis,NULL); LeerCampoNBDE(&TCisterna,"CISEJECIS",sDatos.pszNumeroEjesCis,NULL); LeerArrayCampoBDE(&TCisterna,"CISVOLCIS",sDatos.pszsVolumenCis,NUM_MAXIMO_COMPARTIMENTO); //Comprobamos si la Tarjeta Transporte esta caducada bCorrecto=ComprobarCaducidad(TCisterna,"CISCTTCIS"); if(bCorrecto) { //Comprobamos el ADR bCorrecto=ComprobarCaducidad(TCisterna,"CISCADCIS"); if(bCorrecto) { //Comprobamos la ITV bCorrecto=ComprobarCaducidad(TCisterna,"CISCITCIS"); if(bCorrecto) { //Comprobamos el Seguro bCorrecto=ComprobarCaducidad(TCisterna,"CISCASCIS"); if(!bCorrecto) nValorDevuelto=AUT_CIS_SEGURO_CADUCADO; else { //Abrimos la tabla de transportista if(!AbrirTablaBDE(&TTRP,"SIMICTRP","TRPCODTRP",false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TTRP,sDatos.pszCodTransCis,NULL)) { LeerCampoNBDE(&TTRP,"TRPCIFTRP",sDatos.pszCIFTRP,NULL); } else nValorDevuelto=AUT_CIF_TRP_NO_ECONTRADO; } else nValorDevuelto=ERROR_BDE; //Cerramos la tabla if(CerrarTablaBDE(&TTRP) && nValorDevuelto==AUT_CIS_CORRECTO) nValorDevuelto=ERROR_BDE; } } else nValorDevuelto=AUT_CIS_ITV_CADUCADO; } else nValorDevuelto=AUT_CIS_ADR_CADUCADO; } else nValorDevuelto=AUT_CIS_TARJETA_CADUCADA; } else nValorDevuelto=AUT_CIS_BORRADO; } else nValorDevuelto=ERROR_BDE; } else nValorDevuelto=AUT_CIS_VALOR_NO_ENCONTRADO; } else nValorDevuelto=ERROR_BDE; if(CerrarTablaBDE(&TCisterna) && nValorDevuelto==AUT_CIS_CORRECTO) nValorDevuelto=ERROR_BDE; //Guardamos el valor del resultado sDatos.nResultadoCis=nValorDevuelto; //Devolvemos el resultado return nValorDevuelto; } //--------------------------------------------------------------------------- // int ComprobarTractor(char *pszMatriculaTra,char *pszInternoTra,hDBIDb hBaseDatos) // // Entrada: // pszMatriculaTra: Matricula del Tractor // pszInternoTra: Codigo interno del Tractor // hBaseDatos: Base de Datos a emplear // // Salida: // Error si lo hubo sino un cero // // Descripcion: Comprueba si esta borrada la Tabla SIMICCON, // si caduco el carnet de conducir y // si caduco el ADR //--------------------------------------------------------------------------- int TAutorizacion::ComprobarTractor(char *pszMatriculaTra,char *pszInternoTra,hDBIDb hBaseDatos) { bool bCorrecto; int nValorDevuelto; dbiTabla TTractor; char *pszIndiceDeBusqueda; char sCampo[9]; //Inicializamos variable de devolucion nValorDevuelto=AUT_TRA_CORRECTO; if(pszMatriculaTra==NULL) { strcpy(sCampo,"TRAINTTRA"); pszIndiceDeBusqueda = (char *) malloc ( StrLen(pszInternoTra) ); strcpy(pszIndiceDeBusqueda,pszInternoTra); } else { strcpy(sCampo,"TRAMATTRA"); pszIndiceDeBusqueda = (char *) malloc ( StrLen(pszMatriculaTra) ); strcpy(pszIndiceDeBusqueda,pszMatriculaTra); } //Abrimos la la tabla de Tractor if(!AbrirTablaBDE(&TTractor,"SIMICTRA",sCampo,false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TTractor,pszIndiceDeBusqueda,NULL)) { //Vemos si esta marcador como borrado if(!EstaRegBorBDE(&TTractor,&bCorrecto)) { sDatos.bBorradoTra=bCorrecto; if(!bCorrecto) { //Almacenamos variables LeerCampoNBDE(&TTractor,"TRAINTTRA",sDatos.pszInternoTra,NULL); LeerCampoNBDE(&TTractor,"TRAMATTRA",sDatos.pszMatriculaTra,NULL); LeerCampoNBDE(&TTractor,"TRACTTTRA",sDatos.pszCadTarjetaTra,NULL); LeerCampoNBDE(&TTractor,"TRACADTRA",sDatos.pszCadADRTra,NULL); LeerCampoNBDE(&TTractor,"TRACITTRA",sDatos.pszCadITVTra,NULL); LeerCampoNBDE(&TTractor,"TRACASTRA",sDatos.pszCadSeguroTra,NULL); LeerCampoNBDE(&TTractor,"TRATARTRA",sDatos.pszTaraTra,NULL); LeerCampoNBDE(&TTractor,"TRABRUTRA",sDatos.pszBrutoTra,NULL); LeerCampoNBDE(&TTractor,"TRAEJETRA",sDatos.pszNumeroEjesTra,NULL); //Comprobamos si la Tarjeta Transporte esta caducada bCorrecto=ComprobarCaducidad(TTractor,"TRACTTTRA"); if(bCorrecto) { //Comprobamos el ADR bCorrecto=ComprobarCaducidad(TTractor,"TRACADTRA"); if(bCorrecto) { //Comprobamos la ITV bCorrecto=ComprobarCaducidad(TTractor,"TRACITTRA"); if(bCorrecto) { //Comprobamos el Seguro bCorrecto=ComprobarCaducidad(TTractor,"TRACASTRA"); if(!bCorrecto) nValorDevuelto=AUT_TRA_SEGURO_CADUCADO; } else nValorDevuelto=AUT_TRA_ITV_CADUCADO; } else nValorDevuelto=AUT_TRA_ADR_CADUCADO; } else nValorDevuelto=AUT_TRA_TARJETA_CADUCADA; } else nValorDevuelto=AUT_TRA_BORRADO; } else nValorDevuelto=ERROR_BDE; } else nValorDevuelto=AUT_TRA_VALOR_NO_ENCONTRADO; } else nValorDevuelto=ERROR_BDE; if(CerrarTablaBDE(&TTractor) && nValorDevuelto==AUT_TRA_CORRECTO) nValorDevuelto=ERROR_BDE; //Liberamos memoria free(pszIndiceDeBusqueda); //Guardamos el valor del resultado sDatos.nResultadoTra=nValorDevuelto; //Devolvemos el resultado return nValorDevuelto; } //--------------------------------------------------------------------------- // int ComprobarSuministrador(char *pszCodSum,hDBIDb hBaseDatos) // // Entrada: // CodSum: codigo del Suministrador // hBaseDatos: Base de Datos a emplear // // Salida: // Error si lo hubo sino un cero // // Descripcion: Comprueba si esta borrada la Tabla SIMICSUM, // si esta marcada como borrado //--------------------------------------------------------------------------- int TAutorizacion::ComprobarSuministrador(char *pszCodSum,hDBIDb hBaseDatos) { bool bCorrecto; int nValorDevuelto; dbiTabla TSuministrador; //Inicializamos variable de devolucion nValorDevuelto=AUT_SUM_CORRECTO; //Abrimos la la tabla Suministrador if(!AbrirTablaBDE(&TSuministrador,"SIMICSUM","SUMCODSUM",false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TSuministrador,pszCodSum,NULL)) { //Vemos si esta marcador como borrado if(!EstaRegBorBDE(&TSuministrador,&bCorrecto)) { sDatos.bBorradoSum=bCorrecto; if(!bCorrecto) { //Asignamos valores LeerCampoNBDE(&TSuministrador,"SUMCODSUM",sDatos.pszCodigoSum,NULL); LeerCampoNBDE(&TSuministrador,"SUMNOMSUM",sDatos.pszNombreSum,NULL); nValorDevuelto=AUT_SUM_CORRECTO; } else nValorDevuelto=AUT_SUM_BORRADO; } else nValorDevuelto=ERROR_BDE; } else nValorDevuelto=AUT_SUM_VALOR_NO_ENCONTRADO; } else nValorDevuelto=ERROR_BDE; if(CerrarTablaBDE(&TSuministrador) && nValorDevuelto==AUT_SUM_CORRECTO) nValorDevuelto=ERROR_BDE; //Guardamos el valor del resultado sDatos.nResultadoSum=nValorDevuelto; return nValorDevuelto; } //--------------------------------------------------------------------------- // int ComprobarEstado(char *pszEstado,char *pszValor,char *pszCampo,hDBIDb hBaseDatos) // // Entrada: // Estado: Estado en el que se encuentra // Valor: Valor a buscar // Campo: Campo de busqueda // hBaseDatos: Base de Datos a emplear // // Salida: // Error si lo hubo sino un cero // // Descripcion: Comprueba el valor del estado // //--------------------------------------------------------------------------- int TAutorizacion::ComprobarEstado(hDBIDb hBaseDatos) { int nValorDevuelto; dbiTabla TCAR; DBIResult Error; int nNumReg; char *pszCARINTCIS; char *pszCARINTCON; char *pszCARINTTRA; bool bEncontrado; bool bBorrado; //Inicilizamos las variables nValorDevuelto=AUT_EST_CORRECTO; //Abrimos la tabla SIMICCAR para saber el Estado del proceso Error=AbrirTablaBDE(&TCAR,"SIMICCAR",NULL,true,hBaseDatos); if(!Error) { //Pedimos memoria para la variable temporal pszCARINTCIS=ReservarMemoria(&TCAR,"CARINTCIS"); pszCARINTCON=ReservarMemoria(&TCAR,"CARINTCON"); pszCARINTTRA=ReservarMemoria(&TCAR,"CARINTTRA"); //Nos situamos al principio ContarRegBDE(&TCAR,&nNumReg); if(nNumReg) { //comprobamos hasta el final o encontrado bEncontrado=false; while(Error==BDE_SIN_ERROR && bEncontrado==false) { //Leemos los campos LeerCampoNBDE(&TCAR,"CARINTCIS",pszCARINTCIS,NULL); LeerCampoNBDE(&TCAR,"CARINTCON",pszCARINTCON,NULL); LeerCampoNBDE(&TCAR,"CARINTTRA",pszCARINTTRA,NULL); //Comprobamos los campos if(strcmp(sDatos.pszInternoCis,pszCARINTCIS)) { if(strcmp(sDatos.pszInternoCon,pszCARINTCON)) { if(strcmp(sDatos.pszInternoTra,pszCARINTTRA)) bEncontrado=false; else { bEncontrado=true; nValorDevuelto=AUT_EST_TRA_YA_DENTRO; } } else { bEncontrado=true; nValorDevuelto=AUT_EST_CON_YA_DENTRO; } } else { bEncontrado=true; nValorDevuelto=AUT_EST_CIS_YA_DENTRO; } nValorDevuelto=5; //Vamos al siguiente registro Error=IrSiguienteRegBDE(&TCAR,&bBorrado); } if(bEncontrado==false && Error==BDE_FIN_FICHERO)//fin de registro nValorDevuelto=AUT_EST_CORRECTO; } //Liberamos la memoria pedida LiberarMemoria(pszCARINTCIS); LiberarMemoria(pszCARINTCON); LiberarMemoria(pszCARINTTRA); } else nValorDevuelto=ERROR_BDE; //Si no ha habido Errores rellenamos la tabla simiccar if(nValorDevuelto==AUT_EST_CORRECTO) RellenarSIMICCAR(TCAR); //Cerramos la tabla SIMICCAR if(CerrarTablaBDE(&TCAR)) nValorDevuelto=ERROR_BDE; return nValorDevuelto; } //--------------------------------------------------------------------------- // void ReservarMemoriaEstructura(hDBIDb hBaseDatos) // // Entrada: // hDBIDb hBaseDatos: Cabecera de la Base de datos // // Descripcion: Reserva Memoria para la Estructura de Autorizacion // //--------------------------------------------------------------------------- void TAutorizacion::ReservarMemoriaEstructura(hDBIDb hBaseDatos) { BYTE byi,byj; char *pszCadena; dbiTabla TConductor; dbiTabla TCisterna; dbiTabla TTractor; dbiTabla TSuministrador; dbiTabla TOrden; dbiTabla TLinea; dbiTabla TTRP; //Reservamos memoria para el conductor AbrirTablaBDE(&TConductor,"SIMICCON","CONNTMCON",false,hBaseDatos); sDatos.pszCadCarnetCon=ReservarMemoria(&TConductor,"CONCCACON"); sDatos.pszCadADRCon=ReservarMemoria(&TConductor,"CONCADCON"); sDatos.pszNombreCon=ReservarMemoria(&TConductor,"CONNOMCON"); sDatos.pszCarnetCon=ReservarMemoria(&TConductor,"CONNCACON"); sDatos.pszInternoCon=ReservarMemoria(&TConductor,"CONINTCON"); sDatos.pszCodigoCon=ReservarMemoria(&TConductor,"CONNTMCON"); CerrarTablaBDE(&TConductor); //Reservamos memoria para la cisterna AbrirTablaBDE(&TCisterna,"SIMICCIS","CISNTMCIS",false,hBaseDatos); sDatos.pszCodTransCis=ReservarMemoria(&TCisterna,"CISCODTRP"); sDatos.pszCTRCis=ReservarMemoria(&TCisterna,"CISCTRCIS"); sDatos.pszNombreTransCis=ReservarMemoria(&TCisterna,"CISNOMTRP"); sDatos.pszCadTarjetaCis=ReservarMemoria(&TCisterna,"CISCTTCIS"); sDatos.pszCadADRCis=ReservarMemoria(&TCisterna,"CISCADCIS"); sDatos.pszCadITVCis=ReservarMemoria(&TCisterna,"CISCITCIS"); sDatos.pszCadSeguroCis=ReservarMemoria(&TCisterna,"CISCASCIS"); sDatos.pszInternoCis=ReservarMemoria(&TCisterna,"CISINTCIS"); sDatos.pszTaraCis=ReservarMemoria(&TCisterna,"CISTARCIS"); sDatos.pszBrutoCis=ReservarMemoria(&TCisterna,"CISBRUCIS"); sDatos.pszCamionCis=ReservarMemoria(&TCisterna,"CISCAMCIS"); sDatos.pszMatriculaCis=ReservarMemoria(&TCisterna,"CISMATCIS"); sDatos.pszMatriculaTraCis=ReservarMemoria(&TCisterna,"CISMATTRA"); sDatos.pszCodigoCis=ReservarMemoria(&TCisterna,"CISNTMCIS"); sDatos.pszNumeroEjesCis=ReservarMemoria(&TCisterna,"CISEJECIS"); pszCadena=(char *)malloc(strlen("CISVOLCIS")+2); for(byi=1;byi<(NUM_MAXIMO_COMPARTIMENTO+1);byi++) { strcpy(pszCadena,"CISVOLCIS"); itoa(byi,pszCadena+strlen(pszCadena),10); sDatos.pszsVolumenCis[byi-1]=ReservarMemoria(&TCisterna,pszCadena); } free(pszCadena); CerrarTablaBDE(&TCisterna); //Reservamos memoria para el Tractor AbrirTablaBDE(&TTractor,"SIMICTRA","TRAMATTRA",false,hBaseDatos); sDatos.pszCadTarjetaTra=ReservarMemoria(&TTractor,"TRACTTTRA"); sDatos.pszCadADRTra=ReservarMemoria(&TTractor,"TRACADTRA"); sDatos.pszCadITVTra=ReservarMemoria(&TTractor,"TRACITTRA"); sDatos.pszCadSeguroTra=ReservarMemoria(&TTractor,"TRACASTRA"); sDatos.pszInternoTra=ReservarMemoria(&TTractor,"TRAINTTRA"); sDatos.pszTaraTra=ReservarMemoria(&TTractor,"TRATARTRA"); sDatos.pszBrutoTra=ReservarMemoria(&TTractor,"TRABRUTRA"); sDatos.pszMatriculaTra=ReservarMemoria(&TTractor,"TRAMATTRA"); sDatos.pszNumeroEjesTra=ReservarMemoria(&TTractor,"TRAEJETRA"); CerrarTablaBDE(&TTractor); //Reservamos memoria para el Suministrador AbrirTablaBDE(&TSuministrador,"SIMICSUM","SUMCODSUM",false,hBaseDatos); sDatos.pszCodigoSum=ReservarMemoria(&TSuministrador,"SUMCODSUM"); sDatos.pszNombreSum=ReservarMemoria(&TSuministrador,"SUMNOMSUM"); CerrarTablaBDE(&TSuministrador); //Reservamos memoria para el Tranportista AbrirTablaBDE(&TTRP,"SIMICTRP","TRPCODTRP",false,hBaseDatos); sDatos.pszCIFTRP=ReservarMemoria(&TTRP,"TRPCIFTRP"); CerrarTablaBDE(&TTRP); //Reservamos memoria para el Pedido AbrirTablaBDE(&TOrden,"SIMICORC","ORCMATCIS",false,hBaseDatos); //Reservamos memoria para el numero de ordenes for(byi=0;byi=0) { //Asignamos valores strcpy(sDatos.sOrden[byNumeroOrden].pszMatriculaCisOrd,sDatos.pszMatriculaCis); strcpy(sDatos.sOrden[byNumeroOrden].pszCodigoSumOrd,sDatos.pszCodigoSum); LeerCampoNBDE(&TOrden,"ORCPEDORC",sDatos.sOrden[byNumeroOrden].pszNumeroOrd,NULL); LeerCampoNBDE(&TOrden,"ORCNOMDES",sDatos.sOrden[byNumeroOrden].pszNombreDesOrd,NULL); LeerCampoNBDE(&TOrden,"ORCENTORC",sDatos.sOrden[byNumeroOrden].pszFechaEntOrd,NULL); LeerCampoNBDE(&TOrden,"ORCFCAORC",sDatos.sOrden[byNumeroOrden].pszFechaCargaOrd,NULL); LeerCampoNBDE(&TOrden,"ORCCODCLI",sDatos.sOrden[byNumeroOrden].pszCodigoCliOrd,NULL); LeerCampoNBDE(&TOrden,"ORCCCLDES",sDatos.sOrden[byNumeroOrden].pszCodigoCliDesOrd,NULL); LeerCampoNBDE(&TOrden,"ORCUNIPRO",sDatos.sOrden[byNumeroOrden].pszUnidadOrd,NULL); nValorDevuelto=AUT_ORC_CORRECTO; } else nValorDevuelto=AUT_ORC_FECHA_MENOR_QUE_HOY; } else nValorDevuelto=AUT_ORC_OTRA_CISTERNA; } else nValorDevuelto=AUT_ORC_OTRO_SUMINISTRADOR; } else nValorDevuelto=AUT_ORC_ESTADO_ACABADO; } else nValorDevuelto=AUT_ORC_BORRADO; } else nValorDevuelto=ERROR_BDE; } else nValorDevuelto=AUT_ORC_VALOR_NO_ENCONTRADO; //Liberamos variables Temporales LiberarMemoria(pszCodSumTemp); LiberarMemoria(pszCodCisTemp); LiberarMemoria(pszEstadoTemp); LiberarMemoria(pszFechaTemp); } else nValorDevuelto=ERROR_BDE; //Cerramos la tabla SIMIORC if(CerrarTablaBDE(&TOrden) && nValorDevuelto==AUT_ORC_CORRECTO) nValorDevuelto=ERROR_BDE; //almacenamos el valor devuelto sDatos.sOrden[byNumeroOrden].nResultadoOrd=nValorDevuelto; return nValorDevuelto; } //--------------------------------------------------------------------------- // int CalcularPesoVolCarga(hDBIDb hBaseDatos) // // Entrada: // hDBIDb hBaseDatos: Cabecera de la Base de Datos // // Devuelve: // int nValorDevuelto: Devuelve un codigo de Error si lo hubo // // Descripcion: Calcula el peso y el volumen de la carga y dice si es correcto // //--------------------------------------------------------------------------- int TAutorizacion::CalcularPesoVolCarga(hDBIDb hBaseDatos) { DBIResult FinFichero; dbiTabla TLinea,TProducto; BYTE byi,byj,byk; int nValorDevuelto; char *pszCodProTemp,*pszNumOrcTemp; char *pszCodAdiTemp[NUM_MAXIMO_ADITIVO]; bool bBorrado,bVacio,bSalir; bVacio=false; //Inicializamos el Peso total del producto for(byi=0;byi=5) LeerCampoNBDE(&TLinea,"PRM5EJPRM",pszPesoPermitido,NULL); //Guardamos el peso maximo permitido nPesoMaximoPermitido=atoi(pszPesoPermitido); //Calculamos la capacidad de arrastre del tractor nCapacidadArrastreTra=atoi(sDatos.pszBrutoTra); //Cogemos la cantidad mas restrictiva if(nPesoMaximoPermitido>nCapacidadArrastreTra) nPesoMaximoPermitido=nCapacidadArrastreTra; //Aņadimos al peso total de carga el peso del tractor nPesoTotalDeCarga=nPesoTotalDeCarga+atoi(sDatos.pszTaraTra); //Comprobamos si el tractor puede con todo el peso sDatos.nSobrePesoTra=nPesoTotalDeCarga-nCapacidadArrastreTra; if( sDatos.nSobrePesoTra <= 0) nValorDevuelto=AUT_VIA_CORRECTO; else nValorDevuelto=AUT_VIA_PESO_MAYOR_CAP_TRA; } else nValorDevuelto=AUT_VIA_CORRECTO; } else nValorDevuelto=AUT_VIA_PROD_MAYOR_CAP_CIS; //Liberamos la memoria pedida para el peso permitido LiberarMemoria(pszPesoPermitido); } else nValorDevuelto=ERROR_BDE; //Cerramos las tablas if(CerrarTablaBDE(&TLinea) && nValorDevuelto==AUT_VIA_CORRECTO) nValorDevuelto=ERROR_BDE; return nValorDevuelto; } //--------------------------------------------------------------------------- // int TAutorizacion::ComprobarDistribucionCarga(void) // // Devuelve: // int nValorDevuelto: Devuelve un codigo de Error si lo hubo // // Descripcion: // Comprobamos si se puede repartir la carga en los depositos // //--------------------------------------------------------------------------- int TAutorizacion::ComprobarDistribucionCarga(void) { int nValorDevuelto; nValorDevuelto=AUT_VIA_CORRECTO; if(Cabe_Cis()) nValorDevuelto=AUT_VIA_CORRECTO; else nValorDevuelto=AUT_VIA_VOL_MAYOR_CAP_CIS; return nValorDevuelto; } //--------------------------------------------------------------------------- // bool TAutorizacion::Capacidad_Ok(int n_Prod,int *psnCapacidad_Prod,int *psnCantidad_Prod) // // Devuelve: // bool: Devuelve si cabe 1, sino 0 // // Descripcion: // Comprobamos si la capacidad del deposito puede admitir la cantidad de producto // //--------------------------------------------------------------------------- bool TAutorizacion::Capacidad_Ok(int n_Prod,int *psnCapacidad_Prod,int *psnCantidad_Prod) { int nP; nP = n_Prod - 1 ; while ((nP >= 0) && (*(psnCapacidad_Prod+nP) >= *(psnCantidad_Prod+nP))) nP--; return (nP < 0); } //--------------------------------------------------------------------------- // bool TAutorizacion::Cabe_Cis(void) // // Devuelve: // bool: Devuelve si cabe 1, sino 0 // // Descripcion: // Comprueba si los productos caben en la cisterna // //--------------------------------------------------------------------------- bool TAutorizacion::Cabe_Cis(void) { BYTE byNumeroLineas,byi,byj; int nDep,nProd,nSalta; int nNum_Prod,nNum_Dep; int nCapacidad_Prod[NUM_MAXIMO_COMPARTIMENTO]; int nCantidad_Prod[NUM_MAXIMO_COMPARTIMENTO]; //Inicializamos la variable nNum_Prod=0; byi=0; byNumeroLineas=0; for(byj=0;byj<9;byj++) nCantidad_Prod[byj]=0; //Asignamos los volumenes disponibles al Array Capacidad Prod byj=0; while(sDatos.sOrden[byi].sLinea[byj].nVolumenPro && byNumeroLineas<9) { while(sDatos.sOrden[byi].sLinea[byj].nVolumenPro) { nCantidad_Prod[byNumeroLineas]=sDatos.sOrden[byi].sLinea[byj].nVolumenPro; byNumeroLineas++; byj++; } byj=0; byi++; } if(byNumeroLineas nNum_Dep) return (false); else { for(nProd=0;nProd= 0) && !Capacidad_Ok(nNum_Prod,nCapacidad_Prod,nCantidad_Prod)) { nDep=nNum_Dep-1; do { nSalta=0; nCapacidad_Prod[sDatos.nProducto_Dep[nDep]]-=atoi(sDatos.pszsVolumenCis[nDep]); sDatos.nProducto_Dep[nDep]++; if (sDatos.nProducto_Dep[nDep] < nNum_Prod) nCapacidad_Prod[sDatos.nProducto_Dep[nDep]]+=atoi(sDatos.pszsVolumenCis[nDep]); else { sDatos.nProducto_Dep[nDep]=0; nCapacidad_Prod[0]+=atoi(sDatos.pszsVolumenCis[nDep]); nDep--; nSalta=1; } } while ((nDep >= 0) && nSalta); } return (nDep >= 0); } } else return (false); } //--------------------------------------------------------------------------- // void TAutorizacion::RellenarSIMICCAR(dbiTabla TCAR) // // Entrada: // dbiTabla TCAR: Cabecera de la Tabla de SIMICCAR // // Descripcion: // Rellenamos la tabla SIMICCAR con los datos de la estructura de Autorizacion // //--------------------------------------------------------------------------- void TAutorizacion::RellenarSIMICCAR(dbiTabla TCAR) { BYTE byi,byj; char szFecha[TAM_FECHA]; char szFechaActual[TAM_FECHA]; char szHora[TAM_HORA]; char szNumViajeOrd[2]; char *pszNombreProTemp[NUM_MAXIMO_LINEAS]; char *pszCodigoProTemp[NUM_MAXIMO_LINEAS]; char *pszInternoProTemp[NUM_MAXIMO_LINEAS]; char *pszImpuestoProTemp[NUM_MAXIMO_LINEAS]; char *pszIndAdiProTemp[NUM_MAXIMO_ADITIVO]; //Obtenemos la fecha actual CapturarFechaHora(szFechaActual,szHora); CapturarFechaGen(szFecha); //Reservamos memoria para las variables temporales for(byj=0;byjLeerEstructura(&sDatos); //Abrimos la tabla if(!AbrirTablaBDE(&TOrden,"SIMICORC","ORCEVCORC",false,hBaseDatos)) { //Pedimos memoria pszFechaViaMat=(char *)malloc(strlen(sDatos.sOrden[0].pszFechaCargaOrd)+strlen(EspacioEnBlanco)+strlen(cNumViaTemp)+strlen(sDatos.pszMatriculaCis)); //Inicializamos variables byNumeroOrden=0; bSalir=false; while(!bSalir) { if(!(*sDatos.sOrden[byNumeroOrden].pszNumeroOrd)) bSalir=true; else { bSalir=false; byNumeroViaje=1; while(byNumeroViaje(nPesoTotalCis+nTolMaxEnt)) || (nPesoBascula<(nPesoTotalCis-nTolMinEnt))) nValorDevuelto=PEE_PESO_FUERA_DE_TOLERANCIA; return nValorDevuelto; } //--------------------------------------------------------------------- //--------------------------------------------------------------------------- // class TPesoSalida // { // protected: // private: // User declarations // DatosPesoEntrada sDatosEnt; // public: // TPesoSalida(void); // BYTE PesoSalida(char *pszCodCisterna,char *pszCodTractor,char *pszCodConductor,hDBIDb hBaseDatos); // BYTE ComprobarCisterna(char *pszNTMCis,hDBIDb hBaseDatos); // BYTE ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR); // BYTE ComprobarPeso(char *pszTaraCis,char *pszTaraTra); // void CambiarEstado(hDBIDb hBaseDatos); // void ReservarMemoriaEstructura(hDBIDb hBaseDatos); // void LiberarEstructura(void); // }; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Constructor de la clase //--------------------------------------------------------------------------- TPesoSalida::TPesoSalida(void) { } //--------------------------------------------------------------------------- // int TPesoSalida::PesoSalida(char *pszCodCisterna,hDBIDb hBaseDatos) // // Entrada: // char *pszCodCisterna: Codigo de la cisterna a comprobar // hDBIDb hBaseDatos: Cabecera de la Base de Datos // // Devuelve: // int nValorDevuelto: Devuelve un Error si lo hubo // // Descripcion: // Rellena la Estuctura PEsoSalida leyendo de las tablas // //--------------------------------------------------------------------------- int TPesoSalida::PesoSalida(char *pszCodCisterna,hDBIDb hBaseDatos) { dbiTabla TPrm,TCar,TCis,TTra; int nValorDevuelto; //Inicializamos las variables nValorDevuelto=PES_CORRECTO; //Abrimos la tabla de Prm para la tolerancia if(!AbrirTablaBDE(&TPrm,"SIMICPRM",NULL,false,hBaseDatos)) { //Leemos las tolerancias maxima y minima de la entrada y salida LeerCampoNBDE(&TPrm,"PRMTSSPRM",sDatosSal.pszToleranciaMaxSalPES,NULL); LeerCampoNBDE(&TPrm,"PRMTISPRM",sDatosSal.pszToleranciaMinSalPES,NULL); } //Cerramos la tabla de Prm if(CerrarTablaBDE(&TPrm)) nValorDevuelto=ERROR_BDE; //Abrimos la tabla TCAR en exclusiva if(!AbrirTablaBDE(&TCar,"SIMICCAR",NULL,true,hBaseDatos)) { //Reservamos memoria y asignamos valor para el codigo de la cisterna strcpy(sDatosSal.pszCodigoCisPES,pszCodCisterna); //Comprobamos el Estado y nos situamos en el registro en cuestion nValorDevuelto=ComprobarEstado(pszCodCisterna,TCar); //Reservamos memoria y asignamos valor para el codigo del tractor LeerCampoNBDE(&TCar,"CARMATTRA",sDatosSal.pszCodigoTraPES,NULL); if(nValorDevuelto==PES_CORRECTO) { //Abrimos la tabla de Cisterna if(!AbrirTablaBDE(&TCis,"SIMICCIS","CISNTMCIS",false,hBaseDatos)) { //Buscamos el ntm de la cisterna if(!BuscarValorExactoBDE(&TCis,pszCodCisterna,NULL)) { //Cogemos la Tara de Cisternas LeerCampoNBDE(&TCis,"CISTARCIS",sDatosSal.pszTaraCisPES,NULL); LeerCampoNBDE(&TCis,"CISCAMCIS",sDatosSal.pszCamionCisPES,NULL); //Comprobamos si es un camion if( (*sDatosSal.pszCamionCisPES) != 'F' ) { //Abrimos la la tabla de Tractor if(!AbrirTablaBDE(&TTra,"SIMICTRA","TRAMATTRA",false,hBaseDatos)) { //Busca cadena de entrada if(!BuscarValorExactoBDE(&TTra,sDatosSal.pszCodigoTraPES,NULL)) { //Cogemos la Tara del Tractor LeerCampoNBDE(&TTra,"TRATARTRA",sDatosSal.pszTaraTraPES,NULL); //Comprobamos el Peso nValorDevuelto=ComprobarPeso(sDatosSal.pszTaraTraPES); } else nValorDevuelto=PES_TRACTOR_NO_ENCONTRADO; } else nValorDevuelto=ERROR_BDE; //Cerramos la tabla de TCar if(CerrarTablaBDE(&TTra)) nValorDevuelto=ERROR_BDE; } else nValorDevuelto=ComprobarPeso(sDatosSal.pszTaraCisPES); } else nValorDevuelto=PES_CISTERNA_NO_ENCONTRADA; } else nValorDevuelto=ERROR_BDE; //Cerramos la tabla de TCar if(CerrarTablaBDE(&TCis)) nValorDevuelto=ERROR_BDE; } } else nValorDevuelto=ERROR_BDE; //Cerramos la tabla de TCar if(CerrarTablaBDE(&TCar)) nValorDevuelto=ERROR_BDE; return nValorDevuelto; } //--------------------------------------------------------------------------- // void LiberarEstructura(void) // // Descripcion: // Libera la Estuctura de PEsoSalida // //--------------------------------------------------------------------------- void TPesoSalida::LiberarEstructura(void) { //Liberamos las Tolerancias LiberarMemoria(sDatosSal.pszToleranciaMaxSalPES); LiberarMemoria(sDatosSal.pszToleranciaMinSalPES); //Liberamos variables de la Cisterna LiberarMemoria(sDatosSal.pszTaraCisPES); LiberarMemoria(sDatosSal.pszCamionCisPES); LiberarMemoria(sDatosSal.pszCodigoCisPES); //Liberamos variables del Tractor LiberarMemoria(sDatosSal.pszCodigoTraPES); LiberarMemoria(sDatosSal.pszTaraTraPES); //Liberamos variable del Conductor LiberarMemoria(sDatosSal.pszCodigoConPES); //inicializamos la variable de Error sDatosSal.nResultadoPesoSalida=0; } //--------------------------------------------------------------------------- // int ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR) // // Entrada: // char *pszCodCisterna: Codigo de la cisterna // dbiTabla TCAR: cabecera de la tabla SIMICCAR // // Salida: // int nValorDevuelto: Devuele un Error si lo hubo. // // Descripcion: Comprueba el estado de la tabla SIMICCAR // //--------------------------------------------------------------------------- int TPesoSalida::ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR) { int nValorDevuelto; DBIResult Error; char *pszCodCisTemp,*pszEstadoTemp; bool bBorrado; //Inicializamos variables nValorDevuelto=PES_CISTERNA_SIN_ORDEN; Error=0; //Pedimos memoria para la variable temporal pszCodCisTemp=ReservarMemoria(&TCAR,"CARNTMCIS"); pszEstadoTemp=ReservarMemoria(&TCAR,"CARESTCAR"); //mientras no lleguemos al final de la tabla while(Error==0) { //Si la el codigo de la cisterna coincide vemos su estado LeerCampoNBDE(&TCAR,"CARNTMCIS",pszCodCisTemp,NULL); if(!strcmp(pszCodCisTemp,pszCodCisterna)) { //Miramos el estado LeerCampoNBDE(&TCAR,"CARESTCAR",pszEstadoTemp,NULL); if(!strstr(pszEstadoTemp,CARGADA)) nValorDevuelto=PES_ESTADO_NO_CARGADO; else nValorDevuelto=PES_CORRECTO; } //Vamos al siguiente registro Error=IrSiguienteRegBDE(&TCAR,&bBorrado); } //Liberamos memoria LiberarMemoria(pszCodCisTemp); LiberarMemoria(pszEstadoTemp); return nValorDevuelto; } //--------------------------------------------------------------------------- // int ComprobarPeso(char *pszTaraCis) // // Entrada: // char *pszTaraCis: Valor de la Tara de la cisterna // // Salida: // int nValorDevuelto: Devuele un Error si lo hubo. // // Descripcion: Comprueba el Peso de la Cisterna // //--------------------------------------------------------------------------- int TPesoSalida::ComprobarPeso(char *pszTaraCis) { int nValorDevuelto; int nPesoTotalCis,nTolMaxSal,nTolMinSal,nPesoBascula; //Inicializamos variable nPesoBascula=8000; nValorDevuelto=PES_CORRECTO; nTolMaxSal=atoi(sDatosSal.pszToleranciaMaxSalPES); nTolMinSal=atoi(sDatosSal.pszToleranciaMinSalPES); //Calculamos el Peso Total de la cisterna nPesoTotalCis=atoi(pszTaraCis); //Comprobamos el peso de la cisterna con el de la bascula teniendo encuenta la tolerancia if((nPesoBascula>(nPesoTotalCis+nTolMaxSal)) || (nPesoBascula<(nPesoTotalCis-nTolMinSal))) nValorDevuelto=PES_PESO_FUERA_DE_TOLERANCIA; return nValorDevuelto; } //--------------------------------------------------------------------------- // void ReservarMemoriaEstructura(hDBIDb hBaseDatos) // // Entrada: // hDBIDb hBaseDatos: Cabecera de la Base de datos // // Descripcion: Reserva Memoria para la Estructura de PesoSalida // //--------------------------------------------------------------------------- void TPesoSalida::ReservarMemoriaEstructura(hDBIDb hBaseDatos) { dbiTabla TPrm,TCis,TTra,TCon; //Reservamos memoria para la tolerancia AbrirTablaBDE(&TPrm,"SIMICPRM",NULL,false,hBaseDatos); sDatosSal.pszToleranciaMaxSalPES=ReservarMemoria(&TPrm,"PRMTSSPRM"); sDatosSal.pszToleranciaMinSalPES=ReservarMemoria(&TPrm,"PRMTISPRM"); CerrarTablaBDE(&TPrm); //Reservamos memoria para la tara de cisterna AbrirTablaBDE(&TCis,"SIMICCIS","CISNTMCIS",false,hBaseDatos); sDatosSal.pszTaraCisPES=ReservarMemoria(&TCis,"CISTARCIS"); sDatosSal.pszCamionCisPES=ReservarMemoria(&TCis,"CISCAMCIS"); sDatosSal.pszCodigoCisPES=ReservarMemoria(&TCis,"CISNTMCIS"); CerrarTablaBDE(&TCis); //Reservamos memoria para la tara del Tractor AbrirTablaBDE(&TTra,"SIMICTRA","TRAMATTRA",false,hBaseDatos); sDatosSal.pszTaraTraPES=ReservarMemoria(&TTra,"TRATARTRA"); sDatosSal.pszCodigoTraPES=ReservarMemoria(&TTra,"TRAMATTRA"); CerrarTablaBDE(&TTra); //Reservamos memoria para el Conductor AbrirTablaBDE(&TCon,"SIMICCON","CONNTMCON",false,hBaseDatos); sDatosSal.pszCodigoConPES=ReservarMemoria(&TCon,"CONNTMCON"); CerrarTablaBDE(&TCon); } //--------------------------------------------------------------------------- // class TAlbaran // { // protected: // private: // // public: // TAlbaran(void); // BYTE Albaran(hDBIDb hBaseDatos); // BYTE ComprobarCisterna(char *pszNTMCis,hDBIDb hBaseDatos); // BYTE ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR); // BYTE ComprobarPeso(char *pszTaraCis,char *pszTaraTra); // void CambiarEstado(hDBIDb hBaseDatos); // void ReservarMemoriaEstructura(hDBIDb hBaseDatos); // void LiberarEstructura(void); // }; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Constructor de la clase //--------------------------------------------------------------------------- TAlbaran::TAlbaran(void) { } //--------------------------------------------------------------------------- // void ReservarMemoriaEstructura(hDBIDb hBaseDatos) // // Entrada: // hDBIDb hBaseDatos: Cabecera de la Base de datos // // Descripcion: Reserva Memoria para la Estructura de Albaran // //--------------------------------------------------------------------------- void TAlbaran::ReservarMemoriaEstructura(hDBIDb hBaseDatos) { dbiTabla TCis,TTra,TCon,TSum,TCli,TDes,TCar,TTrp; BYTE i,j; //Pedimos memoria para la Cisterna AbrirTablaBDE(&TCis,"SIMICCIS","CISNTMCIS",false,hBaseDatos); for(i=0;iLeerEstructura(&sDatos); //Abrimos la tabla de Cisterna y actualizamos if(!AbrirTablaBDE(&TCisterna,"SIMICCIS","CISNTMCIS",false,hBaseDatos)) { //Busca cadena de entrada y Modificamos el campo if(!BuscarValorExactoBDE(&TCisterna,Cis,NULL)) ModificarCampoNBDE(&TCisterna,"CARESTCAR",pszEstado); } //Cerramos la tabla if(CerrarTablaBDE(&TCisterna)) ShowMessage("Hubo un error"); //Abrimos la tabla de Tractor si la cisterna no es un camion y actualizamos if( (*sDatos.pszCamionCis) != 'F' ) { if(!AbrirTablaBDE(&TTractor,"SIMICTRA","TRAMATTRA",false,hBaseDatos)) { //Busca cadena de entrada y Modificamos el campo if(!BuscarValorExactoBDE(&TTractor,Tra,NULL)) ModificarCampoNBDE(&TTractor,"TRAESTTRA",pszEstado); } //Cerramos la tabla if(CerrarTablaBDE(&TTractor)) ShowMessage("Hubo un error"); } //Abrimos la tabla de Conductor y actualizamos if(!AbrirTablaBDE(&TConductor,"SIMICCON","CONNTMCON",false,hBaseDatos)) { //Busca cadena de entrada y Modificamos el campo if(!BuscarValorExactoBDE(&TConductor,Con,NULL)) ModificarCampoNBDE(&TConductor,"CONESTCON",pszEstado); } //Cerramos la tabla if(CerrarTablaBDE(&TConductor)) ShowMessage("Hubo un error"); } //--------------------------------------------------------------------------- // void CapturarFechaGen(char *pszFechaActual); // // Entrada: // Fechaactual: Variable donde pondremos la fecha actual // // Descripcion: Captura la fecha actual con este formato YYYYMMDD // Donde Y=aņo M=Mes D=Dia. //--------------------------------------------------------------------------- void CapturarFechaGen(char *pszFechaActual) { char szFecha[TAM_FECHA]; char szHora[TAM_HORA]; CapturarFechaHora(szFecha,szHora); memcpy(pszFechaActual,szFecha+6,4); memcpy(pszFechaActual+4,szFecha+3,2); memcpy(pszFechaActual+6,szFecha,2); } //--------------------------------------------------------------------------- // class TTransfer // { // protected: // private: // User declarations // ELEDat sELEDat; // DRVDat sDRVDat; // TRAPERDat sTRAPERDat[NUM_MAX_PER]; // TRAOCADat sTRAOCADat; // public: // TTransfer(void); // int RellenarEstructuraTransfer(void); // void LeerEstructura(TRAPERDat *pTRAPERDat,TRAOCADat *pTRAOCADat); // void InicializarEstructuraTransfer(void); // }; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Constructor de la clase //--------------------------------------------------------------------------- TTransfer::TTransfer(void) { } //--------------------------------------------------------------------------- // int RellenarEstructuraTransfer(void) // // Devuelve: Codigo de Error // // Descripcion: Rellena la Estructura del fichero transfer // //--------------------------------------------------------------------------- int TTransfer::RellenarEstructuraTransfer(void) { FILE *pElemento,*pDriver; BYTE byNumPer,byi; bool bEncontrado; int nValorDevuelto; //Inicializamos las variables for(byi=0;byi