我想写如下代码:
  CString strSQL;
  for (i=0;i<14;1++)
  {
    strSQL.Format(_T("select * from table where wendu=%f"),a[i])
    pRecordset.Open()
   然后取值赋值。
  最后
   pRecordset.Close();     } 我的目的挺简单的,就想让记录集循环打开不同的记录我该如何操作呢?

解决方案 »

  1.   

    pRecordset这个变量可以定义数组,这样不同的记录集的数据就可以存贮在不同的记录集里.就是这样:
    _RecordSetPtr pRecordset[14];//类型好象不对,但类似,就是和你定义的类型是一样的
    CString strSQL;
      for (i=0;i<14;1++)
      {
      strSQL.Format(_T("select * from table where wendu=%f"),a[i])
      pRecordset[i].Open();
    }//如果是临时取数据显示然后就不需要了,那就不这么用,直接按你的程序就行了
    下面是我用ADO操作数据的例子,程序没问题,你参考:
    m_pConn->Open("Provider=SQLOLEDB.1;Server=PC-201012170947\\WINCC;DataBase=;UID=sa;PWD=","","",adConnectUnspecified);   
    这是SQL 2000的连接字符串,你把它加到下面的相应的语句里:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
    头文件里类里:
    _ConnectionPtr m_pConnection;
    _RecordsetPtr m_pRecordset;
    _CommandPtr m_pCommand;CPP文件里:
    BOOL CDatabaseDll::OpenDatabaseFun(_ConnectionPtr pConnection,_RecordsetPtr pRecordset,_CommandPtr pCommand)
    {
    BOOL Result=TRUE;
    HRESULT hr;
    try   
    {   
    hr = pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
    if(SUCCEEDED(hr))   
    {   
    pConnection->ConnectionTimeout = 10;   
    // hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\NW.mdb","", "", adModeUnknown);//这是OFFICE2003以下的
    hr = pConnection->Open("Provider=Microsoft.Ace.Oledb.12.0;Data Source=D:\\bagayalu.accdb;Jet OLEDB:Database Password=123456","", "", adModeUnknown);//这是OFFICE2007以上的,包括OFFICE2010,这个连接字符串就是在OFFICE2010下用的,没问题
        
    //m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库   
        
    pCommand.CreateInstance(__uuidof(Command));
    pCommand->CommandTimeout = 5;
    pCommand->ActiveConnection = pConnection;
    }
    }
    catch(_com_error e)///捕捉异常
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
    AfxMessageBox(errormessage);///显示错误信息
    Result=FALSE;
    return Result;
    }   
    _variant_t var;
    float v1,v2,v3,v4;
    CString Re;
    pRecordset.CreateInstance(__uuidof(Recordset));
    try
    {
    pRecordset->Open("SELECT * FROM 表1",// 查询DemoTable表中所有字段   
    pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针   
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);
    while(!m_pRecordset->adoEOF)   
      {   
      var = m_pRecordset->GetCollect("v1");   
      if(var.vt != VT_NULL)
      v1=var.fltVal;
    // strName = (LPCSTR)_bstr_t(var);     var = m_pRecordset->GetCollect("v2");   
      if(var.vt != VT_NULL)   
      v2=var.fltVal;
      var = m_pRecordset->GetCollect("v3");   
      if(var.vt != VT_NULL)   
      v3=var.fltVal;
      var = m_pRecordset->GetCollect("v4");   
      if(var.vt != VT_NULL)   
      v4=var.fltVal;
      var = m_pRecordset->GetCollect("re");   
      if(var.vt != VT_NULL)
    Re = (LPCSTR)_bstr_t(var);
      m_pRecordset->MoveNext();   
      }   
    }
    catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    Result=FALSE;
    return Result;
    }
    return Result
      

  2.   

    _RecordsetPtr m_pRecordset[14];//你的变量名是:pRecordset
    就是这么定义,我当初在WIN98下定义了56个这种类型的变量进行数据处理