大家好,我现用的是VB+SQL数据库,遇到一些问题,大家能否帮我看一下,多谢啦.修改MSFlexGrid1单元格内容,用下面语句老提示=号附近有语法错误,但我用access数据库时是没有问题的。
-----------------------------------------------
Private Sub Text2_KeyPress(KeyAscii As Integer)
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;"
' ESC取消输入
If KeyAscii = vbKeyEscape Then
Text2.Visible = False
MSFlexGrid1.SetFocus
Exit Sub
End If
' 回车确定输入
If KeyAscii = vbKeyReturn Then
conn.Open
MSFlexGrid1.Text = Text2.Text
strSql = "update lzliu set " & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col) & " ='" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) & "'"
strSql = strSql & " where id=" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1)
conn.Execute strSql
conn.Close
Text2.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
另删除单元格内容用下面代码也是提示错误,提示 * 号附近有错误.但我用access数据库时都没有问题呀...有那位朋友有空能否帮我看一下,多谢啦.Private Sub Command2_Click()
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;"
conn.Open
i = MsgBox("所选记录将被删除!!确认要删除吗?", vbOKCancel, "警告")
If i = vbOK Then
MSFlexGrid1.Text = Text2.Text
strSql = "delete * from lzliu "
strSql = strSql & " where id=" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1)
conn.Execute strSql
conn.Close
MSFlexGrid1.Refresh
Text2.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
-----------------------------------------------
Private Sub Text2_KeyPress(KeyAscii As Integer)
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;"
' ESC取消输入
If KeyAscii = vbKeyEscape Then
Text2.Visible = False
MSFlexGrid1.SetFocus
Exit Sub
End If
' 回车确定输入
If KeyAscii = vbKeyReturn Then
conn.Open
MSFlexGrid1.Text = Text2.Text
strSql = "update lzliu set " & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col) & " ='" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) & "'"
strSql = strSql & " where id=" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1)
conn.Execute strSql
conn.Close
Text2.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
另删除单元格内容用下面代码也是提示错误,提示 * 号附近有错误.但我用access数据库时都没有问题呀...有那位朋友有空能否帮我看一下,多谢啦.Private Sub Command2_Click()
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;"
conn.Open
i = MsgBox("所选记录将被删除!!确认要删除吗?", vbOKCancel, "警告")
If i = vbOK Then
MSFlexGrid1.Text = Text2.Text
strSql = "delete * from lzliu "
strSql = strSql & " where id=" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1)
conn.Execute strSql
conn.Close
MSFlexGrid1.Refresh
Text2.Visible = False
MSFlexGrid1.SetFocus
End If
End Sub
第二个 strSql = "delete from lzliu " '*去掉即可
实时错误'-214721790(80040e14)'
第1行 '-'号附近有语法错误第二个,我把*去掉了,又提示下面的错误,与第一个一模一样.
实时错误'-214721790(80040e14)'
第1行 '-'号附近有语法错误我表里的id类型是:int 自动递增,跟这个有没有关系?多谢.
conn.Execute strSql
这一句
2,在conn.execute前加一句:msgbox strsql ,看看SQL语句
F9,
debug strsql
update lzliu set 23a='3' where id=后面id= 什么看不见了
在conn.Execute strSql做断点调试时,是这样的
strsql="update lzliu set 23a='3' where id="
是空的。
看看要更新时是否 MSFlexGrid1.Row > 0
update lzliu set [23a]='3' where id=123
strSql = "update lzliu set " & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col) & " ='" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col)//这一句MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col)实际上为空。MSFlexGrid1.SetFocus '没有绑定数据库中的记录集。Private Sub MSHFlexGrid1_RowColChange()end sub
'应定义数据表格1当前活动单元改变时发生的事件.
加了chr(39)后,没有报错了。但数据没有被更改。
Private Sub mshgrid_KeyPress(KeyAscii As Integer)
If mshgrid.Col = 4 Or mshgrid.Col = 5 Then '将修改列固定在第4\5列上,自己按需要设定
Select Case KeyAscii
Case 30 To 136
mshgrid.Text = mshgrid.Text & Chr(KeyAscii)
Case 8
If mshgrid.Text <> "" Then mshgrid.Text = Mid(mshgrid.Text, 1, Len(mshgrid.Text) - 1)
End Select
End If
End Sub
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1) 是空的,没有满足条件的数据。
where id=" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Cols - 1)
你就确定id一定对应msflexgrid1的最后一列?