以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在主表新增行与在关联表新增碰到不一漾状况 请老师们帮忙...  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95251)

--  作者:victor_lin33
--  发布时间:2017/1/14 11:25:00
--  [求助]在主表新增行与在关联表新增碰到不一漾状况 请老师们帮忙...

有2个表  秤重档 / 出货明细
关联是 秤重档.地磅单号(父表)→出货明细.地磅单号(子表)  单向产生关联表

现在在主表秤重档画面底下有了出货明细,我的工作流是

CASE 直接销售时:

1. 货车过地磅秤车皮重→(过磅资料外部连接加载到秤重档刷新)→在秤重档表画面点选该笔新增的秤重资料(秤重档是禁止编辑)→

    鼠标焦点移到画面下方出货明细关联表→新增一行资料开始编辑(输入客户.出货品名.规格.订货需求数....)→

※如果输入不完整不允许离开直到输入完整OR删除该行后自动保存※→ 存档打印"装货通知单"

 

2.装车完成重车过地磅称毛重→(过磅资料外部连接加载到秤重档刷新)→更新编辑完善该笔出货明细(输入单价.....)→保存后禁止再修改→打印出货单

 

※的部份

我代码写在"出货明细表" 的 BeforeSaveDatarow :
If Tables("出货明细").Current.Isnull("订货数") = True  Then
    MessageBox.Show("请把上笔输入完整","!!!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
    e.Cancel = True
End If

在秤重档表的 BeforeSaveDatarow :
If Tables("秤重档.出货明细").Current.Isnull("订货数") = True  Then
    MessageBox.Show("请把上笔输入完整","!!!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
    e.Cancel = True
End If

 

结果是在秤重档画面下关联表输入时资料不完整仍可保存,但在出货明细画面下代码就有效...

我一直想应该很简单 看了好几天论坛的相似问题汗帮助文档 实在没招了 拜托老师一下!!!
PS.我还是初学者,所以还没到设计录入窗口的功力...不敢太麻烦老师! 但年前项目要给老板看进度...所以 拜托啰!




--  作者:有点蓝
--  发布时间:2017/1/14 11:47:00
--  
"出货明细表" 的 BeforeSaveDatarow

If e.DataRow.Isnull("订货数") = True  Then
    MessageBox.Show("请把上笔输入完整","!!!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) 
    e.Cancel = True
End If

去掉秤重档表的 BeforeSaveDatarow

--  作者:victor_lin33
--  发布时间:2017/1/14 12:07:00
--  

知道了

但是还没解决
让编辑者必须输完再离开画面 或不输了离开就自动删除该行
再请老师指导一下  谢谢!


--  作者:有点蓝
--  发布时间:2017/1/14 14:09:00
--  
那就只能在这个事件进行判断:http://www.foxtable.com/webhelp/scr/0644.htm
--  作者:victor_lin33
--  发布时间:2017/1/16 0:39:00
--  

已解决 谢谢...
再请老师帮看一下这个代码会报错 我调了很久没法子了 请老师看一下(如附图报错)

DataColChanged

 

Dim dr As DataRow = e.DataRow
Dim pr As DataRow
pr = DataTables("称重档").Find("[流水号] = " & dr("流水号") & "")       
If pr IsNot Nothing Then \'如果找到的话
   dr("净重") = pr("净重")
End If

PS. "流水号"列属性是字符型 但实际是12位数的编号(日期8码+4码序号)


图片点击可在新窗口打开查看此主题相关图片如下:datacolchang 报错.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:datacolchang 报错2.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/1/16 2:45:00
--  
Dim dr As DataRow = e.DataRow
Dim pr As DataRow
pr = DataTables("称重档").Find("[流水号] = \'" & dr("流水号") & "\'")       
If pr IsNot Nothing Then \'如果找到的话
   dr("净重") = pr("净重")
End If

--  作者:victor_lin33
--  发布时间:2017/1/16 18:06:00
--  

谢谢! 终于懂了  是我疏忽图片点击可在新窗口打开查看

由于您的帮忙....我今天终于让老板答应年后给我买开发版了!

太感谢您了!!!

老师: 小问题麻烦你一下
1.用菜单上的筛选/选择功能 →逻辑列不能筛选??
2.用WORD 做报表 引用了个数字列(净重) 出现了小数点后面有一整排的0
   我到最后没办法只好用<Round[净重],0>处理,其他数字列都没问题....为何呢?

3.我从地磅的外部资料库(ACCESS)把"秤重档"表引进来FOXTABLE时,来源的表有一列"备注"属性是字符

  但实际里头输入是逻辑型判断药不要付运费(要/免),我在FOXTABLE 这边的"秤重档"想加一个列直接把它LOAD进来时转换成逻辑型

  是在BeforeLoad 做吗? 我用 IFF 写了很久  搞不定!  您有空 指点一下!! 感谢您!


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

1、是的。

 

2、你把这一列改成高精度小数即可。如果是表达式列,你需要把公式的那些列都改成高精度小数。

 

3、加一列逻辑列【付运费】,DataColChanged事件

 

If e.DataRow("备注") = "要" Then

    e.DataRow("付运费") = true

Else

    e.DataRow("付运费") = false

End If

 

如果用表达式列,就直接写 iif(备注=\'要\', true, false)


--  作者:victor_lin33
--  发布时间:2017/1/20 15:23:00
--  
老师:
我的项目已经可以交付使用,老板今早已经核准签了交财务去采购...同意我买开发版了 
谢谢您的帮忙,以后我还要进一部优化....尤其是设计窗口与报表部份,
我会用心看论坛自我进化提升功力,但碰到瓶颈时还是请老师协助!!

我今天碰到的问题:
修改的单元格没法按样式设定的正常显示(每一个TABLE都没法显示),这是为何呢?
→因为我在"出货明细"和"称重档"这二个表 写了代码设定了特殊样式吗?
  我尝试拿掉代码,也是没法正常显示修改的单元格显示出
→没有设定任何代码的表也如此
→项目部份也没有设任何全局的代码...
实在搞不清楚了 请老师解疑一下  谢谢!

--  作者:有点色
--  发布时间:2017/1/20 15:26:00
--  
 修改的单元格显示不正常,离开以后显示正常?