有这样一个界面,有四个标签,分别为“姓名”、“单位”、“年龄”、“工资”
每个标签下都有一个文本框来显示标签指定的内容。有四个命令按钮,分别为“建立文件”、“打开文件”、“前一个记录”、“下一个记录”、“退出”。编程如下:定义记录类型变量:
Type inf
 nam As String * 3
 unit As String * 4
 age As Integer
 salary As Integer
End Type
在窗体层定义 p as inf编写“建立文件”代码:
Private Sub Command1_Click()
Open "d:\wj.txt" For Random As #1 Len = Len(p)
begin:
p.nam = InputBox$("职工姓名")
p.unit = InputBox$("职工单位")
p.age = InputBox$("职工年龄")
p.salary = InputBox$("职工工资")
Put #1, , p
q = InputBox$("是否继续输入(Y/N)?")
If q = UCase("y") Then
GoTo begin
Else
Exit Sub
End If
End Sub
编写“打开文件”代码
Private Sub Command2_Click()
Static n As Integer
n = 1
Get #1, n, p
Text1.Text = p.nam
Text2.Text = p.unit
Text3.Text = p.age
Text4.Text = p.salary
End Sub
编写“下一个记录”代码
Private Sub Command3_Click()
If EOF(1) = True Then
MsgBox "已经是最后一个记录"
Else
Get #1, n + 1, p
Text1.Text = p.nam
Text2.Text = p.unit
Text3.Text = p.age
Text4.Text = p.salary
End If
End Sub
编写“前一个记录”代码
Private Sub Command4_Click()
If n = 1 Then
MsgBox "已经是第一个记录"
Else
Get #1, n - 1, p
Text1.Text = p.nam
Text2.Text = p.unit
Text3.Text = p.age
Text4.Text = p.salary
End If
End Sub退出代码
Private Sub Command6_Click()
End
End Sub建立文件,打开文件都没有问题,只是前一个记录,下一个记录的功能不能实现,点击下一个记录没有反应,前一个记录提示“记录号错误”。实在不明白了。大家邦我看看,尽量在我的基础上不要改的太多,谢谢。
还有我用随机方式打开文件,文件是一个记事本(*.txt),向文件中写入记录,为何写入进去的内容是乱码?

解决方案 »

  1.   

    从代码中看来你是用N做计数的。
    1、你的N要定义成全局变量
    2、在“下一个记录“、“前一个记录”操作里面你并没有改变N的值
      

  2.   

    你将n定义成Static是错误的,Static只是保持变量的值,但是变量的作用范围并不会改变,就是说上面的代码中你在 Private Sub Command2_Click() 中定义的 Static n As Integer 别的过程是看不到的,你可以做一下下面的实验:Private Sub Command1_Click()
        Static n As Integer
        
        n = 4
    End SubPrivate Sub Command2_Click()
        n = n + 1
        Debug.Print n
    End Sub点击command1可以将静态变量n设置为4,然后你点击command2,看看打印出来的n值是5还是1。
      

  3.   

    还有我用随机方式打开文件,文件是一个记事本(*.txt),向文件中写入记录,为何写入进去的内容是乱码?邦我解答这个问题吧
      

  4.   

    我刚才试了一下,将static n as integer去掉,在标准模块中定义了public n as integer向文件中写入三条记录,单击“下一个记录”,只显示了前两条,总之功能还是不能正确实现救命啊!!!!!!!!!!!!!!!