以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]有关BeforeSaveDataRow事件用法(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=38230)

--  作者:exonjee
--  发布时间:2013/7/23 11:47:00
--  [求助]有关BeforeSaveDataRow事件用法(已解决)

请教如何在BeforeSaveDataRow事件中使用新旧值比较,例如:

if e.newvalue<>e.oldvalue then

msgbox(1)

end if

运行代码报错,请教想要在此事件中实现这样的比较该怎样写代码?

[此贴子已经被作者于2013-7-24 15:29:19编辑过]

--  作者:lsy
--  发布时间:2013/7/23 11:52:00
--  

If e.DataTable.HasChanges Then
    \'XXXXX
End If


--  作者:Bin
--  发布时间:2013/7/23 11:52:00
--  
你好.BeforeSaveDataRow事件并没有newvalue oldvalue 参数哦

 只有在行改变事件 例如DataColChanged事件才会有对应的参数的. 才能进行新旧值比较.

--  作者:狐狸爸爸
--  发布时间:2013/7/23 15:03:00
--  
获得新值和旧值的另一个方法:
 
 
 

--  作者:exonjee
--  发布时间:2013/7/24 10:19:00
--  

请问如果要频繁获取后台值,

1、select * from A where _identify=\'123\'

2、LoadPhysicalValue

 

这两种方法哪个效率更高


--  作者:Bin
--  发布时间:2013/7/24 10:23:00
--  
实际上都是执行了一段SQL语句 效率上应该没有太大区别.
--  作者:exonjee
--  发布时间:2013/7/24 14:04:00
--  

使用LoadPhysicalValue获取后台值,当为数值类型时,当数值类型为空时后台调取显示为空值,和表中的值比较时会出现报错,请检查是否为bug

if dr("A")=dic(key)

msgbox("B")

end if

 

报错为“标准表达式中数据类型不匹配”

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2012.11.29.1
错误所在事件:
详细错误信息:
System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 Foxtable.SQLCommand.ExecuteNonQuery()

[此贴子已经被作者于2013-7-24 14:05:23编辑过]

--  作者:Bin
--  发布时间:2013/7/24 14:07:00
--  
因为空值是不能和数值比较的.不是BUG 是正常现象,自己手动判断一下即可.
--  作者:exonjee
--  发布时间:2013/7/24 14:13:00
--  

需要检查所有列,如何判断

if dr(dc.name)=dic(key)

msgbox("B")

end if

 


--  作者:Bin
--  发布时间:2013/7/24 14:23:00
--  
先判断一下是否为空 再做等于判断

if dr.isnull(dc.name)=false andAlso dic(key) isnot nothing then