'********************************盲人摸象*******************************************************
'猜测的表结构:
'表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