void CDataControl::GetFieldNameCn(const CString& sTableName,CADORecordset* pAdoAccess,const CString& sNameEn, CString& sNameCn)
{
    SAFEARRAY   FAR*   psa   =   NULL; 
    SAFEARRAYBOUND   rgsabound; 
    _variant_t     var; 
    _variant_t     Array; 
    rgsabound.lLbound   =   0; 
    rgsabound.cElements   =   4; 
    psa   =   SafeArrayCreate(VT_VARIANT,   1,   &rgsabound); 
    var.vt   =   VT_EMPTY; 
    long   ix; 
    ix   =   0; 
    SafeArrayPutElement(psa,   &ix,   &var); 
 
    ix=   1; 
    SafeArrayPutElement(psa,   &ix,   &var); 
 
    ix   =   2; 
    var.vt   =   VT_BSTR; 
    var.bstrVal   =sTableName.AllocSysString();     //表名  sTableName 
    SafeArrayPutElement(psa,   &ix,   &var); 
 
    var.vt   =   VT_BSTR; 
    ix   =   3; 
    var.bstrVal   =sNameEn.AllocSysString();//字段名
    SafeArrayPutElement(psa,   &ix,   &var); 
 
    Array.vt   =   VT_ARRAY|VT_VARIANT; 
    Array.parray   =   psa;   
 
    pAdoAccess->m_pRecordset   =   pAdoAccess->GetActiveConnection()->OpenSchema(adSchemaColumns,&Array);  
 
    Field *fd = pAdoAccess->m_pRecordset->Fields->GetItem("DESCRIPTION");
    if (fd->GetValue().vt != VT_NULL)
    {
        _bstr_t  column_discription = fd->Value;
        CString sNote;
        sNote.Format(_T("%s"), (LPCTSTR)column_discription);
        sNameCn =  (LPCTSTR)column_discription;
    }
    else
    {
        sNameCn = sNameEn