|   
 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 Report”,Visual 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可以实现TCP、UDP协议通信。我们知道,网络通信要找三个地址即网络地址、主机地址、服务地址(端口号)。通过机器的IP地址和子网掩码计算可以得到网络和主机地址。而每个机器的服务地址(端口号)有65536个。下面就谈一下怎样利用WinSock实现网络通信。 
服务器端程序编写:建立一个窗体,添加一个Text控件用于存放发送信息的内容、一个命令按钮(cmdSend)用于发送信息、两个WinSock控件(sckListen,sckServer),一个用于监听、一个用于接受。把sckServer的Localport 属性设为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)用于接受信息。把sckClient的Localport 属性设为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 属性要不一样。即一个端口对应一个服务。 
高晓飞 
   
 
  |