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 属性要不一样。即一个端口对应一个服务。
高晓飞