dlg_edit.cpp
来自「库存管理,有MSHflexgrid的使用和网络数据库存储」· C++ 代码 · 共 175 行
CPP
175 行
// Dlg_Edit.cpp : implementation file
//
#include "stdafx.h"
#include "query.h"
#include "Dlg_Edit.h"
#include "ADOconn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlg_Edit dialog
CDlg_Edit::CDlg_Edit(CWnd* pParent /*=NULL*/)
: CDialog(CDlg_Edit::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlg_Edit)
m_name = _T("");
m_code = _T("");
m_state = _T("");
m_hide = _T("");
//}}AFX_DATA_INIT
}
void CDlg_Edit::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlg_Edit)
DDX_Text(pDX, IDC_EDIT1, m_name);
DDX_Text(pDX, IDC_EDIT2, m_code);
DDX_Text(pDX, IDC_EDIT3, m_state);
DDX_Text(pDX, IDC_EDIT4, m_hide);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlg_Edit, CDialog)
//{{AFX_MSG_MAP(CDlg_Edit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlg_Edit message handlers
void CDlg_Edit::OnOK()
{
// TODO: Add extra validation here
ADOconn adocon;
adocon.OnInitADOconn();
//edit_str[0]=m_name;
//edit_str[1]=m_code;
//edit_str[2]=m_state;
UpdateData(true);
CString sqlstr;
sqlstr.Format("SELECT * FROM query_data WHERE name='%s' and code='%s' and state='%s'",m_name,m_code,m_state);
_RecordsetPtr rs;
rs=adocon.GetRecordSet((_bstr_t)(LPCTSTR)sqlstr);
int n=0;
while (!rs->adoEOF)
{
rs->MoveNext();
n++;
}
if (m_hide=="EDIT")
{//不能为MB_ICONERROR | MB_OK,否则会触发ID_OK。只有MB_ICONERROR的情况下,
//点完消息框后原框不消失
if (n>1)//rs->get_RecordCount()在微软的游标状态下不能用,需设置游标,或ORACLE db方可
{
MessageBox("存在相同记录,不能重复插入,请重新输入!","Error",MB_ICONERROR);
adocon.ExitConnect();
//CDlg_Edit::OnOK();
}
else if (n==1)
{
if ((edit_str[0]==m_name)&&(edit_str[1]==m_code)&&(edit_str[2]==m_state))//记录未作修改
{
adocon.ExitConnect();
CDialog::OnOK();
}
else{
MessageBox("存在相同记录,不能重复插入,请重新输入!","Error",MB_ICONERROR);
adocon.ExitConnect();
//CDlg_Edit::OnOK();
}
}
else{
if (m_name!="")
{
sqlstr.Format("UPDATE query_data SET name='%s',code='%s',state='%s' where name='%s' and code='%s' and state='%s'",m_name,m_code,m_state,edit_str[0],edit_str[1],edit_str[2]);
//+ name + "',"+ " code='" + code + "'," +"state='" +state+"'" + " where name='" + name + "'";
adocon.ExecuteSQL((_bstr_t)(LPCTSTR)sqlstr);
adocon.ExitConnect();
CDialog::OnOK();
}
else
{
MessageBox("用户名不能为空,请重新输入!","Error",MB_ICONERROR);
adocon.ExitConnect();
//CDlg_Edit::OnOK();
}
}
}
else if (m_hide=="ADD")
{
if (n==0)//无重复记录,可添加进去
{
if (m_name!=""){
sqlstr.Format("INSERT INTO query_data VALUES('%s','%s','%s')",m_name,m_code,m_state);
adocon.ExecuteSQL((_bstr_t)(LPCTSTR)sqlstr);
adocon.ExitConnect();
CDialog::OnOK();
}
else
{
/*
MessageBox() 是Win32API函数。VC6中是在winuser.h中定义。当然它是全局的,它是最基本的。
AfxMessageBox()是MFC库中的一个全局函数(Afxwin.h中定义)。
而AfxMessageBox()是通过调用MessageBox()来实现的。
只要你包含相应的头文件都可用,随你的便啦!
MessageBox是系统API函数,AfxMessageBox是MFC函数, 它封装了MessageBox,使用起来更灵活,
MessageBox一般为错误,AfxMessageBox 可以选择
*/
//AfxMessageBox无论点确认或取消均不影响原对话框,而MessageBox则影响
//if(AfxMessageBox("用户名不能为空,请重新输入!",MB_OKCANCEL,0)==IDOK)
MessageBox("用户名不能为空,请重新输入!","Error",MB_ICONERROR);
adocon.ExitConnect();
//CDlg_Edit::OnOK();
}
}
else{//有重复记录
MessageBox("存在相同记录,不能重复插入,请重新输入!","Error",MB_ICONERROR);
adocon.ExitConnect();
//CDlg_Edit::OnOK();
}
}
//adocon.ExecuteSQL((_bstr_t)(LPCTSTR)sqlstr);
//adocon.ExitConnect();
//CDialog::OnOK();
}
BOOL CDlg_Edit::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//改变标题,成功了,前头无需加pWnd->,直接写函数SetWindowText()就行了
//CWnd* pWnd = GetDlgItem(IDD_DIALOG_EDIT);
if (m_hide=="EDIT")
{
SetWindowText(_T("修改记录"));
} else
{
SetWindowText(_T("添加记录"));
}//
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?