📄 identitycardquerydlg.cpp
字号:
if (strID.IsEmpty())
return true;
else if (ipos != -1 && strID.GetLength()==1)
return true;
else
return false;
}
void CIdentityCardQueryDlg::InsertOneRow(int row, CString strID, CString strName,CString strSex,CString strAge,CString strPace)
{
if (row < 0 || row > m_DataListCtrl.GetItemCount())
return;
int ipos = -1;
LVITEM iItem;
iItem.mask = LVIF_TEXT;
iItem.iItem = row;
iItem.iSubItem=0;
iItem.pszText = strID.GetBuffer(strID.GetLength());
ipos = m_DataListCtrl.InsertItem(&iItem);//返回表项插入后的索引号
iItem.mask = LVIF_TEXT;
iItem.iItem = ipos;
iItem.iSubItem=1;
iItem.pszText = strName.GetBuffer(strName.GetLength());
m_DataListCtrl.SetItem(&iItem);
iItem.mask = LVIF_TEXT;
iItem.iItem = ipos;
iItem.iSubItem=2;
iItem.pszText = strSex.GetBuffer(strSex.GetLength());
m_DataListCtrl.SetItem(&iItem);
iItem.mask = LVIF_TEXT;
iItem.iItem = ipos;
iItem.iSubItem=3;
iItem.pszText = strAge.GetBuffer(strAge.GetLength());
m_DataListCtrl.SetItem(&iItem);
iItem.mask = LVIF_TEXT;
iItem.iItem = ipos;
iItem.iSubItem=4;
iItem.pszText = strPace.GetBuffer(strPace.GetLength());
m_DataListCtrl.SetItem(&iItem);
}
void CIdentityCardQueryDlg::OnBtDelete()
{
if (!m_bConnect)
return;
UpdateData();
if (m_comDelType.GetCurSel() == 0)//delete by id
{
m_strDelInfo.TrimLeft();m_strDelInfo.TrimRight();
if (!CheckID(m_strDelInfo,true))
{
MessageBox(_T("ID 输入有误"));
return;
}
else
{
if (MessageBox(_T("确定删除吗?"),_T("警告"),MB_OKCANCEL) == IDCANCEL)
return;
}
DeleteOneRecordByID(m_strDelInfo);
UpdateListDataEx(m_strDelInfo,0);
}
else if (m_comDelType.GetCurSel() == 1)//delete by name
{
m_strDelInfo.TrimLeft();m_strDelInfo.TrimRight();
if (m_strDelInfo.IsEmpty())
{
MessageBox(_T("名称输入有误"));
return;
}
else
{
if (MessageBox(_T("确定删除吗?"),_T("警告"),MB_OKCANCEL) == IDCANCEL)
return;
}
DeleteOneRecordByName(m_strDelInfo);
UpdateListDataEx(m_strDelInfo,1);
}
else if (m_comDelType.GetCurSel() == 2)//delete by checked
{
bool bdelete = false;
CString strID = _T("");
for (int i=m_DataListCtrl.GetItemCount()-1; i>=0; i--)
{
if (m_DataListCtrl.GetCheck(i))
{
strID = m_DataListCtrl.GetItemText(i,0);
m_DataListCtrl.DeleteItem(i);
DeleteOneRecordByID(strID);
bdelete = true;
}
}
if (!bdelete)
MessageBox(_T("请选中要删除的记录"),_T("提示"));
}
else//delete all
{
if (MessageBox(_T("确定全部删除吗?"),_T("警告"),MB_OKCANCEL) == IDCANCEL)
return;
DeleteAllRecord();
UpdateListDataEx(m_strDelInfo,-1);
}
return;
}
//iSubItem == -1 删除所有
void CIdentityCardQueryDlg::UpdateListDataEx(CString strID,int iSubItem)
{
if(iSubItem == -1)
{
m_DataListCtrl.DeleteAllItems();
return;
}
for (int i=m_DataListCtrl.GetItemCount()-1; i>=0; i--)
{
if (m_DataListCtrl.GetItemText(i,iSubItem) == strID)
{
m_DataListCtrl.DeleteItem(i);
// break;
}
}
}
void CIdentityCardQueryDlg::AddOneRecord(CString tablename,CString strID, CString strName,CString strSex,CString strAge,CString strPace)
{
m_pRs.Open(tablename, CADORecordset::openTable);
m_pRs.AddNew();
m_pRs.SetFieldValue("ID", strID);
m_pRs.SetFieldValue("姓名", strName);
m_pRs.SetFieldValue("性别", strSex);
m_pRs.SetFieldValue("年龄", strAge);
m_pRs.SetFieldValue("籍贯", strPace);
m_pRs.Update();
m_pRs.Close();
}
//删除按id,保证唯一性
void CIdentityCardQueryDlg::DeleteOneRecordByID(CString strID)
{
CString strQry = _T("");
CString onetable = _T("");
for (int i=0; i<m_accessTableArray.GetSize(); i++)
{
onetable = m_accessTableArray[i];
strQry.Format(_T("select * FROM %s WHERE(ID = '%s')"),onetable,strID);
BOOL flag = m_pRs.Open((LPCTSTR)strQry);
if(!flag)
{
// MessageBox(_T("数据库出错!"));
continue;
// return ;
}
int count = m_pRs.GetRecordCount();
if (count <=0)
{
m_pRs.Close();
continue;
}
m_pRs.Delete();
m_pRs.Update();
m_pRs.Close();
break;
}
}
void CIdentityCardQueryDlg::DeleteOneRecordByName(CString strName)
{
CString strQry = _T("");
CString onetable = _T("");
for (int i=0; i<m_accessTableArray.GetSize(); i++)
{
onetable = m_accessTableArray[i];
strQry.Format(_T("select * FROM %s WHERE(姓名 = '%s')"),onetable,strName);
BOOL flag = m_pRs.Open((LPCTSTR)strQry);
if(!flag)
{
// MessageBox(_T("数据库出错!"));
continue;
// return ;
}
int count = m_pRs.GetRecordCount();
if (count <=0)
{
m_pRs.Close();
continue;
}
if(!m_pRs.IsBOF())
{
m_pRs.MoveFirst();
}
while (!m_pRs.IsEof())
{
m_pRs.Delete();
m_pRs.MoveNext();
}
m_pRs.Update();
m_pRs.Close();
// break;
}
}
void CIdentityCardQueryDlg::DeleteAllRecord()
{
CString strQry = _T("");
CString onetable = _T("");
for (int i=0; i<m_accessTableArray.GetSize(); i++)
{
onetable = m_accessTableArray[i];
strQry.Format(_T("select * FROM %s "),onetable);
BOOL flag = m_pRs.Open((LPCTSTR)strQry);
if(!flag)
{
// MessageBox(_T("数据库出错!"));
continue;
// return ;
}
int count = m_pRs.GetRecordCount();
if (count <=0)
{
m_pRs.Close();
continue;
}
if(!m_pRs.IsBOF())
{
m_pRs.MoveFirst();
}
while (!m_pRs.IsEof())
{
m_pRs.Delete();
m_pRs.MoveNext();
}
m_pRs.Update();
m_pRs.Close();
}
}
void CIdentityCardQueryDlg::OnBtAdd()
{
if (!m_bConnect)
return;
UpdateData();
if (!CheckID(m_strID,true))
{
MessageBox(_T("身份证输入有误"));
return;
}
if (m_nAge<1 || m_nAge>150)
{
MessageBox(_T("年龄应在1-150之间"));
return;
}
if (m_strName.IsEmpty() || m_strName.GetLength()>=49)
{
MessageBox(_T("姓名输入有误"));
return;
}
if (m_strPace.IsEmpty() || m_strPace.GetLength()>=254)
{
MessageBox(_T("地址输入有误"));
return;
}
CString strAge = _T(""),strSex = _T("");
strAge.Format(_T("%d"),m_nAge);
if (m_ComSexType.GetCurSel()==0)//boy
strSex = _T("男");
else
strSex = _T("女");
//如果数据库中已经有该ID,则给出提示,是否覆盖已有数据
CString tablename = _T("");
// m_comTableName.GetLBText(m_comTableName.GetCurSel(),tablename);
GetDlgItem(IDC_TABLENAME_ADD)->GetWindowText(tablename);
// tablename.TrimLeft();tablename.TrimRight();
// if (tablename.IsEmpty())
if (!CheckTableName(tablename))
{
MessageBox(_T("表名有误"));
return;
}
CheckTableByName(tablename);
int flag = QueryandChangeRecordByID(m_accessTableArray,m_strID,m_strName,strSex,strAge,m_strPace);
if ( flag == 1)
{
//若修改了数据,注意此时列表是否有该ID,有则更新
for (int i=0; i<m_DataListCtrl.GetItemCount(); i++)
{
if (m_DataListCtrl.GetItemText(i,0) == m_strID)
{
m_DataListCtrl.SetItemText(i,1,m_strName);
m_DataListCtrl.SetItemText(i,2,strSex);
m_DataListCtrl.SetItemText(i,3,strAge);
m_DataListCtrl.SetItemText(i,4,m_strPace);
break;
}
}
return;
}
else if (flag == -1)
AddOneRecord(tablename,m_strID,m_strName,strSex,strAge,m_strPace);
}
bool CIdentityCardQueryDlg::CheckTableName(CString tablename)
{
tablename.TrimLeft();tablename.TrimRight();
if (tablename.IsEmpty()) return false;
tablename.MakeUpper();
for (int i='A'; i<='Z'; i++)
{
tablename.Remove((TCHAR)i);
}
for ( i='0'; i<='9'; i++)
{
tablename.Remove((TCHAR)i);
}
if (tablename.IsEmpty()) return true;
else return false;
}
//搜索所有的表
// 返回值:0---重复不修改 1---重复且修改 -1----不重复
int CIdentityCardQueryDlg::QueryandChangeRecordByID(CStringArray& tablename,CString strID,CString strName,
CString strSex,CString strAge,CString strPace)
{
int flag = -1;
CString strQry = _T("");
CString onetable = _T("");
for (int i=0; i<tablename.GetSize(); i++)
{
onetable = tablename[i];
strQry.Format(_T("select * FROM %s WHERE(ID = '%s')"),onetable,strID);
if(!m_pRs.Open((LPCTSTR)strQry))
{
// return -1;
flag = -1;
continue;
}
else if (m_pRs.GetRecordCount() <= 0)
{
// return -1;
flag = -1;
continue;
}
else
{
if ( MessageBox(_T("该ID已存在,是否覆盖原有数据?"),_T("提示"),MB_OKCANCEL) != IDOK)
{
flag = 0;
return flag;
// return 0;//不覆盖也返回真
}
m_pRs.Edit();
m_pRs.SetFieldValue("ID", strID);
m_pRs.SetFieldValue("姓名", m_strName);
m_pRs.SetFieldValue("性别", strSex);
m_pRs.SetFieldValue("年龄", strAge);
m_pRs.SetFieldValue("籍贯", strPace);
m_pRs.Update();
m_pRs.Close();
flag = 1;
return flag;
}
}
return flag;
}
void CIdentityCardQueryDlg::OnSelchangetype()
{
// TODO: Add your control notification handler code here
if (m_comType.GetCurSel() == 2)
{
GetDlgItem(IDC_EDIT_DATA)->EnableWindow(FALSE);
}
else
GetDlgItem(IDC_EDIT_DATA)->EnableWindow(TRUE);
}
CString CIdentityCardQueryDlg::GetExePath()
{
TCHAR chFileName[256];
int len = ::GetModuleFileName(NULL, chFileName, 255);
if (len == 0)
{
ASSERT(0);
return _T("");
}
else
{
CString fileDir = _T("");
chFileName[len] = _T('\0');
fileDir = chFileName;
int pos = fileDir.ReverseFind('\\');
fileDir = fileDir.Left(pos+1);
return fileDir;
}
}
//添加表 TEXT字段属性,可根据属性限制字段大小
void CIdentityCardQueryDlg::OnBtAddtable()
{
// CString strSql = _T("CREATE TABLE new222(ID TEXT(50),姓名 TEXT(10),性别 TEXT(10),年龄 TEXT(10),籍贯 TEXT(255))");
// .Execute(strSql);
CStringArray tmparray;
m_pDb.OpenSchemaX(tmparray);
// count = m_pRs.GetFieldCount();
}
void CIdentityCardQueryDlg::InitAllTable()
{
// CStringArray tmparray;
m_pDb.OpenSchemaX(m_accessTableArray);
}
//根据表名确定表是否存在,不存在则创建新的表
void CIdentityCardQueryDlg::CheckTableByName(CString tablename)
{
bool bIsExited = false;
for (int i=0; i<m_accessTableArray.GetSize(); i++)
{
if (m_accessTableArray[i] == tablename)
{
bIsExited = true;
break;
}
else
continue;
}
if (!bIsExited)
{
CString strSql = _T("CREATE TABLE ") + tablename + _T("(ID TEXT(50),姓名 TEXT(10),性别 TEXT(10),年龄 TEXT(10),籍贯 TEXT(255))");
m_pDb.Execute(strSql);
//注意添加
m_accessTableArray.Add(tablename);
m_comTableName.AddString(tablename);
m_comTableQuery.AddString(tablename);
}
// return false;
}
void CIdentityCardQueryDlg::OnCheckAll()
{
// TODO: Add your control notification handler code here
UpdateData();
m_comTableQuery.SelectAll(m_bSelectAll);
}
CString CIdentityCardQueryDlg::FormatTable(CStringArray& tablearray)
{
CString strTable = _T("");
CString tmpstr = _T("");
if (tablearray.GetSize() <= 0)
return strTable;
else if (tablearray.GetSize() == 1)
{
strTable = tablearray[0];
return strTable;
}
else
{
for (int i=0; i<tablearray.GetSize(); i++)
{
tmpstr = tablearray[i] + _T(",");
strTable += tmpstr;
}
strTable.Delete(strTable.GetLength()-1);
return strTable;
}
}
void CIdentityCardQueryDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
void CIdentityCardQueryDlg::OnSelchangeComboDeltype()
{
// TODO: Add your control notification handler code here
if (m_comDelType.GetCurSel() == 2 || m_comDelType.GetCurSel() == 3)
GetDlgItem(IDC_EDIT_DELINFO)->EnableWindow(FALSE);
else
GetDlgItem(IDC_EDIT_DELINFO)->EnableWindow(TRUE);
}
void CIdentityCardQueryDlg::OnItemchangedListData(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
int nItem = static_cast<int> (pNMListView->iItem);
// int nSubItem = pNMListView->iSubItem;
CString strText = _T("");
m_strID = m_DataListCtrl.GetItemText(nItem,0);//id
m_strName = m_DataListCtrl.GetItemText(nItem,1);//name
strText = m_DataListCtrl.GetItemText(nItem,2);//sex
if (strText == _T("男"))
m_ComSexType.SetCurSel(0);
else
m_ComSexType.SetCurSel(1);
strText = m_DataListCtrl.GetItemText(nItem,3);//age
m_nAge = atoi(strText);
m_strPace = m_DataListCtrl.GetItemText(nItem,4);//pace
UpdateData(FALSE);
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -