问题1
我必须根据参数的值更新访问表的某些字段。如果这个参数是“真”,我需要更新。
表格
idInvoice
价
percentageTax1
tax1
percentageTax2
TAX2
总
示例值:
idinvoice:12300
价格:100€
percentageTax1:10%
tax1 = 10€
percentageTax2:5%
tax2:5€
总计:115€(结果:100€+ 10€+ 5€)
确定。如果我之前评论的参数是“true”,我必须更新百分比,然后更新总数。我需要用新百分比替换“旧”百分比。
好的我可以在3个查询中完成:
update invocies set percentageTax1=20,tax1=price *(percentageTax1/100) where idInvoice=@number and percentageTax1=10
update invocies set percentageTax2=7,tax2=price *(percentageTax2/100) where idInvoice=@number and percentageTax2=5
update invocies set total=price+tax1+tax2 where idInvoice=@number
即可。但我的问题是:
在1个查询中有没有替代方法?
有关更新的其他问题。
如果我有2个链接表
示例表发票
idInvoice
总
示例表详情
idInovice
行
价
“总计”字段是表格“详细信息”
的字段“价格”的总和如何更新“总计”字段的“查询”?
TOTAL字段需要存储在数据库中
。实施例。
更新table1 INNER JOIN table2 ON table1.id = table2.id set table1.field1 = table2.fieldX
答案 0 :(得分:2)
更常见的是提取您要处理的发票,在代码中进行数学处理以更新值,然后将所有更新的值一次性放回数据库中。
有一千种不同的方法可以做到这一点!
可能只有一个地方可以http://code.msdn.microsoft.com/eisk
或在这里 http://www.asp.net/data-access/tutorials/an-overview-of-inserting-updating-and-deleting-data-vb
答案 1 :(得分:2)
回答问题二。 除非有一些特殊需要将计算结果存储在数据库中,否则每次我想对总数进行任何操作时都会计算它。
如果您正在编写StackOverflow,这可能无法扩展,但对于正常使用,它会保存一个数据可能不同步的地方。
答案 2 :(得分:1)
尽可能删除计算字段。
update invocies
set percentageTax1 = IIf(percentageTax1=10, 20, percentagetax1)
, percentageTax2 = IIf(percentageTax2=5, 7, percentageTax2)
where idInvoice=@number AND (percentageTax1=10 OR percentageTax2=5)