以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]UPDATE  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2675)

--  作者:狐哥
--  发布时间:2009/5/4 9:49:00
--  [求助]UPDATE
各位老师,帮我看看如下代码哪错了:

Dim drs As List(Of DataRow)
drs = DataTables("销帐明细").Select("[收付编号] > \'\'")
For Each dr As dataRow In drs
    Dim cmd As New SQLCommand
    cmd.CommandText = "UPDATE {费用管理} SET 已收付金额 = \'" & dr("已收付金额") & "\',收付编号 = \'" & dr("收付编号") & "\',销帐人 = \'" & dr("销帐人") & "\',余额 = \'" & dr("余额") & "\',销余额 = \'" & dr("销余额") & "\',余额编号 = \'" & dr("余额编号") & "\' WHERE 费用关联 = \'" & dr("费用关联") & "\' and 费用名称 = \'" & dr("费用名称") & "\'"
    cmd.ExecuteNonQuery()
Next
DataTables("销帐明细").DataRows.Clear()




图片点击可在新窗口打开查看此主题相关图片如下:片段.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2009/5/4 9:55:00
--  
不是什么都用单引号的,日期用#,数字啥也不用

[此贴子已经被作者于2009-5-4 9:58:25编辑过]

--  作者:狐哥
--  发布时间:2009/5/4 10:24:00
--  
TKS,我正试试,呵呵
--  作者:狐哥
--  发布时间:2009/5/4 10:34:00
--  
cmd.CommandText = "UPDATE {费用管理} SET 已收付金额 = dr("已收付金额") ,收付编号 = dr("收付编号") ,销帐人 = dr("销帐人") ,余额 = dr("余额") ,销余额 = dr("销余额"),余额编号 = dr("余额编号") WHERE 费用关联 = dr("费用关联") and 费用名称 = dr("费用名称")"

狐爸,这样改也不对呀!麻烦指点一下.
--  作者:狐哥
--  发布时间:2009/5/4 10:43:00
--  
cmd.CommandText = "UPDATE {费用管理} SET 已收付金额 = " & dr("已收付金额") & ",收付编号 = " & dr("收付编号") & ",销帐人 = " & dr("销帐人") & ",余额 = " & dr("余额") & ",销余额 = " & dr("销余额") & ",余额编号 = " & dr("余额编号") & " WHERE 费用关联 = " & dr("费用关联") & " and 费用名称 = " & dr("费用名称") & ""
cmd.ExecuteNonQuery()

去掉单引号还是不行
--  作者:狐狸爸爸
--  发布时间:2009/5/4 10:48:00
--  

呵呵,如果玩不转SQL,就用FoxTable的简单方法。

Dim drs As List(Of DataRow)
drs = DataTables("销帐明细").Select("[收付编号] > \'\'")
For Each dr As dataRow In drs
    dr.Load()

Next

 

DataRow的Load方法具备保存和刷新的双重功能。


--  作者:cpayinyuan
--  发布时间:2009/5/4 10:50:00
--  
以下是引用狐哥在2009-5-4 10:43:00的发言:
cmd.CommandText = "UPDATE {费用管理} SET 已收付金额 = " & dr("已收付金额") & ",收付编号 = " & dr("收付编号") & ",销帐人 = " & dr("销帐人") & ",余额 = " & dr("余额") & ",销余额 = " & dr("销余额") & ",余额编号 = " & dr("余额编号") & " WHERE 费用关联 = " & dr("费用关联") & " and 费用名称 = " & dr("费用名称") & ""
cmd.ExecuteNonQuery()

去掉单引号还是不行

你把字符型也去掉单引号了,当然不行。
贺老师前面已经讲得很明白了,字符型用单引号,数字型不用。


--  作者:狐哥
--  发布时间:2009/5/4 10:57:00
--  
还是放个文件上来再求教吧,因是填充的问题,且 费用管理 表是在后台,所以才用到SQL的,如不在后台我直接用FILL就好了.
--  作者:狐哥
--  发布时间:2009/5/4 11:00:00
--  
以下是引用cpayinyuan在2009-5-4 10:50:00的发言:

你把字符型也去掉单引号了,当然不行。
贺老师前面已经讲得很明白了,字符型用单引号,数字型不用。

非常感谢,原来还有这么一说. 字符型要用单引号,数字型不用,日期用#,呵呵,明白了.


--  作者:菜鸟foxtable
--  发布时间:2009/5/4 11:02:00
--  
以下是引用狐哥在2009-5-4 10:43:00的发言:
cmd.CommandText = "UPDATE {费用管理} SET 已收付金额 = " & dr("已收付金额") & ",收付编号 = " & dr("收付编号") & ",销帐人 = " & dr("销帐人") & ",余额 = " & dr("余额") & ",销余额 = " & dr("销余额") & ",余额编号 = " & dr("余额编号") & " WHERE 费用关联 = " & dr("费用关联") & " and 费用名称 = " & dr("费用名称") & ""
cmd.ExecuteNonQuery()

去掉单引号还是不行

如果是字符型用 \' " & XXX & " \'
如果是数值型用 XXX
如果是日期型用 # " & XXX & " #

以上自己试验下,不保证正确...