vb.net DataTable中数据的类型,如何使数据参与计算

weixin_45823259 2019-11-23 10:55:50
vb.net中如何利用DataTable中的数据进行计算



例如
If Cell(SimplyCell(i).NodeIndex).Type = "zsz" Then

ZszXH = GetZszIndex(Cell(SimplyCell(i).NodeIndex).Name)
H(i) = Zsz(ZszXH).ActGY * 102
C(i) = Zsz(ZszXH).ActQ '//-SimplyCell[i].SimplyNodeQ; '//-Zsz[ZszXH].ActZc;

代码中的 ActGY 就是我表格中的“实际站压(MPa)”
ActQ 就是我表格中的“实际站排量(m^3/d)”


计算的代码是写在了一个模块里
创建DataTable的代码是写在窗口类里
是否可以在计算模块中调用窗口类里面的数据?

谢谢各位啦!!!

...全文
673 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
水哥阿乐 2020-03-01
  • 打赏
  • 举报
回复
写个foreach循环把datatable读一下,在循环中取值并计算,效率比较高,要么建议采用weixin_45823259所说有方案.
轻鸿万里 2020-02-29
  • 打赏
  • 举报
回复
引用 楼主 weixin_45823259 的回复:
vb.net中如何利用DataTable中的数据进行计算



例如
If Cell(SimplyCell(i).NodeIndex).Type = "zsz" Then

ZszXH = GetZszIndex(Cell(SimplyCell(i).NodeIndex).Name)
H(i) = Zsz(ZszXH).ActGY * 102
C(i) = Zsz(ZszXH).ActQ '//-SimplyCell[i].SimplyNodeQ; '//-Zsz[ZszXH].ActZc;

代码中的 ActGY 就是我表格中的“实际站压(MPa)”
ActQ 就是我表格中的“实际站排量(m^3/d)”


计算的代码是写在了一个模块里
创建DataTable的代码是写在窗口类里
是否可以在计算模块中调用窗口类里面的数据?

谢谢各位啦!!!


首先包含datatable的窗体打开时不能new,而是直接调用窗体名称。form1.show
在窗体代码里定义一个公共类数据表,用来存储你的数据。其他模块计算需要调用这个窗体的数据表就直接调用行了。
qq_35503830 2020-01-10
  • 打赏
  • 举报
回复
用DataColumn.Expression来实现. 就是聚合列,跟Excel的公式用法一样.
Private Sub CalcColumns()
     Dim rate As Single = .0862
     Dim table As New DataTable()
 
     ' Create the first column.
     Dim priceColumn As New DataColumn()
     With priceColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "price"
         .DefaultValue = 50
     End With
     
     ' Create the second, calculated, column.
     Dim taxColumn As New DataColumn()
     With taxColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "tax"
         .Expression = "price * 0.0862"
     End With
     
    ' Create third column
     Dim totalColumn As New DataColumn()
     With totalColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "total"
         .Expression = "price + tax"
     End With
 
     ' Add columns to DataTable
     With table.Columns
         .Add(priceColumn)
         .Add(taxColumn)
         .Add(totalColumn)
     End With
    
     Dim row As DataRow= table.NewRow
     table.Rows.Add(row)
     Dim view As New DataView
     view.Table = table
     DataGrid1.DataSource = view
 End Sub
DataColumn.Expression 属性 (System.Data) | Microsoft Docs https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datacolumn.expression?view=netframework-4.8
VB业余爱好者 2019-11-25
  • 打赏
  • 举报
回复
把数值以参数的形式传递进去不就可以了?
weixin_45823259 2019-11-25
  • 打赏
  • 举报
回复
我是这样写的
Private Sub cmdDBInput_Click(sender As Object, e As EventArgs) Handles cmdDBInput.Click
、、、、、、
For i = 0 To ZszNum - 1
For j = 0 To topics.Tables(0).Rows.Count - 1
If t = topics.Tables(0).Rows(j).Item("RQ") Then
If topics.Tables(0).Rows(j).Item("ZM") = aa.Rows(i)(0) Then
aa.Rows(i)(1) = topics.Tables(0).Rows(j).Item("RCKSL")
aa.Rows(i)(2) = topics.Tables(0).Rows(j).Item("GY")
End If
End If
Next
Next
其中topics是我的数据源表格,aa是我提取所需数据建立的DataTable
这里的aa.Rows(i)(1)是我计算中的Zsz(i).ActQ
aa.Rows(i)(2)是我计算中的Zsz(i).ActGY
怎么以参数的形式传出去
良朋 2019-11-25
  • 打赏
  • 举报
回复
你的datatable有没有绑定数据源,如果绑定了,你要更新数据源,否则一刷新它又回去了。

是否可以在计算模块中调用窗口类里面的数据? 可以的,你把该控件的modifer属性改为Public就可以了, 比如Form1.DataTable1
eaqpi 2019-11-23
  • 打赏
  • 举报
回复
有时候,难以解决的不是问题,而是让人看不懂的题目表达方式.... 想用模块的计算方法来计算基面的值,将dataTable以byRef的方式传给计算代码即可!算完了,写入datatable,界面会自动变化,如果么有,刷新下也有了。

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧