以下是我写的抽奖系统中的生成中奖人员名单的文本功能。但是出现的情况时,当存在“中奖人员名单.txt”时,生成的文本数据不更新。必须将程序退出后再生成,才会更新。烦请帮忙检查是什么原因。谢谢!
Private Sub mnuTxt_Click()Dim i As IntegerIf Dir(App.Path & "\中奖人员名单.txt") <> "" Then
  Kill App.Path & "\中奖人员名单.txt"  For i = 0 To FrmSelect.List1.ListCount - 1   Open App.Path & "\中奖人员名单.txt" For Append As #1
   Print #1, FrmSelect.List1.List(i)  'FrmSelect.List1是显示中奖人员名单
   Close #1
  Next
Else For i = 0 To FrmSelect.List1.ListCount - 1
  Open App.Path & "\中奖人员名单.txt" For Append As #1
  Print #1, FrmSelect.List1.List(i)
  Close #1
 Next
End If
End Sub

解决方案 »

  1.   

    代码没问题,你需要看下别的原因,或者你把 #1改成 nFreeNum试试Dim i As Integer
    Dim nFreeNum As LongnFreeNum = FreeFileIf Dir(App.Path & "\中奖人员名单.txt") <> "" Then
      Kill App.Path & "\中奖人员名单.txt"  For i = 0 To List1.ListCount - 1   Open App.Path & "\中奖人员名单.txt" For Append As #nFreeNum
       Print #nFreeNum, List1.List(i)  'FrmSelect.List1是显示中奖人员名单
       Close #nFreeNum
      Next
    Else For i = 0 To List1.ListCount - 1
      Open App.Path & "\中奖人员名单.txt" For Append As #nFreeNum
      Print #nFreeNum, List1.List(i)
      Close #nFreeNum
     Next
    End If
      

  2.   


    Option ExplicitPrivate Sub Command1_Click()
        Dim i As Integer
        Dim intFileNum As Integer
        
        If Dir(App.Path & "\中奖人员名单.txt") <> "" Then
            Kill App.Path & "\中奖人员名单.txt"
            For i = 0 To FrmSelect.List1.ListCount - 1
                intFileNum = FreeFile
                Open App.Path & "\中奖人员名单.txt" For Append As #intFileNum
                Print #intFileNum, FrmSelect.List1.List(i)  'FrmSelect.List1是显示中奖人员名单
                Close #intFileNum
            Next
        Else
            For i = 0 To FrmSelect.List1.ListCount - 1
                intFileNum = FreeFile
                Open App.Path & "\中奖人员名单.txt" For Append As #intFileNum
                Print #intFileNum, FrmSelect.List1.List(i)
                Close #intFileNum
            Next
        End IfEnd Sub
      

  3.   

    好像都不行。我FrmSelect.List1里面是能正常更新数据。
      

  4.   

    简单也就是说,在程序运行中,只能有效的执行一次生成中奖人员名单.txt ,程序未退出时,进行第二次或第二次以上的操作的话,中奖人员名单.txt中的记录仍是第一次生成的。
      

  5.   

    读写文件有问题呗
    第二次启动时把以前的Kill掉,然后再新建一个
      

  6.   

    Private Sub mnuTxt_Click()
        Dim i As Integer
        For i = 0 To FrmSelect.List1.ListCount - 1
            Open App.Path & "\中奖人员名单.txt" For Output As #1
                Print #1, FrmSelect.List1.List(i)  'FrmSelect.List1是显示中奖人员名单
            Close #1
        Next
    End Sub
      

  7.   

    循环放文本操作内:
    Private Sub mnuTxt_Click()
        Dim i As Integer
        Open App.Path & "\中奖人员名单.txt" For Output As #1
            For i = 0 To FrmSelect.List1.ListCount - 1
                Print #1, FrmSelect.List1.List(i)  'FrmSelect.List1是显示中奖人员名单
            Next
        Close #1
    End Sub
      

  8.   

    LZ的FrmSelect窗体难道是模式窗体.
      

  9.   

    问题没看懂不过你的代码有死代码,else 后半段最多执行一次。
      

  10.   

    不是模式窗体啊。
    我现在的问题是,在程序运行中,只能有效的执行一次生成中奖人员名单.txt ,程序未退出时,进行第二次或第二次以上的上述操作的话,中奖人员名单.txt中的记录仍是第一次生成的。
    如果存在“中奖人员名单.txt”时,程序是能将它kill,重新生成的。但是记录不能随FrmSelect窗体中的list1的记录进行更新。
      

  11.   

    写文件的循环中加句
    DoEvents或者将mnuTxt_Click中的代码放Timer计时器中执行。似乎单次按钮事件中代码未执行完,VB程序它处有变动是不会执行的。
      

  12.   


    但是第一次执行mnuTxt_Click是肯定没问题的哦。数据是更新过来的。
      

  13.   

    不管是否存在“中奖人员名单.txt”,在程序运行时,第一次执行mnuTxt_Click都是正常的。第二次就不行了。除非关闭程序后再次运行。
      

  14.   

    如果LZ的代码其它地方无BUG,只要mnuTxt_Click事件发生时,之前的变更是没理由不执行的.
      

  15.   

    FrmSelect.List1.ListCount在程序未退出时,一直都是显示第一次操作mnuTxt_Click时FrmSelect.List1.ListCount的个数。