更新查询(access& vb.net)

时间:2010-05-19 11:05:37

标签: vb.net ms-access

问题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

有关更新的其他问题。

如果我有2个链接表

示例表发票

idInvoice

示例表详情

idInovice

“总计”字段是表格“详细信息”

的字段“价格”的总和

如何更新“总计”字段的“查询”?

TOTAL字段需要存储在数据库中


解决方案问题2:

如果我执行此查询,则可以

。实施例。

更新table1 INNER JOIN table2 ON table1.id = table2.id set table1.field1 = table2.fieldX

3 个答案:

答案 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)