我有两个表,ACTB和ACXL,我的程序中都有Access表。出于我的目的,我希望在查询结束时清除ACXL的内容。
要点:
在程序中,用户访问openfiledialog并选择Excel文件。所述文件被插入ACXL。 ACXL通过ID唯一字段与ACTB匹配,并通过添加其值来更新记录。到目前为止,这是我的代码:
string sqls = @"INSERT INTO ACXL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" + openFileDialog.FileName + "].[" + txtSheetName.Text + "$];";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = sqls;
cmd.ExecuteNonQuery();
string updater = @"UPDATE ACTB inner join ACXL on ACTB.ID = ACXL.ID " +
@"SET ACTB.GrossIncome + ACXL.GrossIncome " +
@"ACTB.LessTNT + ACXL.LessTNT " +
@"ACTB.TaxableIncomeCE + ACXL.TaxableIncomeCE " +
@"ACTB.TaxableIncomePE + ACXL.TaxableIncomePE " +
@"ACTB.GrossTaxableIncome + ACXL.GrossTaxableIncome " +
@"ACTB.LessTE + ACXL.LessTE " +
@"ACTB.LessPPH + ACXL.LessPPH " +
@"ACTB.NetTax + ACXL.NetTax " +
@"ACTB.TaxDue + ACXL.TaxDue " +
@"ACTB.HeldTaxCE + ACXL.HeldTaxCE " +
@"ACTB.HeldTaxPE + ACXL.HeldTaxPE " +
@"ACTB.TotalTax + ACXL.TotalTax";
cmd.CommandText = updater;
cmd.ExecuteNonQuery();
string deleter = @"DELETE from ACXL";
cmd.CommandText = deleter;
cmd.ExecuteNonQuery();
在UPDATE命令上收到相当模糊的语法错误。看到有什么不对吗?这是实现目标的正确方法吗?这是你如何添加两个表的值?
编辑:
问题已解决,我们提出了以下建议:
string updater =
@"UPDATE ACTB " + @"INNER JOIN ACXL on ACTB.ID = ACXL.ID "+
@"SET ACTB.GrossIncome = ACTB.GrossIncome + ACXL.GrossIncome, " +
@"ACTB.LessTNT = ACTB.LessTNT + ACXL.LessTNT, " +
@"ACTB.TaxableIncomeCE = ACTB.TaxableIncomeCE + ACXL.TaxableIncomeCE, " +
@"ACTB.TaxableIncomePE = ACTB.TaxableIncomePE + ACXL.TaxableIncomePE, " +
@"ACTB.GrossTaxableIncome = ACTB.GrossTaxableIncome + ACXL.GrossTaxableIncome, " +
@"ACTB.LessTE = ACTB.LessTE + ACXL.LessTE, " +
@"ACTB.LessPPH = ACTB.LessPPH + ACXL.LessPPH, " +
@"ACTB.NetTax = ACTB.NetTax + ACXL.NetTax, " +
@"ACTB.TaxDue = ACTB.TaxDue + ACXL.TaxDue, " +
@"ACTB.HeldTaxCE = ACTB.HeldTaxCE + ACXL.HeldTaxCE, " +
@"ACTB.HeldTaxPE = ACTB.HeldTaxPE + ACXL.HeldTaxPE, " +
@"ACTB.TotalTax = ACTB.TotalTax + ACXL.TotalTax ";
答案 0 :(得分:4)
在In function `SuperpoweredCompressor::process(float*, float*, unsigned int)':
/Volumes/iMect/iphone/SuperpoweredSource/FX/SuperpoweredCompressor.cpp:254: undefined reference to `SuperpoweredCompressorProcess'
/Volumes/iMect/iphone/SuperpoweredSource/FX/SuperpoweredCompressor.cpp:254: undefined reference to `SuperpoweredCompressorProcess'
查询中使用UPDATE
子句。这将解决语法错误问题。
答案 1 :(得分:1)
update .. set
的语法真的没有了。你错过了所有的' ='设置列的标志。
SQL Update最常用的语法是(示例)
update mytable set column1 = value, column1 = value2 where id = someid
等。
所以你的SQL应该像这样修复:
string updater = @"UPDATE ACTB " +
@"INNER JOIN ACXL on ACTB.ID = ACXL.ID ";
@"SET ACTB.GrossIncome = ACTB.GrossIncome + ACXL.GrossIncome, " +
@"ACTB.LessTNT = ACTB.LessTNT + ACXL.LessTNT, " +
@"ACTB.TaxableIncomeCE = ACTB.TaxableIncomeCE + ACXL.TaxableIncomeCE, " +
@"ACTB.TaxableIncomePE = ACTB.TaxableIncomePE + ACXL.TaxableIncomePE, " +
@"ACTB.GrossTaxableIncome = ACTB.GrossTaxableIncome + ACXL.GrossTaxableIncome, " +
@"ACTB.LessTE = ACTB.LessTE + ACXL.LessTE, " +
@"ACTB.LessPPH = ACTB.LessPPH + ACXL.LessPPH, " +
@"ACTB.NetTax = ACTB.NetTax + ACXL.NetTax, " +
@"ACTB.TaxDue = ACTB.TaxDue + ACXL.TaxDue, " +
@"ACTB.HeldTaxCE = ACTB.HeldTaxCE + ACXL.HeldTaxCE, " +
@"ACTB.HeldTaxPE = ACTB.HeldTaxPE + ACXL.HeldTaxPE, " +
@"ACTB.TotalTax = ACTB.TotalTax + ACXL.TotalTax ";