前言:
好高兴啊,又可以在博客里和大家一起分享自己的机房经历了。希望大家不要嫌(zhi)弃(dao)我(jiu)啊(hao)!不过有啥办法啊,自己的小冲动就是忍(ni )不(gou)住(le)啊! 哈哈哈,各位准备好接受我的分享吧!
正文:
好了好了,言归正传,其实今天写这篇博客的初衷其实是自己的机房基础数据设定窗体遇到了(cai)麻(dao )烦(le)!具体是什么呢,先让我好好的缕(neng)缕(xing)思(bu)路啊。好了思路理清楚了,具体是下面这样几条线。请看:
就是数据设定窗体,这里有两种情况:
第一种就是,我们点击修改按钮可以对基础数据进行修订。当然这里会有有这样一个小小的情况就是,我们还没点击修订按钮时,文本框就可以进行操作,比如修改一些数据。那么我们的修改按钮还有什么作用呢?当然就没起到作用了。所以要设定一下使得用户在没有点击修改按钮时,无法对数据进行修改等一系列操作。
哈哈在这里就出现了一个小小的插曲,就是在关于如何设定这一功能时所遇到的。最初的时候我是直接在窗体的属性中将Enable属性设定为 false,哈哈哈,没错这个时候是不能对数据进行修改,BUT窗体的每一个地方都不能用了,不管是那一个按钮都无法进行操作了。后来才知道我这样在属性里设定是不行的,而且最要命的是——还找错了设置的对象,应该是对修改按钮事件进行设置。诺具体如下:
Private Sub cmdModify_click()
Frame1.Enabled = True '使得点击修改按钮以后才能对基础数据进行修改
End Sub
</pre> <span style="font-size:18px;"> <strong><span style="color:#ff0000;">第二种</span></strong>情况和第一种是紧密相连的那就是,当我们对数据进行修改之前窗体的文本框中应该有数据的只有这样我们才谈得上对数据的修改啊入过啥也没有那我们修改什么,那么这里就涉及到了将数据库中的数据调用出来让其在文本中显示,问题是这样:的当自己将数据库中的数据赋值到文本框中的代码写好之后,本以为运行的时候会一切正常,BUT怎么可能让我如愿啊!所以在运行的时候窗体中并没有加载显示出来,下面就是未修改之前的代码:</span><p></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"></span></p><pre name="code" class="vb">Private Sub Frame1_load()
Dim txtSQL As String
Dim msgText As String
Dim mrc As ADODB.Recordset
txtSQL = "select * from BasicData_Info "
Set mrc = ExecuteSQL(txtSQL, msgText)
mrc.MoveFirst
txtFix_Cost.Text = mrc.Fields(0)
Trim(txtTemporary_charge.Text) = mrc.Fields(1)
Trim(txtMinamount.Text) = mrc.Fields(2)
Trim(txtMintime.Text) = mrc.Fields(3)
Trim(txtPreparation_time.Text) = mrc.Fields(4)
Trim(txtIncreasing_time.Text) = mrc.Fields(5)
mrc.Close
End Sub
</pre><span style="font-size:18px;">而下面这个是修改之后的代码大家可以比较一下看看问题出在哪里哦</span><p></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"></span></p><pre name="code" class="vb"> '当我们进行基础数据的修改的时候,在此之前肯定我们已经有了设定好的数据了。而且这些数据肯定是一眼就能在加载窗体中有所显示的,进而我们才能在此基础上对其进行修改。
Private Sub Form_Load()
Dim txtSQL As String
Dim msgText As String
Dim mrc As ADODB.Recordset
txtSQL = "select * from BasicData_Info "
Set mrc = ExecuteSQL(txtSQL, msgText)
mrc.MoveFirst
txtFix_Cost.Text = mrc.Fields(0)
txtTemporary_charge.Text = mrc.Fields(1)
txtMinamount.Text = mrc.Fields(2)
txtMintime.Text = mrc.Fields(3)
txtPreparation_time.Text = mrc.Fields(4)
txtIncreasing_time.Text = mrc.Fields(5)
mrc.Close
End Sub
是的,没错。聪明的你发现问题了——对象事件错了,这些数据应当显示在窗体中的,而不是显示在Frame1中的,并且Frame1也没有Load事件,当然在窗体中没有显示啦。
哈哈哈!不要以为我的分享到此就结束了——并(hao)没(qi)有(dai),问题就是当改为From对象后再点击运行的时候出现了这个小可爱
找到愿意后发现是这个地方错了就是这个代码:
'当我们进行基础数据的修改的时候,在此之前肯定我们已经有了设定好的数据了。而且这些数据肯定是一眼就能在加载窗体中有所显示的,进而我们才能在此基础上对其进行修改。
Private Sub Form_Load()
Dim txtSQL As String
Dim msgText As String
Dim mrc As ADODB.Recordset
txtSQL = "select * from BasicData_Info "
Set mrc = ExecuteSQL(txtSQL, msgText)
mrc.MoveFirst
<span style="color:#ff0000;"><strong>Trim</strong></span><strong>(txtFix_Cost.Text) = mrc.Fields(0)</strong>
txtTemporary_charge.Text = mrc.Fields(1)
txtMinamount.Text = mrc.Fields(2)
txtMintime.Text = mrc.Fields(3)
txtPreparation_time.Text = mrc.Fields(4)
txtIncreasing_time.Text = mrc.Fields(5)
mrc.Close
End Sub
就是这个Trim函数这里出错了,这是一个经常用到的函数作用是用来删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格。
正因为加了一个Trim函数使得报了这个错,个人的理解是这样的:因为这个函数是去掉空格的,所以当我们要将数据库中的数据赋值到文本框中的时候,此时文本框中还没有数据为空的,就在此时Trim函数将文本框中的空格都给删除了,使得文本框中没有存放从数据库中调用出来的数据,因此报了这个错误。
总结:
其实,今天的问题总结出来就是这几个放面:一个是没有理清楚思路到底是对谁进行编辑,对象没有整明白,其次就是自己有时候难免会粗心。总之做好总结,不断成长,很高兴可以和大家一起分享自己的所得,我还(kan)会(chu)回(lai)的(le)