📄 daosqldlg.cpp
字号:
else
{
Info="只读";
}
m_List1.SetItemText(1,1,Info);
if(di.m_bTransactions)
{
Info="允许";
}
else
{
Info="不允许";
}
m_List1.SetItemText(2,1,Info);
m_List1.SetRedraw();
m_List1.Invalidate();
}
void CDaoSQLDlg::ShowTable(HTREEITEM hi)
{
//读取表名:
UINT i;
CString tn;
tn=m_Tree1.GetItemText(hi);
m_List1.SetRedraw(FALSE);
m_List1.DeleteAllItems ();
while(m_List1.DeleteColumn(0));
CDaoTableDef td(&m_Db);
CDaoFieldInfo fi;
td.Open(tn);
m_set.Open(&td);
//1. 添加列:
LV_COLUMN lc;
lc.mask = LVCF_FMT | LVCF_WIDTH |
LVCF_TEXT | LVCF_SUBITEM;
lc.fmt = LVCFMT_CENTER;
lc.cx = 75;
lc.iSubItem = 0;
for(i=0;i<m_set.GetFieldCount();i++)
{
m_set.GetFieldInfo(i,fi);
lc.pszText = fi.m_strName.GetBuffer(fi.m_strName.GetLength());
m_List1.InsertColumn(i, &lc);
}
//2. 添加各个项目(各行):
LVITEM Item;
CString str;
long nItem;
COleVariant var;
m_set.MoveFirst();
nItem=0;
while(!m_set.IsEOF())
{
Item.mask=LVIF_TEXT;
Item.iItem=i;
Item.iSubItem=0;
m_set.GetFieldValue(0,var);
str=GetVariantString(var);
Item.pszText=str.GetBuffer(str.GetLength());
m_List1.InsertItem(&Item);
for(i=1;i<m_set.GetFieldCount();i++)
{
//3. 设置各个子项的字符串:
m_set.GetFieldValue(i,var);
str=GetVariantString(var);
m_List1.SetItemText(nItem,i,str);
}
m_set.MoveNext();
nItem++;
}
m_set.Close();
m_List1.SetRedraw();
m_List1.Invalidate();
}
void CDaoSQLDlg::ShowFieldInfo(HTREEITEM hi)
{
CString tn,fn;
int i;
HTREEITEM phi;
m_List1.SetRedraw(FALSE);
m_List1.DeleteAllItems ();
while(m_List1.DeleteColumn(0));
phi=m_Tree1.GetParentItem(hi);
//读取表名:
tn=m_Tree1.GetItemText(phi);
//读取字段名:
fn=m_Tree1.GetItemText(hi);
CDaoTableDef td(&m_Db);
td.Open(tn);
try
{
m_set.Open(&td);
CDaoFieldInfo fi;//字段信息;
m_set.GetFieldInfo(fn,fi);
//1. 添加列:
LV_COLUMN lc;
lc.mask = LVCF_FMT | LVCF_WIDTH |
LVCF_TEXT | LVCF_SUBITEM;
lc.fmt = LVCFMT_CENTER;
lc.cx = 75;
lc.iSubItem = 0;
lc.pszText = "项目名称";
m_List1.InsertColumn(0, &lc);
lc.pszText = "属性";
m_List1.InsertColumn(1, &lc);
//2. 添加各个项目(各行):
LVITEM Item;
Item.mask=LVIF_TEXT;
Item.iSubItem=0;
Item.iItem=0;
Item.pszText=_T("字段名称:");
m_List1.InsertItem(&Item);
Item.iItem=1;
Item.pszText=_T("字段数据类型:");
m_List1.InsertItem(&Item);
Item.iItem=2;
Item.pszText=_T("字段所占字节数:");
m_List1.InsertItem(&Item);
Item.iItem=3;
Item.pszText=_T("字段属性:");
m_List1.InsertItem(&Item);
//3. 设置各个子项的字符串:
m_List1.SetItemText(0,1,fi.m_strName.GetBuffer(fi.m_strName.GetLength()));
switch(fi.m_nType)
{
case dbBoolean:
{
m_List1.SetItemText(1,1,"BOOL");
m_List1.SetItemText(2,1,"1");
break;
}
case dbByte:
{
m_List1.SetItemText(1,1,"BYTE");
m_List1.SetItemText(2,1,"1");
break;
}
case dbInteger:
{
m_List1.SetItemText(1,1,"short");
m_List1.SetItemText(2,1,"2");
break;
}
case dbLong:
{
m_List1.SetItemText(1,1,"long");
m_List1.SetItemText(2,1,"4");
break;
}
case dbCurrency:
{
m_List1.SetItemText(1,1,"COleCurrency");
m_List1.SetItemText(2,1,"8");
break;
}
case dbSingle:
{
m_List1.SetItemText(1,1,"float");
m_List1.SetItemText(2,1,"4");
break;
}
case dbDouble:
{
m_List1.SetItemText(1,1,"double");
m_List1.SetItemText(2,1,"8");
break;
}
case dbDate:
{
m_List1.SetItemText(1,1,"COleDateTime");
m_List1.SetItemText(2,1,"8");
break;
}
case dbText:
{
m_List1.SetItemText(1,1,"CString");
m_List1.SetItemText(2,1,"1-255");
break;
}
case dbLongBinary:
{
m_List1.SetItemText(1,1,"CByteArray");
m_List1.SetItemText(2,1,"0");
break;
}
case dbMemo:
{
m_List1.SetItemText(1,1,"CString");
m_List1.SetItemText(2,1,"0");
break;
}
case dbGUID:
{
m_List1.SetItemText(1,1,"GUID");
m_List1.SetItemText(2,1,"16");
break;
}
}
CString Info="";
if(fi.m_lAttributes&dbFixedField)
{
Info+="dbFixedField ";
}
if(fi.m_lAttributes&dbVariableField)
{
Info+="dbVariableField ";
}
if(fi.m_lAttributes&dbAutoIncrField)
{
Info+="dbAutoIncrField ";
}
if(fi.m_lAttributes&dbUpdatableField)
{
Info+="dbUpdatableField ";
}
if(fi.m_lAttributes&dbDescending)
{
Info+="dbDescending ";
}
m_List1.SetItemText(3,1,Info);
m_List1.SetRedraw();
m_List1.Invalidate();
m_set.Close();
td.Close();
}
catch(CDaoException* e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription,
MB_ICONEXCLAMATION);
e->Delete();
if(m_set.IsOpen())
{
m_set.Close();
}
if(td.IsOpen())
{
td.Close();
}
return;
}
}
void CDaoSQLDlg::OnExecute()
{
// TODO: Add your control notification handler code here
if(!m_Db.IsOpen())
{
AfxMessageBox("你必须首先打开一个数据库!");
return;
}
CString sql;
int i;
CDaoQueryDef qd(&m_Db);
try
{
GetDlgItemText(IDC_EDIT1,sql);
sql.MakeUpper();
if(sql.Find("SELECT")!=-1)
{
if(m_set.IsOpen())
{
m_set.Close();
}
qd.Create(NULL,sql);
m_set.Open(&qd);
//显示查询结果:
m_List1.DeleteAllItems();
while(m_List1.DeleteColumn(0));
m_List1.SetRedraw(FALSE);
//1. 添加列:
CDaoFieldInfo fi;
LV_COLUMN lc;
lc.mask = LVCF_FMT | LVCF_WIDTH |
LVCF_TEXT | LVCF_SUBITEM;
lc.fmt = LVCFMT_CENTER;
lc.cx = 75;
lc.iSubItem = 0;
for(i=0;i<m_set.GetFieldCount();i++)
{
m_set.GetFieldInfo(i,fi);
lc.pszText = fi.m_strName.GetBuffer(fi.m_strName.GetLength());
m_List1.InsertColumn(i, &lc);
}
//2. 添加各个项目(各行):
LVITEM Item;
CString str;
long nItem;
COleVariant var;
m_set.MoveFirst();
nItem=0;
while(!m_set.IsEOF())
{
Item.mask=LVIF_TEXT;
Item.iItem=i;
Item.iSubItem=0;
m_set.GetFieldValue(0,var);
str=GetVariantString(var);
Item.pszText=str.GetBuffer(str.GetLength());
m_List1.InsertItem(&Item);
for(i=1;i<m_set.GetFieldCount();i++)
{
//3. 设置各个子项的字符串:
m_set.GetFieldValue(i,var);
str=GetVariantString(var);
m_List1.SetItemText(nItem,i,str);
}
m_set.MoveNext();
nItem++;
}
m_set.Close();
qd.Close();
m_List1.SetRedraw();
m_List1.Invalidate();
}
else
{
qd.Create(NULL,sql);
qd.Execute();
}
}
catch(CDaoException * e)
{
AfxMessageBox(e->m_pErrorInfo->m_strDescription,
MB_ICONEXCLAMATION);
e->Delete();
if(m_set.IsOpen())
{
m_set.Close();
}
if(qd.IsOpen())
{
qd.Close();
}
return;
}
}
void CDaoSQLDlg::OnSetfocusTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(!m_Db.IsOpen())
{
return;
}
HTREEITEM hi=m_Tree1.GetSelectedItem();
//如果选择的是表名:
if(m_Tree1.GetParentItem(hi)==m_hTr)
{
ShowTable(hi);
}
//如果选择的是数据库名:
else if(hi==m_hTr)
{
ShowDatabaseInfo();
return;
}
//如果选择的是字段名:
else
{
ShowFieldInfo(hi);
return;
}
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -