加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我的第一个通讯录软件(VB)

发布时间:2020-12-16 23:05:28 所属栏目:大数据 来源:网络整理
导读:一、使用MSHFlexGrid控件实现对ACCESS数据库的数据访问,使用文本框来获得用户输入的数据。 二、问题: 1、如何在当前目录中使用数据库 方法: 保存文本框中的数据 Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim Str1 As String Dim

一、使用MSHFlexGrid控件实现对ACCESS数据库的数据访问,使用文本框来获得用户输入的数据。

二、问题:

1、如何在当前目录中使用数据库

方法:

保存文本框中的数据
Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim Str1 As String

Dim Str2 As String

Dim Str3 As String

Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"

Str2 = "Data Source=Access_db.mdb;" //这个就会默认当前目录为数据库的目录。用于保存数据。

Str3 = "Jet OLEDB:Database Password="

conn.Open Str1 & Str2 & Str3

strSQL = "select * from wzdz where 编号=" & Val(Text4.Text) & ""

rs.Open strSQL,conn,3,3

调用数据库中的数据

在调用的Adodc1中的connectionString属性中设置为

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名称;Persist Security Info=False

2、如何实现单元格的复制和粘贴。

OptionExplicit

PrivateSubForm_Load()
WithMe.MSHFlexGrid1
.TextMatrix(2,2)="TEST"
.TextMatrix(2,3)="TEST2"
EndWith
EndSub

'VB实现MSHFlexGrid支持ctrl+c、ctrl+v
'只支持文本,而且只能一格一格复制

'Clipboard对象用于操作剪贴板中的文本和图形它使用户能够复制、剪切和粘贴应用程序中
'的文本和图形。Clipboard.Clear必须在复制之前使用来清除Clipboard对象中的内容

PrivateSubMSHFlexGrid1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
DimtmptextAsString
IfShift=2Then
SelectCaseKeyCode
CasevbKeyC
Clipboard.Clear
Clipboard.SetTextMSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,MSHFlexGrid1.Col)
CasevbKeyV
IfClipboard.GetFormat(vbCFText)Then
tmptext=Clipboard.GetText(vbCFText)
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,MSHFlexGrid1.Col)=tmptext'Clipboard.GetData()
EndIf
EndSelect
EndIf
EndSub

三、通讯录实例

Private Sub Command1_Click()
Dim sc As Integer

If Text1.Text = "" Or Text3.Text = "" Or Text9.Text = "" Then

'即网站名称、网站地址和网站描述的内容必须填全了才打开数据库连接写入数据
'由于系统数据库设计为“编号”字段采用的是Access的自动编号
'因此在添加记录时不接收编号的数据,由Access自动加编号

MsgBox ("请输入完整的通讯信息")

Else

sc = MsgBox("确实要添加这条记录吗?",vbOKCancel,"提示信息")

If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"

Str2 = "Data Source=Access_db.mdb;"
Str3 = "Jet OLEDB:Database Password="

conn.Open Str1 & Str2 & Str3

strSQL = "select * from wzdz"

rs.Open strSQL,3

rs.AddNew

rs!姓名 = Text1.Text
rs!家庭电话 = Text2.Text
rs!手机 = Text3.Text
rs!电子邮件 = Text5.Text
rs!QQ = Text6.Text
rs!生日 = Text7.Text
rs!地址 = Text8.Text
rs!爱好 = Text9.Text
rs.Update
rs.Close
conn.Close

MsgBox ("添加记录成功!")

Adodc1.Refresh
'刷新数据源,MSHFlexGrid控件会实时刷新显示数据

End If

'以下四条语句的作用是在操作完成后将文本框置空

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""

End If

End Sub

Private Sub Command2_Click()

If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then

'编号字段是Access的自动编号,为自然数
'因此对text4的内容进行校验,如果不是数值或为0则跳出sub过程

MsgBox "记录号是大于0的自然数,请输入正确的编号!"

Exit Sub

End If

If Text1.Text = "" Then

'对三个文本框的内容进行校验,不接收空值

MsgBox "请输入完整的网站信息!"

Exit Sub

End If

Dim sc As Integer
sc = MsgBox("确实修改这条记录吗?","提示信息")

If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"
Str2 = "Data Source=Access_db.mdb;"
Str3 = "Jet OLEDB:Database Password="

conn.Open Str1 & Str2 & Str3

strSQL = "select * from wzdz where 编号=" & Val(Text4.Text) & ""

rs.Open strSQL,3

If rs!编号 = Val(Text4.Text) Then

'由于系统数据库使用的是自动编号作为主键
'因此以编号字段的内容作为判断的依据
'如果rs!编号 = Val(Text4.Text)说明数据库中有此记录,
'才会修改其它三个字段的内容
'否则给出“不存在此记录”的提示信息并关闭数据连接

rs!姓名 = Text1.Text
rs!家庭电话 = Text2.Text
rs!手机 = Text3.Text
rs!电子邮件 = Text5.Text
rs!QQ = Text6.Text
rs!生日 = Text7.Text
rs!地址 = Text8.Text
rs!爱好 = Text9.Text

rs.Update
rs.Close
conn.Close
MsgBox ("修改记录成功!")

Adodc1.Refresh '刷新数据源,MSHFlexGrid控件会实时刷新显示数据

Else

MsgBox ("不存在此记录!")
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""

rs.Close

conn.Close

Exit Sub

End If

End If

'以下四条语句的作用是在操作完成后将文本框置空

Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""

End Sub

Private Sub Command3_Click()

If Not IsNumeric(Text4.Text) Or Val(Text4.Text) = 0 Then

'编号字段是Access的自动编号,为自然数
'因此对text4的内容进行校验,如果不是数值或为0则跳出sub过程
MsgBox "编号是大于0的自然数,请输入正确的编号!"

Exit Sub

End If

Dim sc As Integer

sc = MsgBox("确实要删除这个记录吗?","删除确认!")

If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"
Str2 = "Data Source=Access_db.mdb;"
Str3 = "Jet OLEDB:Database Password="

conn.Open Str1 & Str2 & Str3

strSQL = "select * from wzdz where 编号=" & Val(Text4.Text) & ""

rs.Open strSQL,3

If rs!编号 = Val(Text4.Text) Then
'由于系统数据库使用的是自动编号作为主键
'因此以编号字段的内容作为判断的依据
'如果rs!编号 = Val(Text4.Text)说明数据库中有此记录并进行删除操作
'否则给“不存在此记录”的提示信息并关闭数据连接
rs.Delete

rs.Close

conn.Close

MsgBox ("删除记录成功!")

Adodc1.Refresh '刷新数据源,MSHFlexGrid控件会实时刷新显示数据

Else

MsgBox ("不存在此记录!")

Text4.Text = ""

rs.Close

conn.Close

Exit Sub

End If

End If
'以下四条语句的作用是在操作完成后将文本框置空
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
End Sub
Private Sub Command4_Click()

Dim sc As Integer

sc = MsgBox("确实要退出系统吗?","提示信息")

If sc = 1 Then

'运行时如果用户点击的是MsgBox提示框的“确定”按钮,返回值是1

End
End If
End Sub

Private Sub Form_Load()

With Me.MS1
.TextMatrix(2,2) = "TEST"
.TextMatrix(2,3) = "TEST2"
End With


Form1.MS1.ColWidth(0) = 200
Form1.MS1.ColWidth(1) = 700
Form1.MS1.ColWidth(2) = 1200
Form1.MS1.ColWidth(3) = 1200
Form1.MS1.ColWidth(4) = 1650
Form1.MS1.ColWidth(5) = 1100
Form1.MS1.ColWidth(6) = 1100
Form1.MS1.ColWidth(7) = 1600
Form1.MS1.ColWidth(8) = 2800

Form1.Text1.Text = ""
Form1.Text2.Text = ""
Form1.Text3.Text = ""
Form1.Text4.Text = ""
Form1.Text5.Text = ""
Form1.Text6.Text = ""
Form1.Text7.Text = ""
Form1.Text8.Text = ""
Form1.Text9.Text = ""
End Sub

'这个只能一格一格的复制

Private Sub MS1_KeyDown(KeyCode As Integer,Shift As Integer)
Dim tmptext As String
If Shift = 2 Then
Select Case KeyCode
Case vbKeyC
Clipboard.Clear
'Clipboard对象用于操作剪贴板中的文本和图形它使用户能够复制、剪切和粘贴应用程序中
'的文本和图形。Clipboard.Clear必须在复制之前使用来清除Clipboard对象中的内容
Clipboard.SetText MS1.TextMatrix(MS1.Row,MS1.Col) '复制
Case vbKeyV
If Clipboard.GetFormat(vbCFText) Then
tmptext = Clipboard.GetText(vbCFText)
MS1.TextMatrix(MS1.Row,MS1.Col) = tmptext
End If
End Select
End If

End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读