怎样设计一个不需要数据库安装的软件?
各位大侠:小女最近要用VB编写一个比较简单的档案管理软件,只需要实现档案的插入、查询、修改、删除功能就可以,其中查询需要有简单的模糊查询,关键字查询即可。现在碰到的问题是:只要安装这个软件的程序就能使用,无需像SQL Server一样安装数据库软件才能使用。那应该是用VB+?去编写呢? 如果数据量不大就直接用文本文件实现 用VB+Access呀,或者用SQL Server也没关系,直接用MSDE来做,他是SQL Server的桌面版,可以跟随VB工程一起打包安装的。还可以用VB+FoxPor的数据库,都是比较简单方便的东西。
直接用ACCESS做数据库做开发...连安装都不用了 呵呵……谢谢大家了!你们太好了!
可是如果我自己要使用ACCESS数据库的时候,是不是还要安装ACCESS程序? 你自己要看Access还是得安装Access的
除非拷到已安装Access的机器上
其实windows自带的ado驱动有不少
首先你的目标定在xp以上机器,不用装软件直接可以使用
然后找找一个干净的xp机器上有哪些ado驱动
再用vb自带的数据库工具建表,使用该数据库。
这样xp以上机器均可以不安装数据库软件的情况下使用ado
使用ado就能使用sql 那到哪里可以看得到ADO驱动呢?
使用Access数据库最简单 示例:
保存为窗体文件,并引用Microsoft DAO 3.6 Object Library
VERSION 5.00未完,继续.
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3090
ClientLeft = 60
ClientTop = 450
ClientWidth = 5400
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
LinkTopic = "Form1"
ScaleHeight = 3090
ScaleWidth = 5400
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Cancel_Key
Caption = "取消"
Height = 375
Left = 4440
TabIndex = 19
Top = 2040
Width = 855
End
Begin VB.CommandButton Save_Key
Caption = "保存"
Height = 375
Left = 4440
TabIndex = 18
Top = 1560
Width = 855
End
Begin VB.CommandButton Delete_Key
Caption = "删除"
Height = 375
Left = 4440
TabIndex = 17
Top = 1080
Width = 855
End
Begin VB.CommandButton Update_Key
Caption = "刷新"
Height = 375
Left = 4440
TabIndex = 16
Top = 600
Width = 855
End
Begin VB.CommandButton Add_Key
Caption = "添加"
Height = 375
Left = 4440
TabIndex = 15
Top = 120
Width = 855
End
Begin VB.CommandButton FindByName_Key
Caption = "按姓名查询"
Height = 495
Left = 3120
TabIndex = 14
Top = 1920
Width = 1215
End
Begin VB.CommandButton Move_Last
Caption = ">>"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 2280
TabIndex = 13
Top = 1920
Width = 735
End
Begin VB.CommandButton Move_Next
Caption = ">"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 1560
TabIndex = 12
Top = 1920
Width = 735
End
Begin VB.CommandButton Move_Pre
Caption = "<"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 840
TabIndex = 11
Top = 1920
Width = 735
End
Begin VB.CommandButton Move_First
Caption = "<<"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 120
TabIndex = 10
Top = 1920
Width = 735
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 1
Left = 2880
TabIndex = 4
Text = "Text1"
Top = 240
Width = 1095
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 2
Left = 2880
TabIndex = 3
Text = "Text1"
Top = 720
Width = 1095
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 3
Left = 840
TabIndex = 2
Text = "Text1"
Top = 720
Width = 1095
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 4
Left = 1440
TabIndex = 1
Text = "Text1"
Top = 1320
Width = 2295
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 0
Left = 840
TabIndex = 0
Text = "Text1"
Top = 240
Width = 1095
End
Begin VB.Label Label1
Caption = "出生年月"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 4
Left = 120
TabIndex = 9
Top = 1320
Width = 1215
End
Begin VB.Label Label1
Caption = "班级"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 3
Left = 120
TabIndex = 8
Top = 720
Width = 1095
End
Begin VB.Label Label1
Caption = "性别"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 2
Left = 2160
TabIndex = 7
Top = 720
Width = 1095
End
Begin VB.Label Label1
Caption = "姓名"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 1
Left = 2160
TabIndex = 6
Top = 240
Width = 1095
End
Begin VB.Label Label1
Caption = "学号"
BeginProperty Font
Name = "楷体_GB2312"
Size = 14.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 0
Left = 120
TabIndex = 5
Top = 240
Width = 1095
End
End
Attribute VB_Name = "Form1"上面代码,有错误,自己解决。
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim DB As Database
Dim RS As Recordset
Dim j%
Dim i%
Dim Err%
Dim DoEctype As Boolean
Option Explicit
Sub Form_Unload(Cancel As Integer)
RS.Close
DB.Close
End Sub
Private Sub Add_Key_Click()
RS.AddNew
Call KeyStatus1
CleanFields
Text1(0).SetFocus
End Sub
Private Sub Cancel_Key_Click()
RS.UpdateControls '还是CancelUpdate
KeyStatus2
ShowFields
End Sub
Private Sub Delete_Key_Click()
Dim Result As Integer
Result = MsgBox("删除该记录吗?", vbOKCancel, "提示")
If Result = vbOK Then
RS.Delete
RS.MoveNext
If RS.EOF Then RS.MoveLast
ShowFields
End If
End Sub
Private Sub FindByName_Key_Click()
Dim FindName As String
Dim FindStr As String
Dim CurRecord As Variant
FindName = InputBox("请输入要查找的学生姓名:", "查找学生记录")
If FindName <> "" Then
CurRecord = RS.bookmark
FindStr = "[Sname] Like " & "'" & FindName & "'"
RS.FindFirst FindStr
If RS.NoMatch Then RS.bookmark = CurRecord
End If
ShowFields
End Sub
Private Sub Form_Load()
Set DB = OpenDatabase("d:\demo.mdb")
Set RS = DB.OpenRecordset("student", dbOpenDynaset)
RS.MoveFirst
ShowFields
Call KeyStatus2
Err = 0
End Sub
Private Sub Move_First_Click()
RS.MoveFirst
ShowFields
End Sub
Private Sub Move_Last_Click()
RS.MoveLast
ShowFields
End Sub
Private Sub Move_Next_Click()
RS.MoveNext
If RS.EOF Then RS.MoveLast
ShowFields
End Sub
Private Sub Move_Pre_Click()
RS.MovePrevious
If RS.BOF Then RS.MoveFirst
ShowFields
End Sub
Private Sub Save_Key_Click()
FillFields
RS.Update
KeyStatus2
ShowFields
End Sub
Private Sub Text1_GotFocus(Index As Integer)
Text1(Index).SelStart = 0
Text1(Index).SelLength = Len(Text1(Index).Text)
End Sub
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
If Index = 4 Then
Text1(0).SetFocus
Else
Text1(Index + 1).SetFocus
End If
End If
End Sub
Public Sub Text1_LostFocus(Index As Integer)
Select Case Index
Case 0
If IsNumeric(Text1(0).Text) Then
Text1(Index).ForeColor = &H80000008
Form1.Caption = ""
Else
Text1(Index).ForeColor = &HFF&
End If
Case 2
If (Text1(2).Text = "男" Or Text1(2).Text = "女") Then
Text1(Index).ForeColor = &H80000008
Form1.Caption = ""
Else
Text1(Index).ForeColor = &HFF&
End If
Case 1
If ((Len(Text1(1).Text) = 2) Or (Len(Text1(1).Text) = 3) Or (Len(Text1(1).Text) = 4)) Then
Text1(Index).ForeColor = &H80000008
Form1.Caption = ""
Else
Text1(Index).ForeColor = &HFF&
End If
Case 3
If (Text1(3).Text = "通讯1" Or Text1(3).Text = "通讯2") Then
Text1(Index).ForeColor = &H80000008
Form1.Caption = ""
Else
Text1(Index).ForeColor = &HFF&
End If
Case 4
If IsDate(Text1(4).Text) Then
Text1(Index).ForeColor = &H80000008
Form1.Caption = ""
Else
Text1(Index).ForeColor = &HFF&
End If
End Select
Call CheckFields
End Sub
Private Sub Update_Key_Click()
RS.Edit
Call KeyStatus2
End Sub
Private Sub KeyStatus1()
Move_First.Enabled = False
Move_Pre.Enabled = False
Move_Next.Enabled = False
Move_Last.Enabled = False
Add_Key.Enabled = False
Delete_Key.Enabled = False
Update_Key.Enabled = False
FindByName_Key.Enabled = False
Save_Key.Enabled = True
Cancel_Key.Enabled = True
End Sub
Private Sub KeyStatus2()
Move_First.Enabled = True
Move_Pre.Enabled = True
Move_Next.Enabled = True
Move_Last.Enabled = True
Add_Key.Enabled = True
Delete_Key.Enabled = True
Update_Key.Enabled = True
FindByName_Key.Enabled = True
Save_Key.Enabled = False
Cancel_Key.Enabled = False
End Sub
Sub FillFields()
RS.Fields("sno") = Text1(0).Text
RS.Fields("sname") = Text1(1).Text
RS.Fields("ssex") = Text1(2).Text
RS.Fields("sclass") = Text1(3).Text
RS.Fields("syear") = Text1(4).Text
End Sub
Sub ShowFields()
Text1(0).Text = RS.Fields("sno")
Text1(1).Text = RS.Fields("sname")
Text1(2).Text = RS.Fields("ssex")
Text1(3).Text = RS.Fields("sclass")
Text1(4).Text = RS.Fields("syear")
Call CheckFields
End Sub
Sub CleanFields()
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
Text1(3).Text = ""
Text1(4).Text = ""
End Sub
Sub CheckFields()
Err = 0
For i = 0 To 4 Step 1
Call Ectype_Text1_LostFocus(i)
If Not Text1(i).Text = "" Then
If Text1(i).ForeColor = &HFF Then Err = Err + 1
End If
Next i
DoEctype = False
If Err = 0 Then
Call KeyStatus2
Else
Call KeyStatus1
Save_Key.Enabled = False
Delete_Key.Enabled = True
Update_Key.Enabled = True
Form1.Caption = Err & " 个无效输入,请更正!"
End If
End Sub
这位大哥
你说的用文本文件怎么实现? 用文本,每一行作为一条记录,各字段用","分隔,即可
dim fs,f '定义
Set fs = CreateObject("Scripting.FileSystemObject") ’创建实例
'write 文件
Set f = fs.OpenTextFile(App.Path & "\XXX.txt", 8, True)
f.WriteLine "a,b,c,d"
f.close
'read 文件
Set f = fs.OpenTextFile(App.Path & "\XXX.txt", 1, True)
Temp1 = f.ReadLine
'然后在用split将temp1临时字符串拆分即可
sqlite 是Split(字符串,分隔符)
Dim TmpA() as string
TmpA=Split("A,B,C,C,E",",")
For i=0 to ubound(tmpa)-1
msgbox tmpa(i),,"System Mesage"
next i
只要你不用第三方控件,只用vb自带的东西,可以直接运行的。
数据库地址写成一个配置文件,
这样做出来的程序,就可以直接运行 数据量不大真的可以用TXT来记录 csv XML 反正都不难实现 用ACCESS呵,一般电脑都有安装呵,简单又好用。 ACCESS,客户机无须安装ACCESS一样是可以用的 ACCESS么。例子好多的。又简单。ACCESS是OFFICE下面的东西么。真是的。不过那些什么TXT如果可以实现更好。就是不知道具体例子如何做。呵呵。 我是不会了。问各位高人吧。 sqlite是一种轻量级的数据库,百度一下。
寡闻了,受教了,谢谢啊!
补充:VB , 数据库(包含打印,安装,报表)