1、findwindow 获取程序的窗口句柄
2、findwindowex 找到该文本框的句柄
3、GetWindowText或,sendmessage发送WM_GETTEXT消息获取内容
4、根据获取的文本类型(unicode/ansi)做最后的转换、清除空白处理
Option ExplicitDim sum As Integer
Dim strData As String
Private Sub Form_Load()
sum = 1
MSFlexGrid1.Cols = 3
MSFlexGrid1.Rows = sum
MSFlexGrid1.TextMatrix(0, 0) = "通道号" '通道号 电话号码 状态
MSFlexGrid1.TextMatrix(0, 1) = "电话号码"
MSFlexGrid1.TextMatrix(0, 2) = "状态"
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 16
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End Sub
Private Sub mscomm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
strData = Me.MSComm1.Input
If Mid(strData, 1, 2) = "88" And Len(strData) = 16 And Mid(strData, 15, 2) = "EE" Then
sum = sum + 1
MSFlexGrid1.Rows = sum
MSFlexGrid1.TextMatrix(sum - 1, 0) = Mid(strData, 3, 2)
MSFlexGrid1.TextMatrix(sum - 1, 1) = Mid(strData, 5, 8)
If Mid(strData, 13, 2) = "00" Then
MSFlexGrid1.TextMatrix(sum - 1, 2) = "正常"
ElseIf Mid(strData, 13, 2) = "99" Then
MSFlexGrid1.TextMatrix(sum - 1, 2) = "异常"
End If
strData = ""
End If
End Select
End Sub
VB可通过结构化查询语言(SQL)访问数据库。下面帮你写一个简单的过程,将学号以参数传给该过程:
Private Sub editmark(num as Integer)
'声明一个记录集
Dim rs As New ADODB.Recordset
'定义一个SQL查询串
SQLStr = "select * from student where id=" &num
'执行查询
rs.Open SQLStr, Conn, 3, 2
If Not rs.EOF Then
rs("mark")=rs("mark")-10
end if
'更新数据库
rs.update
End Sub
--------------------------------------------------------------
补充:
1、对于Conn提问者肯定明白,因为提问者已经说明连接部分可以忽略;
2、对于rs("mark")=rs("mark")-10 是可行的,因为通过过程参数的传递记录已经定位在某条记录上,还考虑什么转移;
3、我们回答提问者的问题应尽量简单可行,说明问题即可,无需长篇大论让提问者一头雾水,长篇大论就是“敬业”吗?
--------------------------------------------------------------
最后补充:
没有关系,我们是在讨论问题嘛!
其实,对于“vb *** 作数据库”我相信不是我们在这里举一个简单的例子能说透的。我只是想通过这个简单的例子(越简单越易让提问者搞懂),告诉提问者用SQL可以访问并 *** 作数据库,至于具体许多细节需要提问者熟悉一下SQL和VB提供的ADO,我想这也是提问者的真实意图。
另外,关于rs("mark")=rs("mark")-10在这个例子中肯定是可行的,因为学生的id肯定是唯一的(应该是数据表student的主键),不会有重复的id。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)