2

ASPのDateDiff()関数を使用して、2つの日付の日付の違いを見つけています。

この関数は正常に機能し、2つの日付の正確な日付の違いを表示しますが、この値をデータベースに挿入する場合、日付の違いに関係なく、値として9を取ります。

2つの日付の差が15日または20日を超えるとすると、データベースでは「9」かかります。

日付の差を表示する列のデータ型としてINTを使用しました。

ここでDATATYPEが問題を引き起こしていますか?セッション変数を使用して値を格納しようとしましたが、うまくいきませんでした-以下に私のコードを示します:

if request.Form("sub") <> "" then
        sql = "Select * from emp_leave_details"
        rs.open sql , con, 1, 2
        dim diff
        dim todate
        dim fromdate            
        fromdate= rs("leave_from")
        todate= rs("leave_to")
        session("date_diff")=datediff("d",fromdate,todate)
        rs.addnew



        rs("emp_name") = request.Form("name")
        rs("emp_no") = request.Form("number")
        rs("address") = request.Form("address")
        rs("contact_no") = request.Form("contact")
        rs("mobile_no") = request.Form("mobile")
        rs("contact_onleave") = request.Form("contact_details")
        rs("leave_type") = request.Form("rad")
        rs("other_leave_details") = request.Form("PS")
        rs("leave_from") = request.Form("from")
        rs("leave_to") = request.Form("to")
        rs("applied_by") = request.Form("apply")
        rs("accepted_by") = request.Form("accept")
        rs("approved_by") = request.Form("approve")
        rs("no_of_leave_taken")= session("date_diff")
        rs.update

        response.Write("<script language='javascript'>{update();}</script>")

        rs.close
        end if
4

3 に答える 3

1

データ型はこれとは関係ありません。セッションに値を保存することは解決策ではありません。通常の変数を使用できます。

fromdateあなたのコードから、 と に常に同じ値を使用しているように見えますtodate。これは、結果セット内の行を反復しないためです。

if not rs.bof and not rs.eof then
    do while not rs.eof

        '' code to execute for each row            

        rs.moveNext
    loop
end if

現在のスクリプトrsでは、クエリによって返された最初の行の結果が常に返されます。

Date2 つ目の問題は、データ型かもしれません。を使用して値を日付に変換し、cDateこれを使用して差を計算します。

于 2012-05-09T10:59:22.620 に答える
0

あなたの問題は、「Select * from emp_leave_details」を検索すると、常にそのテーブルのすべてのレコードが得られることです。最初のレコードの値を取得し、これらの diff を実行すると、常に同じ値になります。これは正常です。あなたの質問からは、あなたが本当にやりたいことは不明です。私はそうしたいので、次のようなレコードを選択します

Select * from emp_leave_details where emp_name=<%=request.Form("name")%>

それに基づいて、計算された no_of_leave_taken で新しいレコードを追加します。

于 2012-05-09T23:08:19.643 に答える
0

申し訳ありませんが、私が代わりに呼び出していたのはデータベースフィールド名でした...

fromdate= request.form("from")
todate= request.form("to")

私はこれを呼んでいた

fromdate= request.form("leave_from")
todate= request.form("leave_to")

もう一度申し訳ありません..しかし、すべての可能な解決策を私に提供してくれて本当に感謝しています.

ありがとう。

于 2012-05-10T05:19:32.360 に答える