Foxtable(狐表)用户栏目专家坐堂 → [求助]通用代码移植出错(已解决)


  共有10299人关注过本帖树形打印复制链接

主题:[求助]通用代码移植出错(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]通用代码移植出错(已解决)  发帖心情 Post By:2011/9/7 13:00:00 [只看该作者]

原先一段日志代码在SQL Server数据源环境下运行正常,但是在Access数据源环境下出错,想用数据源(Connection)的SourceType属性来实现代码通用,但是修改后出错,不知问题出在哪里?应该如何修改代码,请各位老师指教。

 

原代码:(在用户登录窗口的确定按钮)

 

'登录日志
Dim cmb As New SQLCommand
Dim dd As Date
cmb.C '外部数据源
cmb.CommandText = "Select GetDate()" '服务器时间
dd = cmb.ExecuteScalar()
cmb.CommandText = "Insert Into {日志} ([用户组],[用户名],[状态],[时间],[设备ID]) Values ('"
cmb.CommandText = cmb.CommandText & _UserGroup & "','" & _UserName & "','" & "登录" & "','" & dd & "','" & ComputerId & "')"
cmb.ExecuteNonQuery()
DataTables("日志").Load()'刷新表

 

将其中一条代码:cmb.CommandText = "Select GetDate()" '服务器时间

 

替换为:

 

If Connections("SCGL").SourceType = 1 Then 'Access数据源
    cmb.CommandText = "Date.Now()" '系统时间
ElseIf Connections("SCGL").SourceType = 2 Then 'SQL Server数据源
    cmb.CommandText = "Select GetDate()" '服务器时间
End If

 

登录时出错:

 

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获4.png
图片点击可在新窗口打开查看

 

退出时出错:

 


 


图片点击可在新窗口打开查看此主题相关图片如下:捕获5.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-9-7 14:52:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/9/7 14:20:00 [只看该作者]

'登录日志
Dim cmb As New SQLCommand
Dim dd As Date
If Connections("SCGL").SourceType = 2 Then 'SQL Server数据源
cmb.C '外部数据源
cmb.CommandText = "Select GetDate()" '服务器时间
dd = cmb.ExecuteScalar()
cmb.CommandText = "Insert Into {日志} ([用户组],[用户名],[状态],[时间],[设备ID]) Values ('"
cmb.CommandText = cmb.CommandText & _UserGroup & "','" & _UserName & "','" & "登录" & "','" & dd & "','" & ComputerId & "')"
cmb.ExecuteNonQuery()
DataTables("日志").Load()'刷新表
ElseIf Connections("SCGL").SourceType = 1 Then 'Access数据源
cmb.C '外部数据源
dd = Date.Now
cmb.CommandText = "Insert Into {日志} ([用户组],[用户名],[状态],[时间],[设备ID]) Values ('"
cmb.CommandText = cmb.CommandText & _UserGroup & "','" & _UserName & "','" & "登录" & "','" & dd & "','" & ComputerId & "')"
cmb.ExecuteNonQuery()
DataTables("日志").Load()'刷新表
End If

 

 

调整为上述代码后,在Access数据源环境下,登录时的出错解决,日志时间显示正常,但是退出时的出错依然存在,请各位老师指教,谢谢!!


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/7 14:27:00 [只看该作者]

Access和内部表的SQL语法,没有DAte.Now的用法,这只能用在代码中。

Access没有获得系统时间的SQL语法。

 

至于改进后的语法出错,你可以检查一下合成的SQL语句,看看有没有问题。

 

[此贴子已经被作者于2011-9-7 14:38:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/9/7 14:35:00 [只看该作者]

谢谢狐爸老师的指教。刚才用修改后的代码,替换了退出的代码,问题已得到解决,没有出错提示。对修改后的代码,能不能进一步优化,还请狐爸老师指教,谢谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/7 14:39:00 [只看该作者]

呵呵,你已经很强了,这种代码没有什么修改余地的。

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/9/7 14:47:00 [只看该作者]

狐爸老师过讲了,我还是初学,还有很多地方要请教老师,给您添麻烦,再次衷心感谢狐爸老师的耐心指教,谢谢!!

 回到顶部