现有三个窗体frmmain,frm2和frm3,其中frmmain是MDIFORM,frm2和frm3是mdi子窗体,运行frmmain后调用了frm2(frm2.show)。然后在frm2运行时通过双击datagird来调用frm3窗体(frm3.show),这时问题就出现了:首先是首次调用frm3时,无论点击datagrid的第几行,在frm3种显示永远都是与datagrid的第一行相关信息,其次,当你调用完frm3后,frm2窗体会出现两个,而且位置随调用frm3的次数在不停地向右下角移动。Frm3中有一个msflexgrid1和label1两个控件。请高手帮忙!!!很急!!!
代码如下:
Frmmain的代码:
Frm2.show
***********************
Frm2中的代码:
Public sdel As String
Frm2_load()
Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
Private Sub DataGrid_DblClick()
If DataGrid.Col = 0 Then
sdel = Trim(DataGrid.Text)
Frm3.Show
Else
MsgBox "请单击第一列!"
End If
End Sub
*****************************8
Frm3的代码:
Private Sub Frm3_Load()
'设置子窗体的现实位置
    Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
    Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
    Label1.Caption = "与" + Trim(frm2.DataGrid.Text) + "相关的凭证记录"
    With MSFlexGrid1
  .Rows = 1
  .Cols = 9
  .ColWidth(0) = 0
  .ColWidth(1) = 1000
  .ColWidth(2) = 4000
  .ColWidth(3) = 2000
  .ColWidth(4) = 2000
  .ColWidth(5) = 2000
  .ColWidth(6) = 2000
  .ColWidth(7) = 1500
  .ColWidth(8) = 1500
  .TextMatrix(0, 1) = "凭证编码"
  .TextMatrix(0, 2) = "摘要"
  .TextMatrix(0, 3) = "代码1"
  .TextMatrix(0, 4) = "1方"
  .TextMatrix(0, 5) = "代码2"
  .TextMatrix(0, 6) = "2方"
  .TextMatrix(0, 7) = "数量"
  .TextMatrix(0, 8) = "单价"
  .Width = 14000
End With
    loadDS
End SubPublic Sub loadDS()
Dim db As New DataBases
Dim rs As Recordset
Dim str As String
Dim s As String
Dim i As Integer
Dim k As Integer
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 9
s = Trim(frmZongFen.grdDataGrid.Text)
str = "select * from 分录表 where代码1 like '" + Trim(s) + "%'" + " or代码2 like '" + Trim(s) + "%'"
Set rs = db.RunSelectSQL(str)
i = 1
While Not rs.EOF
k = MSFlexGrid1.Rows
With MSFlexGrid1
.Rows = .Rows + 1
  For i = 1 To 8
   If rs(i - 1) <> "" Then
    .TextMatrix(k, i) = rs(i - 1)
   End If
  Next
  rs.MoveNext
End With
Wend
End Sub

解决方案 »

  1.   

    查询所用的条件为frmZongFen.grdDataGrid.Text,与frm2.DataGrid.Text根本无关!
    Frm2_load()、Frm3_load()什么时候被调用?
    Frmmain中何处调用Frm2.show?
      

  2.   

    Label1.Caption   =   "与"   +   Trim(frm2.DataGrid.Text)   +   "相关的凭证记录" 

    frmZongFen.grdDataGrid.Text不一致的。
      

  3.   

    不好意思写错了s   =   Trim(frm2.DataGrid.Text) 
    frmmain通过点击菜单调用frm2,
    在frm2运行时通过双击datagird来调用frm3