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

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

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

Re[5]: GridViewのデータ追加が動かない


(過去ログ 71 を表示中)

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

■41618 / inTopicNo.1)  GridViewのデータ追加が動かない
  
□投稿者/ サトシ (12回)-(2009/09/25(Fri) 17:47:56)

分類:[ASP.NET (VB)] 

 GridViewでデータ追加機能を作っていますが、追加日時のデータの追加の仕方がわからなく
て困ってます。アドバイス頂けると助かります。

 GridViewでのデータ追加機能はhttp://dotnetfan.org/blogs/dotnetfanblog/articles/632.aspx
のページを参考に作ってます。これの最後の列にデータ追加日時が保存される様にcreatedと言う
「日付/時刻」タイプの列を追加し、以下の様に
AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.String, New Now(), "Text"))
の行を追加しましたが
コンパイル エラー メッセージ: BC30002: 型 'Now' が定義されていません。
のエラーが出て動きません。どの様に修理すれば動く様になるでしょうか?よろしくお願いします。

開発環境:VWD2005(VB)、Access2003

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
    If e.CommandName = "Insert" Then
        AccessDataSource1.InsertParameters.Clear()
        For Each key As String In Request.Form.AllKeys
            If key.Contains("$InsertUserName") Then
                AccessDataSource1.InsertParameters.Add(New ControlParameter("userName", TypeCode.String, key, "Text"))
            End If
            If key.Contains("$InsertMailAddress") Then
                AccessDataSource1.InsertParameters.Add(New ControlParameter("mailAddress", TypeCode.String, key, "Text"))
            End If
            AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.String, New Now(), "Text"))
        Next
        AccessDataSource1.Insert()
    End If
End Sub

引用返信 編集キー/
■41619 / inTopicNo.2)  Re[1]: GridViewのデータ追加が動かない
□投稿者/ ごう (42回)-(2009/09/25(Fri) 17:54:27)
New Now() って書き方が気になります。
AccessDataSource1に代入するパラメータの型はDateTime型なんですよね?
DateTime.Nowって記述するのでは??

【参考】
http://msdn.microsoft.com/ja-jp/library/system.datetime.now(VS.80).aspx
引用返信 編集キー/
■41622 / inTopicNo.3)  Re[2]: GridViewのデータ追加が動かない
□投稿者/ サトシ (13回)-(2009/09/25(Fri) 18:17:34)
No41619 (ごう さん) に返信
> New Now() って書き方が気になります。
> AccessDataSource1に代入するパラメータの型はDateTime型なんですよね?
> DateTime.Nowって記述するのでは??
>
> 【参考】
> http://msdn.microsoft.com/ja-jp/library/system.datetime.now(VS.80).aspx

ごうさん、早急な返答ありがとうございます。

AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.String, New DateTime.Now, "Text"))
に修正したところ
コンパイル エラー メッセージ: BC30002: 型 'DateTime.Now' が定義されていません。
のエラーで動きませんでした。
web.configには<add namespace="System"/>が記述されています。

AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.String, DateTime.Now, "Text"))では、
コンパイル エラー メッセージ: BC30519: 縮小変換しないで呼び出される、アクセス可能な 'New' がないため、オーバーロードの解決に失敗しました:
のエラーで動かず。

少し闇雲なやり方で恥ずかしいのですが、以下の修正も行ってみましたが、全て動かずでした。
AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.DateTime, New DateTime.Now, "Text"))では、
コンパイル エラー メッセージ: BC30002: 型 'DateTime.Now' が定義されていません。
で動かず。

AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.DateTime, DateTime.Now, "Text"))では、
コンパイル エラー メッセージ: BC30519: 縮小変換しないで呼び出される、アクセス可能な 'New' がないため、オーバーロードの解決に失敗しました:
で動かず。
引用返信 編集キー/
■41626 / inTopicNo.4)  Re[3]: GridViewのデータ追加が動かない
□投稿者/ もりお (89回)-(2009/09/25(Fri) 20:25:29)
2009/09/25(Fri) 20:34:56 編集(投稿者)

No41622 (サトシ さん) に返信
> AccessDataSource1.InsertParameters.Add(New ControlParameter("created", TypeCode.DateTime, DateTime.Now, "Text"))
パラメータとコントロールを関連付けるような具合の記述になっていますので
DateTime.Now と同値の ClientID を持ったコントロールの Text プロパティの値を参照する。
というような動作になるかと思われます。

ParameterCollection.Add メソッド (System.Web.UI.WebControls)
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.parametercollection.add%28VS.80%29.aspx

オーバーロードがあるみたいです。
直接、値をセットするようでしたらこちらを利用してみてください。
ParameterCollection.Add (String, TypeCode, String)


日付に関しましては、こちらの記事がお勧めです。
VBからAccessへINSERT
http://bbs.wankuma.com/index.cgi?mode=red&namber=40683&KLOG=70
引用返信 編集キー/
■41627 / inTopicNo.5)  Re[4]: GridViewのデータ追加が動かない
□投稿者/ ごう (43回)-(2009/09/25(Fri) 20:54:49)
もりおさん
フォローどうもありがとうございます。

サトシさん
> AccessDataSource1に代入するパラメータの型はDateTime型なんですよね?
こちらから質問してみたのですが・・・DateTime型じゃなくて、String型なんですね。

DateTime型の変数を文字列型で表現する例:
DateTime.Now.ToString("yyyyMMddHHmmss")
引用返信 編集キー/
■41628 / inTopicNo.6)  Re[5]: GridViewのデータ追加が動かない
□投稿者/ サトシ (14回)-(2009/09/25(Fri) 23:17:56)
No41627 (ごう さん) に返信
もりおさん、ごうさん、早急なアドバイスありがとうございます。

> 日付に関しましては、こちらの記事がお勧めです。
> VBからAccessへINSERT
> http://bbs.wankuma.com/index.cgi?mode=red&namber=40683&KLOG=70
の情報をヒントに、scriptの方ではなく、SQLの方で実現する方法
InsertCommand="INSERT INTO `Test` (`userName`, `mailAddress`, `created`) VALUES (?, ?, Now())"
で目的の機能が実現できました。皆さん、本当にありがとうございました。

ごうさんへ
> > AccessDataSource1に代入するパラメータの型はDateTime型なんですよね?
> こちらから質問してみたのですが・・・DateTime型じゃなくて、String型なんですね。
追加日時情報を入れる created はDateTime型に設定してあります。

うまく動いたコードの抜粋
<script runat="server">
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
        If e.CommandName = "Insert" Then
            AccessDataSource1.InsertParameters.Clear()
            For Each key As String In Request.Form.AllKeys
                If key.Contains("$InsertUserName") Then
                    AccessDataSource1.InsertParameters.Add(New ControlParameter("userName", TypeCode.String, key, "Text"))
                End If
                If key.Contains("$InsertMailAddress") Then
                    AccessDataSource1.InsertParameters.Add(New ControlParameter("mailAddress", TypeCode.String, key, "Text"))
                End If
            Next
            AccessDataSource1.Insert()
        End If
    End Sub
</script>


<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="App_Data\TestDB.mdb"

    InsertCommand="INSERT INTO `Test` (`userName`, `mailAddress`, `created`) VALUES (?, ?, Now())"

    <InsertParameters>
        <asp:Parameter Name="userName" Type="String" />
        <asp:Parameter Name="mailAddress" Type="String" />
        <asp:Parameter Name="created" Type="DateTime" />
    </InsertParameters>

</asp:AccessDataSource>

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -