Cuando la base de datos es Access, use el conjunto de registros ADO para acceder a la base de datos y leer todos los datos en el control de lista para su visualización

Cuando la base de datos es Access, use el conjunto de registros ADO para acceder a la base de datos y leer todos los datos en el control de lista para su visualización

el código se muestra a continuación:

void CHMList::OnBnClickedButtoninserch()
{
    
    
	// TODO: 在此添加控件通知处理程序代码

	m_list.DeleteAllItems(); //因为每次点击查询都需要把之前显示的内容给清除
	::CoInitialize(NULL);
	m_pConnection.CreateInstance(__uuidof(Connection));

	try                 
	{
    
    	
		m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=UIHisData.mdb","","",adModeUnknown);		
	}
	catch(_com_error e)
	{
    
    
		AfxMessageBox("数据库连接失败,确认数据库UIHisData.mdb是否在当前路径下!");
	} 

	CString strSelect;
	_variant_t var;
	strSelect.Format (" Select * From ClampDataLog WHERE DateTime >= #%s# AND DateTime <= #%s#",StrDate1,StrDate2);
	pHandlerRecordset.CreateInstance(__uuidof(Recordset));
	try
	{
    
    
		pHandlerRecordset->Open(_variant_t(strSelect),
			m_pConnection.GetInterfacePtr(),	 
			adOpenDynamic,
			adLockOptimistic,
			adCmdText);
	}
	catch(_com_error *e)
	{
    
    
		AfxMessageBox(e->ErrorMessage());
	}  
	int i = 0;
	while(!pHandlerRecordset->adoEOF)
	{
    
    
		var = pHandlerRecordset->GetCollect("PressNum");
		if(var.vt != VT_NULL)
			str1[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("DateTime");
		if(var.vt != VT_NULL)
			str2[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("TotalDataPresent");
		if(var.vt != VT_NULL)
			str3[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("InjectionRodDataSet");
		if(var.vt != VT_NULL)
			str4[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("InjectionRodDataPresent");
		if(var.vt != VT_NULL)
			str5[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("GateDataSet");
		if(var.vt != VT_NULL)
			str6[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("GateDataPresent");
		if(var.vt != VT_NULL)
			str7[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("MoldDataSet");
		if(var.vt != VT_NULL)
			str8[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("MoldDataPresent");
		if(var.vt != VT_NULL)
			str9[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp1DataSet");
		if(var.vt != VT_NULL)
			str10[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp1DataPresent");
		if(var.vt != VT_NULL)
			str11[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp2DataSet");
		if(var.vt != VT_NULL)
			str12[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp2DataPresent");
		if(var.vt != VT_NULL)
			str13[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp3DataSet");
		if(var.vt != VT_NULL)
			str14[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("Temp3DataPresent");
		if(var.vt != VT_NULL)
			str15[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("PortDataSet");
		if(var.vt != VT_NULL)
			str16[i] = (LPCSTR)_bstr_t(var);

		var = pHandlerRecordset->GetCollect("PortDataPresent");
		if(var.vt != VT_NULL)
			str17[i] = (LPCSTR)_bstr_t(var);


		m_list.InsertItem(i,str1[i]);   
		m_list.SetItemText(i,1,str2[i]); 
		m_list.SetItemText(i,2,str3[i]); 
		m_list.SetItemText(i,3,str4[i]); 
		m_list.SetItemText(i,4,str5[i]); 
		m_list.SetItemText(i,5,str6[i]); 
		m_list.SetItemText(i,6,str7[i]); 
		m_list.SetItemText(i,7,str8[i]); 
		m_list.SetItemText(i,8,str9[i]); 
		m_list.SetItemText(i,9,str10[i]); 
		m_list.SetItemText(i,10,str11[i]); 
		m_list.SetItemText(i,11,str12[i]); 
		m_list.SetItemText(i,12,str13[i]); 
		m_list.SetItemText(i,13,str14[i]); 
		m_list.SetItemText(i,14,str15[i]);
		m_list.SetItemText(i,15,str16[i]);
		m_list.SetItemText(i,16,str17[i]);

		i++;
		pHandlerRecordset->MoveNext();

	}
	pHandlerRecordset->Close();
	pHandlerRecordset.Release();
	pHandlerRecordset = NULL;
	m_pConnection->Close();
	m_pConnection.Release();

	::CoUninitialize();

}

Importante:
m_list.InsertItem (i, str1 [i]); // i significa insertar la primera línea,
m_list.SetItemText (i, 1, str2 [i]);

Cuando se usa el juego de registros ADO para acceder a la base de datos, generalmente hay muchos datos leídos, por lo que deben almacenarse en una matriz de cadenas. El puntero creado por cada operación de lectura de datos solo puede leer un registro, por lo que debe leerse en un bucle hasta que La lectura está completa, por lo que es igual cuando se muestra, debe mostrarse en un bucle,

El efecto se muestra en la figura: el
Inserte la descripción de la imagen aquí
siguiente artículo explica cómo exportar los datos en el cuadro de lista a archivos Excel o Txt

Supongo que te gusta

Origin blog.csdn.net/weiwei_lol/article/details/109271776
Recomendado
Clasificación