只是头了-----这不再适用于我。我通过在form.load中添加以下两行来修复它。
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
它为我解决了这个问题,我希望它也可以为你排序。
好的,所以,我在VB.net中有一个应用程序,作为我工作公司的培训师的调度程序。在编辑模式下(因此可以对存储信息的数据库进行更新)有许多按钮,添加和删除培训师,或者向表中添加周数。
导致我出现问题的按钮是保存/更新按钮。它中有三组命令,一组用于更新添加的列,一组用于删除列,另一组用于简单地更新其他修改后的数据。我知道这可能会更有效但是哦,我稍后会谈到它。
问题是,最后一块代码包括" da.update(ds)"这是更新数据源的数据适配器。虽然这个命令在我们连接到我们的SQL服务器的其他应用程序中运行得很好,但它在这里引起了问题。
第一个单元格值为null的任何列都会导致异常
"' 列标题前两个字符附近的语法不正确'。"
现在,我认为这个问题源于 - 由于例外 - 我使用了不正确的列名称,这是每周星期一的日期(例如2016年2月1日)所以它& #39; d在' 01'附近显示不正确的语法。在这种情况下。
但是,更改命名约定并没有像异常建议的那样解决这个问题,而且只发生在FIRST值为空的列上 - 这意味着第一个培训师现在没有计划在本周进行任何计划。
任何人都有任何关于这方面的想法,并没有涉及基本上填写这个相当大的表上的每个空?我知道这会有用,但它耗费时间,而且如果没有其他解决方案可以解决这个问题,我愿意这样做。
我在互联网上环顾四周,并没有找到与我们的确切问题相关的解决方案,所以非常感谢帮助。
如果它很重要 - 这是导致问题的功能。
Dim da As OleDbDataAdapter 'The datasets and adapters variables.
Dim da2 As OleDbDataAdapter
Public ds As DataSet = New DataSet
Public ds2 As DataSet = New DataSet
'Connection String. Connects to the server and finds the database and table listed.
cs = "Provider=SQLOLEDB;"
cs &= "Server=SOFWAREDEVSQLSE\SQLEXPRESS;"
cs &= "Database=MTS2;"
cs &= "User Id=;" 'You don't need to see that to be fair.
cs &= "Password=;" 'You don't need to see that to be fair.
sql = "Select * FROM MTS2;"
'Runs the string. Flares up a timed out error if connection could not be established.
Try
da = New OleDbDataAdapter(sql, cs)
da.Fill(ds)
da2 = New OleDbDataAdapter(sql, cs)
da2.Fill(ds2)
Catch ex As Exception
MsgBox("Connection failed. Please ensure you have a suitable connection to the Training network. Otherwise, refer to helpdesk support for further assistance.")
Me.Close()
End Try
dgvSchedule.DataSource = ds.Tables(0)
Private Function save()
'Try
''This section reads the SQL server for column names, and adds any that are listed in the DGV, but not the database. I know its a little messy but itll do.
Dim columnnum As Integer = -1
Dim columname As String
For Each column In ds.Tables(0).Columns
columnnum = columnnum + 1
columname = dgvSchedule.Columns(columnnum).HeaderText
If Not ds2.Tables(0).Columns.Contains(columname) Then
Dim SqlAddCol As String = "ALTER TABLE MTS2 ADD [" & columname.Trim() & "] nvarchar(255)"
Using con As New OleDbConnection(cs)
Using cmd As New OleDbCommand(SqlAddCol, con)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
End If
Next
columnnum = -1
For Each column In ds2.Tables(0).Columns
columnnum = columnnum + 1
columname = ds2.Tables(0).Columns(columnnum).ColumnName
If Not ds.Tables(0).Columns.Contains(columname) Then
Dim SqlDelCol As String = "ALTER TABLE MTS2 DROP COLUMN [" & columname.Trim() & "]"
Using con As New OleDbConnection(cs)
Using cmd As New OleDbCommand(SqlDelCol, con)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
End If
Next
ds2.Tables.Clear()
da2 = New OleDbDataAdapter(sql, cs)
da2.Fill(ds2)
da.Update(ds) ''''' The exception is thrown here. " Incorrect syntax near '01'."
DataTableColours()
MessageBox.Show("Data saved successfully. New weeks and trainers added and deleted. Changed values updated.")
'Catch
' MessageBox.Show("Data failed to update properly. Please ensure you are connected to the Baltic network and try again. If the problem persists, seek IT support.")
'End Try
End Function
该函数将数据网格视图(DGVSchedule)中的值保存到服务器,方法是将DS中的当前列与其原始列(在DS2中)一起运行。然后运行Sql查询以添加或删除任何列不匹配。然后更新DS2以使用与DS相同的值。最后,调用DA.update(DS),从理论上将所有其他修改后的值更新到SQL服务器中。它反而造成了我们特殊的例外。
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
我已经解决了我遇到的问题。我通过在form.load中添加以下两行来修复它。
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
基本上,我现在觉得自己像个笨蛋,但这解决了这个问题。