16,471
社区成员
发帖
与我相关
我的任务
分享
BOOL CRecordDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化代码
//添加的代码
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
DWORD dwStyle; // 设置新风格
dwStyle=::GetWindowLong(m_record_ctrlList.m_hWnd,GWL_STYLE);
dwStyle|=LVS_REPORT | LVS_SHOWSELALWAYS | LVS_EDITLABELS;
::SetWindowLong(m_record_ctrlList.m_hWnd,GWL_STYLE,dwStyle);
dwStyle=m_record_ctrlList.GetExtendedStyle();
dwStyle|=LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;//LVS_EX_FULLROWSELECT 点击选择一行
m_record_ctrlList.SetExtendedStyle(dwStyle);
m_record_ctrlList.InsertColumn(0,"气象",LVCFMT_CENTER,30);
m_record_ctrlList.InsertColumn(1,"编号",LVCFMT_CENTER,75);
m_record_ctrlList.InsertColumn(2,"船舶名称",LVCFMT_CENTER,100);
m_record_ctrlList.InsertColumn(3,"数量",LVCFMT_CENTER,75);
m_record_ctrlList.InsertColumn(4,"航向",LVCFMT_CENTER,50);
m_record_ctrlList.InsertColumn(5,"值班员",LVCFMT_CENTER,120);
m_record_ctrlList.InsertColumn(6,"备 注",LVCFMT_CENTER,200);
//m_ship_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//m_ship_ctrlList.SetColumnWidth(0,160);
m_timeStart = CTime(2012,1,1,0,0,0,-1);//获得当前时间
m_timeEnd = CTime::GetCurrentTime();
UpdateData(false);
//打开ADO的连接
m_pRS.ADOOpen();
//在列表中显示用户
ShowListItems();
ShowCombo();//显示气象中的信息
编号
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CRecordDlg::ShowListItems()
{
//添加的代码:从数据库中获取选择用户名的资料
//清列表框的头
/*int nCount=0;
CHeaderCtrl *pHeaderCtrl=m_record_ctrlList.GetHeaderCtrl();
if(pHeaderCtrl!=NULL)
nCount=pHeaderCtrl->GetItemCount();
for(int i=0;i<nCount;i++)
m_record_ctrlList.DeleteColumn(0);*/
m_record_ctrlList.DeleteAllItems();
m_pRS.ADOExcute("select [weather],[no],[shipname],[count],[heading],[staff],[remark] from Record");
//显示数据库中的表头
int nItem=0;
while(!m_pRS.ADOEOF()){
m_record_ctrlList.InsertItem(nItem,m_pRS.GetFieldString(0));
for(int i=1;i<m_pRS.nFieldCols;i++)
m_record_ctrlList.SetItemText(nItem,i,m_pRS.GetFieldString(i));
m_pRS.MoveNext();
}
//m_ctrlList.SetRedraw(TRUE);
}
void CRecordDlg::OnButtonRefresh() //刷新
{
ShowListItems();
}
void CRecordDlg::OnButtonAdd()
{
// 添加:password,user等是SQL语言中的保留字,在执行此类SQL操作时应加上方括号
Find();
CString dutystr = headdutystr+"(主)/"+voicedutystr+"(副)";
CString m_timeDate = CTime::GetCurrentTime().Format("%Y-%m-%d");//插入时间 全格式:("%Y/%m/%d/%a %H:%M:%S")
UpdateData(true);
CString sql;
sql.Format("INSERT INTO Record([weather],[no],[shipname],[count],[heading],[staff],[remark]) Values ('%s','%s','%s','%s','%s','%s','%s')",weatherstr,m_strNO,m_strShipname,m_strCount,m_strHeading,dutystr,m_strRemark);//
if(m_strNO=="")
{
AfxMessageBox("请将通行指挥记录填写完整!");
}
else
{
if(m_pRS.ADOExcuteNoQuery(sql)==1)
{
AfxMessageBox("增加记录成功!");
//增加完记录后,马上刷新显示;
ShowListItems();
}
else
{
AfxMessageBox("增加记录失败!");
}
}
}
void CRecordDlg::AddListItems()//为查询做准备
{
//清列表框的头,列,行
int nCount=0;
CHeaderCtrl *pHeaderCtrl=m_record_ctrlList.GetHeaderCtrl();
if(pHeaderCtrl!=NULL)
nCount=pHeaderCtrl->GetItemCount();
for(int i=0;i<nCount;i++)
m_record_ctrlList.DeleteColumn(0);
m_record_ctrlList.DeleteAllItems();
//取出字段名显示到列表头中
//显示数据库中的表头
/*for(int i=0;i<m_pRS.nFieldCols;i++)
{
m_ship_ctrlList.InsertColumn(i,m_pRS.GetFieldName(i),LVCFMT_LEFT,110);
}*/
//自定义表头
m_record_ctrlList.InsertColumn(0,"气象",LVCFMT_CENTER,30);
m_record_ctrlList.InsertColumn(1,"编号",LVCFMT_CENTER,75);
m_record_ctrlList.InsertColumn(2,"船舶名称",LVCFMT_CENTER,100);
m_record_ctrlList.InsertColumn(3,"数量",LVCFMT_CENTER,75);
m_record_ctrlList.InsertColumn(4,"航向",LVCFMT_CENTER,50);
m_record_ctrlList.InsertColumn(5,"值班员",LVCFMT_CENTER,120);
m_record_ctrlList.InsertColumn(6,"备 注",LVCFMT_CENTER,200);
//取出字段值放到列表行中
int nItem=0;
while(!m_pRS.ADOEOF()){
m_record_ctrlList.InsertItem(nItem,m_pRS.GetFieldString(0));
for(int i=0;i<m_pRS.nFieldCols;i++)
m_record_ctrlList.SetItemText(nItem,i,m_pRS.GetFieldString(i));
m_pRS.MoveNext();
}
}
void CRecordDlg::OnButtonRefer() //按日期查询
{
CString strSQL;
UpdateData(true);
CString cstrDateStart = m_timeStart.Format("%Y-%m-%d %H:%M:%S");//CTime类型转化为CString类型
CString cstrDateEnd = m_timeEnd.Format("%Y-%m-%d %H:%M:%S");//CTime类型转化为CString类型
//m_pRS.ADOExcute("SELECT * FROM Record WHERE Date between '"+ cstrDateStart +"'and '"+ cstrDateEnd +"'");//自动按时间由近到远排序
strSQL.Format("SELECT [weather],[no],[shipname],[count],[heading],[staff],[remark] FROM RECORD WHERE markin between '%s' and '%s'",cstrDateStart,cstrDateEnd);
m_pRS.ADOExcute(strSQL);
if(m_pRS.nFieldRows != 0)
{
AddListItems();
}
else
{
AfxMessageBox("查询结果:无匹配信息!");
return ;
}
}
void CRecordDlg::ShowCombo()// Combo控件显示气象 wdj 2012年6月29日22:43:40
{
////添加的代码:从数据库中获取选择用户名的资料
//CRecordset rs;
//rs.GetFieldValue("weather",str)
_RecordsetPtr m_pRecordset2;
m_pRecordset2.CreateInstance("adodb.recordset");
try
{
CString weatherstr;
weatherstr.Format("select * from WEATHER");
_variant_t ordervar=(LPCTSTR)weatherstr;//##
m_pRecordset2->Open(ordervar,m_pConn.GetInterfacePtr(),adOpenStatic,adLockReadOnly,adCmdText);
}
catch (_com_error e)
{
AfxMessageBox(e.ErrorMessage());
if (m_pRecordset2!=NULL)
{
m_pRecordset2->Close();//用完后,关闭数据集
m_pRecordset2=NULL;
}
//return FALSE;
}
try
{
if(!(m_pRecordset2->BOF))//若记录集指针未指向数据库中的首元素
{
m_pRecordset2->MoveFirst();//则将其指向首元素位置
int Counter=0;
CString weatherstr1;
while (!m_pRecordset2->adoEOF)//若记录集指针未指向数据库中的尾元素,则循环永远不会结束
{
if (m_pRecordset2->GetCollect("weather").vt!=VT_NULL)
{
weatherstr1 =(char*)(_bstr_t)m_pRecordset2->GetCollect("weather");
m_strWeather1.AddString(weatherstr1);
}
m_pRecordset2->MoveNext();
Counter++;
}
}
if (m_pRecordset2!=NULL)
{
m_pRecordset2->Close();//用完后,关闭数据集
m_pRecordset2=NULL;
}
//return TRUE;
}
catch (_com_error e)
{
CString strError;
strError.Format("%s",e.Description());//Description()
AfxMessageBox(strError);
if (m_pRecordset2!=NULL)
{
m_pRecordset2->Close();//用完后,关闭数据集
m_pRecordset2=NULL;
}
//return FALSE;
}
}