您的位置:首页 > 其它

多个运算符“=”与这些操作数不匹配

2018-01-14 20:57 106 查看
这是源代码if (m_list.GetItemCount() <= 0)
{
AfxMessageBox(_T("列表中没有记录需要保存!"));
return;
}
//打开另存为对话框 ,需要包含 #include <Afxdlgs.h>
CFileDialog dlg(FALSE,
_T("xls"),
_T("FileList"),
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("Excel 文件(*.xls)|*.xls||"));
dlg.m_ofn.lpstrTitle = _T("文件列表另存为");

if (dlg.DoModal() != IDOK)
return;
CString strFilePath;
//获得文件路径名
strFilePath = dlg.GetPathName();
//判断文件是否已经存在,存在则删除重建
DWORD dwRe = GetFileAttributes(strFilePath);
if (dwRe != (DWORD)-1)
{
DeleteFile(strFilePath);
}
CDatabase database;//数据库库需要包含头文件 #include <afxdb.h>
CString sDriver = _T("MICROSOFT EXCEL DRIVER (*.XLS)";)  // Excel驱动
CString sSql, strInsert;
TRY
{
// 创建进行存取的字符串
sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, strFilePath, strFilePath);

/
4000
/ 创建数据库 (既Excel表格文件)
if (database.OpenEx(sSql,CDatabase::noOdbcDialog))
{
//获得列别框总列数
int iColumnNum,iRowCount;
LVCOLUMN lvCol;
CString strColName; //用于保存列标题名称
int i,j; //列、行循环参数

iColumnNum = m_list.GetHeaderCtrl()->GetItemCount();
iRowCount = m_list.GetItemCount();
   sSql = _T(" CREATE TABLE DSO_DX ( ");
strInsert = _T(" INSERT INTO DSO_DX ( ");
//获得列标题名称
lvCol.mask = LVCF_TEXT; //必需设置,说明LVCOLUMN变量中pszText参数有效
lvCol.cchTextMax = 32; //必设,pszText参数所指向的字符串的大小
lvCol.pszText = strColName.GetBuffer(32); //必设,pszText 所指向的字符串的实际存储位置。
 //以上三个参数设置后才能通过 GetColumn()函数获得列标题的名称
for (i = 0; i< iColumnNum; i++)
{
if (!(m_list.GetColumn(i,&lvCol)))
return;
if (i<iColumnNum - 1)
{
sSql = sSql + lvCol.pszText + _T(" TEXT , ");
strInsert = strInsert + lvCol.pszText + _T(" , ");
}
else
{
sSql = sSql + lvCol.pszText + _T(" TEXT ) ");
strInsert = strInsert + lvCol.pszText + _T(" )  VALUES ( ");
}
}
//创建Excel表格文件
database.ExecuteSQL(sSql);
//循环提取记录并插入到EXCEL中
sSql = strInsert;
char chTemp[33];
for (j = 0; j<iRowCount; j++)
{
memset(chTemp,0,33);
for (i = 0; i<iColumnNum; i++)
{
m_list.GetItemText(j,i,chTemp,33);
if (i < (iColumnNum - 1))
{
sSql =  sSql + _T("'") + chTemp + _T("' , ");
}
else
{
sSql = sSql + _T("'") + chTemp + _T("' ) ");
}
}
//将记录插入到表格中
database.ExecuteSQL(sSql);
sSql = strInsert;
}
}
// 关闭Excel表格文件
database.Close();
AfxMessageBox(_T("保存查询结果为Excel文件成功!"));
}
CATCH_ALL(e)
{
//错误类型很多,根据需要进行报错。
AfxMessageBox(_T("Excel文件保存失败。"));
}
END_CATCH_ALL;
}

发现


显示有多个运算符“=”与这些操作数不匹配,解决方法:sSql是CString类型的,所以前面要加CString。即
CString  sSql =  sSql + _T("'") + chTemp + _T("' , ");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MFC
相关文章推荐