仅有的90分全部给出,下面的问题很久了,帮忙看一下,人都快疯了。在线等
帮忙看一下下面的代码,我是想通过显示卡号来查询到交易卡号(而一个显示卡号对应一个或多个交易卡号),
然后在EBGAIC.SMART_DELA_200312等表(即所有的交易表中,说明:交易表是每月生成一新表,例如:20030401的数据保存在EBGAIC.SMART_DEAL_200401的表中)查询交易信息。
结果是:
如果一个SMT_SHOWCARDNO对应一个SMT_CARDID,则显示错误。
如果一个SMT_SHOWCARDNO对应一个以上SMT_CARDID,则只显示第一个和最后一个SMT_CARDID的交易信息。
搞的人都疯了,现在还没有解决。
以下是全部的代码:现在给出注释:
<%
cardno=request("cardno")
sql2="select SMT_CARDID FROM EBGAIC.SMART_CARD WHERE SUBSTR(SMT_SHOWCARDNO,3,10)='"&cardno&"'"
set rs1=server.CreateObject("adodb.recordset")
rs1.open sql2, conn,1,3
do while not rs1.eof
if cardnol="" then
cardnol=rs1("SMT_CARDID")
ELSE
cardno1=cardnol&","&rs1("SMT_CARDID")
END IF
rs1.movenext
loop
response.Write cardno1
%>
以上部分是由SMT_SHOWCARDNO 得出SMT_CARDID,测试出是正确的。
<%
function addzero(num)
if cint(num)<10 then
addzero="0"&num
else
addzero=num
end if
end function
function constrct(thedates)
constrct= DatePart("yyyy", TheDates)&addzero(DatePart("m", TheDates))
end function
thedate=date
start=request("start")
endto=request("endto")
dept=request("dept")
wallet=request("wallet")
%>
<%
if start="" then
start=thedate
starts=constrct(start)
testsql="select * from ALL_TABLES where upper(TABLE_NAME)='SMART_DEAL_"&starts&"'"
set testRS=conn.execute(testsql)
if testRS.eof then
%>
<script language="JavaScript">
alert("本月数据暂未到\n请不要查询本月数据!")
</script>
<%
start=dateadd("m",-1,start)
endto=start
end if
end if
if endto="" then
endto=thedate
end if
if DateDiff("d",start,"2003-01-01")>0 then
start="2003-01-01"
end if
if DateDiff("d",endto,thedate)<0 then
endto=thedate
end if
if DateDiff("d",start,endto)<0 then
endto=thedate
start=thedate
end if
thismonth=constrct(thedate) 'DatePart("yyyy", TheDate)&addzero(DatePart("m", TheDate))
''''''''''''''''''这里是一个测试数据 实际运行应该去掉'''''''''''''''
'start="2002-10-11"
'endto="2002-10-11"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
starts=constrct(start)
endtos=constrct(endto)
'这里开始写语句了
sumfield=""
%>
<%
if starts>endtos then
sql1="select to_char(SMT_DealDateTime,'yyyy-mm-dd hh24:mi:ss') dealtime,SMT_WALLETCODE,SMT_DealCode, SMT_TRANSMONEY, SMT_OUTMONEY,SMT_ORG_ID ,SMT_TIMES FROM EBGAIC.SMART_Deal_"&thismonth&" where (to_char(SMT_DealDateTime,'yyyy-mm-dd') between '"&start&"' and '"&endto&"') and SMT_CARDID in("&cardno1&")"
sumfield=thismonth
if dept<>"ALL" then
sql1=sql1 & "AND SUBSTR(SMT_ORG_ID,1,9)='" & dept & "'"
end if
if wallet<> "ALL" then
sql1 = sql1 & " AND SMT_WALLETCODE ='" & wallet & "'"
end if
'sql1=sql1&" order by SMT_TIMES "
else
if starts=endtos then
sql1="select to_char(SMT_DealDateTime,'yyyy-mm-dd hh24:mi:ss') dealtime,SMT_WALLETCODE,SMT_DealCode, SMT_TRANSMONEY, SMT_OUTMONEY,SMT_ORG_ID ,SMT_TIMES from EBGAIC.SMART_Deal_"&starts&" where (to_char(SMT_DealDateTime,'yyyy-mm-dd') between '"&start&"' and '"&endto&"') and SMT_CARDID in("&cardno1&")"
sumfield=starts
if dept<>"ALL" then
sql1=sql1 & "AND SUBSTR(SMT_ORG_ID,1,9)='" & dept & "'"
end if
if wallet<> "ALL" then
sql1 = sql1 & " AND SMT_WALLETCODE ='" & wallet & "'"
end if
'sql1=sql1&" order by SMT_TIMES "
else
temp=endto
while starts<=endtos
if temp=endto then
sql1="select to_char(SMT_DealDateTime,'yyyy-mm-dd hh24:mi:ss') dealtime,SMT_WALLETCODE,SMT_DealCode, SMT_TRANSMONEY, SMT_OUTMONEY,SMT_ORG_ID,SMT_TIMES from EBGAIC.SMART_Deal_"&endtos&" where (to_char(SMT_DealDateTime,'yyyy-mm-dd') between '"&start&"' and '"&endto&"') and SMT_CARDID in ("&cardno1&")"
sumfield=endtos
if dept<>"ALL" then
sql1=sql1 & "AND SUBSTR(SMT_ORG_ID,1,9)='" & dept & "'"
end if
if wallet<> "ALL" then
sql1 = sql1 & " AND SMT_WALLETCODE ='" & wallet & "'"
end if
'sql1=sql1&" order by SMT_TIMES "
else
sql2="select to_char(SMT_DealDateTime,'yyyy-mm-dd hh24:mi:ss') dealtime, SMT_WALLETCODE,SMT_DealCode, SMT_TRANSMONEY, SMT_OUTMONEY,SMT_ORG_ID ,SMT_TIMES from EBGAIC.SMART_Deal_"&endtos&" where (to_char(SMT_DealDateTime,'yyyy-mm-dd') between '"&start&"' and '"&endto&"') and SMT_CARDID in("&cardno1&")"
if dept<>"ALL" then
sql2=sql2 & "AND SUBSTR(SMT_ORG_ID,1,9)='" & dept & "'"
end if
if wallet<> "ALL" then
sql2 = sql2 & " AND SMT_WALLETCODE ='" & wallet & "'"
end if
sql1=sql1&" union "&sql2
sumfield=sumfield&","&endtos
end if
temp=DateAdd("m", -1, temp)
endtos=constrct(temp)
wend
end if
end if
span= DateDiff("m", start, endto)
%>
中间代码是组合SQL查询语句。
<%
set rs=server.createobject("adodb.recordset")
sql1=sql1&" order by SMT_TIMES "
rs.open sql1,conn,1,3
'response.write sql1
'response.end
%>