现有一个数据表(access)命名为product,有三个字段
产品号 prodID varChar(50)
零件号 compID varChar(50)
版本号 verID varChar(10)
其中版本号的格式为"年月日"+"00",例如"2003070900"
一个产品由若干零件组成,若产品的版本号改变,则该产品的所有零件都重新纪录进数据库。怎样实现如下功能?
给定一个字符串"年月日"+"00"(即可能是表中版本号的值,也可能不是),选出所有满足条件的纪录写入另一张表中。
条件:取出所有产品的最新的版本(即离给定的字符串最近的版本号)。注意:产品的最新的版本号,不一定都是一样的,例如 可能a的最新版本号是20030630,b的是20030703,但是他们都是满足输入"20030705"时所要求的纪录给位帮一下忙拉,不够再加,急
产品号 prodID varChar(50)
零件号 compID varChar(50)
版本号 verID varChar(10)
其中版本号的格式为"年月日"+"00",例如"2003070900"
一个产品由若干零件组成,若产品的版本号改变,则该产品的所有零件都重新纪录进数据库。怎样实现如下功能?
给定一个字符串"年月日"+"00"(即可能是表中版本号的值,也可能不是),选出所有满足条件的纪录写入另一张表中。
条件:取出所有产品的最新的版本(即离给定的字符串最近的版本号)。注意:产品的最新的版本号,不一定都是一样的,例如 可能a的最新版本号是20030630,b的是20030703,但是他们都是满足输入"20030705"时所要求的纪录给位帮一下忙拉,不够再加,急
1.选定的记录:"select * from Table1 where 版本号=" & val(trim$(text1.text)) & " order by 版本号"(要加入另一张表,用update 或 select into)
2.最新版本号:"select * from Table1 where 版本号>=" & val(trim$(text1.text)) & " order by 版本号"
给定的字符串假设为"20030703"a 的最新版本号为"20030630"
a 的另一个版本号为“20030521”
b 的最新版本号为"20030703"
b 的另一个版本号位"20030625“
c 的最新版本号为"20030708"
c 的另一个版本号为"20030701“
这样只有产品a 版本"20030630“
和b 版本"20030625
和c 版本"20030701“是满足条件的纪录
版本号是有规律的"年月日"。例如"20030709"
最新版本号(假设text2.text中输入的是其产品号,text1.text是其对应的版本号):"select * from Table1 where 产品=" & val(trim$(text2.text)) & " and 版本号>=" & val(trim$(text1.text)) & " order by 版本号"
"select * from Table1 where 产品号=" & val(trim$(text2.text)) & " order by 版本号"
??
这样好像意思不对啊,你这里是列出所有版本号大于给定的条件,可是我的意思是列出版本号中小于给定条件的最大值的所有记录举个例子
版本号
20030625
20030629
20030630
20030702
20030705如果我的条件是
20030627 则应该返回的记录的版本号应该是 20030625
20030701 则应该返回的记录的版本号应该是 20030630
20030720 则应该返回的记录的版本号应该是 20030705
在同一种产品中找到最大记录,将产品号及最大版本号同时记录下来,写进SQL语句中。
重新搜索一遍,即可得到所求结果Dim rs As ADODB.Recordset
Dim Cn As ADODB.Connection
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\parTdb.mdb;Persist Security Info=False"
Cn.Open Cn.ConnectionString
sql="select * form product where 版本号 < '’+DateString+"00' order 产品号"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open Sql, Cn, adOpenDynamic, adLockOptimistic, adCmdText'先按条件查找,如果存在取最后一条记录,不存在就修改条件再找
If rs.EOF = False Then
Dim i as long
Dim LastProductNo As String
Dim MaxVerNo As String sql=="select * form product where "
LastProductNo=rs!产品号
MaxVerNo=rs!版本号
rs.movenext
For i=1 To rs.RecordCount-1
if rs!产品号 = LastProductNo Then
If rs!版本号 >MaxVerNo Then
MaxVerNo = rs!版本号 '找到每种产品的最大版本号
End If
Else '在SQL语句中记录下每种产品最大版本号
sql=sql +" 产品号= '" + LastProductNo + " and 版本号 = "+MaxVerNo
if rs.book <> rs.RecordCount Then
sql=sql +" or " '这个地方不是很确定,就是条件很多时,怎么写组合语句
End If
LastProductNo =rs!LastProductNo
End If
rs.movenext
Next i'按新的条件重新搜索,找到每种产品的最大版本号的所有记录Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open Sql, Cn, adOpenDynamic, adLockOptimistic, adCmdText
End If
sql="select * form product order 产品号"