📄 daoworkdlg.cpp
字号:
if(m_tree.GetParentItem (item_sel) == NULL)
{
if(PreSelected == item_sel)
return;
PreSelected = item_sel;
m_list.DeleteAllItems ();
int nCount = m_list.GetHeaderCtrl ()->GetItemCount ();
for(i=0; i<nCount; i++)
{
m_list.DeleteColumn (0);
}
CString str1 = "Select * from [" + m_tree.GetItemText (item_sel) + "]";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
int nFieldCount = m_MyRS.GetFieldCount();
for(i=0; i<nFieldCount; i++)
{
CDaoFieldInfo FieldInfo;
m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 70;
lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
lvcol.iSubItem = i;
m_list.InsertColumn (i, &lvcol);
}
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
LV_ITEM lvitem;
lvitem.iItem = index;
lvitem.iSubItem = 0;
lvitem.mask = LVIF_TEXT;
lvitem.pszText = (char *)(LPCTSTR)strVar;
m_list.InsertItem (&lvitem);
for(i=0; i<nFieldCount; i++)
{
strVar = strVARIANT(m_MyRS.GetFieldValue(i));
m_list.SetItemText (index, i, strVar);
}
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
else
{
item_sel = m_tree.GetParentItem (item_sel);
if(PreSelected == item_sel)
return;
PreSelected = item_sel;
m_list.DeleteAllItems ();
int nCount = m_list.GetHeaderCtrl ()->GetItemCount ();
for(i=0; i<nCount; i++)
{
m_list.DeleteColumn (0);
}
CString str1 = "Select * from [" + m_tree.GetItemText (item_sel) + "]";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
int nFieldCount = m_MyRS.GetFieldCount();
for(i=0; i<nFieldCount; i++)
{
CDaoFieldInfo FieldInfo;
m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 70;
lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
lvcol.iSubItem = i;
m_list.InsertColumn (i, &lvcol);
}
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
LV_ITEM lvitem;
lvitem.iItem = index;
lvitem.iSubItem = 0;
lvitem.mask = LVIF_TEXT;
lvitem.pszText = (char *)(LPCTSTR)strVar;
m_list.InsertItem (&lvitem);
for(i=0; i<nFieldCount; i++)
{
strVar = strVARIANT(m_MyRS.GetFieldValue(i));
m_list.SetItemText (index, i, strVar);
}
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
*pResult = 0;
}
void CDaoWorkDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int iPage = m_tab1.GetCurSel();
switch(iPage)
{
case 0:
m_tree.ShowWindow(SW_SHOW);
m_customerunits.ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_CUSTOMERUNITS)->ShowWindow(SW_HIDE);
m_customer.ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_CUSTOMER)->ShowWindow(SW_HIDE);
m_sample1.ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_SAMPLE1)->ShowWindow(SW_HIDE);
m_sample2.ShowWindow(SW_HIDE);
m_instrument.ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_SAMPLE2INSTRUMENT)->ShowWindow(SW_HIDE);
break;
case 1:
/*
if(bError)
{
if(AfxMessageBox("你当前连接的数据库不是某实验室的管理信息!\n是否需要人工连接到数据库?", MB_YESNO) == IDYES)
{
if(!OnDatabaseLink())
{
m_tab1.SetCurSel(0);
break;
}
}
else
{
m_tab1.SetCurSel(0);
break;
}
}
*/
m_tree.ShowWindow(SW_HIDE);
m_customerunits.ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CUSTOMERUNITS)->ShowWindow(SW_SHOW);
m_customer.ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_CUSTOMER)->ShowWindow(SW_SHOW);
m_sample1.ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_SAMPLE1)->ShowWindow(SW_SHOW);
m_sample2.ShowWindow(SW_SHOW);
m_instrument.ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_SAMPLE2INSTRUMENT)->ShowWindow(SW_SHOW);
break;
}
*pResult = 0;
}
void CDaoWorkDlg::OnSelchangeTab2(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int iPage = m_tab2.GetCurSel();
switch(iPage)
{
case 0:
m_list.ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_HIDE);
bDraw = FALSE;
break;
case 1:
/*
if(bError)
{
if(AfxMessageBox("你当前连接的数据库不是某实验室的管理信息!\n是否需要人工连接到数据库?", MB_YESNO) == IDYES)
{
if(!OnDatabaseLink())
{
m_tab2.SetCurSel(0);
break;
}
}
else
{
m_tab2.SetCurSel(0);
break;
}
}
*/
m_list.ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_SHOW);
bDraw = TRUE;
break;
}
*pResult = 0;
}
BOOL CDaoWorkDlg::OnDatabaseLink()
{
// TODO: Add your command handler code here
CFileDialog openfiledlg(TRUE,"mdb","*.mdb",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"数据库文件(*.mdb)|*.mdb|All Files(*.*)|*.*||");
openfiledlg.m_ofn.lpstrTitle = "选择数据库(*.mdb)";
if(openfiledlg.DoModal () == IDOK)
{
/*
if(x != NULL)
delete [] x;
if(x != NULL)
delete [] y;
m_length = 0;
int i;
for(i=m_sample2.GetCount(); i>0; i++)
{
m_sample2.DeleteString(i);
}
for(i=m_sample1.GetCount(); i>0; i++)
{
m_sample1.DeleteString(i);
}
for(i=m_instrument.GetCount(); i>0; i++)
{
m_instrument.DeleteString(i);
}
for(i=m_customerunits.GetCount(); i>0; i++)
{
m_customerunits.DeleteString(i);
}
for(i=m_customer.GetCount(); i>0; i++)
{
m_customer.DeleteString(i);
}
*/
m_filepathname = openfiledlg.GetPathName ();
//InitCtrl();
Init();
}
else
return FALSE;
return TRUE;
}
BOOL CDaoWorkDlg::Init()
{
if(!m_filepathname.IsEmpty ())
{
int i;
CString str;
TRY
{
if(m_MyDatabase.IsOpen())
{
/*关闭数据库前必须先删除依附控件的数据*/
bError = IsError(m_filepathname);
if(bError)
{
m_tree.ShowWindow(SW_SHOW);
m_list.ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DRAW)->ShowWindow(SW_HIDE);
m_tab1.SetCurSel(0);
m_tab2.SetCurSel(0);
}
m_tree.DeleteAllItems();
int nColumnCount = m_list.GetHeaderCtrl ()->GetItemCount ();
for(i=0; i<nColumnCount; i++)
m_list.DeleteColumn(0);
m_list.DeleteAllItems();
m_MyDatabase.Close();
}
m_MyDatabase.Open (m_filepathname);
}
CATCH (CDaoException, pEx)
{
//pEx->ReportError();
CString str = pEx->m_pErrorInfo->m_strDescription;
str = str + "\n是否需要人工连接到数据库?";
if(AfxMessageBox(str, MB_YESNO) == IDYES)
{
if(OnDatabaseLink())
return TRUE;
else
return FALSE;
}
else
return FALSE;
}
END_CATCH
//;
//m_tree.SetFocus();
int nTableCount = m_MyDatabase.GetTableDefCount ();
for(i=0; i<nTableCount; i++)
{
CDaoTableDefInfo TableInfo;
m_MyDatabase.GetTableDefInfo (i, TableInfo, AFX_DAO_ALL_INFO);
if(TableInfo.m_lAttributes != 0)
continue; //过滤系统表
//把表的名称显示在 Tree Control 中
TV_ITEM item_table;
item_table.mask = TVIF_TEXT;
item_table.pszText = (char *)(LPCTSTR)TableInfo.m_strName ;
str = item_table.pszText;
if(str == "客户表")
{
//AfxMessageBox("客户表");
CString str1 = "SELECT [客户表].[单位] FROM 客户表";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
/*
int nFieldCount = m_MyRS.GetFieldCount();
for(i=0; i<nFieldCount; i++)
{
CDaoFieldInfo FieldInfo;
m_MyRS.GetFieldInfo(i, FieldInfo, AFX_DAO_ALL_INFO);
LV_COLUMN lvcol;
lvcol.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt = LVCFMT_LEFT;
lvcol.cx = 70;
lvcol.pszText = (char *)(LPCTSTR)FieldInfo.m_strName ;
lvcol.iSubItem = i;
m_list.InsertColumn (i, &lvcol);
}
*/
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
/*
LV_ITEM lvitem;
lvitem.iItem = index;
lvitem.iSubItem = 0;
lvitem.mask = LVIF_TEXT;
lvitem.pszText = (char *)(LPCTSTR)strVar;
m_list.InsertItem (&lvitem);
for(i=0; i<nFieldCount; i++)
{
strVar = strVARIANT(m_MyRS.GetFieldValue(i));
m_list.SetItemText (index, i, strVar);
}
*/
int Flag = -1;
int countComboBox = m_customerunits.GetCount();
CString str2;
for(int x=0; x<countComboBox; x++)
{
m_customerunits.GetLBText(x, str2);
if(strVar == str2)
Flag ++;
}
if(Flag == -1)
m_customerunits.AddString(strVar);
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
if(str == "客户表")
{
CString str1 = "SELECT [客户表].[姓名] FROM 客户表;";
//CString str1 = "SELECT 样品表.样品编号, 样品表.样品类型 FROM 样品表";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
int Flag = -1;
int countComboBox = m_customer.GetCount();
CString str2;
for(int x=0; x<countComboBox; x++)
{
m_customer.GetLBText(x, str2);
if(strVar == str2)
Flag ++;
}
if(Flag == -1)
m_customer.AddString(strVar);
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
if(str == "样品表")
{
CString str1 = "SELECT 样品表.样品编号, 样品表.样品类型 FROM 样品表";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
CString str2 = strVARIANT(m_MyRS.GetFieldValue(1));
strVar = strVar + " " + str2;
/*
int Flag = -1;
int countComboBox = m_customer.GetCount();
CString str2;
for(int x=0; x<countComboBox; x++)
{
m_customer.GetLBText(x, str2);
if(strVar == str2)
Flag ++;
}
if(Flag == -1)
m_customer.AddString(strVar);
*/
m_sample1.AddString(strVar);
m_sample2.AddString(strVar);
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
if(str == "仪器表")
{
CString str1 = "SELECT * FROM [仪器表]";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_MyRS.MoveFirst();
int index = -1; //插入item后的索引号
while(!m_MyRS.IsEOF())
{
index += 1;
CString strVar = strVARIANT(m_MyRS.GetFieldValue(0));
CString str2 = strVARIANT(m_MyRS.GetFieldValue(1));
strVar = strVar + " " + str2;
/*
int Flag = -1;
int countComboBox = m_customer.GetCount();
CString str2;
for(int x=0; x<countComboBox; x++)
{
m_customer.GetLBText(x, str2);
if(strVar == str2)
Flag ++;
}
if(Flag == -1)
m_customer.AddString(strVar);
*/
m_instrument.AddString(strVar);
m_MyRS.MoveNext();
}
m_MyRS.Close();
}
if(str == "实验数据表")
{
//AfxMessageBox("客户表");
CString str1 = "SELECT [实验数据表].[X], [实验数据表].[Y] FROM [实验数据表]";
CDaoRecordset m_MyRS(&m_MyDatabase);
m_MyRS.Open(dbOpenDynaset, str1);
m_length = 0;
m_MyRS.MoveFirst();
while(!m_MyRS.IsEOF())
{
m_length++;
m_MyRS.MoveNext();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -