分享
 
 
 

VB编程方法点滴

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

高晓飞

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有