微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

终将逝去的VB6

记得很多年以前,我第一次接触到VB6,很开心,拖拉控件就可以做出很漂亮的界面,比C有意思多了。

后来在中科院培训JAVA的时候,我们的杨景涛老师也精通VB。我开始对编程感兴趣源自VB6。在中科院我们只实践了一个项目,现在想起来,只有一个字矬

005936979.jpg

下面这个是我上大学的时候在给学校做门面房管理系统的时候,写的一个人员管理,目的是管理我们这些开发人员的上班情况。当时梦想着有朝一日能够自己开公司,叫做雷电科技。

010109425.jpg

我们门面房系统做了1个月,如下

010332803.jpg

这个当时是个JAVA版的CS系统,很简单的,这也是我做程序以来第一次赚钱。


OK,JAVA现在的用户量无可厚非,但是VB6已经接近消亡。今天我们就再一次记忆终将逝去的VB6,我发誓,写完这篇之后,我再也不会关注VB6了。我们先看一下界面

201400420.png

这个就是VB版本的个人理财查询界面,这个界面是根据C#版本的翻译过来的

013115325.png

当然了,我也没有做的C#那么细致。看一下代码

Option Explicit
Dim conn As ADODB.Connection
Dim res As ADODB.Recordset
Dim connString As String
Dim userName As String
Dim startDate As Date
Dim endDate As Date
Dim types As String
Dim sqlStr As String
Dim i As Integer
Dim strColums(0 To 8) As String
Dim strChecked As String

先声明一些变量在窗体加载的时候,初始化一部分

Private Sub Form_Load()
    Call Init
    strColums(1) = "选择"
    strColums(2) = "编号"
    strColums(3) = "姓名"
    strColums(4) = "性别"
    strColums(5) = "年龄"
    strColums(6) = "金额"
    strColums(7) = "日期"
End Sub
Private Function Init()
    connString = "Provider=sqlNCLI10;Server=ZZCYIC6VXOK5UXO\MSsqlSERVER08;Database=Bonus;Trusted_Connection=yes"
    Adodc1.ConnectionString = connString
End Function

初始化MSFlexGrid的列名以及连接字符串,这个是连接sqlServer2008的字符串,ADODC1是我们拖拽的一个数据库连接控件

013521881.png

我们接下来看一下查询

Private Sub CmdQuery_Click()
    On Error GoTo errorplay
    userName = Trim(txtUserNo.Text)
    startDate = DTPStartDate.Value
    endDate = DTPEndDate.Value
                                       
    If ChkEnter.Value Then
        types = 1
        Else: types = 0
    End If
    sqlStr = "SELECT a.TransactionNumber AS 编号,b.Name AS 姓名,(CASE b.Sex WHEN  1 THEN '男' WHEN '0' THEN '女' END) AS 性别,b.Age AS 年龄,"
    sqlStr = sqlStr & " a.Money AS 金额,a.InDate AS 日期"
    sqlStr = sqlStr & " FROM dbo.Bonus a WITH(NOLOCK) " & "INNER JOIN dbo.UerInfo b WITH(NOLOCK) ON a.UseNo=b.UseNo"
    sqlStr = sqlStr & " Where"
                                       
    If userName <> "" Then
        sqlStr = sqlStr & " UseNo LIKE '%" & userName & "%"
    End If
                                       
    If startDate < endDate Then
        If userName <> "" Then
            sqlStr = sqlStr & " AND"
        End If
                                      
        sqlStr = sqlStr & " InDate BETWEEN '" & startDate & "' AND '" & endDate & "'"
    End If
                                       
    If ChkEnter.Value Then
        sqlStr = sqlStr & " AND a.IsEnter='1'"
    Else
        sqlStr = sqlStr & " AND a.IsEnter='0'"
    End If
                                           
    Adodc1.RecordSource = sqlStr
    Adodc1.Refresh
                                       
    If Adodc1.Recordset.RecordCount > 0 Then
         MSFlexGridResult.AllowUserResizing = flexResizeBoth
         MSFlexGridResult.Cols = Adodc1.Recordset.Fields.Count + 2
         MSFlexGridResult.Rows = Adodc1.Recordset.RecordCount + 1
                                              
         For i = 1 To UBound(strColums)
            MSFlexGridResult.TextMatrix(0,i - 1) = strColums(i - 1)
         Next i
                                            
        With Adodc1.Recordset
                                           
           For i = 1 To .RecordCount
                MSFlexGridResult.Row = i
                MSFlexGridResult.Col = 1
                MSFlexGridResult.RowHeight(i) = 400
                Set MSFlexGridResult.CellPicture = ImageList1.Listimages(1).Picture
                MSFlexGridResult.CellPictureAlignment = 3
                                               
                MSFlexGridResult.TextMatrix(i,0) = i
                MSFlexGridResult.TextMatrix(i,2) = .Fields("编号")
                MSFlexGridResult.TextMatrix(i,3) = .Fields("姓名")
                MSFlexGridResult.TextMatrix(i,4) = .Fields("性别")
                MSFlexGridResult.TextMatrix(i,5) = .Fields("年龄")
                MSFlexGridResult.TextMatrix(i,6) = .Fields("金额")
                MSFlexGridResult.TextMatrix(i,7) = .Fields("日期")
                                                   
                .MoveNext
            Next i
                                               
        End With
                                           
        If (MSFlexGridResult.Rows > 0) Then
            Calculatetotal (MSFlexGridResult.Rows)
        Else: LabTotal.Caption = "0"
        End If
                                           
    End If
                                       
    Exit Sub
errorplay:
   ShowMessage ("查询出错")
End Sub

根据查询条件拼出查询语句,然后获取数据集,循环插入MSFlexGrid中。

查询完成后计算总额

Private Sub Calculatetotal(rowCount As Integer)
    Dim total As Single
    For i = 1 To rowCount - 1
        total = total + MSFlexGridResult.TextMatrix(i,6)
    Next i
                                                                                                                                                           
    LabTotal.Caption = total & ""
End Sub

这里第一列是个CellPicture,是用来删除数据用的,比如如下图片

201428667.png

代表第一行和第三行我要删除,那么图片间的替换由下面的代码完成

Private Sub MSFlexGridResult_Click()
Dim oldx,oldy,cell2text As String,strTextCheck As String
    If MSFlexGridResult.Rows > 0 And MSFlexGridResult.Cols > 2 Then
        With MSFlexGridResult
            oldx = .Col
            oldy = .Row
            If MSFlexGridResult.Col = 1 Then
                If MSFlexGridResult.CellPicture = ImageList1.Listimages(1).Picture Then
                    Set MSFlexGridResult.CellPicture = ImageList1.Listimages(2).Picture
                    .Col = .Col + 1
                    strTextCheck = .Text
                    strChecked = Replace(strChecked,strTextCheck & ",","")
                Else
                    Set MSFlexGridResult.CellPicture = ImageList1.Listimages(1).Picture
                    .Col = .Col + 1
                    strTextCheck = .Text
                    strChecked = strChecked & strTextCheck & ","
                End If
            End If
            .Col = oldx
            .Row = oldy
        End With
    End If
End Sub

OK,上面的代码类似于实现ToggleButton一样,最后我们来看一下删除代码

Private Sub CmdDelete_Click()
    Dim strWhere As String
    sqlStr = "DELETE FROM dbo.Bonus WHERE "
                                                                     
    For i = 1 To MSFlexGridResult.Rows - 1
         MSFlexGridResult.Row = i
         MSFlexGridResult.Col = 1
         If MSFlexGridResult.CellPicture = ImageList1.Listimages(2).Picture Then
            strWhere = strWhere & MSFlexGridResult.TextMatrix(i,2) & ","
         End If
    Next i
                                                                     
    If strWhere <> "" Then
        strWhere = Mid(strWhere,1,Len(strWhere) - 1)
        sqlStr = sqlStr & "TransactionNumber IN(" & strWhere & ")"
        conn.Open connString
        conn.Execute (sqlStr)
        conn.Close
    Else
        ShowMessage ("请选择要删除的数据")
    End If
End Sub

OK,根据图片获取删除的编号,然后实现删除。如果没有选择,会提示

201446197.png

OK,VB6终将逝去,我们不必留恋,最后再次看一眼VB6的开发界面,然后睡觉吧。

202402629.png

运行,开始播放

202509435.png

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr