以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]优化代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=48675)

--  作者:易服
--  发布时间:2014/4/3 9:44:00
--  [求助]优化代码
Select Case e.DataCol.name
    Case "选择树种","实测胸径","实测树高"
        If e.DataRow.IsNull("选择树种") = False AndAlso e.DataRow.IsNull("实测胸径") = False AndAlso e.DataRow.IsNull("实测树高") = False Then
            Select e.DataRow("选择树种")
                Case "马尾松"
                    Dim fdr As DataRow = DataTables("形高值").find("胸径 = \'" & e.DataRow("实测胸径") & "\' and 树高 = \'" & e.DataRow("实测树高") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("单株材积") = fdr("材积")
                        e.DataRow("形高值") = fdr("形高")
                    End If
                Case "杉木"
                    e.DataRow("单株材积") = 0.000058777042 * e.DataRow("实测胸径") ^ 1.9699831 * e.DataRow("实测树高") ^ 0.89646157
                    e.DataRow("形高值") =12732.39545/e.DataRow("实测胸径")^2*e.DataRow("单株材积")
                    
                Case "阔叶树"
                    e.DataRow("单株材积") = 0.000050479055* e.DataRow("实测胸径") ^1.9085054* e.DataRow("实测树高") ^0.99076507
                    e.DataRow("形高值") =12732.39545/e.DataRow("实测胸径")^2*e.DataRow("单株材积")
                Case "国外松"
                    e.DataRow("单株材积") = 0.000086791543* e.DataRow("实测胸径") ^(1.6638000575+0.0094299757*( e.DataRow("实测胸径") +10* e.DataRow("实测树高") ))* e.DataRow("实测树高")^(0.9693404868-0.0292030826*( e.DataRow("实测胸径") +2.5* e.DataRow("实测树高") ))
                    e.DataRow("形高值") =12732.39545/e.DataRow("实测胸径")^2*e.DataRow("单株材积")
            End Select
        End If
End Select

If e.DataRow.IsNull("选择树种") = True OrElse e.DataRow.IsNull("实测胸径") = True OrElse e.DataRow.IsNull("实测树高") = True Then
    e.DataRow("形高值") =Nothing
    e.DataRow("胸高断面积") =Nothing
    e.DataRow("单株材积") =Nothing
    e.DataRow("公顷蓄积量") =Nothing
    e.DataRow("公顷株数") =Nothing
Else
    e.DataRow("胸高断面积")=3.14159265358/40000*e.DataRow("实测胸径")^2
    e.DataRow("公顷蓄积量")=e.DataRow("形高值")*e.DataRow("实测断面积")
    e.DataRow("公顷株数")=e.DataRow("公顷蓄积量")/e.DataRow("单株材积")
End If

--  作者:Bin
--  发布时间:2014/4/3 9:48:00
--  
这个代码,似乎也没什么可优化的了 单行执行不应该有效率问题吧
--  作者:易服
--  发布时间:2014/4/3 9:53:00
--  
效率是没问题,应该还可以精简一些