以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教这个代码有什么错误!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=11987)

--  作者:gaoyong30000
--  发布时间:2011/8/18 16:55:00
--  请教这个代码有什么错误!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:内控系统9.rar

 

还是 那个 最后进店日期  和 当前里程  输入的问题

 

我现在设计了一个代码  目的是  这2个数据  必须全部更改后 才能保存 

 

否则  没输 最后进店日期 的话 则会跳出对话框询问 !

       没输  当前里程的话 也是如此!

 

现在老是出错  不知道什么情况  求解? 窗口的  保存修改按钮里的代码

 

Dim k As Row = Tables("客户档案").Current
Dim cr As DataRow = DataTables("历史进店记录").Find("当前里程 = \'k(当前里程)\'")
Dim jr As DataRow = DataTables("历史进店记录").Find("进店时间 = \'k(最后进店日期)\'")
If cr IsNot Nothing AndAlso jr Is Nothing Then
    Dim xz As DialogResult
    xz = MessageBox.Show("最后进店日期 未填写!确定不填写吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If xz = DialogResult.Yes Then
        Tables("客户档案").Current.Delete
        k.Save()
    End If
End If
If cr Is Nothing AndAlso jr IsNot Nothing Then
    Dim yz As DialogResult
    yz = MessageBox.Show("当前里程 未填写!确定不填写吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If yz = DialogResult.Yes Then
        Tables("客户档案").Current.Delete
        k.Save()
    End If
End If


--  作者:紙上不談兵
--  发布时间:2011/8/18 17:01:00
--  
错误明显,多看看帮助吧
--  作者:紙上不談兵
--  发布时间:2011/8/18 17:13:00
--  

动态合成表达式

不少初次接触编程的用户,对于何时使用双引号,何时使用单引号,感到非常困惑。

其实很简单,代码中的字符串都是用双引号括起来的。

例如:

Dim s As String
s =
"abcd"

而单引号主要用于表达式,表达式可以用于计算、筛选。
表达式本身是一个字符串,所以必须用双引号括起来;表达式内部的字符串,用单引号括起来。

例如:

CurrentTable.Filter = "[产品] = \'PD01\'"

上面的代码意思是在当前表中筛选出产品为PD01的行,筛选表达式本身是一个字符串,所以用双引号括起来,表达式中的PD01也是一个字符串,是表达式的一个内部字符串,所以用单引号括起来。
表达式中的日期继续用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

CurrentTable.Filter = "[产品] = \'PD01\' And [日期] = #3/17/1999# And [折扣] = 0"

通过表达式列的Expression属性,可以动态设置其计算公式

例如:

DataTables("表A").DataCols("ID").Expression = "\'CA\' + [_Identify]"

实际编程的时候,经常要根据用户的输入,动态合成表达式。

例如:

例如要计算某个产品的销售数量,要计算的产品名称由用户输入,假定输入的结果保存在全局变量Vars("产品")中:

Dim Sum As Integer
Sum = 
DataTables("订单").Compute("Sum(数量)", "[产品] = \'" & Vars("产品") & "\'")

Compute的第二个参数为计算条件表达式,该表达式分为三部分:

"[产品] = \'" & Vars("产品") & "\'"

假定全局变量Vars("产品")的值为PD01,组合三部分的内容后,这个表达式就等效于:

"[产品] = \'PD01\'"

...


--  作者:gaoyong30000
--  发布时间:2011/8/18 17:34:00
--  

上面的代码意思是在当前表中筛选出产品为PD01的行,筛选表达式本身是一个字符串,所以用双引号括起来,表达式中的PD01也是一个字符串,是表达式的一个内部字符串,所以用单引号括起来。
 

 

头有点晕 说的什么意思啊  都是 字符串 又不同。    我理解 单引号 用语 表达式 内部字符串    而双引号 就是在字符串用

 

那我这个 代码 该怎么弄

Dim cr As DataRow = DataTables("历史进店记录").Find("当前里程 = \'k(当前里程)\'")
Dim jr As DataRow = DataTables("历史进店记录").Find("进店时间 = \'k(最后进店日期)\'")


--  作者:狐狸爸爸
--  发布时间:2011/8/18 17:38:00
--  
Dim k As Row = Tables("客户档案").Current
Dim cr As DataRow = DataTables("历史进店记录").Find("当前里程 = \'" & k(当前里程) & "\'")
Dim jr As DataRow = DataTables("历史进店记录").Find("进店时间 = \'" & k(最后进店日期) & "\'")

--  作者:gaoyong30000
--  发布时间:2011/8/18 20:35:00
--  

呵呵  发现老大的一个错误!

 

当前里程 没用引号

 

另外 我这段代码的貌似不起作用  没实现我的功能!

 

有什么问题嘛?

 

 

目的是  这2个数据  必须全部更改后 才能保存 

 

否则  没输 最后进店日期 的话 则会跳出对话框询问 !

       没输  当前里程的话 也是如此!

 

[此贴子已经被作者于2011-8-18 20:35:21编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/8/18 20:47:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目17.rar


--  作者:gaoyong30000
--  发布时间:2011/8/18 20:55:00
--  

 不是isnull判断为空!  

而是里面本身有值  要判断是否2列都更改了  只有都更改了 才能保存  否则会出现提示!

 

还有  你里面有2个标签  lc rq   起到什么作用?  有点不懂


--  作者:狐狸爸爸
--  发布时间:2011/8/18 22:51:00
--  
你看看窗口的afterLoad事件,就知道lc和rq的作用了。
--  作者:gaoyong30000
--  发布时间:2011/8/18 22:56:00
--  
这个小小的 按钮输入 搞得头都大了!   我觉得 这些逻辑  编程的人 是否都有一些 流程图 以作参考呢?
[此贴子已经被作者于2011-8-18 22:56:13编辑过]