Urgente CDatabase !!!!!

10/09/2003 - 19:52 por bcc | Informe spam
Buen dia.

Como podria hacer para pasar un parametro de tipo CDatabase si se puede

Por Ejemplo:

CDatabase Conexion; //Declaro mi variable global

BOOL AbreConexion(char NomDNS[20],char Usuario[10],char
Password[10],CDatabase Conn) //Funcion que abre la conexion
CString sDsn;
char LineaConexion[100];
strcpy(LineaConexion,"ODBC;DSN="); strcat(LineaConexion,NomDNS);
strcat(LineaConexion,";UID="); strcat(LineaConexion,Usuario);
strcat(LineaConexion,";PWD=");strcat(LineaConexion,Password);
sDsn.Format(LineaConexion);
TRY
{
Conn.Open(NULL,false,false,sDsn);
return (TRUE);
}
CATCH(CDBException, e)
{
AfxMessageBox("Database error: "+e->m_strError);
return (FALSE);
}
END_CATCH;
}

El problema que tengo es que cuando llamo a mi funcion asi:

AbreConexion("NomDns","usuario","password",Conexion)

Me da error al compilar:
cannot convert parameter 4 from
'class CDatabase' to 'class CDatabase'

Cual sera mi error ???

En espera de su respuesta y muchas gracias por la ayudadita.
 

Leer las respuestas

#1 christian
10/09/2003 - 20:22 | Informe spam
Buen dia.

Como podria hacer para pasar un parametro de tipo


CDatabase si se puede

Por Ejemplo:

CDatabase Conexion; //Declaro mi variable global

BOOL AbreConexion(char NomDNS[20],char Usuario[10],char
Password[10],CDatabase Conn) //Funcion que abre la


conexion
CString sDsn;
char LineaConexion[100];
strcpy(LineaConexion,"ODBC;DSN="); strcat


(LineaConexion,NomDNS);
strcat(LineaConexion,";UID="); strcat


(LineaConexion,Usuario);
strcat(LineaConexion,";PWD=");strcat


(LineaConexion,Password);
sDsn.Format(LineaConexion);
TRY
{
Conn.Open(NULL,false,false,sDsn);
return (TRUE);
}
CATCH(CDBException, e)
{
AfxMessageBox("Database error: "+e->m_strError);
return (FALSE);
}
END_CATCH;
}

El problema que tengo es que cuando llamo a mi funcion


asi:

AbreConexion("NomDns","usuario","password",Conexion)

Me da error al compilar:
cannot convert


parameter 4 from
'class CDatabase' to 'class CDatabase'

Cual sera mi error ???

En espera de su respuesta y muchas gracias por la


ayudadita.







tu problema esta basado en el tipo de parametro

1: PASANDO COMO PUNTERO A CDATABASE
esta seria la definicion correcta no 1:
pasando Conn como un apuntador lo que implica ciertos
cambios en tu codigo asi:

BOOL AbreConexion(char* NomDNS,char* Usuario,char*
Password,CDatabase* Conn)
{
CString sDsn;
char LineaConexion[100];

strcpy(LineaConexion,"ODBC;DSN=");
strcat(LineaConexion,NomDNS);
strcat(LineaConexion,";UID=");
strcat(LineaConexion,Usuario);
strcat(LineaConexion,";PWD=");
strcatLineaConexion,Password);
sDsn.Format(LineaConexion);

TRY
{

/*
nota aqui q en vez de Conn.Open...
uso el operador de indireccion ->
*/
Conn->Open(NULL,false,false,sDsn);
return (TRUE);
}
CATCH(CDBException, e)
{
AfxMessageBox("Database error: "+e->m_strError);
return (FALSE);
}
END_CATCH;
}


2: PASANDO COMO referencia A CDatabase
BOOL AbreConexion(char* NomDNS,char* Usuario,char*
Password,CDatabase& Conn)
{
CString sDsn;
char LineaConexion[100];

strcpy(LineaConexion,"ODBC;DSN=");
strcat(LineaConexion,NomDNS);
strcat(LineaConexion,";UID=");
strcat(LineaConexion,Usuario);
strcat(LineaConexion,";PWD=");
strcatLineaConexion,Password);
sDsn.Format(LineaConexion);

TRY
{

/*
nota aqui q en Conn.Open se puede usar
porque pasamos a Conn como referencia
CDatabase& Conn (puntero avanzado)
*/
Conn.Open(NULL,false,false,sDsn);
return (TRUE);
}
CATCH(CDBException, e)
{
AfxMessageBox("Database error: "+e->m_strError);
return (FALSE);
}
END_CATCH;
}

Preguntas similares