C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: SqlDataSourceでdate型の値をNullセット


(過去ログ 103 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■61507 / inTopicNo.1)  SqlDataSourceでdate型の値をNullセット
  
□投稿者/ Berryz (7回)-(2011/08/17(Wed) 18:10:25)

分類:[ASP.NET (VB)] 

SqlDataSourceでデータをセットしてInsert使用としています。

varcha型やchar型なら下記の方法で、出来て問題なくInsertできますが
SqlDataSource1.InsertParameters.Add("ID", Me.番号.Text)

date型で下記の方法でセットでセットしてもエラーが出ます。
SqlDataSource1.InsertParameters.Add("DAY", Me.日付.Text)
SqlDataSourceでは無理なのでしょうか?

DBはSQLServer2008です。
ASPは4.0です。

よろしくお願いします
引用返信 編集キー/
■61510 / inTopicNo.2)  Re[1]: SqlDataSourceでdate型の値をNullセット
□投稿者/ ぐっさん (4回)-(2011/08/17(Wed) 19:12:19)
No61507 (Berryz さん) に返信
> date型で下記の方法でセットでセットしてもエラーが出ます。

どのようなエラーが出るのかを書きましょう。
あと、Me.日付.Textの値はどうなっていますか?
元のINSERT文に問題があるのか、日付.Textの値に問題があるのか判別できませんので。
引用返信 編集キー/
■61511 / inTopicNo.3)  Re[1]: SqlDataSourceでdate型の値をNullセット
□投稿者/ ぐっさん (5回)-(2011/08/17(Wed) 19:42:41)
No61507 (Berryz さん) に返信

あと、スレッドのタイトルは「SqlDataSourceでdate型の値をNullセット」ですが、
本文にはNullについての記述がありません。
タイトルと質問にはどのような関係があるのかを教えてください。
引用返信 編集キー/
■61519 / inTopicNo.4)  Re[2]: SqlDataSourceでdate型の値をNullセット
□投稿者/ みきぬ (984回)-(2011/08/18(Thu) 09:39:58)
なぜ date 型のパラメータに string 型の値を設定して問題ないと思ったのか。
引用返信 編集キー/
■61603 / inTopicNo.5)  Re[3]: SqlDataSourceでdate型の値をNullセット
□投稿者/ Berryz (8回)-(2011/08/22(Mon) 15:04:56)
No61519 (みきぬ さん) に返信

実は、下記のような共通関数を作ろうと考えています

Protected Function Get_Null_Date(ByRef strDay As String) As DateTime
Dim datday As DateTime
If strDay.Trim() = "" Then
datday = Null ← ここにセットする関数が分からなくて質問しました
Else
datday = CDate(strDay)
End If
Return datday
End Function


ややこしくてすみませんがよろしくお願いします
引用返信 編集キー/
■61605 / inTopicNo.6)  Re[4]: SqlDataSourceでdate型の値をNullセット
□投稿者/ shu (951回)-(2011/08/22(Mon) 15:53:24)
No61603 (Berryz さん) に返信

> Protected Function Get_Null_Date(ByRef strDay As String) As DateTime
Protected Function Get_Null_Date(ByRef strDay As String) As Object


> datday = Null ← ここにセットする関数が分からなくて質問しました
datday = DBNull.Value


ってことですか?
引用返信 編集キー/
■61606 / inTopicNo.7)  Re[4]: SqlDataSourceでdate型の値をNullセット
□投稿者/ 魔界の仮面弁士 (2321回)-(2011/08/22(Mon) 16:03:05)
No61603 (Berryz さん) に返信
> 実は、下記のような共通関数を作ろうと考えています
# 構文的に、旧VBのコードを機械的に置換しているかのような印象を受けるは気のせいかな…。

>         Protected Function Get_Null_Date(ByRef strDay As String) As DateTime
ByVal ではなく、あえて ByRef を採用されている理由は何でしょうか?

それと、SQL Server がサポートする日付範囲/日付精度と、
.NET がサポートする日付範囲/日付精度は異なりますが、
今回、その点は考慮する必要が無いと思って良いですか?


>             If strDay.Trim() = "" Then
これだと、strDay が空文字列だった場合や空白のみで構成された文字列だった場合は良いですが、
strDay が Nothing だった場合、上記判定が例外を発生させることになりますよ。


>                 datday = Null ← ここにセットする関数が分からなくて質問しました
関数の戻り値を『As Date?』または『As Nullable(Of Date)』にすれば、
ここで「Return Nothing」とすることができます。

あるいは、戻り値の型を Object にすれば、Date でも DBNull でも Nothing でも自由に返せます。

どうしても Date 型のままにしたいなら、メソッドの呼び出し側(あるいは SQL 側)にて、
特定の日付値を null に置き換えてセットするような仕組みを用意する必要がありますね。

>                 datday = CDate(strDay)
CDate の利用は極力避けてください。実行環境依存で結果が異なるためです。
日付値を安全に処理するため、代わりに Date.TryParseExact メソッドを利用する事を検討してみてください。

引用返信 編集キー/
■61621 / inTopicNo.8)  Re[5]: SqlDataSourceでdate型の値をNullセット
□投稿者/ Berryz (9回)-(2011/08/23(Tue) 19:25:41)
返事が遅れて申し訳ございません

無事、解決しました

ぐっさんさん、みきぬさん、shuさん、魔界の仮面弁士さん有難うございました。
解決済み
引用返信 編集キー/
■61622 / inTopicNo.9)  Re[6]: SqlDataSourceでdate型の値をNullセット
□投稿者/ Berryz (10回)-(2011/08/23(Tue) 19:25:56)
No61621 (Berryz さん) に返信
> 返事が遅れて申し訳ございません
>
> 無事、解決しました
>
> ぐっさんさん、みきぬさん、shuさん、魔界の仮面弁士さん有難うございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -