我想將文本框中的日期格式更改為“dd-mmm-yy”格式,但是當在datagridview中沒有出現日期和時間時它不起作用,而且我無法在文本框中更新空白和零導致錯誤“資料型別錯誤”。如果我不在“日期”欄位中執行更新的 sql 命令,則不會導致錯誤。我使用 Visual Studio 2010,所以日期列中的問題,如果我在沒有日期列的情況下更新,那么它運行完美。問題錯誤:更新陳述句中的語法錯誤感謝杰克

Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim cn As String = "provider=Microsoft.Jet.OLEDB.4.0; data source=" & Path & "; Extended Properties=dBase IV"
Private connectionString As String
Private con As OleDbConnection
Private cmd As OleDbCommand
Private da As OleDbDataAdapter
Private sql As String
Public x As Integer
Public Sub dbConnection()
connectionString = CStr(cn)
con = New OleDbConnection(connectionString)
con.Open()
End Sub
Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
x = DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow)
txtCODE.Text = DataGridView1.Rows(x).Cells(0).Value.ToString()
DateTimePicker1.Value = DataGridView1.Rows(x).Cells(1).Value.ToString()
NumericUpDown1.Value = DataGridView1.Rows(x).Cells(2).Value.ToString()
End Sub
Private Sub FillDataGridView()
Try
Dim query = "select CODE,DTE,QTY FROM EXAMPLE"
Using con As OleDbConnection = New OleDbConnection(CStr(cn))
Using cmd As OleDbCommand = New OleDbCommand(query, con)
Using da As New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
Me.DataGridView1.DataSource = dt
End Using
End Using
End Using
Catch myerror As OleDbException
MessageBox.Show("Error: " & myerror.Message)
Finally
End Try
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Try
dbConnection()
x = DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow)
'sql = "UPDATE EXAMPLE SET QTY=? WHERE CODE=?"
sql = "UPDATE EXAMPLE SET DTE=?,QTY=? WHERE CODE=?"
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add("DTE", OleDbType.Date)
cmd.Parameters.Add("QTY", OleDbType.Numeric)
cmd.Parameters.Add("CODE", OleDbType.VarChar)
cmd.Parameters("DTE").Value = DateTimePicker1.Value
cmd.Parameters("QTY").Value = NumericUpDown1.Value
cmd.Parameters("CODE").Value = txtCODE.Text
cmd.ExecuteNonQuery()
MessageBox.Show("Successfully Updated...", "Update")
con.Close()
FillDataGridView()
Catch myerror As OleDbException
MessageBox.Show("Error: " & myerror.Message)
Finally
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FillDataGridView()
End Sub

uj5u.com熱心網友回復:
您的 SQL 行必須寫成:
sql = "UPDATE EXAMPLE SET DATE=@d,QTY=@q WHERE CODE=@c"
您可以通過添加更多代碼來設定這些 @xxx 的值:
cmd.Parameters.AddWithValue("@d", dtpDATE.Value)
cmd.Parameters.AddWithValue("@q", nudQTY.Value)
cmd.Parameters.AddWithValue("@c", txtCODE.Text)
將您的日期時間 TextBox 改為 datetimepicker。不要使用文本框作為數值,而是使用 NumericUpDown。
您必須AddWithValue("@xxx"...按照與@xxx 在 SQL 中出現的順序相同的順序呼叫。Access 會忽略名稱并查看 SQL 中出現的引數的順序,因此以相同的順序呼叫 AWV 很重要。有一天,當您使用不同的資料庫升級 o 時,它將支持引數的名稱部分,因此您可以按任何順序添加值,但現在在訪問時,順序很重要
你必須像我展示的那樣撰寫你的 SQL。永遠,永遠不要做你以前在做的事情。切勿使用字串連接將用戶提供的資料值構建到 SQL 陳述句中。它使您的程式易于入侵。當您撰寫一個小型應用程式來索引祖母的唱片收藏時,這可能無關緊要,但絕不能在任何重要系統上完成,例如許多人使用的系統
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447529.html
上一篇:在R中匯入時間序列時,如何保留Excel中的日期格式?
下一篇:PHP每周到季度(日期)
