Foxtable(狐表)用户栏目专家坐堂 → [求助] 项目连接SQL Server数据库出错(已解决)


  共有13110人关注过本帖树形打印复制链接

主题:[求助] 项目连接SQL Server数据库出错(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助] 项目连接SQL Server数据库出错(已解决)  发帖心情 Post By:2011/7/17 20:47:00 [只看该作者]

项目连接Access正常,但是连接SQL Server(2005和2008)时,在打开项目就出现错误提示,然后出现登录窗口,登录后,数据载入窗口的ComboBox控件没有数据,项目不能运行,不知道问题在哪里?
开始认为是数据库问题,所以重装SQL Server2005和SQL Server2008r2各一次,数据库安装过程都很正常,没有错误提示。新建库后,利用定向在新建的数据库里建新表,然后再用高速合并将数据导入SQL Server中新建的表中,在外部数据源设置窗口中也能预览到表的内容,按理说,SQL Server应该没有问题,所以将有关文件上传,请各位老师帮助在SQL Server上测试一下,看看问题到底出在哪里?谢谢!!

 

 


此主题相关图片如下:a.png
按此在新窗口浏览图片


 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目120.zip

[此贴子已经被作者于2011-7-20 6:50:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/17 21:14:00 [只看该作者]

SQL 语法错误:

 

SELECT * FROM (SELECT DISTINCT 报表年月 From {日报源表} ORDER BY 报表年月 DESC)

 

应该改为:

 

SELECT DISTINCT 报表年月 From {日报源表} ORDER BY 报表年月 DESC

 

其余类推。

 

 

另外遇到这种问题,可以看看以下章节的内容,以便定位错误代码所在的行。

http://www.foxtable.net/help/topics/1485.htm

 

我用上面的代码发现执行到下面这样代码的时候发生错误:

dmb.ComboList= dt.GetComboListString("报表年月","","报表年月 Desc")

 

那么肯定是dt出现问题,等于nothing,可能是SQL语句有误,为了验证,将下面的SQL语句复制到SQL执行窗口执行:

SELECT * FROM (SELECT DISTINCT 报表年月 From {日报源表} ORDER BY 报表年月 DESC)

会发现无法执行,至此就找出原因了。

 

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/19 12:59:00 [只看该作者]

谢谢狐爸老师的指教,已经解决大部分的问题,部分功能已经能够实现,但是,在点击任务栏窗口“按月分析”和“按年分析”两个节点时,出现错误提示(如下图),看上去像SQL语法问题,但是对SQL语法测试也可以通过,不知道问题出在那里?请各位老师帮助看看,谢谢!!
另外,觉得很纳闷,同样是外部资源,为什么用Access全部正常,而在SQL Server上却有问题?

 

 


图片点击可在新窗口打开查看此主题相关图片如下:a.jpg
图片点击可在新窗口打开查看

另附代码如下:

 

Case "按月分析"
    Dim sql As String
    If _UserGroup = "填报" Then '定义用户组
        sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工 FROM {日报源表} WHERE 单位 = '" & _UserName & "' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
    Else
        sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
    End If
    Dim b As New GroupTableBuilder("按月分析",sql,"SCGL")
    b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
    b.Groups.AddDef("日期", "月")
    b.Groups.AddDef("单位")
    b.Totals.AddDef("加工费")
    b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")
    b.SamePeriodGrowth = True
    b.CircleGrowth = True
    b.Build()
    MainTable = Tables("按月分析")
    Dim r As Table = Tables("按月分析")
    r.DataTable.DataCols.Add("月人均加工费", Gettype(Double),"iif(月均人数=0,null,加工费/月均人数)")
    DataTables("按月分析").DataCols("加工费").SetFormat("0.00")
    DataTables("按月分析").DataCols("月均人数").SetFormat("0.00")
    DataTables("按月分析").DataCols("月人均加工费").SetFormat("0.00")
    Tables("按月分析").Cols("年").TextAlign = TextAlignEnum.Center
    Tables("按月分析").Cols("月").TextAlign = TextAlignEnum.Center
    Tables("按月分析").Cols("单位").TextAlign = TextAlignEnum.Center
    Tables("按月分析").AutoSizeCols()
Case "按年分析"
    Dim sql As String
    If _UserGroup = "填报" Then '定义用户组
        sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工 FROM {日报源表} WHERE 单位 = '" & _UserName & "' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
    Else
        sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
    End If
    Dim b As New GroupTableBuilder("按年分析",sql,"SCGL")
    b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
    b.Groups.AddDef("单位")
    b.Totals.AddDef("加工费")
    b.Totals.AddDef("投工",AggregateEnum.Average,"年均人数")
    b.CircleGrowth = True
    b.Build()
    MainTable = Tables("按年分析")
    Dim r As Table = Tables("按年分析")
    r.DataTable.DataCols.Add("年人均加工费", Gettype(Double),"iif(年均人数=0,null,加工费/年均人数)")
    DataTables("按年分析").DataCols("加工费").SetFormat("0.00")
    DataTables("按年分析").DataCols("年均人数").SetFormat("0.00")
    DataTables("按年分析").DataCols("年人均加工费").SetFormat("0.00")
    Tables("按年分析").Cols("年").TextAlign = TextAlignEnum.Center
    Tables("按年分析").Cols("单位").TextAlign = TextAlignEnum.Center
    Tables("按年分析").AutoSizeCols()


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/19 14:33:00 [只看该作者]

order by 必须配合top语句使用。

既然没有top语句,请删除order by语句。

Access和SQL Server对于sql的语法要求是不一样的,一个报错,一个不报错,是正常的。


 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/20 6:49:00 [只看该作者]

谢谢狐爸老师的指教。考虑到排序要求,在狐爸老师的提示下,在代码中加了top语句,使该段代码在SQL Server2005环境下正常运转,达到预期效果。再次感谢狐爸老师的热情帮助。

 

 sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"


 回到顶部