CSDN博客

img gaoxfei

VB编程方法点滴

发表于2002/6/25 9:58:00  691人阅读

 

VB编程方法点滴

本人从事VB的教学与编程工作,在教学和工作中使用到了VB的编程的一些简单技巧想和初学者共勉。

一、如何利用数据库数据向组合框中添加例表项

向组合框中添加例表项,一般我们采用两种办法。一是在设计阶段通过List 属性来添加。二是通过在程序中直接使用AddItem “字符串”方法添加。象下例向组合框cmbTitle中添加数据就是此法。

With cmbTitle

        .Clear

        .AddItem "校长"

        .AddItem "副校长"

        .AddItem "主任"

        .AddItem "秘书"

        .AddItem "总管"

        .AddItem "干事"

        .AddItem "其他"

        .ListIndex = 0

End With

下面要谈的是我们有一个数据库,想把此数据库的某个字段添加到一个组合框中如何做法。我们可以建立一个过程如LoadDataToCombo,有三个参数一个是cmb,另一个是sTable,第三个是sField。其中cmb是要向其添加的组合框,sTable是要向组合框添加数据的数据库,sField是要向组合框添加的字段。实现方法见下程序。

Private Sub LoadDataToCombo(ByRef cmb As ComboBox, ByVal sTable As String, ByVal sField As String)

    cmb.Clear

    Dim rs As New ADODB.Recordset

    rs.Open "SELECT " & sField & " FROM " & sTable, cn.ConnectionString, adOpenKeyset, adLockReadOnly

    While Not rs.EOF

        cmb.AddItem rs.Fields(sField).Value

        rs.MoveNext

    Wend

    rs.Close

    Set rs = Nothing

    If cmb.ListCount > 0 Then cmb.ListIndex = 0

End Sub

例把Manager 数据库中的ManagerName字段添加到cmbMan中可以用如下命令调用。

LoadDataToCombo cmbMan, "Manager", "ManagerName"

二、在VB中实现数据库表格打印的方法

方法一:在工程菜单上,单击添加 Data Enviroment向工程中添加一个设计器。单击设计器选项卡。并单击数据环境把设计器添加到菜单上。右键单击“Connection1”图标,然后单击添加命令显示Command1对话框。同时改变其属性,添加连接,将数据库表格连接到Command1上。

工程菜单上,单击添加 Data ReportVisual Basic 将把它添加到您的工程中。单击设计器选项卡,并单击Data Report把设计器添加到菜单上。在属性窗口上,单击数据源,然后单击相应的命令。然后单击DataMember并单击Customers 从数据环境设计器中,把OrderDate字段(在Orders命令下)拖到细节Orders_Detail部分。同时在细节部分添加一些横线和竖线即可。具体细节可以参照MSDN中“创建一个简单数据报表”一节。

方法二:实际上我们可以有更直接的方法,就是利用Printer对象的Print 方法,同时利用区位码中的制表符号和TAB函数更灵活的实现数据库表格的打印。下面是一个简单例子,可参考之。

Private Sub cmdprint_Click()

Dim n As Integer

Dim rs As New ADODB.Recordset

rs.Open "SELECT * FROM jggz", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/jggz/jggz.mdb;Persist Security Info=False", adOpenStatic, adLockPessimistic

n = 0

rs.MoveFirst

Form1.Print "┌────┬────┐"

While Not rs.EOF

    Printer.Print "" & rs.Fields("姓名").Value; Tab(11); ""; rs.Fields("课时工资"); Tab(21); ""

   

    rs.MoveNext

    n = n + 1

    If n / 5 = Int(n / 5) Or rs.EOF Then

        Printer.Print "└────┴────┘"

        Printer.Print "┌────┬────┐"

    Else

        Printer.Print "├────┼────┤"

    End If

Wend

Printer.Print "└────┴────┘"

rs.Close

End Sub

附件1:制表符号区位对照

区位

0904

0906

0916

0920

0924

0928

0932

0940

0948

符号

区位

0956

0964

0905

0907

0919

0923

0927

0931

0939

符号

区位

0947

0955

0963

0979

0936

0944

0951

0959

 

符号

 

三、利用WinSock实现简单网络编程

利用WinSock可以实现TCPUDP协议通信。我们知道,网络通信要找三个地址即网络地址、主机地址、服务地址(端口号)。通过机器的IP地址和子网掩码计算可以得到网络和主机地址。而每个机器的服务地址(端口号)有65536个。下面就谈一下怎样利用WinSock实现网络通信。

服务器端程序编写:建立一个窗体,添加一个Text控件用于存放发送信息的内容、一个命令按钮(cmdSend)用于发送信息、两个WinSock控件(sckListen,sckServer),一个用于监听、一个用于接受。把sckServerLocalport 属性设为8001(一定不要和sckListen的端口号一样即可)。

程序代码如下:

Private Sub cmdSend_Click()

    sckServer.SendData Text1.Text

End Sub

 

Private Sub Form_Load()

    sckListen.LocalPort = 8000

    sckListen.Listen

End Sub

 

Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)

    sckServer.Accept requestID

    cmdSend.Enabled = True

End Sub

 

Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)

    Dim s As String

    sckServer.GetData s, vbString, bytesTotal

    MsgBox s

End Sub

工作站端程序编写:建立一个窗体,添加一个Text控件用于存放发送信息的内容、一个命令按钮(cmdSend)用于发送信息、一个WinSock控件(sckClient)用于接受信息。把sckClientLocalport 属性设为8002

程序代码如下:

Private Sub cmdSend_Click()

    sckClient.SendData Text1.Text

End Sub

 

Private Sub Form_Load()

    Dim sIP As String

    sIP = InputBox("Please Input IP address", sckClient.LocalIP)

    sckClient.Connect sIP, 8000

End Sub

 

Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)

    Dim s As String

    sckClient.GetData s, vbString, bytesTotal

    MsgBox s

End Sub

使用方法:在服务器端启动服务程序,运行工作站程序,输入服务器主机的IP地址,在Text 框中输入要发送的内容,单击发送命令按钮,此时服务器就会接受到信息。这时在服务器的文本框输入发送的内容,单击发送命令按钮,此时工作站就会接受到信息。

当然,这只是个简单的测试程序,在实际应用中可以利用变量、数据库等做很多事情。同时这个程序只能一对一的传送,想实现一个服务器多个工作站方式,可以在服务器端多建立几个Winsock接收控件,一个控件对应一个工作站,但要注意,Winsock控件的Localport 属性要不一样。即一个端口对应一个服务。

高晓飞

 

0 0

相关博文

我的热门文章

img
取 消
img