最近老师要求开发数据库程序,要求用一种语言做前台,用一种数据库做后台
后来发了封贴,得知VB+ACCESS比较简单,可是小弟在制作过程中遇到了一些问题,希望各位大哥给予一点帮助
(注:小弟将来不准备从事VB的开发,只不过老师赶着要作业,只能找了本书勉强应付一下,由于好多VB的基本知识不是很懂,所以请大哥们不要见效。)
另外给斑竹提一点:新手在开发过程中总是会遇到一些很郁闷的问题,如果提出一些对于你们来说很幼稚的问题被骂,或作为作业贴删之,那么可以想象的是论坛都是高手,可是不经过新手,哪来的高手。希望大家能尊重新手。小样,不要以为脱掉马甲大家就不是认识你了。以上都是废话,下面进入正题:
下面是小弟作业的人事信息管理系统的人事输入
有按钮‘添加’,‘删除’,‘取消’ ,‘开始查询’,‘全部显示’
前面三个按钮用于对 表进行字面意思的操作,开始查询可以根据【部门名称】查询相应的信息,全部显示是在查询后,显示全部信息。
控件有:Adodc1:connectionstring:emplyoee.mdb;recordsource:SELECT *FROM Person
        Adodc2:connectionstring:emplyoee.mdb;recordsource:Department
        DataGrid1:DataSource:adoperson
        DataCombo1:RowSource:adoDepart;ListField:部门名称;BoundColumn:部门代码;
问题:
1.“添加”输入时提示:The field'Salsry.月份'can't contain Null value because the Required
                      property for this field is set to Ture.Enter a value in this field
2."查询“时,提示:complie error:method of data member not found
3."删除”时,无论点“取消”还是“确定”都会做删除操作。请大哥帮忙优化一下,并指出问题
小弟QQ:12004135 e-mail:[email protected]
由于不知道怎么发图,所有文章比较长看起来很麻烦,小弟可以提供源文件。Option Explicit
Dim rsPerson As ADODB.Recordset
Dim rsSalary As ADODB.Recordset
Dim Depart As String
Dim PerID As StringPrivate Sub cmdAdd_Click(Index As Integer)
'添加记录
Dim NewID As Integer
rsPerson.AddNew
'自动添加工号
NewID = Val(Trim(PerID)) + 1
rsPerson!工号 = Str(NewID)
End SubPrivate Sub cmdAll_Click(Index As Integer)
'全部显示
Dim SqlString As String
SqlString = "SELECT * FROM Person"
adoPerson.RecordSource = SqlString
adoPerson.RefreshEnd SubPrivate Sub cmdCancel_Click(Index As Integer)
'取消修改
rsPerson.CancelUpdate
End SubPrivate Sub cmdDelete_Click(Index As Integer)
'删除记录
Dim Response As Integer
Response = MsgBox("是否删除记录?", vbQuestion + vbOKCancel, "删除记录")
If Response Then
rsSalary.Find ("工号=""&rsPerson!工号&")
'将工资信息表中的相应记录也删除
If Not rsSalary.EOF Then
rsSalary.Delete
End If
rsPerson.Delete
End If
End SubPrivate Sub cmdExit_Click()
frmMain.Show
frmPerson.Hide
End SubPrivate Sub cmdSelect_Click(Index As Integer)
Dim SqlString As String
SqlString = "SELECT * FROM Person WHERE" & "(((Person.部门代码)=""&Depart&""))"
adoPerson.RecordSource = SqlString
adoPerson.Refresh
End SubPrivate Sub dgrPerson_AfterColUpdate(ByVal ColIndex As Integer)
rsPerson.Update
rsSalary.Update
End SubPrivate Sub Form_Load()
Set rsPerson = adoPerson.Recordset
rsPerson.MoveLast
PerID = rsPerson!工号
Set rsSalary = frmSalary.adoSalary.Recordset
End SubPrivate Sub Dgrperson_AfterUpdate()
'将新记录添加到工资信息表中
If rsPerson.RecordCount > rsSalary.RecordCount Then
rsSalary.AddNew
rsSalary!工号 = rsPerson!工号
rsSalary!姓名 = rsPerson!姓名
rsPerson.Update
End If
End SubPrivate Sub dgrPerson_Error(ByVal DataError As Integer, Response As Integer)
'新记录姓名必须输入
Response = 0
MsgBox "请输入姓名", , "输入出错!"
dgrPerson.SetFocus
End SubPrivate Sub dtcDepart_Change()
'查询组合框
Depart = dtcDepart.BoundText
If Depart <> "" Then cmdSelect.Enable = True
End Sub

解决方案 »

  1.   

    你现在的代码写的很混乱啊!
    又是ADODC又是ADODB的
    实际上,如果ADODC和DATAGRID一起使用,如果你把全部记录都读入DATAGRID的话,所有添加修改删除的操作都可以在DATAGRID中进行!
      

  2.   

    哦,谢谢 CPLiu(老了)大哥了.
    楼上的代码都是照书上一字不漏写的,根本看不过来
    小弟决定重新做一个,简洁点的
    问题:为什么原来3个TextBox链接代码没问题,现在改成了2个TextBox和一个DataCombo后就有问题了
    提示:Run-time error'-2147467259(80004005)"'
          无法插入空行。行必须至少有一个列集Private Sub cmdAdd_Click(Index As Integer)
    AdoOrder.Recordset.AddNew
    AdoOrder.Recordset.Update
    AdoOrder.Recordset.MoveLast
    End Sub
      

  3.   

    代码不看勒,直接回答你问题,1,是因为你数据库设置的时候你设定勒你的那个字段为必添字段,而且部允许为空,改一下就是勒
    2,是你查询的对象有问题
    3,我给你一个范例
    If MsgBox("你选择了关闭图书管理系统,是否继续?", _
            vbYesNo + vbInformation, "图书管理系统") = vbYes Then
          执行操作
    else
         不执行
    end if