【发布时间】:2014-12-11 17:02:16
【问题描述】:
我在英国学习 AS Level 的计算,我们使用的语言是 VB6。
我正在处理必须在 2014 年 12 月 18 日完成的任务。
该项目是针对跑步俱乐部需要软件来执行以下操作的假设情况: - 添加成员 - 查看会员 - 编辑会员信息 - 搜索会员 - 删除成员 - 为会员添加培训信息 - 查看培训信息 - 比较培训信息 - 根据训练小时数自动选择一组跑步者
这是我的问题表单代码:
Option Explicit
Private Sub CmdExitFromSelectTeam_Click()
Unload Me
End Sub
Private Sub SelectTeam()
Dim TrainingChannel As Integer
Dim Training As TrainingRecord
Dim MemberChannel As Integer
Dim Member As MemberRecord
Dim MemberRecordPointer As Integer
Dim TotalHoursTrained As Single
Dim TrainingRecordPointer As Integer
Dim FoundAtLeastOneRecord
FoundAtLeastOneRecord = False
MemberChannel = FreeFile
Open MemberFile For Random As MemberChannel Len = MemberLength
MemberRecordPointer = 1
Get MemberChannel, MemberRecordPointer, Member
Do While Not EOF(MemberChannel)
TotalHoursTrained = 0
TrainingRecordPointer = 1
TrainingChannel = FreeFile
Open TrainingFile For Random As TrainingChannel Len = TrainingLength
Get TrainingChannel, MemberRecordPointer, Training
Do While Not EOF(TrainingChannel)
If Member.ID = Training.MemberID Then
TotalHoursTrained = Round(TotalHoursTrained, 1) + Round(Training.TimeTaken, 1)
End If
TrainingRecordPointer = TrainingRecordPointer + 1 (*)
Get TrainingChannel, MemberRecordPointer, Training
Loop
Close TrainingChannel
LstTeamSelectDisplayTeam.AddItem TotalHoursTrained, 1
LstTeamSelectDisplayTeam.AddItem Member.ID, 2
LstTeamSelectDisplayTeam.AddItem Member.Forename, 3
LstTeamSelectDisplayTeam.AddItem Member.Surname, 4
MemberRecordPointer = MemberRecordPointer + 1
Get MemberChannel, MemberRecordPointer, Member
Loop
Close MemberChannel
End Sub
Private Sub Form_Load()
SelectTeam
End Sub
在运行时加载此表单 (FrmSelectTeam.frm) 时,标有 (*) 的行:突出显示为调试行。
我不知道问题出在哪里,我会很感激我能得到的所有帮助,所以提前谢谢!!!
詹姆斯
【问题讨论】:
-
你有多少条记录?尝试使用 long 而不是整数。
-
文件中有超过32768条记录吗?如果是这样,你已经达到了整数类型的限制。将
Dim TrainingRecordPointer As Integer更改为Dim TrainingRecordPointer As Long以将上限更改为 ~21 亿。 -
天哪...告诉你的导师停止使用 VB6 教学! 难以置信地摇头
-
另外一个用于如此清楚地提出问题并提供所有重要信息
-
很好的问题,也是初学者的常见问题。
标签: vb6 runtime-error overflow