我用dbdatlen取TEXT类型字段的长度,总是4096,实际长度>8000,请问如何解决,谢谢

解决方案 »

  1.   

    可以了,要设置TEXTSIZE 和 TEXTLIMIT
      

  2.   

    _variant_t varBLOB;
    unsigned char *pTmp = NULL;
            char sBinary[258];
    sprintf(sBinary,"%s","0x");
    long nSize = m_pRecordsetJG->GetFields()->GetItem("hh")->ActualSize;
    varBLOB = m_pRecordsetJG->GetFields()->GetItem("hh")->GetValue();    
    //write bin file
    //声明安全数组
    ::SafeArrayAccessData(varBLOB.parray, (void **)&pTmp);   

    for(int j=0;j<nSize;j++)
    {   
    int nTmp = pTmp[j];
    sprintf(sBinary + j*2 + 2,"%02X",nTmp);
    };
    sBinary[nSize*2+2] = '\0';
    ::SafeArrayUnaccessData(varBLOB.parray);
    AfxMessageBox(sBinary);//////////////////////////////////////////////////////////////
    //blob 型纪录字段
    if(viValue.vt == (VT_ARRAY | VT_UI1))
    {
    //得到数据长度
    long lDatalen = m_pRecordset->GetFields()->GetItem(viIndex)->ActualSize;
    //得到二进制数据
    viValue = m_pRecordset->GetFields()->GetItem(viIndex)->GetChunk(lDatalen);;
    char *pTmp = NULL; //write bin file
    //声明安全数组
    ::SafeArrayAccessData(viValue.parray, (void **)&pTmp); CString cszbFileName;
    CFile fileBlob; //设置二进制文件路径
    cszbFileName.Format("%s\\%d_%d.bin", ::GetDirFormFileName(cszFilename), dwRecordID, i);
    fileBlob.Open(cszbFileName, CFile::modeCreate|CFile::modeWrite, NULL);
    fileBlob.Write(pTmp, lDatalen);
    fileBlob.Close(); //写入下载列表
    WriteListFile(cszListFile, cszbFileName); ::SafeArrayUnaccessData(viValue.parray);