タイトル | : DataGridViewでDate型カラムを更新するとエラーになる |
記事No | : 7171 |
投稿日 | : 2008/03/09(Sun) 22:14 |
投稿者 | : teraman |
1.DataGridViewコントロールにバインドして更新するとき、Date型の値を更新するとエラー(UPDATE ステートメントの構文エラーです。)になります。Text型は正常に動作します。原因が解かりません。
2.以下のHPを参考にSqlからOleDbへ変更して動作確認しました。 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_fxmclictl/html/1660f69c-5711-45d2-abc1-e25bc6779124.htm
3.以下のプログラムを貼り付けてMdbファイルを変更して確認できます。 Imports System Imports System.Data Imports System.Data.OleDb Imports System.Windows.Forms
Public Class Form1 Inherits System.Windows.Forms.Form
Private dataGridView1 As New DataGridView() Private bindingSource1 As New BindingSource() Private dataAdapter As New OleDb.OleDbDataAdapter Private WithEvents reloadButton As New Button() Private WithEvents submitButton As New Button()
<STAThreadAttribute()> _ Public Shared Sub Main() Application.Run(New Form1()) End Sub Public Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。 Me.dataGridView1.Dock = DockStyle.Fill
Me.reloadButton.Text = "reload" Me.submitButton.Text = "submit"
Dim panel As New FlowLayoutPanel() panel.Dock = DockStyle.Top panel.AutoSize = True panel.Controls.AddRange(New Control() {Me.reloadButton, Me.submitButton})
Me.Controls.AddRange(New Control() {Me.dataGridView1, panel}) Me.Text = "DataGridView databinding and updating demo"
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load
' Bind the DataGridView to the BindingSource ' and load the data from the database. Me.dataGridView1.DataSource = Me.bindingSource1 GetData("select * from ProjectRev")
End Sub
Private Sub reloadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles reloadButton.Click
' Reload the data from the database. GetData(Me.dataAdapter.SelectCommand.CommandText)
End Sub
Private Sub submitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles submitButton.Click
' Update the database with the user's changes. Me.dataAdapter.Update(CType(Me.bindingSource1.DataSource, DataTable))
End Sub
Private Sub GetData(ByVal selectCommand As String)
Try ' Specify a connection string. Replace the given value with a ' valid connection string for a Northwind SQL Server sample ' database accessible to your system. Dim connectionString As String = String.Concat("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\terada\Desktop\TEST.mdb ;Persist Security Info=False;")
' Create a new data adapter based on the specified query. Me.dataAdapter = New OleDb.OleDbDataAdapter(selectCommand, connectionString)
' Create a command builder to generate SQL update, insert, and ' delete commands based on selectCommand. These are used to ' update the database. Dim commandBuilder As New OleDb.OleDbCommandBuilder(Me.dataAdapter)
' Populate a new data table and bind it to the BindingSource. Dim table As New DataTable() table.Locale = System.Globalization.CultureInfo.InvariantCulture Me.dataAdapter.Fill(table) Me.bindingSource1.DataSource = table
' Resize the DataGridView columns to fit the newly loaded content. Me.dataGridView1.AutoResizeColumns( _ DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader) Catch ex As OleDb.OleDbException MessageBox.Show("To run this example, replace the value of the " + _ "connectionString variable with a connection string that is " + _ "valid for your system.") End Try
End Sub
End Class
|