当我用语句清空文本内容,并当前窗体UNLOAD ME后,再LOAD该窗体,窗体上的文本框所能输入的字符就会很有限,好象只能输入以前曾输字符的相同个数,并且光标不能紧跟字符,而是可以任意点击。
兄弟在线等,谢谢了

解决方案 »

  1.   

    不要用:UNLOAD ME用:me.Visible=False 
      

  2.   

    我把原码复制给你们看看吧
    Private Sub Command1_Click()
    Dim AddWorkc As New ADODB.Connection
    Dim AddWorkr As New ADODB.Recordset
    Dim AddWorkStr1 As String
    Dim AddWorkStr2 As String
    AddWorkStr1 = "provider=sqloledb;user id=sa;pwd=;initial catalog=EnterpriseMIS;datasource=."
    AddWorkStr2 = "select * from EveryWork"
    AddWorkc.Open AddWorkStr1
    AddWorkr.Open AddWorkStr2, AddWorkc
    If Check1.Value = 1 Then
        Text4.Enabled = False
        If AddWorkr.BOF And AddWorkr.EOF Then
        Frame1.Enabled = False
        Text4.Text = ""
        'DTPicker1.Value = ""
        Text1.Text = ""
        Text2.Text = ""
        Text3.Text = ""
        Combo1.Text = ""
        AddWorkr.Close
        Else
        AddWorkc.Execute "update EveryWork set 事件ID号='" & Text4.Text & "',事件日期='" & DTPicker1.Value & "',单位名称='" & Text1.Text & "',事件描述='" & Text2.Text & "',事件备注='" & Text3.Text & "',责任人='" & Combo1.Text & "',结束标志='" & Check2.Value & "' where 事件ID号='" & Text4.Text & "'"
        MsgBox "恭喜兄弟修改已成功保存!", vbOKOnly + vbExclamation, "提示信息"
        '--------------------------------------------------------------------------
        Dim Workc As New ADODB.Connection
        Dim Workr As New ADODB.Recordset
        Dim WorkStr1 As String
        Dim WorkStr2 As String
        Dim i As Integer
        WorkStr1 = "provider=sqloledb;user id=sa;pwd=;initial catalog=EnterpriseMIS;datasource=."
        WorkStr2 = "select * from EveryWork order by 事件ID号"
        Workc.Open WorkStr1
        Workr.Open WorkStr2, Workc
        With LookWorkFrm.MSFlexGrid1
       .Rows = 1
        i = 1
       '.CellAlignment = 5
       .TextMatrix(0, 0) = "事件ID号"
       .TextMatrix(0, 1) = "事件日期"
       .TextMatrix(0, 2) = "单位名称"
       .TextMatrix(0, 3) = "事件描述"
       .TextMatrix(0, 4) = "事件备注"
       .TextMatrix(0, 5) = "责任人"
       .TextMatrix(0, 6) = "结束"
       .RowHeight(0) = 300
       .ColAlignment(0) = 1
       .ColAlignment(1) = 1
       .ColAlignment(2) = 1
       .ColAlignment(3) = 1
       .ColAlignment(4) = 1
       .ColAlignment(5) = 1
       LookWorkFrm.MSFlexGrid1.ColWidth(0) = 1000
       LookWorkFrm.MSFlexGrid1.ColWidth(1) = 1000
       LookWorkFrm.MSFlexGrid1.ColWidth(2) = 2600
       LookWorkFrm.MSFlexGrid1.ColWidth(3) = 5300
       LookWorkFrm.MSFlexGrid1.ColWidth(4) = 2800
       LookWorkFrm.MSFlexGrid1.ColWidth(5) = 1200
       LookWorkFrm.MSFlexGrid1.ColWidth(6) = 500
    '设置行高
    'MSFlexGrid.RowHeight(行号) = 行高度
    '行号为-1时设置所有行高
    '设置列宽
    'MSFlexGrid.ColWidth(列号) = 列宽度
       Do While Not Workr.EOF
        i = i + 1
       .Rows = .Rows + 1
       .RowHeight(i - 1) = 350
       .TextMatrix(.Rows - 1, 0) = Workr.Fields(0)
       .TextMatrix(.Rows - 1, 1) = Workr.Fields(1)
       .TextMatrix(.Rows - 1, 2) = Workr.Fields(2)
       .TextMatrix(.Rows - 1, 3) = Workr.Fields(3)
       .TextMatrix(.Rows - 1, 4) = Workr.Fields(4)
       .TextMatrix(.Rows - 1, 5) = Workr.Fields(5)
       .TextMatrix(.Rows - 1, 6) = Workr.Fields(6)
       Workr.MoveNext
       Loop
       End With
       Workc.Close
        AddWorkc.Close
        End If
        Unload Me
    --------------------------------------
    这里面的文本框在弹出界面点击按钮时,光标就可以任意点在该文本的任意位置或者干脆就输不进去字符,而我可是给该文本框设置的有Maxlenth=10之类的属性的呀!!!
      

  3.   

    不知道
    unload me与me.visible=false有什么区别
      

  4.   

    unload me与me.visible=false有区别:
    unload me该控件将不驻留内存,平时我们称之为卸载;me.visible=false只是窗体不显示了,但还驻留内存,程序小的时候,感觉不到,一旦程序大了或网络应用时,就会严重影响运行速度,此之为其根本区别也!!!呵呵
      

  5.   

    AddWorkc.Open AddWorkStr1
    AddWorkr.Open AddWorkStr2, AddWorkc
    这两行我不太明白,能告诉我作用吗?谢了
      

  6.   

    Dim AddWorkc As New ADODB.Connection
    Dim AddWorkr As New ADODB.Recordset
    从这两句中可以看出,我是将AddWorkc定义为Connection对象;将AddWorkr定义为Recordset对象
    Connection是与数据库进行链接的对象,而
    AddWorkStr1 = "provider=sqloledb;user id=sa;pwd=;
    initial catalog=EnterpriseMIS;datasource=."即AddWorkc.Open "provider=sqloledb;user id=sa;pwd=;
    initial catalog=EnterpriseMIS;datasource=."
    意思很明白,我是要用链接对象AddWorkc链接到名称为EnterpriseMIS的数据库接下来
    Recordset是从数据库中取数据集合的对象,而
    AddWorkStr2 = "select * from EveryWork"即AddWorkr.Open "select * from EveryWork", AddWorkc
    但是注意,这句后面需要跟 , AddWorkc 意思是我这里执行的select * from EveryWork,其前提条件
    是先要链接到你想取数的那个库,才可以执行脚本不知道我说明白了没有,希望多提意见,CSDN的兄弟姐妹人都不错,彼此切磋,共同进步,兄弟愿尽一点绵薄之力
      

  7.   

    你说的很明白了,ADO操作大多如此,但与你问题无关。目前不知道你是指哪个文本框?代码也没法帮你调试,只说说我的分析:1、输不进去字符,说明你的文本框设置了Maxlenth限长属性;
    2、光标可以任意点,说明你的文本框中有内容,很可能是充满了“空格”;(用鼠标在文本框中拖动一下,若能全部变蓝成选中状态,那就是它了!)
    3、Unload Me 后再Load仍有内容,说明你的窗体Unload可能没有成功,或在Show之前存在对其属性或方法的引用,造成其隐性加载。隐性加载是最常见的错误,它可能要涉及所有其它模块中代码对本窗体属性或方法的引用,光看这段是没用的。
      

  8.   

    是不是绑定了捏?loked为True么?
      

  9.   

    homezj(小吉) ,你真厉害!我搞定了,正如你所说,是有很多空格存在,一语点醒梦中人,我用Trim去掉空格,即命中要害,兄弟在此谢过了!!!