'********************************盲人摸象*******************************************************
'猜测的表结构:
'表1(供应商,第一次报价产品名称,第二次报价产品名称,...,第五次报价产品名称,第一次报价,第二次报价,...第五次报价,...)
'报价格式(供应商,产品名称,最后报价)
'猜测的需求:
'一共要求了五次报价,因为有些供应商考虑因素不同,可能只有一次报价,也可能有三次或五次报价.现在要求统计最后一次报价
Private Sub Command0_Click()
    Dim i, j, N, b, Z
    Set cnn = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open "Select * From 表1", cnn
    cnn.Execute "Delete * From 报表格式"
    For j = 1 To rst.RecordCount    '循环rst的每条记录
        '//
        N = "": Z = ""        '初始化变量
        For i = 1 To 5    '循环每条记录的1到5字段
            If IsNull(rst(i)) Then
                Exit For    '如果字段值为空,跳出循环i
            Else
                N = rst(i)    '如果字段值不为空,把字段值赋给变量N
            End If
        Next i
        For b = 6 To 10    '循环每条记录的6到10字段
            If Not IsNull(rst(b)) Then
                Exit For    '如果字段值为空,跳出循环b
            Else
                Z = rst(b)    '如果字段值不为空,把字段值赋给变量Z
            End If
        Next
        '\\
        '从//到\\的意思是是,看看最后一次不为空的报价是在哪个字段.当然表的第n次报价的产品名称和报价只能同时为空,或同时不为空.
        If N <> "" And Z <> "" Then
            '如果本条记录至少有一次报价不为空
            strSQL = "Insert INTO 报表格式(供应商,产品名称,最后报价) VALUES ('" & rst(0) & "', '" & N & "','" & Z & "')"
            cnn.Execute strSQL    '把最后一次报价插入到表"报表格式"
        End If
        rst.MoveNext    '下一条记录
    Next j
    DoCmd.OpenReport "报表1", acViewPreview
End Sub