以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28859)

--  作者:东坡一剑
--  发布时间:2013/2/20 17:56:00
--  [求助]

Dim r As dialogresult
messagebox.show("没有锁定,是否锁定?","注意",messageboxbuttons.yesnocancel,messageboxicon.warning)
If r=dialogresult.yes Then
messagebox.show("已锁定")
Else
    messagebox.show("不锁定")
End If

 

 

在命令窗口输入以上代码,无论点击“是”、“否”及“取消”按钮,弹出的对话框都是“不锁定”

请教专家,这是为什么?

该怎么办?


--  作者:lin_hailun
--  发布时间:2013/2/20 17:59:00
--  
 你写少了一个等于号。

Dim r As dialogresult = messagebox.show("没有锁定,是否锁定?","注意",messageboxbuttons.yesnocancel,messageboxicon.warning)
If r= DialogResult.Yes Then
    messagebox.show("已锁定")
Else
    messagebox.show("不锁定")
End If

--  作者:东坡一剑
--  发布时间:2013/3/11 17:33:00
--  

果然是少些了一个等于号。非常感谢!

现在还有一个问题:

我在一个销售日志表中用代码生成了一个订单号,我想在订单号生成的同时,立即自动打开订单表,并且在订单表的订单号列生成此订单号。请问代码该怎么写?我只学到“表事件”。有劳了!

 

[此贴子已经被作者于2013-3-11 17:35:49编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/3/11 17:39:00
--  
纸上不谈兵,最好做个简单的例子发上来,否则想帮你也无从下手。
--  作者:东坡一剑
--  发布时间:2013/3/12 9:52:00
--  

我现在想:

1、当销售日志生成订单号后自动切换到销售单,并在销售单的最后一行自动填入订单号、导购员和客户名称的内容,光标标定于产品条码,输入条码后,标定于数量,确认后标定于下一行的产品条码。

2、订单号不同的行显示不同的颜色。

3、销售单状态列如果显示的是“结束”,则输入金额后,自动统计订单号的总金额。

4、在销售单中,如果取消列为“true”,则在订单号相同的情况下,

     删除倒数第一行

     解锁倒数第二行

为配合学习我做了一个学习项目,可能漏洞百出,望不吝赐教。

从开始学习以来,你给了我很大的帮助,希望以后有机会好好谢谢你!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:学习作业.table

[此贴子已经被作者于2013-3-12 9:53:55编辑过]

--  作者:东坡一剑
--  发布时间:2013/3/12 13:23:00
--  

我希望看到谁在什么时候修改了姓名,于是在afteredit事件中编写了如下代码:

 

If e.Col.Name = "姓名" Then
    e.Row("修改记录") = User.Name & Date.Now

End If

 

但是,这样在修改记录中显示的只是最近一次的信息。

 

我需要一个列表,罗列出关于姓名的所有修改记录,最好还能包含历次的修改值。

请问该怎么办?有劳!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:作业.table


--  作者:狐狸爸爸
--  发布时间:2013/3/12 13:59:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:作业.table


--  作者:东坡一剑
--  发布时间:2013/3/13 10:17:00
--  

If e.DataRow("审核") = False Then  \'未审核通过的行

    If e.DataRow.Locked  = False \'如果此行目前未锁定,也就是准备锁定此行    ***

        Messagebox.show("不能锁定未审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

        e.Cancel = True

    End If

ElseIf e.DataRow("审核") = True Then \'已经审核通过的行

   If e.DataRow.Locked  = True \'如果此行已锁定,也就是准备取消锁定此行  ***

        If User.Group <> "经理" Then

            Messagebox.show("只有经理才能解锁已经审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

            e.Cancel = True

        End If

    End If

End If

以上这段代码是我从帮助文件 表事件/DataRowLockedChanging中复制的,用***标明的语句 if 之后没有跟 then ,不明白为什么,能讲讲吗?

 

 


--  作者:狐狸爸爸
--  发布时间:2013/3/13 10:32:00
--  

没有then,是手误,漏掉的。

有没有then,都可以运行,但是建议有then


--  作者:东坡一剑
--  发布时间:2013/3/13 10:44:00
--  

关联表与事件

关联表之间的数据和操作,有时是相互依存的,某一方进行的操作,经常需要在另一方进行条件判断。
在子表的事件中,我们可以通过GetParentRow获得父行,在父表的事件中,可以通过GetChildRows获得全部子行。

示例一

假定订单和订单明细表已经建立关联,订单表有个客户等级列,订单明细表有个折扣列,要求只有客户等级为VIP的时候,才允许折扣超过10%。
为此可以在订单明细表的DataColChanging事件中设置代码:

 

If e.DataCol.Name = "折扣" Then
    If e.NewValue > 0.1 Then
        Dim pr As DataRow = e.DataRow.GetParentRow("订单")
        If pr IsNot Nothing Then         ***
            If pr("客户等级") <> "VIP" Then
                MessageBox.show("非VIP客户的折扣不能超过10%", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                e.Cancel = True
            End If
        End If
    End
If
End
If

 

不明白***为什么一定要判断pr是否为nothing