Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con C++

Estas en el tema de Problemas con C++ en el foro de Programación General en Foros del Web. Hola, yo programo en Visual C++ 7 (.NET). Mi problema es el siguiente: Yo siempre que he necesitado crear una aplicación apoyada sobre una base ...
  #1 (permalink)  
Antiguo 16/09/2003, 07:49
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 8
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta Problemas con C++

Hola, yo programo en Visual C++ 7 (.NET).

Mi problema es el siguiente: Yo siempre que he necesitado crear una aplicación apoyada sobre una base de datos, ésta era local, pero ahora necesito que el programa esté en un ordenador, estando la base de datos en un servidor. Yo hago lo mismo, agrego una clase "Consumidor ODBC MFC" y pongo como destino \\\\www.servidor.com\\carpeta\\basedatos.mdb. Vale, todo correcto.

El problema es que al hacer la conexión me da un error de ASSERT y no se como solucionarlo, si hay que llamar a una función especial (por estar en el servidor) antes que llamar a Open, por favor que alguien me ayude. El código es el siguiente:

DB.H

Código:
// Datos3.h: declaración de CDatos3

#pragma once

// código generado el lunes, 15 de septiembre de 2003, 21:33

class CDatos3 : public CRecordset
{
public:
	CDatos3(CDatabase* pDatabase = NULL);
	DECLARE_DYNAMIC(CDatos3)

// Datos de campo o parámetro

// Los tipos de cadena siguientes (si los hay) reflejan el tipo de datos real del
// campo de base de datos: CStringA para tipos de datos ANSI y CStringW para tipos de datos
// Unicode. Esto es para impedir que el controlador ODBC lleve a cabo conversiones
// potencialmente innecesarias. Si lo desea, puede modificar estos miembros a
// tipos CString y el controlador ODBC realizará las conversiones necesarias.
// (Nota: la versión de controlador ODBC que debe utilizar es la 3.5 o posterior
// para que admita tanto estas conversiones como las Unicode).

	long	m_ID_USR;
	CStringW	m_Nombre;
	CStringW	m_Apellidos;
	CStringW	m_Nick;
	CStringW	m_Password;
	CStringW	m_E_Mail;
	CStringW	m_Pregunta;
	CStringW	m_Respuesta;
	CStringW	m_IP;
	CStringW	m_Fecha;
	CStringW	m_Hora;
	CStringW	m_Intercambio;
	// unsupported	m_Codigo;
	long	m_Aceptado;

// Reemplazos
	// El asistente generó reemplazos de funciones virtuales
	public:
	virtual CString GetDefaultConnect();	// Cadena de conexión predeterminada

	virtual CString GetDefaultSQL(); 	// código SQL predeterminado del conjunto de registros
	virtual void DoFieldExchange(CFieldExchange* pFX);	// Compatibilidad con RFX

// Implementación
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

};
DB.CPP

Código:
#include "stdafx.h"
#include "Datos3.h"
IMPLEMENT_DYNAMIC(CDatos3, CRecordset)

CDatos3::CDatos3(CDatabase* pdb)
	: CRecordset(pdb)
{
	m_ID_USR = 0;
	m_Nombre = L"";
	m_Apellidos = L"";
	m_Nick = L"";
	m_Password = L"";
	m_E_Mail = L"";
	m_Pregunta = L"";
	m_Respuesta = L"";
	m_IP = L"";
	m_Fecha = L"";
	m_Hora = L"";
	m_Intercambio = L"";
	m_Aceptado = 0;
	m_nFields = 14;
	m_nDefaultType = dynaset;
}
// #error Problema de seguridad: la cadena de conexión puede contener una contraseña
// La cadena de conexión siguiente puede contener contraseñas de texto sin formato/u
// otro tipo de información reservada. Quite #error después de revisar
// la cadena de conexión relacionada con los problemas de seguridad. Puede que desee
// almacenar la contraseña en otro formulario o utilizar una autenticación de usuario diferente.
CString CDatos3::GetDefaultConnect()
{
	return _T("DSN=MS Access Database;DBQ=\\\\http://www.destino.com\\data\\datos....erId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=500;UID=admin;");
}

CString CDatos3::GetDefaultSQL()
{
	return _T("[Datos]");
}

void CDatos3::DoFieldExchange(CFieldExchange* pFX)
{
	pFX->SetFieldType(CFieldExchange::outputColumn);
// Las macros como RFX_Text() y RFX_Int() dependen del
// tipo de variable miembro, no del tipo de campo de base de datos.
// ODBC intentará convertir automáticamente el valor de columna en el tipo solicitado
	RFX_Long(pFX, _T("[ID_USR]"), m_ID_USR);
	RFX_Text(pFX, _T("[Nombre]"), m_Nombre);
	RFX_Text(pFX, _T("[Apellidos]"), m_Apellidos);
	RFX_Text(pFX, _T("[Nick]"), m_Nick);
	RFX_Text(pFX, _T("[Password]"), m_Password);
	RFX_Text(pFX, _T("[E_Mail]"), m_E_Mail);
	RFX_Text(pFX, _T("[Pregunta]"), m_Pregunta);
	RFX_Text(pFX, _T("[Respuesta]"), m_Respuesta);
	RFX_Text(pFX, _T("[IP]"), m_IP);
	RFX_Text(pFX, _T("[Fecha]"), m_Fecha);
	RFX_Text(pFX, _T("[Hora]"), m_Hora);
	RFX_Text(pFX, _T("[Intercambio]"), m_Intercambio);
	RFX_Long(pFX, _T("[Aceptado]"), m_Aceptado);

}
/////////////////////////////////////////////////////////////////////////////
// CDatos3 diagnostics

#ifdef _DEBUG
void CDatos3::AssertValid() const
{
	CRecordset::AssertValid();
}

void CDatos3::Dump(CDumpContext& dc) const
{
	CRecordset::Dump(dc);
}
#endif //_DEBUG
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:08.