Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分] 查找取值

菜鸟  发表于:2017-12-19 16:31:21  
复制

点击下载此

附件

参数

编号 代号 连接字段
1 A P1
2 B P2
3 C P3
4 D P4
5 E P5
6 F P6
7 H P7
8 I P8
9 J P9
10 M P10
11 O P11
12 Q P12
13 R P13
14 K P14
15 L P15
16 N P16
17 P P17
18 G P18
19 S P19
 更新表
ID P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16 P17 P18 P19 取值
4 0.04 0 0.1 0 0.5 0 0 0.23 0 0 0 0 0 0 0 0 0 0 0
各位老师!如何根据更新表的字段的值如果大于0就在参数表中取对应的代号,如上取值为:ACEI

谢谢!

 

Top
西出阳关无故人 发表于:2017-12-19 18:08:36

两种方式,

一:按钮命令方式

sub genxingA()
    Dim rst As ADODB.Recordset, i As Long, fld As ADODB.Field, str As String
    Set rst = New ADODB.Recordset
    rst.Open "SELECT * FROM 更新表 ", CurrentProject.Connection, adOpenStatic, adLockOptimistic
    For i = 1 To rst.RecordCount
        str = ""
        For Each fld In rst.Fields
            If Nz(fld.Value, 0) <> 0 And fld.Name <> "ID" And fld.Name <> "取值" Then
                str = str & DLookup("代号", "参数", "连接字段='" & fld.Name & "'")
            End If
        Next
        rst.Fields("取值") = str
        rst.Update
        rst.MoveNext
    Next i
    rst.Close
    Set rst = Nothing
End sub

二、查询方式

创建一个函数如下

Function genxingB(THEID As Long) As String
    Dim rst As ADODB.Recordset, fld As ADODB.Field, str As String
    Set rst = New ADODB.Recordset
    rst.Open "SELECT * FROM 更新表 WHERE ID=" & THEID, CurrentProject.Connection, adOpenStatic, adLockReadOnly
    str = ""
    For Each fld In rst.Fields
        If Nz(fld.Value, 0) <> 0 And fld.Name <> "ID" And fld.Name <> "取值" Then
            str = str & DLookup("代号", "参数", "连接字段='" & fld.Name & "'")
        End If
    Next
    genxingB = str
    rst.Close
    Set rst = Nothing
End Function

创建一个查询如下:

UPDATE 更新表 SET 更新表.取值 = genxingB([ID]);

然后运行查询




总记录:1篇  页次:1/1 9 1 :