当前位置:编程学习 > VB >>

怎样设计一个不需要数据库安装的软件?

各位大侠:
    小女最近要用VB编写一个比较简单的档案管理软件,只需要实现档案的插入、查询、修改、删除功能就可以,其中查询需要有简单的模糊查询,关键字查询即可。现在碰到的问题是:只要安装这个软件的程序就能使用,无需像SQL Server一样安装数据库软件才能使用。那应该是用VB+?去编写呢? 如果数据量不大就直接用文本文件实现 用VB+Access呀,或者用SQL Server也没关系,直接用MSDE来做,他是SQL Server的桌面版,可以跟随VB工程一起打包安装的。还可以用VB+FoxPor的数据库,都是比较简单方便的东西。
直接用ACCESS做数据库做开发...连安装都不用了 呵呵……谢谢大家了!你们太好了!
可是如果我自己要使用ACCESS数据库的时候,是不是还要安装ACCESS程序? 你自己要看Access还是得安装Access的
除非拷到已安装Access的机器上
引用 4 楼 qingranju594 的回复:
呵呵……谢谢大家了!你们太好了!
可是如果我自己要使用ACCESS数据库的时候,是不是还要安装ACCESS程序?
其实windows自带的ado驱动有不少
首先你的目标定在xp以上机器,不用装软件直接可以使用
然后找找一个干净的xp机器上有哪些ado驱动
再用vb自带的数据库工具建表,使用该数据库。
这样xp以上机器均可以不安装数据库软件的情况下使用ado
使用ado就能使用sql 那到哪里可以看得到ADO驱动呢?

引用 6 楼 notback 的回复:
其实windows自带的ado驱动有不少
首先你的目标定在xp以上机器,不用装软件直接可以使用
然后找找一个干净的xp机器上有哪些ado驱动
再用vb自带的数据库工具建表,使用该数据库。
这样xp以上机器均可以不安装数据库软件的情况下使用ado
使用ado就能使用sql
使用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
上面代码,有错误,自己解决。
引用 1 楼 yiguangqiang88 的回复:
如果数据量不大就直接用文本文件实现

这位大哥
你说的用文本文件怎么实现? 用文本,每一行作为一条记录,各字段用","分隔,即可

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
引用 14 楼 jiashie 的回复:
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来记录 
引用 15 楼 zhufobbs 的回复:
引用 14 楼 jiashie 的回复:
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
csv XML 反正都不难实现 用ACCESS呵,一般电脑都有安装呵,简单又好用。 ACCESS,客户机无须安装ACCESS一样是可以用的 ACCESS么。例子好多的。又简单。ACCESS是OFFICE下面的东西么。真是的。不过那些什么TXT如果可以实现更好。就是不知道具体例子如何做。呵呵。 我是不会了。问各位高人吧。
引用 15 楼 zhufobbs 的回复:
引用 14 楼 jiashie 的回复:
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
sqlite是一种轻量级的数据库,百度一下。
引用 25 楼 sysdzw 的回复:
引用 15 楼 zhufobbs 的回复:

引用 14 楼 jiashie 的回复:
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
sqlite是……

寡闻了,受教了,谢谢啊!
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,