日期:2014-05-16  浏览次数:20387 次

小问题 大知识

十一假期以来可以说大部分时间用在系统上,开始不想开始的原因就是怕遇到问题,现在遇到问题了,却是不想放弃,总是有种必须把问题解决的小心理!

虽然没有什么大的问题,但是小问题还是不断地,遇到问题就是知识积累的过程!下面是一些小问题的总结:

一、在MDI窗体无法添加控件,

这样就要利用picture控件作为容器来容纳其他控件,但是picture会影响子窗体的显示,这样需要用API函数来显示:

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
SetParent Form1.hWnd, MDIForm1.hWnd


 

二、数据库没有办法更新,代码调了一天没有发现错误,但是依旧没办法更新

with objRs                  
                   .AddNew
                   .Fields(0) = TxtCardID.Text
                   .Fields(1) = TxtStuNo.Text
                   .Fields(2) = TxtStuName.Text
                   .Update
 end with 


 

这样写数据库总是无法更新,后来将update改为updatebatch,其实这两个可以混用的但是他们的区别就是Update只更新保存当前记录,UpdateBatch方法可以成批地更新保存多个记录

 

三、关于时间的计算和比较日期的大小

时间的计算要用到一个函数DateDiff,

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])


其中比较日期的大小为:

date1 = "2010-10-10 "
    date2 = "2011-2-3"
    
    If DateDiff("d", CDate(date1), CDate(date2)) < 0 Then
        MsgBox date1 & "大"
    Else
        MsgBox date2 & "大"
    End If


比较数据库中的日期,分为两种如果表line中date的数据为日期型:则

SELECT * FROM T WHERE date >= '2009-08-31' AND  col1 <= '2009-09-07'


如果为非日期型则

SELECT * FROM T WHERE CAST(col1 AS DATETIME) >= '2009-08-31' AND CAST(col1 AS DATETIME) <= '2009-09-07'


四、获取计算机名

其实上网搜了一下获得计算机名的方法有很多,这里有一个我觉得比较简便的时要用到API函数GetComputerName

Private Declare Function GetComputerName Lib "Kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long


 

实现就算计名的获得:

Dim ComputerName As String, i As Long 
i = 255 
ComputerName = String(i, 0) 
GetComputerName ComputerName, i 
ComputerName = Left(ComputerName, i)

其实这些都是在敲代码的时候遇到问题的部分,虽然不是什么知识点,但是感觉还不错,这是这样不断地积累,小菜鸟才可以编成大牛

 

1楼gwblue昨天 21:11
嗯,这些错误很有价值,值得在本地珍藏!