0

私は以下のようなアクセスクエリを持っています:

select column_date, sum(qty1), sum(qty2), sum(qty3) from table1
where column_date = [enter date]
group by column_date
union all
select 'Total' as column_date, sum(qty1), sum(qty2), sum(qty3) from table1
where column_date = [enter date]

今、私は以下のようなaspコードを持っています:

<%
Dim enterdate = Request.Form("enterdate")
set conn=Server.CreateObject("ADODB.Connection")
conn.open "odbcdatasourcename"
set rs = Server.CreateObject("ADODB.recordset")
sql="abovequery '" & enterdate & "' "
rs.Open sql, conn
%>
<table border="1" width="100%">
<%If rs.EOF then
Response.write ("<center>" & "<b>" & "There is no records for 
the selected dates" & "</b>" & "</center>")%>
<%Else%>
<tr>
<%for each x in rs.Fields
response.write("<th>" & x.name & "</th>")
next%>
</tr>
<%do while not rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td>
<%next
 rs.MoveNext%>
</tr>
<%loop%>
<%End if%>
<%rs.close
conn.close%>

ご覧のとおり、選択した日付のデータがない場合は、「選択した日付のレコードがありません」というメッセージが表示されます。ただし、レコードがない場合、つまり値が空白の2番目のクエリがある場合は常に、「合計」の最後の行のみが表示されます。それを修正することは可能ですか?

そして、選択した日付のレコードがデータベースにある場合、「太字」の最後の行、つまり合計行を作成したいと思います。ここでも可能ですか?前もって感謝します

4

1 に答える 1

0

2つのクエリがあり、そのように実行する必要があります。最初にデータを取得するクエリ、次に合計を取得するクエリです。現状のクエリでは、常にTotalを日付として1行が返されます。

これは、テーブルが完全に空の場合でも当てはまります。これを確認するには、IDと呼ばれる1つの列があり、行がないテーブルを作成します。

SELECT ID,ID As ASum
FROM EmptyTable
UNION
SELECT "Total" As ID, Sum(ID)
FROM EmptyTable

1行を返します。

于 2012-07-22T12:02:52.087 に答える