求助!变量为何无法赋值?

colorfullily1979 2003-07-05 11:44:20
一小程序总是无法正常计算,调试发现是字段的值未能赋给变量,但是没有出错信息,请教大虾,问题出在哪里呢?程序代码如下:
Sub HIGH1()
rs_VMT.MoveFirst
rs_Realratio.MoveFirst
rs_EF.MoveFirst

Do While Not rs_VMT.EOF

case_vmt = rs_VMT.Fields("Case")
year_vmt = rs_VMT.Fields("Year").value
area_vmt = rs_VMT.Fields("Area").value
vmt = rs_VMT.Fields("VMT").value
speed_vmt = rs_VMT.Fields("Speed").value
变量case_vmt等可以成功得字段值
If case_vmt = "high1" Then


rs_EF.Filter = "year = '" & year_vmt & "' and speed = '" & speed_vmt & "'"
Do While Not rs_EF.EOF
以下的变量COEF等无法获得字段值,全部为0
COEF = rs_EF.Fields("CO_EF").value
HCEF = rs_EF.Fields("HC_EF").value
NOxEF = rs_EF.Fields("NOx_EF").value
PMEF = rs_EF.Fields("PM_EF").value
If rs_EF.Fields("Mobiletype") = "LDGV" Then
LDGV_COEF = COEF
LDGV_HCEF = HCEF
LDGV_NOxEF = NOxEF
LDGV_PMEF = PMEF
ElseIf rs_EF.Fields("Mobiletype") = "LDGT*" Then
LDGT_COEF = COEF
LDGT_HCEF = HCEF
LDGT_NOxEF = NOxEF
LDGT_PMEF = PMEF

End If

rs_EF.MoveNext
Loop


If OptArea1.value = True Then
rs_Realratio.Filter = "year = '" & year_vmt & "' and case = 'high1'and Area_ID = '1'"
End If
If OptArea2.value = True Then
rs_Realratio.Filter = "year = '" & year_vmt & "' and case = 'high1'and Area_ID = '2'"
End If
以下变量LDGV_ratio等也无法获得字段的值。
LDGV_ratio = rs_Realratio.Fields("LDGV").value

LDGT_ratio = rs_Realratio.Fields("LDGT").value

rs_Realratio.MoveNext


'计算区域排放总量
total_emission_CO_LDGV = vmt * LDGV_ratio * LDGV_COEF
total_emission_CO_LDGT = vmt * LDGT_ratio * LDGT_COEF

total_emission_HC_LDGV = vmt * LDGV_ratio * LDGV_HCEF
total_emission_HC_LDGT = vmt * LDGT_ratio * LDGT_HCEF

total_emission_NOx_LDGV = vmt * LDGV_ratio * LDGV_NOxEF
total_emission_NOx_LDGT = vmt * LDGT_ratio * LDGT_NOxEF

total_emission_PM_LDGV = vmt * LDGV_ratio * LDGV_PMEF
total_emission_PM_LDGT = vmt * LDGT_ratio * LDGT_PMEF

' 将计算结果写入Total_emission表
计算结果无法写入表rs_totalemission
rs_totalemission.AddNew

rs_totalemission.Fields("case") = case_vmt
rs_totalemission.Fields("year") = year_vmt
If OptArea1.value = True Then
rs_totalemission.Fields("area") = 1
ElseIf OptArea2.value = True Then
rs_totalemission.Fields("area") = 2

End If

rs_totalemission.Fields("Mobiletype") = "LDGV"
rs_totalemission.Fields("CO") = total_emission_CO_LDGV
rs_totalemission.Fields("NOx") = total_emission_NOx_LDGV
rs_totalemission.Fields("NMHC") = total_emission_HC_LDGV
rs_totalemission.Fields("PM") = total_emission_PM_LDGV

rs_totalemission.AddNew
rs_totalemission.Fields("case") = case_vmt
rs_totalemission.Fields("year") = year_vmt
If OptArea1.value = True Then
rs_totalemission.Fields("area") = 1
ElseIf OptArea2.value = True Then
rs_totalemission.Fields("area") = 2
End If

rs_totalemission.Fields("Mobiletype") = "LDGT"
rs_totalemission.Fields("CO") = total_emission_CO_LDGT
rs_totalemission.Fields("NOx") = total_emission_NOx_LDGT
rs_totalemission.Fields("NMHC") = total_emission_HC_LDGT
rs_totalemission.Fields("PM") = total_emission_PM_LDGT


rs_totalemission.Update

Else
rs_VMT.MoveNext
End If

Loop
MsgBox "Complete!"
End Sub

请教以上问题究竟出在哪里呢?我非常着急,希望大虾花点时间看一看,谢谢!





...全文
185 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
colorfullily1979 2003-07-07
  • 打赏
  • 举报
回复

问题解决了,是字段大小写没注意到。谢谢楼上朋友们的帮助!
zxlkxy 2003-07-05
  • 打赏
  • 举报
回复
断点设置到 COEF = rs_EF.Fields("CO_EF").value 这条语句的rs_EF.Fields("CO_EF").value 是否有值?
colorfullily1979 2003-07-05
  • 打赏
  • 举报
回复
已经设置过滤了,怎么可能还有对应的记录呢?我在这一循环后面加了一条语句:
Set rs_EF.Filter = adFilterNone
使其进入第二个循环重新过滤,可是还是不成功。
很着急,再请各位大虾帮忙找找bug.谢谢!
yzx99 2003-07-05
  • 打赏
  • 举报
回复
rs_EF.Filter = "year = '" & year_vmt & "' and speed = '" & speed_vmt & "'"
Do While Not rs_EF.EOF
设置过滤后,是否还有对应的记录
或者说,程序执行到第二个循环里面了吗
colorfullily1979 2003-07-05
  • 打赏
  • 举报
回复
rs_EF.fields("CO").value是有值的,但是COEF没有值,现在发现
rs_EF.Filter = "year = '" & year_vmt & "' and speed = '" & speed_vmt & "'"
这条语句居然没有筛选出相应纪录,不知道问题在哪里呢?既然筛选出纪录,后面的 rs_EF.fields("CO").value为何有值?

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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