以文本方式查看主题 - 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 -- 效率是没问题,应该还可以精简一些 |