我用datagrid  显示一张工资表  里面记录比较多  有2000多条 列也有三十多列
姓名  部门   技能工资    岗位工资   ...
张三   安监    650          980
李四   人资    450          780
...
平时要修改工资数据,比如要修改王五的所得税   首先要找到王五这一行   然后再找到所得税这一列。
比较麻烦,能不能给出条件王五  和所得税  后 直接定位到 这一格。我直接输入新的所得税额,就行了技术上怎么实现,不知道代码怎么写

解决方案 »

  1.   

    应该按部门进行分类,用个Combo控件
    这个需要修改数据源的SQL语句,由于没有代码,无法修改
    你该贴一下代码,别等别人问
      

  2.   

    也可以通过查询来实现定位
    给你个参考代码:
    '在Text控件的Change事件里面写如下代码:
        Dim cn As New ADODB.Connection
        Dim rst As New ADODB.Recordset
        Dim SqlStr As String
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Database Password=111"
        SqlStr = "Select * From 员工表 where 姓名 Like '" & Text1.Text & "%'"
        rst.CursorLocation = adUseClient
        rst.Open SqlStr, cn, adOpenDynamic, adLockOptimistic, adCmdText '打开记录集
    Set DataGrid1.DataSource = rst '给DataGrid修改数据源
      

  3.   

    你这样,不是只返回王五的记录吗   修改他的所得税   还要去找他的所在列我是用ADODC1 绑定的现在我已经实现了指针定位到  王五这一行  代码如下Adodc1.Recordset.Find "姓名='" & Text2.Text & "'"如何再进一步  将光标定位到所得税这一列呢另外说明一下  我用combo 来加载各个列名称
      

  4.   

    想问一下  datagrid1.setfoucs  这个属性怎么用
    不知道有没有人熟悉
      

  5.   

    楼上说的对,每次都是 dbcontrols  兄回答我的问题,多谢了。
    不过这个方法怎么用  
    Private Sub DataGrid1_GotFocus()
    里面怎么写啊
    End Sub
      

  6.   

    解决  和大家分享一下我的代码
    Private Sub Combo1_Click()
    Select Case Combo1.Text
       Case "编号"
        indexcol = 1
       Case "部门"
        indexcol = 4
       Case "二级部门"
       indexcol = 5
       Case "三级部门"
       indexcol = 6
       Case "姓名"
       indexcol = 7
      End Select
    End SubIf Option3.Value = True Then
       Adodc1.Recordset.find "姓名='" & Trim(Text3.Text) & "'"
       If Adodc1.Recordset.EOF = True Then
          MsgBox "没有该姓名!", vbOKOnly + vbExclamation
       End If
       DataGrid1.Col = indexcol
        DataGrid1.SetFocus
    End If