Foxtable(狐表)用户栏目专家坐堂 → [求助] SQL语句插入行报错


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

主题:[求助] SQL语句插入行报错

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
[求助] SQL语句插入行报错  发帖心情 Post By:2014/6/23 16:01:00 [显示全部帖子]

InSert Into {订单} (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values (PD05,CS02,EP03,30.5,289,2012-02-13,0,8814.5,False)

 

ACCESS数据源,上面的代码,错在哪里,为什么会提示如下错误?

 

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2014.5.12.1
错误所在事件:
详细错误信息:
至少一个参数没有被指定值。

 



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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 16:25:00 [显示全部帖子]

谢谢Bin,连数据类型都忘判断了,该打。

 

想对比狐表的保存和SQL语句直接插入行,效率到底有何差距,测试结果,却是狐表更快。

是不是我的SQL语句,有缺陷?

 

Dim cmd As New SQLCommand
cmd.ConnectionName = _Connection
Dim sql1,sql2 As String
For Each c As Col In Tables("导入订单").Cols
    sql1 + = c.Name & ","
Next
For Each r As Row In Tables("导入订单").Rows
    sql2 = ""
    For Each c As Col In Tables("导入订单").Cols
        If c.IsDate Then
            sql2 + = _rq & r(c.Name) & _rq & ","
        ElseIf c.IsString Then
            sql2 + = "'" & r(c.Name) & "',"
        Else
            sql2 + = r(c.Name) & ","
        End If
    Next
    cmd.CommandText = "InSert Into 订单 (" & sql1.Trim(",") & ") Values (" & sql2.Trim(",") & ")"
    cmd.ExecuteNonQuery
Next
MessageBox.Show("OK")

[此贴子已经被作者于2014-6-23 16:25:53编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 16:53:00 [显示全部帖子]

慢在cmd.CommandText的合成上。

 

现在想用下面的语句:

 

Dim cmd As New SQLCommand
cmd.ConnectionName = _Connection 'ACCESS
cmd.CommandText = "Insert Into 订单 Select * From 导入订单"
cmd.ExecuteNonQuery
MessageBox.Show("OK")

 

但【导入订单】在内部数据源,而【订单】在ACCESS数据源,两个数据源如何兼顾?

 


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 17:00:00 [显示全部帖子]

谁有成套又高效的方法,请赐教。

狐表其他方面都简单快捷,就是最后一步:保存,不够快。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 17:20:00 [显示全部帖子]

就两千多行,既然测试,就该用更多的数据。

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 17:25:00 [显示全部帖子]

以下是引用jspta在2014-6-23 17:23:00的发言:
换一个思路,你是先用自动导入,然后进行操作

如果你EXCEL是规范的表,那么使用SQL操作EXCEL,获取dt,
不是规范的就是通过代码导入到转移。

将dt转移到 ACCESS保存。这样减少2步操作,效率会有很大提升。

加快效率主要就是将所有数据导入到内存,通过内存进行转换,然后再SAVE应该可以了。还有另一个问题,不是Foxtable慢而是ACCESS数据源在对数据多的时候效率低。



sql数据源,也一样。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/23 17:36:00 [显示全部帖子]

怎么还会有退步的现象呢,让保存效率恢复到2012,不知有无可能。


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/24 8:17:00 [显示全部帖子]

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD05','CS02','EP03',30.5,289,#2012-02-13#,0,8814.5,False);

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD02','CS02','EP02',27,104,#1999-01-21#,0,2808,True);

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD05','CS01','EP04',31.5,131,#1999-01-22#,0.1,4126.5,False)

 

一次执行多条语句,没分号,提示语句结尾处缺少分号,有分号,提示语句结尾处有分号,有没有都报错。

又错在哪里了?

 


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/24 9:16:00 [显示全部帖子]

狐表公司的数据库空间,经常断网,不稳定,不得已,又转到ACCESS。

 


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/6/24 9:23:00 [显示全部帖子]

以下是引用jspta在2014-6-24 9:17:00的发言:

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD05','CS02','EP03',30.5,289,#2012-02-13#,0,8814.5,False)

Union all

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD02','CS02','EP02',27,104,#1999-01-21#,0,2808,True)

union all

InSert Into 订单 (产品,客户,雇员,单价,数量,日期,折扣,金额,已付款) Values ('PD05','CS01','EP04',31.5,131,#1999-01-22#,0.1,4126.5,False)

谢谢,结果是一样的:报错。


 回到顶部
总数 13 1 2 下一页