207 lines
4.7 KiB
C++
207 lines
4.7 KiB
C++
// FindClientDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "sp.h"
|
|
#include "FindClientDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFindClientDlg dialog
|
|
|
|
|
|
CFindClientDlg::CFindClientDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CFindClientDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CFindClientDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_pApp= (CSpApp*)AfxGetApp();
|
|
/*
|
|
rs=new GZRset("Error: Find client dialog");
|
|
rs->SetConnect(m_pApp->strConnectString);
|
|
*/
|
|
//Initialize recordset pointer
|
|
|
|
rs=m_pApp->rsPool->GetRS("CFindClientDlg");
|
|
rs->Query("SELECT * FROM users WHERE users.id=0");
|
|
m_pstrReturnValue=NULL;
|
|
}
|
|
|
|
|
|
CFindClientDlg::~CFindClientDlg()
|
|
{
|
|
m_pApp->rsPool->ReleaseRS(&rs->m_nID);
|
|
}
|
|
|
|
void CFindClientDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CFindClientDlg)
|
|
DDX_Control(pDX, IDC_EDACCT, m_edAccount);
|
|
DDX_Control(pDX, IDC_LBLRESULTS, m_lblResults);
|
|
DDX_Control(pDX, IDC_EDSN, m_edSN);
|
|
DDX_Control(pDX, IDC_EDPHONE, m_edPhone);
|
|
DDX_Control(pDX, IDC_EDEMAIL, m_edEmail);
|
|
DDX_Control(pDX, IDC_BTNSEARCH, m_btnSearch);
|
|
DDX_Control(pDX, IDC_BTNDONE, m_btnDone);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CFindClientDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CFindClientDlg)
|
|
ON_BN_CLICKED(IDC_BTNDONE, OnBtndone)
|
|
ON_BN_CLICKED(IDC_BTNSEARCH, OnBtnsearch)
|
|
ON_BN_CLICKED(IDC_BTNCLEAR, OnBtnclear)
|
|
ON_BN_CLICKED(IDC_BTNCANCEL, OnBtncancel)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFindClientDlg message handlers
|
|
|
|
void CFindClientDlg::OnBtndone()
|
|
{
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
//****************************************
|
|
void CFindClientDlg::OnBtnsearch()
|
|
{
|
|
CString strData,q;
|
|
long lData;
|
|
int x=0;
|
|
*m_pstrReturnValue="0";
|
|
m_lblResults.SetWindowText("");
|
|
|
|
m_edSN.GetWindowText(strData);
|
|
|
|
if(strData.IsEmpty())
|
|
{
|
|
m_edPhone.GetWindowText(strData);
|
|
x=1;
|
|
}
|
|
|
|
|
|
if(strData.IsEmpty())
|
|
{
|
|
m_edEmail.GetWindowText(strData);
|
|
x=2;
|
|
}
|
|
|
|
|
|
if(strData.IsEmpty())
|
|
{
|
|
m_edAccount.GetWindowText(strData);
|
|
x=3;
|
|
}
|
|
|
|
if(strData.IsEmpty())
|
|
return;//nothing entered
|
|
|
|
//prepare the query based on what field was filled out
|
|
switch (x)
|
|
{
|
|
case 0://SERIAL NUMBER
|
|
q.Format("SELECT clients.id, IIf(IsNull([company]),[last] & \", \" & [first],[company]) AS name "
|
|
"FROM units INNER JOIN clients ON units.client = clients.id "
|
|
"WHERE (((units.sn)=\"%s\"));",strData);
|
|
break;
|
|
|
|
case 1://PHONE NUMBER
|
|
q.Format("SELECT clients.id, IIf(IsNull([company]),[last] & \", \" & [first],[company]) AS name "
|
|
"FROM clients WHERE (((clients.bizphone)=\"%s\"));",strData);
|
|
break;
|
|
|
|
case 2://EMAIL
|
|
q.Format("SELECT clients.id, IIf(IsNull([company]),[last] & \", \" & [first],[company]) AS name "
|
|
"FROM clients WHERE (((clients.email)=\"%s\"));",strData);
|
|
break;
|
|
|
|
case 3://Client account number
|
|
q.Format("SELECT clients.id, IIf(IsNull([company]),[last] & \", \" & [first],[company]) AS name "
|
|
"FROM clients WHERE (((clients.acctnumber)=\"%s\"));",strData);
|
|
break;
|
|
}
|
|
|
|
//FUTURE: Modify this to allow for more than one match
|
|
//FILL a list box or something
|
|
//AfxMessageBox(q);
|
|
rs->Query(q);
|
|
if(rs->IsEmpty())
|
|
{
|
|
m_lblResults.SetFontBold(FALSE);
|
|
m_lblResults.SetTextColor(RGB(255,0,0));
|
|
m_lblResults.SetText("No match found");
|
|
}
|
|
else
|
|
{
|
|
m_lblResults.SetTextColor(RGB(0,0,255));
|
|
|
|
m_lblResults.SetFontBold(TRUE);
|
|
rs->FetchField("name",&strData);
|
|
strData="Found---> " + strData;
|
|
m_lblResults.SetText(strData);
|
|
|
|
//get the ID value
|
|
rs->FetchField("id",&lData);
|
|
m_pstrReturnValue->Format("%u",lData);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//****************************************
|
|
BOOL CFindClientDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
ASSERT(m_pstrReturnValue!=NULL);
|
|
//Hyperlink find label
|
|
m_lblResults.SetFontSize(12);
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
//*****************************************
|
|
void CFindClientDlg::SetReturn(CString *strReturnClientID)
|
|
{
|
|
m_pstrReturnValue=strReturnClientID;
|
|
|
|
}
|
|
|
|
|
|
//*****************************
|
|
void CFindClientDlg::OnBtnclear()
|
|
{
|
|
m_edEmail.SetWindowText("");
|
|
m_edPhone.SetWindowText("");
|
|
m_edSN.SetWindowText("");
|
|
m_lblResults.SetWindowText("");
|
|
}
|
|
|
|
|
|
//*******************************
|
|
void CFindClientDlg::OnBtncancel()
|
|
{
|
|
*m_pstrReturnValue="0";
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
|
|
//Do nothing when user presses enter key
|
|
void CFindClientDlg::OnOK()
|
|
{
|
|
|
|
}
|