⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finddata.cpp

📁 VC++ 6.0写ADO数据库操作对初学者有一定帮助
💻 CPP
字号:
// finddata.cpp : implementation file
//

#include "stdafx.h"
#include "s.h"
#include "finddata.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// finddata dialog

extern CSApp theApp;
finddata::finddata(CWnd* pParent /*=NULL*/)
	: CDialog(finddata::IDD, pParent)
{
	//{{AFX_DATA_INIT(finddata)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void finddata::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(finddata)
	DDX_Control(pDX, IDC_INPUT, m_input);
	DDX_Control(pDX, IDC_FIND1, m_find);
	DDX_Control(pDX, ID_CANCEL2, m_cancle2);
	DDX_Control(pDX, ID_OK, m_ok);

	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(finddata, CDialog)
	//{{AFX_MSG_MAP(finddata)
	ON_BN_CLICKED(ID_CANCEL2, OnCancel2)
	ON_BN_CLICKED(ID_OK, OnOk)
	ON_CBN_CLOSEUP(IDC_FIND1, OnCloseupFind1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// finddata message handlers

void finddata::OnOK() 
{
	// TODO: Add extra validation here
  CString st,input;
	   CString s1,sql;
	   m_find.GetWindowText(st);
	   m_input.GetWindowText(input);
	   
       if(input.IsEmpty())
	   {
         AfxMessageBox("有个输入为空");
		 return;
	   }
	   s1.Format("'"); 
	   sql.Format(m_sql+" "+st+"="+s1+input+s1);
	    if(initdata(sql))
		{   
			  m_same=true;
			  CDialog::OnOK();		
		}
	  
	  return;
}

void finddata::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	//CDialog::OnCancel();
}

BOOL finddata::OnInitDialog() 
{
	CDialog::OnInitDialog();
	     init2();
	
	return TRUE; 
}

Fields * finddata::GetField(_RecordsetPtr m_Recordset1)
{
	
	FieldsPtr pFields;
	ASSERT(m_Recordset1 != NULL);

	try
	{
		if (SUCCEEDED(m_Recordset1->get_Fields(&pFields)))
		{
			return pFields;
		}
	}
	catch (_com_error e)
	{
		TRACE(_T(":( GetField发生错误: %s\n"), e.ErrorMessage());
		return NULL;
	} 
	return NULL;
}

void finddata::OnCancel2() 
{
	CDialog::OnCancel();
}

void finddata::OnOk() 
{
	   CString st,input;
	   CString s1,sql;
	   m_find.GetWindowText(st);
	   m_input.GetWindowText(input);
	   
       if(input.IsEmpty())
	   {
         AfxMessageBox("有个输入为空");
		 return;
	   }
	   s1.Format("'"); 
	   sql.Format(m_sql+" "+st+"="+s1+input+s1);
	    if(initdata(sql))
		{   
			  m_same=true;
			  CDialog::OnOK();		
		}
	  
	  return;
}

void finddata::OnCloseupFind1() 
{
 
m_input.SetReadOnly(false);
}

BOOL finddata::initdata(CString sql)
{
		 CString data;
		
	 m_pRecordset.CreateInstance(__uuidof(Recordset));
	 try
	 {
		m_pRecordset->Open(_variant_t(sql),
			            theApp.m_pConnection.GetInterfacePtr(),
			            adOpenDynamic,
						adLockOptimistic,
						adCmdText);
		
     }
	 catch(_com_error *e)
	 {
		 AfxMessageBox(e->ErrorMessage());
	 }	
     

        if(m_pRecordset->BOF)
		{
			AfxMessageBox("没有找到或输入错误");
			return false;
		}
 
	        
			
            FieldPtr m_get,m_get2;
		    long log;
		    log=this->GetField(m_pRecordset)->GetCount();
		
			initlist();
			 for(long i=1;i <= log-1;i++)
			 {
			    try
				{
				 m_get=this->GetField(m_pRecordset)->GetItem(_variant_t(i));
				 data=LPCTSTR(_bstr_t(m_get->GetValue())); //得到字段内容
				  m_stlist.AddHead(data);
				}
				catch(_com_error *er)
				{
                         AfxMessageBox(er->ErrorMessage());
				}
				
			 }
			 
			 m_pRecordset->MoveNext();
			 if(m_pRecordset->adoEOF) 
			 {
				 m_pRecordset->MoveLast();
				
			 }
			 
			 return true;

}

void finddata::init2()
{
		CString data1;
	   _variant_t var;
        FieldPtr m_get,m_get2;
		long log;
		
		log=this->GetField(m_Recordset)->GetCount();
			 for(long i=1;i <= log-1;i++)
			 {
				 m_get=this->GetField(m_Recordset)->GetItem(_variant_t(i));
				 data1=LPCTSTR(_bstr_t(m_get->GetName()));//得到字段名
			     
				  m_find.AddString(data1);

			 }
	    
		
			 
		m_find.SetCurSel(0);
	


}


void finddata::initlist()
{
   m_stlist.RemoveAll();
}

BOOL finddata::Same()
{
return false;
}

void finddata::Closedata()
{
  if(m_pRecordset->State)
  {
	  m_pRecordset->Close();
  }
  m_pRecordset=NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -