以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]无效的数据类型 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=151674) |
||||
-- 作者:绿火柴 -- 发布时间:2020/6/30 16:57:00 -- [求助]无效的数据类型 为什么用临时表,图表就出不来了呢? 错误图片如下. 图表代码如下: 问题应该是出在这两行上。 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 |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/30 17:13:00 -- 这些列不是数值列:http://www.foxtable.com/webhelp/topics/0968.htm |
||||
-- 作者:绿火柴 -- 发布时间:2020/6/30 17:19:00 -- 我用的是窗口控件的临时表。 那日期、日汇率,这两列如何处置呢?
|
||||
-- 作者:绿火柴 -- 发布时间:2020/6/30 17:50:00 -- 像 X 轴,我都已经明确指定为 日期 列了。 且在窗口加载时也设置了 If dc.name = "第一列" Then dc.DataCol.Caption = "日期" dc.DataCol.SetDateTimeFormat(DateTimeFormatEnum.Date) |
||||
-- 作者:绿火柴 -- 发布时间:2020/6/30 18:05:00 -- 主菜单中,点击 汇率查询,会弹出有问题的窗体的。
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/30 20:26:00 --
|
||||
-- 作者:绿火柴 -- 发布时间: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 |
||||
-- 作者:有点蓝 -- 发布时间: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
|
||||
-- 作者:绿火柴 -- 发布时间:2020/7/1 10:21:00 -- 这里的cr 是那来来的。 是上面的 nr 多谢了,我自己再调试下。
[此贴子已经被作者于2020/7/1 10:25:50编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/7/1 10:36:00 -- 是nr,手误 |