access :pfb(评分表)
得分  跑步 肺活量 坐位前屈
10 3′54″ 73 14
9 3′58″ 70 13
8.5 4′02″ 67 12
8 4′06″ 64 11
7.5 4′10″ 61 10
7 4′15″ 58 9
6.5 4′20″ 55 8
6 4′25″ 52 7
5.5 4′30″ 49 6
5 4′35″ 46 5
4.5 4′40″ 43 4
4 4′45″ 40 3
3.5 4′50″ 37 2
3 4′55″ 34 1
2.5 5′00″ 31 0
2 5′05″ 28 -1
1.5 5′15″ 25 -2
1 5′25″ 22 -3
.5 5′35″ 19 -4
0 5′36″ 18 -5在一窗体在:datagrid考号  姓名  考试项目    成绩     得分
1   A  坐位前屈   13
1   A  肺活量   42
点按钮:计算
从评分表中找出对应成绩的得分,放到datagrid中的得分
考号  姓名  考试项目    成绩     得分
1   A  坐位前屈   13     9
1   A  肺活量   42      4

解决方案 »

  1.   

    假定 datagrid 操作的数据表名为 [测试纪录],计算时逐个执行下面的 SQL 更新,最后刷新 datagridUPDATE [测试纪录] SET
       得分 = (SELECT MAX(得分)
               WHERE 跑步<=[测试纪录].成绩)
     WHERE 考试项目='跑步'UPDATE [测试纪录] SET
       得分 = (SELECT MAX(得分)
               WHERE 坐位前屈<=[测试纪录].成绩)
     WHERE 考试项目='坐位前屈'UPDATE [测试纪录] SET
       得分 = (SELECT MAX(得分)
               WHERE 肺活量<=[测试纪录].成绩)
     WHERE 考试项目='肺活量'
      

  2.   

    更正:上面子查询中少了
     FROM pfb
      

  3.   


    不好意思,开始没看明白datagrid没用过。用spread示意    With oSpr
            
            For I = 1 To .MaxRows
                .Row = I
                .Col = 3
                strField = Trim(.Text)
                .Col = 4
                strData = Trim(.Text)
                
                strSQL = ""
                strSQL = strSQL & " SELECT 得分 " & vbNewLine
                strSQL = strSQL & "   FROM FTP " & vbNewLine
                strSQL = strSQL & "  WHERE " & strField & " <= '" & strData & "' " & vbNewLine            resQ.Open strSQL, P_Connect
                
                If resQ.RecordCount > 0 Then
                    .Col = 5
                    .Text = Trim(resQ.Fields("得分") & "")
                End If
                
                resQ.Close
            Next I
        End With
           
      

  4.   

    表名搞错了strSQL = strSQL & "  FROM FTP " & vbNewLine改为strSQL = strSQL & "  FROM pfb " & vbNewLine
      

  5.   

    UPDATE [测试纪录] SET
       得分 = (SELECT MAX(得分)
               WHERE 跑步<=[测试纪录].成绩)
     WHERE 考试项目='跑步'出现:操作必须使用一个可更新的查证可能是因为access update 不支持子查询,么还是其他原因啊!!
      

  6.   

    UPDATE [测试纪录] SET 
      得分 = (SELECT MAX(得分) 
              from pfb
              WHERE 跑步 <=[测试纪录].成绩) 
    WHERE 考试项目='跑步' 
      

  7.   

    加了from bfb 也不行啊!出现:操作必须使用一个可更新的查证 
      

  8.   

    我是在access 中进行实验的
      

  9.   

    UPDATE cj SET 得分 = dMAX("得分","pfb","坐位前屈 <=" & cj.成绩)
    WHERE 考试项目='坐位前屈';
      

  10.   

    SELECT 考号, 姓名, 考试项目, 成绩, (select max(得分) from pfb where 跑步<=a.成绩)
    FROM 测试记录 AS a
    WHERE 考试项目='跑步';
      

  11.   

    SELECT 考号, 姓名, 考试项目, 成绩, (select max(得分) from pfb where 跑步<=a.成绩) AS 得分
    FROM 测试记录 AS a
    WHERE 考试项目='跑步';