初級者です。ASP.NET Webフォームアプリに関する質問です。初歩的なことですが、よろしくお願いします。
※OSはWindows7、.NET Framework4、Visual Stdio 2010、SQLserver2012、IE11を利用しています。
テーブルからdate型のデータを(SQLserver2012を使用)取得し、
VB側の構文「Dim dtToday As DateTime = Date.Today」で取得した日付と比較、
同日なら処理Aを、日付が異なるなら処理Bを実行するようコードを記述したいと考えています。
(質問用に処理A、Bはラベルコントロールにメッセージを表示させるのみとしています)
※特定のFacilityIDの日付が最新のレコードを参照して"date"だけを取得します。
現在の格納内容でいえば、取得されるべきは「valueID」が「6」のレコードの「2016-09-08」の部分。
(SQL構文で「FacilityID」を「1」と指定した場合)
現在のコードでは、双方で取得された日付が異なった場合の処理Bが実行されている状態にあります。
こちら(date (Transact-SQL))に多少目を通しながらコードを記述してみたのですが、やはりSQLserverに格納されているデータの型や記述方式と、VB側で取得する日付の記述方式が異なる、といったような点が原因なのでしょうか。
※DateDiff 関数というものがあると別方面で教えていただきました。
そちらを利用したコードだとどのように書けばよいのかも教えていただけるとありがたいです。
Visual
1Imports System.Data.SqlClient 2 3Partial Class dateGet_test 4 Inherits System.Web.UI.Page 5 6 Protected Sub dateTestGo_Btn_Click(sender As Object, e As System.EventArgs) Handles dateTestGo_Btn.Click 7 8 Dim day As String = GetDate() 9 10 Dim dtToday As DateTime = Date.Today 11 12 If day Like dtToday.ToString() Then 13 LblMsg.Text = "今日のデータはすでに格納されています" 14 Else 15 LblMsg.Text = "大丈夫!" 16 End If 17 18 End Sub 19 20 'データベースから日付(date型データ)を取得する関数 21 Private Function GetDate() As String 22 23 Dim ret As String = "" 24 25 Dim cnStr As String = System.Configuration.ConfigurationManager. 26 ConnectionStrings("○○○○○○ConnectionString").ConnectionString 27 28 Using connection As New SqlConnection(cnStr) 29 30 Dim SQL As String 31 SQL = "SELECT date" & 32 " from tbl_valueTest as A" & 33 " WHERE Exists(SELECT * from tbl_valueTest" & 34 " group by FacilityID" & 35 " having FacilityID = A.FacilityID and MAX(date) = A.date)" & 36 " and FacilityID = 1 " 37 38 Dim command As New SqlCommand(SQL, connection) 39 40 Try 41 42 connection.Open() 43 44 Dim result As String = "" 45 result = command.ExecuteScalar() 46 47 If result IsNot "" Then ret = CStr(result) 48 49 connection.Close() 50 51 Catch ex As Exception 52 53 End Try 54 55 End Using 56 57 Return ret 58 59 End Function 60End Class

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/08 05:52