不好意思,我做成工程了,那样能让各位比较直观的理解我的想法,
麻烦各位在QQ群61910680里下了看看,再把解决方法发到这里,或
者把邮箱给我,我发过去,Sorry。

解决方案 »

  1.   

    你的问题的本质就是两个窗口互相访问
    只要能访问了,用MainFrm.ListView1的某个值 改变   LogoFrm.ProgressBar1 某个值 不就很容易吗
      

  2.   

    MDI窗体代码Private Sub MDIForm_Load()End Sub窗体A代码Dim i As IntegerPrivate Sub Form_Load()
      i = 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Set LogoFrm = Nothing
    End SubPrivate Sub Timer1_Timer()
      i = i + 1
      ProgressBar1.Value = i
      If i > 99 Then
        Unload Me
        Load LoginFrm
        LoginFrm.Show 1
      End If
    End Sub窗体B代码Dim addlist As ListItem
    Dim instance As ListView
    Dim i As IntegerPrivate Sub Form_Load()
      Me.Left = (MDIMainFrm.ScaleWidth - Me.Width) / 2
      Me.Top = (MDIMainFrm.ScaleHeight - Me.Height) / 2
      CstLv.ColumnHeaderIcons = ImageList1
      CstLv.ColumnHeaders(1).Icon = 1
      sql = "select CstID,CstName,CstTel,CstAddr,CstPYCode,CstMngor,CstMngorTel,CstMngorPY," _
          & "CstPrice,CstMny,CstInure,CstType,CstArea,OpData,CstOptor,Rmk from CstInfo"
      Call addInfo
    End SubPublic Sub addInfo()
      Call OpenConn
        rs.Open sql, cn, 1, 1
      Do While Not rs.EOF
        Select Case rs.Fields("CstType")
          Case "有约大户机关"
            Lvico = 2
          Case "无约一般散户"
            Lvico = 3
          Case "知名人士"
            Lvico = 4
          Case "政界要人"
            Lvico = 5
        End Select    Set addlv = CstLv.ListItems.Add(, , rs.Fields("CstID"), , Lvico)
          addlv.SubItems(1) = rs.Fields("CstName")
          addlv.SubItems(2) = rs.Fields("CstTel")
          addlv.SubItems(3) = rs.Fields("CstAddr")
          addlv.SubItems(4) = rs.Fields("CstMngor")
          addlv.SubItems(5) = rs.Fields("CstMngorTel")
          addlv.SubItems(6) = rs.Fields("CstPrice")
          addlv.SubItems(7) = rs.Fields("CstMny")
          addlv.SubItems(8) = rs.Fields("CstInure")
          addlv.SubItems(9) = rs.Fields("CstType")
          addlv.SubItems(10) = rs.Fields("CstArea")
          addlv.SubItems(11) = rs.Fields("OpData")
          addlv.SubItems(12) = rs.Fields("Rmk")
          rs.MoveNext
      Loop
      Call CloseConn
    End Sub窗体C代码Private Sub LoginCmd_Click()
      Call OpenConn
        sql = "select * from UserID where Uname='" & UIDComb.Text & "'"
        rs.Open sql, cn, 1, 1
      If convert(PassComb.Text) = IIf(Trim(IsNull(rs.Fields("Upass"))), "", _
         convert(Trim(rs.Fields("Upass")))) Then
         Optor = rs.Fields("Uname")
         Branch = rs.Fields("Bran")
         Power = rs.Fields("Power")
      Call CloseConn
      Unload Me
      MainFrm.Visible = True
      Else
        MsgBox "密码错误!", 48, "错误提示"
        PassComb.SetFocus
        Exit Sub
      End If 
    End Sub
      

  3.   

    ProgressBar1.max=100
    ProgressBar1.min=0
    '窗体A代码 
    Private Sub Timer1_Timer()
    ProgressBar1.Value = (Rs.AbsolutePosition /Rs.RecordCount)*100      '假如Rs是 Module 中定义的变量
    'ProgressBar1.Value = (FormB.Rs.AbsolutePosition /FormB.Rs.RecordCount)*100 '假如Rs是窗体B 中定义的变量
    'Rs.AbsolutePosition /Rs.RecordCount    记录集的当前记录除以记录集的所有记录 得到已打开的记录比例
    End Sub
      

  4.   

    ProgressBar1.max=100 
    ProgressBar1.min=0 
    '窗体A代码 
    Private Sub Timer1_Timer() 
            ProgressBar1.Value = (Rs.AbsolutePosition /Rs.RecordCount)*100   '假如Rs是 Module 中定义的变量 
             'ProgressBar1.Value = (FormB.Rs.AbsolutePosition /FormB.Rs.RecordCount)*100 '假如Rs是窗体B 中定义的变量 
             'Rs.AbsolutePosition /Rs.RecordCount    记录集的当前记录除以记录集的所有记录 得到已打开的记录比例 
    End Sub 
      

  5.   

    MainFrm的代码Dim addlist As ListItem
    Dim instance As ListView
    Dim i As IntegerPrivate Sub Form_Load()
      Me.Left = (MDIMainFrm.ScaleWidth - Me.Width) / 2
      Me.Top = (MDIMainFrm.ScaleHeight - Me.Height) / 2
      CstLv.ColumnHeaderIcons = ImageList1
      CstLv.ColumnHeaders(1).Icon = 1
      sql = "select CstID,CstName,CstTel,CstAddr,CstPYCode,CstMngor,CstMngorTel,CstMngorPY," _
          & "CstPrice,CstMny,CstInure,CstType,CstArea,OpData,CstOptor,Rmk from CstInfo"
      Call addInfo
    End SubPublic Sub addInfo()
      Call OpenConn
        rs.Open sql, cn, 1, 1
      Do While Not rs.EOF
        LogoFrm.intC = LogoFrm.intC + 1    '要在这里加才能使进度条和程序进程挂钩
        DoEvents           '使timer能够触发
        
        Select Case rs.Fields("CstType")
          Case "有约大户机关"
            Lvico = 2
          Case "无约一般散户"
            Lvico = 3
          Case "知名人士"
            Lvico = 4
          Case "政界要人"
            Lvico = 5
        End Select    Set addlv = CstLv.ListItems.Add(, , rs.Fields("CstID"), , Lvico)
          addlv.SubItems(1) = rs.Fields("CstName")
          addlv.SubItems(2) = rs.Fields("CstTel")
          addlv.SubItems(3) = rs.Fields("CstAddr")
          addlv.SubItems(4) = rs.Fields("CstMngor")
          addlv.SubItems(5) = rs.Fields("CstMngorTel")
          addlv.SubItems(6) = rs.Fields("CstPrice")
          addlv.SubItems(7) = rs.Fields("CstMny")
          addlv.SubItems(8) = rs.Fields("CstInure")
          addlv.SubItems(9) = rs.Fields("CstType")
          addlv.SubItems(10) = rs.Fields("CstArea")
          addlv.SubItems(11) = rs.Fields("OpData")
          addlv.SubItems(12) = rs.Fields("Rmk")
          rs.MoveNext
      
      Loop
      Call CloseConn
    End SubLogoFrm的代码
    Public intC As Integer     '定义public类型,使MainFrm窗体可以使用Private Sub Form_Load()
      intc = 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Set LogoFrm = Nothing
    End SubPrivate Sub Timer1_Timer()
       'i=i+1          取消
      ProgressBar1.Value = intC
      If intC > 99 Then
        timer1.Enabled = False         '应禁止timer1再触发
        Load LoginFrm
        LoginFrm.Show 1
        Unload Me           '应当最后卸载
      End If
    End Sub
      

  6.   

    MainFrm的代码 
    Dim addlist As ListItem
    Dim instance As ListView
    Dim i As IntegerPrivate Sub Form_Load()
      Me.Left = (MDIMainFrm.ScaleWidth - Me.Width) / 2
      Me.Top = (MDIMainFrm.ScaleHeight - Me.Height) / 2
      CstLv.ColumnHeaderIcons = ImageList1
      CstLv.ColumnHeaders(1).Icon = 1
      sql = "select CstID,CstName,CstTel,CstAddr,CstPYCode,CstMngor,CstMngorTel,CstMngorPY," _
          & "CstPrice,CstMny,CstInure,CstType,CstArea,OpData,CstOptor,Rmk from CstInfo"
      Call addInfo
    End SubPublic Sub addInfo()
      Call OpenConn
        rs.Open sql, cn, 1, 1
      Do While Not rs.EOF
    LogoFrm.intC = LogoFrm.intC + 1    '要在这里加才能使进度条和程序进程挂钩
        DoEvents           '使timer能够触发   
        Select Case rs.Fields("CstType")
          Case "有约大户机关"
            Lvico = 2
          Case "无约一般散户"
            Lvico = 3
          Case "知名人士"
            Lvico = 4
          Case "政界要人"
            Lvico = 5
        End Select    Set addlv = CstLv.ListItems.Add(, , rs.Fields("CstID"), , Lvico)
          addlv.SubItems(1) = rs.Fields("CstName")
          addlv.SubItems(2) = rs.Fields("CstTel")
          addlv.SubItems(3) = rs.Fields("CstAddr")
          addlv.SubItems(4) = rs.Fields("CstMngor")
          addlv.SubItems(5) = rs.Fields("CstMngorTel")
          addlv.SubItems(6) = rs.Fields("CstPrice")
          addlv.SubItems(7) = rs.Fields("CstMny")
          addlv.SubItems(8) = rs.Fields("CstInure")
          addlv.SubItems(9) = rs.Fields("CstType")
          addlv.SubItems(10) = rs.Fields("CstArea")
          addlv.SubItems(11) = rs.Fields("OpData")
          addlv.SubItems(12) = rs.Fields("Rmk")
          rs.MoveNext
      
      Loop
      Call CloseConn
    End Sub
    LogoFrm的代码 Public intC As Integer     '定义public类型,使MainFrm窗体可以使用Private Sub Form_Load()
      intc = 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Set LogoFrm = Nothing
    End SubPrivate Sub Timer1_Timer()
       'i=i+1          取消
      ProgressBar1.Value = intC
      If intC > 99 Then
        timer1.Enabled = False         '应禁止timer1再触发
        Load LoginFrm
        LoginFrm.Show 1
        Unload Me           '应当最后卸载
      End If
    End Sub
      

  7.   

    lz的代码好像还有问题,但没有整个工程调试不容易,好像白天很难看到lz。
    email [email protected]
    qq 940965619
      

  8.   

    简单实现的基本流程:
    MDI做为启动窗体,在MDI的load事件中:
    formB.hide
    fromA.show
    fromA条进度和formB添加数据都在这儿写
    数据添加完成后
    unload formA    卸载A窗体
    formC.show    显示登录窗体这样formB是始终隐藏的,直到formC登录成功再formB.show.......
      

  9.   

    我看你的程序,本质就是窗体间对象的互相访问
    因为加载数据库数据需要比较长的时间,显示数据库数据的窗口暂时需要隐藏,
    数据库数据加载的进度必须通过另一个窗口的进度条显示出来这就存在两个窗口间数据的访问问题
    Form1.Ctrl.val=Form2.Ctrl.Val    ’在控件前加窗体名就可以了 
    Form1.Var=Form2.Var              ’在变量前加窗体名就可以了 
      

  10.   

    加分,请各位老师给个详细实现过程,我现在看见ProgressBar都想吐了
      

  11.   


    '设置从MDI启动:Private Sub MDIForm_Load()
        dim rs as recordset
        dim sql as string
        dim i as long    sql = "select CstID,CstName,CstTel,CstAddr,CstPYCode,CstMngor,CstMngorTel,CstMngorPY," _
          & "CstPrice,CstMny,CstInure,CstType,CstArea,OpData,CstOptor,Rmk from CstInfo"
        Call OpenConn
        rs.Open sql, cn, 1, 1    formB.hide
        formA.show
        
        formA.ProgressBar1.max = rs.recordsetcount
        formA.ProgressBar1.min = 0
        formA.ProgressBar1.Value = 0    Do While Not rs.EOF
            doEvents
            Select Case rs.Fields("CstType")
                Case "有约大户机关"
                    Lvico = 2
                Case "无约一般散户"
                    Lvico = 3
                Case "知名人士"
                    Lvico = 4
                Case "政界要人"
                    Lvico = 5
            End Select
         'B窗体控件添加数据
            Set addlv = formB.CstLv.ListItems.Add(, , rs.Fields("CstID"), , Lvico)
            addlv.SubItems(1) = rs.Fields("CstName")
            '略......
            'A窗体显示进度条
            i=i+1
            formA.ProgressBar1.Value = i
            rs.MoveNext
        Loop
        Call CloseConn
        unload formA    '关闭A窗体
        formC.show     '显示登录窗体
    End Sub'窗体C的代码:
    Private Sub LoginCmd_Click()
       Call OpenConn
        sql = "select * from UserID where Uname='" & UIDComb.Text & "'"
        rs.Open sql, cn, 1, 1
        If convert(PassComb.Text) = IIf(Trim(IsNull(rs.Fields("Upass"))), "", _
         convert(Trim(rs.Fields("Upass")))) Then
            Optor = rs.Fields("Uname")
            Branch = rs.Fields("Bran")
            Power = rs.Fields("Power")
            Call CloseConn
            Unload Me
            formB.show    '登录成功显示B窗体
        Else
            MsgBox "密码错误!", 48, "错误提示"
            PassComb.SetFocus
            Exit Sub
        End If 
    End Sub
    只是组织了一下你贴的现成代码的思路,没的测试,窗体名称也是用的你的贴图中的ABC,参考一下吧......