try
{
  CrystalReport1  partr = new CrystalReport1();
  string conn = "workstation id=E304BFF64FEC440;packet size=4096;integrated  security=SSPI;initial " +"catalog=CarMSys;persist security info=False;";
SqlConnection cn = new SqlConnection(conn);
  cn.Open();
  string sql = "select Z4.ipri, Z4.iname_part,jprofit = (sum(Z3.hnum_part) * (Z4.ipri - Z4.icost) ), sum(Z3.hnum_part)"+"from Z3,Z4"+"where (Z3.hdate_f between '"+startt+"' and '"+endt+"')";
SqlDataAdapter da =new SqlDataAdapter(sql,cn);
DataSet ds = new DataSet();
da.Fill(ds);
partr.SetDataSource(ds.Tables[0]);
crystalReportViewer1.ReportSource = partr;
}
catch(SqlException err)
{
MessageBox.Show(err.Message);
}为什么输出怎么样的错误啦{"第 1 行: '.' 附近有语法错误。" }

解决方案 »

  1.   

    有查询分析器执行一下你的SQL语句,看是否有错误
      

  2.   

    select Z4.ipri, Z4.iname_part,jprofit 中的 Z4.ipri这个错误了...[Z4.ipri]这么写..
      

  3.   

    可能是sql得问题,你用查询分析器看看,
    若是联合查询建议:
    select * from Table1 A
    inner join Table2 B
        on A.公共字段 = B.公共字段
      

  4.   

    string sql = "select Z4.ipri, Z4.iname_part,jprofit = (sum(Z3.hnum_part) * (Z4.ipri - Z4.icost) ), sum(Z3.hnum_part)"+"这个地方要有个空格from Z3,Z4"+"这个地方要有个空格where (Z3.hdate_f between '"+startt+"' and '"+endt+"')";再看看还有什么地方需要空格的
      

  5.   

    总之你监视一下你的sql变量,看看他最后是什么内容然后再查询分析器里执行一下看看
      

  6.   

    查询分析在家上where Z3.hdate_f between '"+startt+"' and '"+endt+"'
    服务器: 消息 241,级别 16,状态 1,行 1 
    就输出从字符串转换为 datetime 时发生语法错误。
    没加就很正常
      

  7.   

    "select Z4.ipri, Z4.iname_part,jprofit = (sum(Z3.hnum_part) * (Z4.ipri - Z4.icost) ), sum(Z3.hnum_part)"
    +"from Z3,Z4"
    +"where (Z3.hdate_f between '"+startt+"' and '"+endt+"')"
    +"group by (float)Z4.ipri,(float)Z4.iname_part,(float)Z4.icost";by后面有什么错误?
    ipri icost是float型
    iname_part是char型
      

  8.   

    我也遇到过,好象是vs2003的bug,我在.之前随便谢了个字符,就对了???!!!
      

  9.   

    group by Z4.ipri,Z4.iname_part,Z4.icost
      

  10.   

    +"group by (float)Z4.ipri,(float)Z4.iname_part,(float)Z4.icost";
    sql不是c#,不能用这样的类型进行转换,去掉(float)
      

  11.   

    在sql里强制转换使用Convert(类型,字段名)