Foxtable(狐表)用户栏目专家坐堂 → [求助]关于ACCESS外部数据源的报错!


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

主题:[求助]关于ACCESS外部数据源的报错!

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


加好友 发短信
等级:小狐 帖子:362 积分:3196 威望:0 精华:1 注册:2011/4/20 1:40:00
[求助]关于ACCESS外部数据源的报错!  发帖心情 Post By:2012/6/4 13:08:00 [只看该作者]

有一项目,之前使用的是SQL2008作数据源,可以正常使用,现在想使用ACCESS作为外部数据源,于是修改了数据源名称,但在保存时却出现如下错误:

 
此主题相关图片如下:错误.jpg
按此在新窗口浏览图片

 

请问为什么报错?谢谢!

 

 

不知怎么回事,以下有色彩区域的代码一提交网站就会显示出错,请见下图截图!

 
此主题相关图片如下:显示乱码.jpg
按此在新窗口浏览图片

 

 

 
此主题相关图片如下:数据源.jpg
按此在新窗口浏览图片

此主题相关图片如下:数据源预览.jpg
按此在新窗口浏览图片


 

 

BeforeSaveDataRow事件中代码为:

 

e.DataRow("商品信息录入时间") = Date.Now() '获取当前系统时间
e.DataRow("商品信息录入员") = Vars("用户名") '获取当前系统用户


Dim dr As DataRow = e.DataRow
Dim pf As String
If dr.RowState <> DataRowState.Added Then '如果不是新增行
    Return '那么返回
Else
    pf = "SPXX"
End If

Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
Dim nm As String = e.DataTable.name
'cmd1.C                    '设置数据源名称(源使用的SQL2008数据源)
'cmd2.C                     (源使用的SQL2008数据源)

cmd1.C        '设置数据源名称(新使用的ACCESS数据源)
cmd2.C         (新使用的ACCESS数据源)

cmd1.commandText = "Select Count(*) From [编号表] Where [前缀] = '" & pf & "' And 表名 = '" & nm & "'"
If cmd1.ExecuteScalar = 0 Then '如果编号表不存在前缀的行,那么增加一行
    cmd1.commandtext = "Insert Into 编号表 (表名, 前缀, 顺序号) Values('" & nm & "','" & pf & "',1)"
    cmd1.ExecuteNonQuery  '用于执行不返回任何值的SQL命令,例如DELETE和UPDATE命令.该方法会返回一个整数,表示受影响的行数.
End If
    cmd1.commandText = "Select [顺序号] From [编号表] Where [前缀] = '" & pf & "' And 表名 = '" & nm & "'" '获得后台的顺序号
Do
    Key = cmd1.ExecuteScalar() '从后台获得顺序号,用于执行返回单个值的命令
    If key < 99999 Then
        cmd2.commandText = "Update [编号表] Set [顺序号] = " & (Key + 1) & " Where [顺序号] = " & Key & " And [前缀] = '" & pf & "' And 表名 = '" & nm & "'"
        If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
            Exit Do '更新成功则退出循环
        End If
    Else
        cmd2.commandText = "Update [编号表] Set [顺序号] = 1 " '顺序号计数达到99999时,将顺序号重设为1
        If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
            Exit Do '更新成功则退出循环
        End If
    End If      
Loop
e.DataRow("自动编号") = pf & "-" & Format(Date.now(),"yyyyMMddHHmmss") & "-" & Format(Key,"00000")


[此贴子已经被作者于2012-6-4 13:15:11编辑过]

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


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

注意SQl Server的SQL表达式中,字符和日期用单引号括起来,数值不要用单引号。


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


加好友 发短信
等级:小狐 帖子:362 积分:3196 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2012/6/5 13:36:00 [只看该作者]

谢谢,昨天下午终于找到原因了,就是有一个ACCESS数据库,本应该把列类型设成整数的,结果一不小必设成了文本型,改过来后终于可以正常了.

 回到顶部