Files
ayanova7/archive/ayanova 1.9.4 CE final release db schema 171/sp/ModelCatsDlg.cpp

338 lines
7.1 KiB
C++

// ModelCatsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "sp.h"
#include "ModelCatsDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CModelCatsDlg dialog
CModelCatsDlg::CModelCatsDlg(CWnd* pParent /*=NULL*/)
: CDialog(CModelCatsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CModelCatsDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bAddMode=false;
m_pApp = (CSpApp*)AfxGetApp();
/*rs=new GZRset("Error: Unit model categories dialog");
rs->SetConnect(m_pApp->strConnectString);
*/
//Initialize recordset pointer
rs=m_pApp->rsPool->GetRS("CModelCatsDlg");
m_pstrReturnValue=NULL;
}
CModelCatsDlg::~CModelCatsDlg()
{
m_pApp->rsPool->ReleaseRS(&rs->m_nID);
}
void CModelCatsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CModelCatsDlg)
DDX_Control(pDX, IDC_LBLCATEGORY, m_lblCategory);
DDX_Control(pDX, IDC_EDNOTES, m_edNotes);
DDX_Control(pDX, IDC_EDCATEGORY, m_edCategory);
DDX_Control(pDX, IDC_CBCATEGORIES, m_cbCategories);
DDX_Control(pDX, IDC_BTNDONE, m_btnDone);
DDX_Control(pDX, IDC_BTNDELETE, m_btnDelete);
DDX_Control(pDX, IDC_BTNADD, m_btnAdd);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CModelCatsDlg, CDialog)
//{{AFX_MSG_MAP(CModelCatsDlg)
ON_BN_CLICKED(IDC_BTNADD, OnBtnadd)
ON_BN_CLICKED(IDC_BTNDELETE, OnBtndelete)
ON_BN_CLICKED(IDC_BTNDONE, OnBtndone)
ON_CBN_CLOSEUP(IDC_CBCATEGORIES, OnCloseupCbcategories)
ON_EN_KILLFOCUS(IDC_EDCATEGORY, OnKillfocusEdcategory)
ON_EN_KILLFOCUS(IDC_EDNOTES, OnKillfocusEdnotes)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CModelCatsDlg message handlers
BOOL CModelCatsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
Security();
FillList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CModelCatsDlg::OnBtnadd()
{
CString strName,strNotes,q;
if(!m_bAddMode)
{
//go add mode
m_btnDone.ShowWindow(FALSE);
m_btnAdd.SetWindowText("SAVE");
m_lblCategory.ShowWindow(FALSE);
m_cbCategories.ShowWindow(FALSE);
m_btnDelete.SetWindowText("CANCEL");
m_edCategory.SetWindowText("");
m_edNotes.SetWindowText("");
m_bAddMode=true;
}
else
{
//save
m_edCategory.GetWindowText(strName);
m_edNotes.GetWindowText(strNotes);
if(strName.IsEmpty())
{
AfxMessageBox("A category name is required to save this record");
return;
}
q.Format("INSERT INTO unitmodelcats ( name, notes )"
"SELECT \"%s\" , \"%s\";",strName,strNotes);
if(!rs->Ex(q))
return;
rs->Close();
//go normal mode
m_btnDone.ShowWindow(TRUE);
m_btnAdd.SetWindowText("Add");
m_lblCategory.ShowWindow(TRUE);
m_cbCategories.ShowWindow(TRUE);
m_btnDelete.SetWindowText("Delete");
m_strSelectedCategory="";
m_bAddMode=false;
FillList();
}
}
void CModelCatsDlg::OnBtndelete()
{
CString q;
if(m_bAddMode)
{
m_btnDone.ShowWindow(TRUE);
m_btnAdd.SetWindowText("Add");
m_lblCategory.ShowWindow(TRUE);
m_cbCategories.ShowWindow(TRUE);
m_btnDelete.SetWindowText("Delete");
m_strSelectedCategory="";
m_bAddMode=false;
FillList();
return;
}
//DELETE
//see if it can be deleted first
q.Format("SELECT unitmodels.id "
"FROM unitmodels WHERE (((unitmodels.category)=%s));",m_strSelectedCategory);
rs->Query(q);
if(!rs->IsEmpty())
{
AfxMessageBox("Data integrity protection!\r\n"
"You can't delete this record at this time because\r\n"
"it's attached to one or more Unit models.");
return;
}
if(AfxMessageBox("Permanently delete this category.\r\nAre you sure?",MB_YESNO)==IDYES)
{
//run a delete query on it
q.Format("DELETE unitmodelcats.*, unitmodelcats.id "
"FROM unitmodelcats WHERE (((unitmodelcats.id)=%s));",m_strSelectedCategory);
rs->Ex(q);
m_strSelectedCategory.Empty();
FillList();
}
}
void CModelCatsDlg::OnBtndone()
{
if(m_pstrReturnValue!=NULL)
*m_pstrReturnValue=m_strSelectedCategory;
CDialog::OnOK();
}
void CModelCatsDlg::OnCloseupCbcategories()
{
m_strSelectedCategory=m_cbCategories.GetCurrentRowID();
FillFields();
}
void CModelCatsDlg::OnKillfocusEdcategory()
{
SaveField(&m_edCategory,"name",false);
if(!m_bAddMode)
FillList();
}
void CModelCatsDlg::OnKillfocusEdnotes()
{
SaveField(&m_edNotes,"notes",false);
}
void CModelCatsDlg::SetReturnString(CString *strReturn)
{
m_pstrReturnValue=strReturn;
}
//****************************************
//FILL LIST BOX
//****************************************
void CModelCatsDlg::FillList()
{
CString strData;
CString strIndex;
long lData;
m_cbCategories.Clear();
rs->Query("SELECT unitmodelcats.* FROM unitmodelcats;");
if(rs->IsEmpty())
return;
rs->MoveFirst();
do
{
rs->FetchField("name",&strData);
rs->FetchField("id",&lData);
strIndex.Format("%u",lData);
m_cbCategories.AddRow(strData,strIndex);
}while(rs->MoveForward());
//pretend user has selected so that other fields get filled in
if(m_strSelectedCategory.IsEmpty()) //first time in
{
m_cbCategories.SetCurSel(0);
m_strSelectedCategory=m_cbCategories.GetCurrentRowID();
}
else//something valid was selected before so stick with it
m_cbCategories.Select(m_strSelectedCategory);
FillFields();
}
//Fillout contents of fields
void CModelCatsDlg::FillFields()
{
CString q,strData;
q.Format("SELECT unitmodelcats.* "
"FROM unitmodelcats "
"WHERE (((unitmodelcats.id)=%s));",m_cbCategories.GetCurrentRowID());
rs->Query(q);
if(rs->IsEmpty())
return;
rs->FetchField("name",&strData);
m_edCategory.SetWindowText(strData);
rs->FetchField("notes",&strData);
m_edNotes.SetWindowText(strData);
}
//************************************************************
//SAVE EDIT CONTROL FIELD
//************************************************************
bool CModelCatsDlg::SaveField(CEdit *edControl,CString fldname,bool AllowEmpty)
{
if(m_bAddMode) return true;//dont attempt to update
CString str;
//do nothing if not changed
if(edControl->GetModify()!=TRUE) return true;
edControl->GetWindowText(str);
//dont save empty fields if not allowed to
if(!AllowEmpty)
{
if(str.IsEmpty())
{
edControl->Undo();
return false;
}
}
rs->UpdateField(fldname,&str);
rs->SaveRecord();
return true;
}
void CModelCatsDlg::Security()
{
int x=m_pApp->Allowed(RMODELS,true);
if(x==0)//no access allowed
{
m_pApp->SecurityWarning();
CDialog::OnCancel();
}
if(x==2)//read only
{
m_btnAdd.ShowWindow(FALSE);
m_btnDelete.ShowWindow(FALSE);
//m_cbCategories.EnableWindow(FALSE);
m_edCategory.SetReadOnly(TRUE);
m_edNotes.SetReadOnly(TRUE);
m_lblCategory.EnableWindow(FALSE);
}
}