以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  数据行筛选问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192130)

--  作者:ycs5801
--  发布时间:2024/5/30 14:57:00
--  数据行筛选问题
假如传送到该网页两个信息,一个是cpmc,一个是openid,需要在点餐信息表内搜索,如果是否完成列是空、openid相同,但是cpmc不同(也就是说这是客人新点的菜),则增加一行。应该怎么写?

Dim dr2 As DataRow = DataTables("点餐信息").sqlFind("cpmc<>\'" & cpmc & "\' and openid=\'" & openid & "\' and 是否完成=\'\'")\'菜名不同,id相同,完成为空,增加
--  作者:有点蓝
--  发布时间:2024/5/30 15:05:00
--  
什么数据库?SqlServer?是否完成是逻辑列?
[此贴子已经被作者于2024/5/30 15:05:13编辑过]

--  作者:ycs5801
--  发布时间:2024/5/30 15:06:00
--  
sql数据库,是否完成是逻辑列。
--  作者:有点蓝
--  发布时间:2024/5/30 15:17:00
--  
Dim dr2 As DataRow = DataTables("点餐信息").sqlFind("cpmc=\'" & cpmc & "\' and openid=\'" & openid & "\' and 是否完成=0")
if dr2 is nothing then
增加的代码
end if

--  作者:ycs5801
--  发布时间:2024/5/30 15:41:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20240321110631.png
图片点击可在新窗口打开查看

以此图为例,如果传送过来的是openid是333,菜品名称是茄子,那么也符合了这个条件,也会执行增加一行。而我的本意是可以在现有行找到相同的openid,而且是否完成也等于空,但是菜品名称不同,这时才增加一行,我觉得是我的思路不对。我再说下我的整个思路:当传送过来openid和cpmc后,如果现有表中完成为空的行中,未找到openid,则增加一行。如果有openid且完成为空,但cpmc和现有的不同,则新增,如果cpmc相同则修改这行。

--  作者:有点蓝
--  发布时间:2024/5/30 15:49:00
--  
需要查2次,先查openid,再查菜

其实就和订单用法一样,建议使用父子表的模式,订单表+订单明细。也就是点餐信息+菜品明细,通过编号关联,先通过openid查询点餐的订单编号,再通过订单编号查询菜品明细。
--  作者:cd_tdh
--  发布时间:2024/5/30 15:49:00
--  
思路:当传送过来openid和cpmc后,如果现有表中完成为空的行中,未找到openid,则增加一行
                                                           如果有openid且完成为空,但cpmc和现有的不同,则新增
                                                           如果cpmc相同则修改这行。

前两个条件是不是没描述清楚?????