if docno=" & grdpo.datakeys(e.item.itemindex) & " then
 
docno 赋值在哪儿?为空当然只 insert操作了

解决方案 »

  1.   

    update_command中
     Update(dgdBase.DataKeys(e.Item.ItemIndex), 你的参数)function upDate(docNO as integer,strVenNotesas string) as integer
       Dim cn As New SqlClient.SqlConnection(cnstring)   ''替换成自己的连接字符串
       dim cm as  New SqlClient.SqlCommand("updateData", cn)
            cm.CommandType = CommandType.StoredProcedure
           cm.Parameters.Add(New SqlClient.SqlParameter("@docNO", SqlDbType.int))  ''对应表里的类型,长度
            cm.Parameters("@docNO").Value = docNO
            cm.Parameters.Add(New SqlClient.SqlParameter("@VENNOTES", SqlDbType.varchar,100))
            cm.Parameters("@VENNOTES").Value = strVenNotes
             cn.Open()
             cm.ExecuteNonQuery()
             Return 0
            cn.Close()       ''这里面你自己加 错误处理了
     end function 
    --存储过程如下
    CREATE PROCEDURE updateData
    @docNO int,
    @VENNOTES varchar(100),
    AS
      declare @m_docNo int
       select @m_docNo=docno from PONOTES where VENNOTES=@VENNOTES
       if @m_docno is null
            insert into PONOTES (VENNOTES) values(@VENNOTES)
       else
    update PONOTES set VENNOTES=@VENNOTES where docno =@m_docno 
    go-----------------------
    存储过程中没有写插入修个另外一个表的操作,你自己加进去吧。上面写的,没检验,只是提供思路,自己试着写写吧推荐认真研究微软vs.net附带的例子Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 
    GO
      

  2.   

    jaffler大哥:
       我的是用VB寫的﹐不是用VS﹒出現整版的錯誤﹒是這樣寫的么﹖
    '更新
    sub datagrid_updatecommand(sender as object,e as datagridcommandeventargs)
       Update(grdpo.DataKeys(e.Item.ItemIndex), docno)   function upDate(docNO as integer,strVenNotes as string) as integer
       Dim cnnconnection As New SqlClient.SqlConnection(cnnconnectionstring)   
       dim cmdcommand as  New SqlClient.SqlCommand("updateData", cnnconnection)
       cmdcommand.CommandType = CommandType.StoredProcedure
       cmdcommand.Parameters.Add(New SqlClient.SqlParameter("@docNO", SqlDbType.int)) 
       cmdcommand.Parameters("@docNO").Value = docNO
       cmdcommand.Parameters.Add(New SqlClient.SqlParameter("@VENNOTES", SqlDbType.varchar,100))
       cmdcommand.Parameters("@VENNOTES").Value = strVenNotes
       cnnconnection.Open()
       cmdcommand.ExecuteNonQuery()
       Return 0
       cnnconnection.Close()       
    end function 
       dim cnnconnection as new sqlconnection()
       cnnConnection.ConnectionString=ConfigurationSettings.AppSettings("JDE")
       cnnconnection.open()
       dim docno as integer
    '存儲過程如下
    CREATE PROCEDURE updateData
      @docNO int,
      @VENNOTES varchar(100),
      AS
       declare @m_docNo int
       select @m_docNo=docno from PONOTES where VENNOTES=@VENNOTES
       if @m_docno is null
            insert into PONOTES (VENNOTES) values(@VENNOTES)
       else
    update PONOTES set VENNOTES=@VENNOTES where docno =@m_docno 
     
    end sub
    但是有很多錯誤﹐什么CREATE沒有定義﹐@docno中的@不合法等等﹒﹒﹒麻煩妳把上面的一段改改﹐星期一我們老板要看﹐急死人了﹒謝謝﹗搞定就給妳散分(30)請求高人指點迷津﹒﹒﹒﹒狂等﹒﹒﹒
      

  3.   

    用vb写啊,别吓我。装个vs.net吧
    sub grdpo_updatecommand(sender as object,e as datagridcommandeventargs)  Handles grdpo.UpdateCommand
       Update(grdpo.DataKeys(e.Item.ItemIndex), docno)
    end sub然后是function upDate(docNO as integer,strVenNotes as string) as integer
    ...
    end function上面这些写在代码里面存储过程写在数据库里面,你用的是sql server 吗?