- - PR -
テキストボックス内の時刻をSQL サーバーに登録するVBスクリプト
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-06-22 17:18
こんにちは。初めて ASP.NET を扱っています、nariと申します。
以前は皆様に大変お世話になりました。 今度は、次のようなことをさせたいのですが、うまくいかずに、 悩んでいます。どなたか、ご存知の方がいらっしゃいましたら、 ご教示いただきたくお願いします。 会議室違いでしたら、ご教示いただきたく・・。 ----使用環境 Windows Server 2003 .NET Framework 1.1 開発言語:VB.NET(WebMatrix を使用) ----やりたいこと---- ASP.NET のページをロード時に、テキストボックス(tokei)に現在時刻を入力。 このテキストボックスは、編集可能で、人の手で値を変更できる。 ボタン(Button1)を押したら、テキストボックスに入っている(変更後の)時刻を、SQL サーバーのテーブル(SQL サーバーの該当のカラムの型は Datetime です)に、送信する。 ----書いてみたコード---- Sub Page_Load(sender As Object, e As EventArgs) dim jikoku as datetime = system.date.now tokei.text = jikoku End Sub Sub Button1_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.ConnectionString = "data source=localhost;Initial_ Catalog=logs;Integrated Security=SSPI;" dim cmd as New SqlCommand() cmd.CommandText = "insert into test values (@Log_date)" cmd.connection = conn dim logdate0 as sqlparameter = cmd.parameters.add("@log_date",_ system.data.sqldbtype.datetime) logdate0.value = datetime.parse(tokei.text) conn.open() cmd.ExecuteNonQuery() conn.close() End Sub ----実行すると---- SQL Server のテーブルの中が、ページをロードした時刻になる。 変更後の時刻は登録されず、登録件数は正常です。 テキストボックスの値を変更した後に、なにか処理をさせなければならないのかもしれませんが、このあたりがまったく想像がつきません。 お手数をおかけしますが、アドバイスいただけますと幸いです。 |
|
投稿日時: 2006-06-22 17:24
ボタン押下時に、Page_Load が実行されるからではないでしょうか。
追記 : ポストバックについて、調べてみてはいかがでしょうか。 [ メッセージ編集済み 編集者: ひろれい 編集日時 2006-06-22 17:27 ] |
|
投稿日時: 2006-06-22 17:49
ひろれいさん
ありがとうございます! そういえば、入門書?を読んだときに、ポストバックについての記述がありました。。 再度読み直してみて、以下のようにコードを変更して解決しました。 大変お騒がせしました。そして、ありがとうございました。 ----コード---- Sub Page_Load(sender As Object, e As EventArgs) If Not IsPostBack Then dim jikoku as datetime = system.date.now tokei.text = jikoku End If End Sub Sub Button1_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.ConnectionString = "data source=localhost;Initial Catalog=logs;Integrated Security=SSPI;" dim cmd as New SqlCommand() cmd.CommandText = "insert into test values (@Log_date)" cmd.connection = conn dim logdate0 as sqlparameter = cmd.parameters.add("@log_date", system.data.sqldbtype.datetime) logdate0.value = datetime.parse(tokei.text) conn.open() cmd.ExecuteNonQuery() conn.close() End Sub |
|
投稿日時: 2006-06-22 18:11
度々申し訳ありません。
以下のコードなのですが、 テキストボックスが空の場合、Null をデータベースに送るように設定したいのですが、現在、テキストボックスが空の場合、以下のエラーメッセージが、ボタン押下後に出てしまいます。 ----エラーメッセージ---- System.FormatException: 文字列は有効な DateTime ではありませんでした。 SQL データベース側では、Null を許容しています。 どなたか、アドバイスいただけませんでしょうか。 よろしくお願いします。 |
|
投稿日時: 2006-06-22 18:19
DBNull.Valueを設定してください。
|
|
投稿日時: 2006-06-23 13:49
burton999さん
アドバイスありがとうございます。 =dbnull までは何とかたどり着いていたのですが、 式には使用できない、ようなメッセージで、失敗していました。 DbNull.value で検索して、使いかたを調べてみたところ、 無事に動作できるようになりました。 本当にありがとうございました。 |
1