以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么把这两个代码合并到一起  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95368)

--  作者:jinzhengbe
--  发布时间:2017/1/17 20:43:00
--  怎么把这两个代码合并到一起
我的思路是

name行发生变化后

1 判断 输入的name是有内容在  proudct
   有 。。。。
   没有 提示添加商品
2 判断 输入的name是否在 (weixindanhao.wexin)表 有相同的name
   if 有  就不添加新的行(或者添加后 删除)
      然后在原先的 行的shuliang 加1
   if 没有  就添加新的行

脑子不好用,请各位大神指点



If e.DataCol.Name="name"
      Dim dr As DataRow = DataTables("product").Find("[shangpinming] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then
                e.DataRow("cord") = dr("cord")
                e.DataRow("markprice") = dr("markprice")
                e.DataRow("price") = dr("sellprice")
                e.DataRow("kg") = dr("kg")
                        e.DataRow("name") = dr("shangpinming")
      Else
             If dr Is Nothing Then
                     messagebox.show("没有此商品 请在入库单先入库")
       forms("商品").open \' e.Cancel=True
      End If
      End If
 End If
If e.DataCol.name="name" Then
Dim r As Row = Tables("weixindanhao.weixin").Current
Dim idx As Integer = Tables("weixindanhao.weixin").FindRow("name = \'" & r("name") & "\' and [_Identify] <> " & r("_Identify"))
If idx >= 0 Then
    msgbox("已存在")
    Tables("weixindanhao.weixin").Rows(idx)("shuliang") += 1
    r.delete
End If
End If

--  作者:有点蓝
--  发布时间:2017/1/17 21:03:00
--  

If e.DataCol.name="name" Then
    Dim dr As DataRow = Tables("weixindanhao.weixin").DataTable.Find("name = \'" & e.NewValue & "\'")
    If dr IsNot Nothing Then
        msgbox("已存在")
        dr("shuliang") += 1
        r.delete
    Else
        dr = DataTables("product").Find("[shangpinming] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then
            e.DataRow("cord") = dr("cord")
            e.DataRow("markprice") = dr("markprice")
            e.DataRow("price") = dr("sellprice")
            e.DataRow("kg") = dr("kg")
            e.DataRow("name") = dr("shangpinming")
        Else
            messagebox.show("没有此商品 请在入库单先入库")
            forms("商品").open 
        End If
    End If
End If

--  作者:jinzhengbe
--  发布时间:2017/1/18 15:14:00
--  
If e.DataCol.name="name" Then
  Dim dr As DataRow = Tables("weixindanhao.weixin").DataTable.Find("name = \'" & e.NewValue & "\'")
  Dim r As Row = Tables("weixindanhao.weixin").Current
  Dim idx As Integer = Tables("weixindanhao.weixin").FindRow("name = \'" & r("name") & "\' and [_Identify] <> " & r("_Identify"))
   If idx >= 0  And  dr IsNot Nothing Then
 \'   Tables("weixindanhao.weixin").Rows(idx)("shuliang") += 1
      msgbox("已存在")
    dr("shuliang") += 1
    r.delete
  Else
    dr = DataTables("product").Find("[shangpinming] = \'" & e.NewValue & "\'")
    If dr IsNot Nothing Then
      e.DataRow("cord") = dr("cord")
      e.DataRow("markprice") = dr("markprice")
      e.DataRow("price") = dr("sellprice")
      e.DataRow("kg") = dr("kg")
      e.DataRow("name") = dr("shangpinming")
    Else
      messagebox.show("没有此商品 请在入库单先入库")
      forms("商品").open
    End If
  End If
End If

我想要的是这个效果  
但是报错

.NET Framework 版本:2.0.50727.8745
Foxtable 版本:2015.12.22.1
错误所在事件:表,weixin,DataColChanged
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据


--  作者:有点色
--  发布时间:2017/1/18 15:17:00
--  

你个name赋值的代码写在哪里?贴出你写的代码。


--  作者:jinzhengbe
--  发布时间:2017/1/18 23:02:00
--  
Tables("weixindanhao.weixin")

是这个表的

--  作者:有点色
--  发布时间:2017/1/18 23:56:00
--  
以下是引用jinzhengbe在2017/1/18 23:02:00的发言:
Tables("weixindanhao.weixin")

是这个表的

 

没看懂你的意思。做个例子上来测试吧。你逻辑肯定有问题。


--  作者:jinzhengbe
--  发布时间:2017/1/19 11:40:00
--  

你们这个论坛的插件是不是要换一下
好多都不支持啊
上个程序要换好几个浏览器


添加商品的时候,
判断 是不是当前表(weixindanhao.weixin)有没有相同的name

如果有  在原先的 name行加1

如果没有 就添加新的行。

自动累加的原理
[此贴子已经被作者于2017/1/19 19:27:46编辑过]

--  作者:有点色
--  发布时间:2017/1/19 11:47:00
--  
请说明如何操作。
--  作者:jinzhengbe
--  发布时间:2017/1/19 12:23:00
--  
点 下面的 加号 按钮添加行

商品名列 按空格会出现商品列表

选一个就可以

一直按回车会自动增加行

重复上面的操作既可以


--  作者:有点色
--  发布时间:2017/1/19 12:38:00
--  
那个窗口,哪个按钮?