Private Sub Command1_Click()
Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=111;Persist Security Info=True;User ID=sh;Initial Catalog=shks;Data Source=LENOVO-PC\SQLEXPRESS;"
cnn.Open
Dim cmd As New ADODB.Command
If cnn.State = adStateOpen Then
Set cmd.ActiveConnection = cnn
 cmd.CommandText = "update  销售表 set  销售时间= '" & Trim(Text3.Text) & "' ,销售数量= '" & Trim(Text4.Text) & "' ,销售金额= '" & Trim(Text5.Text) & "'where 产品编号='" & Trim(Text1.Text) & "'and 销售商编号='" & Trim(Text2.Text) & "'"
 cmd.Execute
 MsgBox "修改成功!" End IfEnd Sub我的代码是这样 但是无论数据库中是不是存在产品编号和销售商编号都会显示修改成功
我想怎么能该改成先判断数据库中是否存在对应的 产品编号和销售商编号 再进行修改
学生刚上大学做课程设计 还是一个小白 求大神帮忙 用的是vb6.0和sql2008

解决方案 »

  1.   

    cmd.Execute 的执行结果如何,你又不进行判断!
    你这样的代码,只要 cnn.Open执行成功,
    无论cmd.Execute的执行情况怎样,都要执行:MsgBox "修改成功!"
      

  2.   

    对于非按行返回的 Command:command.Execute RecordsAffected, Parameters, Options返回值返回 Recordset对象引用。参数RecordsAffected   可选,长整型变量,提供者向其返回操作所影响的记录数目。RecordsAffected参数仅应用于操作查询或存储过程。RecordsAffected不返回由返回结果的查询或存储过程所返回的记录数目。你可试一下加这个参数dim r1 as long
    cmd.Execute r1
    if r1=0 then msgbox ”执行失败"
      

  3.   

    VB中的帮助上面还有几行Execute 方法 (ADO Command)
             执行在 CommandText 属性中指定的查询、SQL 语句或存储过程。语法对于按行返回的 Command:Set recordset = command.Execute( RecordsAffected, Parameters, Options )