Foxtable(狐表)用户栏目专家坐堂 → [求助]无效的数据类型


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

主题:[求助]无效的数据类型

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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
[求助]无效的数据类型  发帖心情 Post By:2020/6/30 16:57:00 [只看该作者]

为什么用临时表,图表就出不来了呢? 错误图片如下.

图片点击可在新窗口打开查看此主题相关图片如下:无效的数据类型.png
图片点击可在新窗口打开查看

图表代码如下:
问题应该是出在这两行上。
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
'Dim tb As Table = Tables("平均汇率_table1") '定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = tb.Rows.Count '图系的数据点数等于表的行数
For p As Integer = 0 To tb.Rows.Count - 1 '指定每个数据点的位置
    Series.X(p) = tb.Rows(p)("第一列") '指定水平坐标
    Series.Y(p) = tb.Rows(p)("第二列") '指定垂直坐标
Next
Chart.AxisX.DateType = True '明确指定X轴是日期型
Chart.AxisX.AnnoFormatString = "yyyy-MM-dd" '指定日期标示格式
'Chart.AxisX.AnnoRotation = - 90 'X轴标示逆时针旋转45度
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Series.MarkShape = MarkShapeEnum.Dot
Series.DataLabelText = "{#YVAL}"
Series.DataLabelCompass = LabelCompassEnum.North


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


加好友 发短信
等级:超级版主 帖子:52978 积分:268533 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/30 17:13:00 [只看该作者]


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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/6/30 17:19:00 [只看该作者]

我用的是窗口控件的临时表。
那日期、日汇率,这两列如何处置呢?

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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/6/30 17:50:00 [只看该作者]

像 X 轴,我都已经明确指定为 日期 列了。
且在窗口加载时也设置了
    If dc.name = "第一列" Then
        dc.DataCol.Caption = "日期"
        dc.DataCol.SetDateTimeFormat(DateTimeFormatEnum.Date)

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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/6/30 18:05:00 [只看该作者]

主菜单中,点击 汇率查询,会弹出有问题的窗体的。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汇率管理.rar


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


加好友 发短信
等级:超级版主 帖子:52978 积分:268533 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/30 20:26:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汇率管理.zip


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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/7/1 9:43:00 [只看该作者]

多谢蓝版,接着问,这一条查询代码,能再优化吗?
现在是,每取一次都要从后台查找一次。我觉得应该依据起止日期取出这个日期段的集合,然后再在这个集合中查询取值。
不晓得代码,怎么写合适,请蓝版本帮忙下,修改下代码。
集合的代码我会写的,如下:
Dim dtk As DataTable =  DataTables("汇率库")
dtk.Select("日期 >= #" & dp1.Value & "# and 日期 <= #" & dp2.Value & "#")

下面这段再怎么优化下,请帮忙!!!
'填充查找期间的日期值,并查找对应汇率,未找到的则等于上一行的汇率值-----------------↓
For k As Integer = 0 To t.TotalDays
    Dim dr As DataRow = tb.DataTable.DataRows(k)
    If k = 0 Then
        dr("日期") = dp1.Value
    Else
        dr("日期") = dp1.Value.AddDays(k)
    End If
    Dim drk As DataRow = dtk.SQLFind("日期 = #" & dr("日期") & "#")  '查找后台汇率值
    If drk IsNot Nothing Then
        dr("日汇率") = drk(cb1.Value)
    Else
        If k > 0 Then
            Dim pr As DataRow = tb.DataTable.DataRows(k-1) '取上一行汇率值
            If pr("日汇率") > 0 Then
                dr("日汇率") = pr("日汇率")
            End If
        End If
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:52978 积分:268533 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/1 10:00:00 [只看该作者]

Dim dtk As DataTable =  DataTables("汇率库")
Dim drs As List(Of DataRow) = dtk.SQLSelect("日期 >= #" & dp1.Value & "# and 日期 <= #" & dp2.Value & "#",,“日期”)
for each nr as datarow in drs
Dim dr As DataRow = tb.DataTable.addnew
dr("日期") = cr("日期")
dr("日汇率") = cr("日汇率")
next

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


加好友 发短信
等级:童狐 帖子:274 积分:1952 威望:0 精华:0 注册:2014/3/4 21:20:00
  发帖心情 Post By:2020/7/1 10:21:00 [只看该作者]

这里的cr 是那来来的。

是上面的 nr  

多谢了,我自己再调试下。
[此贴子已经被作者于2020/7/1 10:25:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:52978 积分:268533 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/1 10:36:00 [只看该作者]

是nr,手误

 回到顶部
总数 15 1 2 下一页