DateTime型  エラー⇒"date"がサポートされていない

このQ&Aのポイント
  • ASP.NETの勉強をVisualStudio2005を使って勉強している際に、データベースの更新や削除で日付型を含むテーブルの更新ができず、エラーが発生します。
  • 使用されているSQL Serverのバージョンでは、データ型 'date' がサポートされていないため、エラーが発生します。
  • 参考書のサンプルのソースでは、日付型を含むパラメータが<asp:Parameter Name="StartDate" Type="DateTime" />と指定されていますが、GridViewやSqlDataSourceを使用する場合は<asp:Parameter DbType="Date" Name="StartDate" />と指定されるため、変更が必要です。開発環境の違いなどにより、指定方法が勝手に変わっている可能性があります。
回答を見る
  • ベストアンサー

DateTime型  エラー⇒"date"がサポートされていない

ASP.NETの勉強をVisualStudio2005を使って勉強しているのですが・・・ データベースの更新・削除のところで日付型を含むテーブルの更新等ができずエラーが出ます。 使用されているSQL Serverのバージョンでは、データ型 'date' がサポートされていません。 と言うエラーを出します。 参考書として使ってる本についていたサンプルのソースでは <asp:Parameter Name="StartDate" Type="DateTime" /> となっているのですが、参考書通りにGridViewなどを配置してSqlDataSourceを参照させても <asp:Parameter DbType="Date" Name="StartDate" /> となります。 一応【DbType="Date"】の箇所を【DbType="DateTime"】に変更してやれば使えるようにはなるのですが、いちいち変更するのはめんどうです。 それと、何故【Type=】ではなく【DbType=】になっているのでしょうか? 開発環境(バージョンとか?)の違いなどでTypeの指定などが勝手に変わってしまっているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

私も似たような経験があります。 DbTypeは、その変数がデータベース上でどのタイプになるのかを示し、Typeは、その変数がプログラム上どのタイプになっているのかという違いだったと思っています。 これでは助けになっていないかもしれませんが、私はそういうものだという認識で面倒でも直しています。

関連するQ&A

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • htmlでコンボボックスのパラメータを指定したい

    環境 asp.net htmlでコンボボックスをセットしています。 以下のDefaultValueの値をコントロール名にしたいのですがどのように記述すればよいのでしょうか? <asp:SqlDataSource ID="sqlddl1" runat="server" ConnectionString="<%$ ConnectionStrings:xxxConnectionString %>" SelectCommand="SELECT CD, NAME FROM TABLE WHERE (CD = @CD)"> <SelectParameters> <asp:Parameter DefaultValue="123" Name="CD" Type="String" /> </SelectParameters> </asp:SqlDataSource>

    • ベストアンサー
    • HTML
  • VisualStudio2005でのGridView 集計

    VisualStudio2005でGridViewを使って集計表を出そうと思い下記のSQL文を作成しましたが明細で出てしまいます。 どこが間違っているのでしょうか? ---------------------------------------------------------------- </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:meldandyConnectionString %>" SelectCommand="SELECT DISTINCT [kamoku_code], [kamoku_name], [s_code], [s_name], [kingaku] FROM [a_keihi_dt] WHERE ([kamoku_code] > @kamoku_code2) GROUP BY [s_code], [kamoku_code], [kamoku_name], [s_name], [kingaku] ORDER BY [s_code], [kamoku_code]">

  • x.aspxとx.aspx.vbの値の受渡について

    asp.net4で開発を実施しております。 FormViewを使ってデータの登録を行おうとしております。 form1.aspx.vbで設定した変数を、form1.aspx側のsqlにて使いたいと思っているのですが、どのようにすればよいでしょうか? 【form1.aspx.vb】 sub aaa = 1 end sub 【form1.aspx】 : <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:DB1ConnectionString %>" DeleteCommand="UPDATE Table1 SET [Flg1] = @aaa WHERE [CD] = @CD" <DeleteParameters> <asp:Parameter Name="CD" Type="String" /> <asp:Parameter Name="aaa" Type="String" DefaultValue="<%= aaa %>" /> のように作ってみたのですが、うまくいきません。 どの様にすればよいのかご教示いただければと思います。  よろしくお願い致します。

  • <ASP>にTextBoxの値を設定する方法

    TextBoxに記述されたDB接続文字列を<ASP>内で設定しようと試みておりますが、失敗します。どのように記述を改めればよろしいでしょうか? ----------------- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Application["DB_CON_STRING"].ToString(); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <div> </div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="DATETIME" HeaderText="DATETIME" SortExpression="DATETIME" /> <asp:BoundField DataField="MESSAGE" HeaderText="MESSAGE" SortExpression="MESSAGE" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="form1.TextBox1.Text"★ここがうまくいかない★ SelectCommand="SELECT * FROM TEST ORDER BY ID DESC"></asp:SqlDataSource> </form> </body> </html>

  • 暗黙の型変換をやめたい

    ASP.NET(C#2.0)からSQLServer2008R2のストアドプロシージャをコールする際、暗黙の型変換を使うとパフォーマンスが落ちるらしいので、全て明示的な型変換に修正したいと思っています。 MySQLをselectした値をリーダー(reader)に格納し、SQLServerにストアドコール時にパラメータ指定してinsertするのですが、何が暗黙的で何が明示的なのかわかりません。 下記は引数1にパラメータ、引数2にDBType(省略可)、引数3に値を指定しています。 [暗黙的かと思われるパラメータの渡し方] AddParameter("@パラメータ1", reader["値1"]); //char(2) AddParameter("@パラメータ2", DbType.string, reader["値2"].ToString()); //nvarchar(20) [明示的かと思われるパラメータの渡し方] AddParameter("@パラメータ3", DbType.DateTime, Convert.ToDateTime(reader["値3"])); //datetime AddParameter("@パラメータ4", DbType.Currency, (Convert.ToDecimal(reader["値4"])) * 100); //money 暗黙の型変換とは、引数3の型を指定しない場合に起こるという認識で合っていますでしょうか?

  • SQLDataSourceのSQL文を変えて・・・

    ASP.Net にて日々壁が立ち上がっております。 GridView のデータソースであるSQLDataSourceのSQL文を変更し、尚且つページング、ソーティングも行いたいと思うのですが、なかなかうまく行きません。 Dim SQL As String 条件が複雑なので、SQL には自作したSQL文が入っております。 Me.SqlDataSource.SelectCommand = SQL Me.SqlDataSource.DataBind() このように記述するとGridViewのデータはSQL文に指定した通りに表示されるのですが、ページング、ソーティングを行うと、元々SqlDataSourceに指定してあるSQL文のモノが適応されて表示画面も元データの適応になってしまいます。 何かのサイトでこういう場合は DataSourceID をどうにかすると、ページング、ソーティングともに指定したSQL文のデータソース上で行われるみたいなことが書かれていたのですが、どう記述してよいかわかりません。 例えば・・・ Me.GridView.DataSourceID = "" Me.GridView1.DataBind() Me.GridView1.DataSourceID = Me.SqlDataSource.ID Me.GridView1.DataBind() こんな記述をしてみても、ページング、ソーティングはうまく動作しません。 動的なSQL文をGridViewに適応でき、ソーティング、ページングも適応させるにはどうしたらよいでしょうか? GridView にそういう事が簡単にできれば非常に使い勝手が良いのですが、 初心者的な考えなのかもしれませんが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • SQLiteでのDateTimeの扱い

    SQLiteのデータベースにphpで値を保存したいのですが、カラムのタイプがdatetimeだと上手くいきません。 現在の時刻をSQLiteに書き込むということをしたいです。 カラムのタイプをdatetimeからtextに変更するのは避けたいので、下のphpを変更して書き込めるようにするにはどうすれば良いのでしょうか? 詳しい方よろしくお願いします。 SQLite DB ---- CREATE TABLE "dt" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,"REGIST" DATETIME) ---- PHP ---- $sqlite = 'SQLiteへのパス'; $db = new PDO($sqlite); $now = date('Y-m-d H:i:s'); $nfe = $db->prepare('insert into dt(REGIST) values(?)'); $nfe->execute(array($now)); ----

  • データの挿入がされない

    やりたいことをまとめてみました。 テキストボックスを2つ用意して 「txt_company」には会社名を「txt_Name」には氏名を入力し ラジオボタンリスト「rdo_Type」からも選択した後、 「Button1」ボタンをクリックすると3つのデータを「ユーザ」テーブルへ挿入。 という風にしたいのですがうまく行きません。 エラーは出ないのですが、何も挿入されていません。 もしかしたら元々の構成を勘違いしているのかもしれないのでコードを記述してみました。 何方かよろしくお願いします。 ・イベント Protected Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) SqlDataSource1.Insert() End Sub Protected Sub SqlDataSource1_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) e.Command.Parameters("@company").Value = txt_company.Text e.Command.Parameters("@name").Value = txt_Name.Text e.Command.Parameters("@type").Value = rdo_Type.SelectedValue End Sub Protected Sub SqlDataSource1_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Label1.Text = e.AffectedRows + "件処理されました" End Sub ・SqlDataSource <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind %>" InsertCommand="INSERT INTO ユーザ (会社名, 氏名, タイプ) SELECT(@company, @name, @type)"> <InsertParameters> <asp:formparameter Name="company" ConvertEmptyStringToNull="true"/> <asp:formparameter Name="name" /> <asp:formparameter Name="type" /> </InsertParameters> </asp:SqlDataSource>

  • SqlDataSourceのUpdatingイベントでのパラメータ変更方法

    環境:VS 2005/ASP.NET2.0/VB.NET 受講予約システムを作成しているのですが、SqlDataSourceでのデータ 更新処理について教えてください。 SqlDataSourceを使って予約データ1行分を取り出し、DetailsView で表示しています。受講時刻をEditItemTemplateにDropDownList を2つ貼り付け、**時 **分と選択入力できるようにしています。 「更新」をクリックした際に上記DropDownListで選択された時刻を 取得してデータを更新したいのです。 ※UpdateCommandはデータソースの構成で自動生成済みです SqlDataSource.UpdateParametersなどを使って、Updating イベント内でパラメータの値を変更できないかと考えているのですが コーディング方法が分からず困っています。。 ご存知の方おられましたらよろしくお願いしますm(__)m