// ProyectoDoc.cpp : implementation of the CProyectoDoc class
//

#include "stdafx.h"
#include "Proyecto.h"
#include "ProyectoDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CProyectoDoc

IMPLEMENT_DYNCREATE(CProyectoDoc, CDocument)

BEGIN_MESSAGE_MAP(CProyectoDoc, CDocument)
	//{{AFX_MSG_MAP(CProyectoDoc)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CProyectoDoc construction/destruction

CProyectoDoc::CProyectoDoc()
{
	// TODO: add one-time construction code here
	m_db = new ODatabase;

	// Connect the object to a read-only data source where
	// the ODBC connection dialog box will always remain hidden
    try
    {
		// Inicializo la configuración del programa
		opt = new COpciones;
		opt->Inicializar();

		// Inicialización de la conexión a la base de datos Oracle
		OStartup();
		m_db->Open("",opt->usuario, opt->contrasena);
	}
    catch( CDBException* e )
    {
        AfxMessageBox( e->m_strError,   
                      MB_ICONEXCLAMATION );
        // Delete the incomplete recordset object
        delete m_db;
        m_db = NULL;
        e->Delete();
		delete opt;
		opt = NULL;
    }
}

CProyectoDoc::~CProyectoDoc()
{
	// -- 4ª Consulta -- //
	// Finalizo las consultas (sólo una vez en el programa cuando se vaya a cerrar)
	m_db->ExecuteSQL("BEGIN FSQL_PKG.FSQL_FIN; END;");
	m_db->Close();
	delete m_db;
	m_db = NULL;
	delete opt;
	opt = NULL;
}

BOOL CProyectoDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)
	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CProyectoDoc serialization

void CProyectoDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CProyectoDoc diagnostics

#ifdef _DEBUG
void CProyectoDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CProyectoDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CProyectoDoc commands

int CProyectoDoc::Maximo(int a, int b)
{
	int tmp;

	if (a >= b)
		tmp = a;
	else
		tmp = b;

	return tmp;
}