Sql 总和字符串字段TQuery-Delphi v7
德尔福v7 我正在尝试对dbGrid中的一列求和。这应该很容易,但我似乎无法完成。该字段是一个字符串字段 到目前为止,我创建的代码是:Sql 总和字符串字段TQuery-Delphi v7,sql,delphi,delphi-7,Sql,Delphi,Delphi 7,德尔福v7 我正在尝试对dbGrid中的一列求和。这应该很容易,但我似乎无法完成。该字段是一个字符串字段 到目前为止,我创建的代码是: Query1.Close; Query1.SQL.Text := 'SELECT SUM(field) FROM "mytable"'; form1.Query1.Open; Edit1.Text := form1.Query1.Fields[0].AsString; 似乎我必须将字符串字段中的数据转换为整数。对我来说,这似乎是一个不需要动脑筋的问题,但我尝试
Query1.Close;
Query1.SQL.Text := 'SELECT SUM(field) FROM "mytable"';
form1.Query1.Open;
Edit1.Text := form1.Query1.Fields[0].AsString;
似乎我必须将字符串字段中的数据转换为整数。对我来说,这似乎是一个不需要动脑筋的问题,但我尝试的都不管用。这里需要一些帮助:-帮助您解决此问题。如注释中所述,解决方案在查询中,而不是在Delphi代码中:
Query1.SQL.Text := 'SELECT SUM(VAL(field)) AS RESULT FROM "mytable"';
VAL语法取决于您使用的数据库,它将字段转换为一个值,然后求和。我用谷歌搜索了advantage db。您可以尝试从mytable中选择sumcastfield作为货币。不会处理具有非数值的列。最好的猜测是因为我在公共汽车上,回答这个问题花了5分钟多 请添加表结构、一些示例值和查询的预期结果。数据库为绝对数据库。这个问题的表格很简单。它有四个字段:日期、说明、借方、贷方。所有字段都是不同字符宽度的字符串字段。我需要求和的列是借方字段。它是一个宽度为20个字符的字符串字段。借方字段中的值为货币。我需要能够计算显示的所有记录的借方字段的总金额。如果有三条记录,且借方字段分别包含3.00、5.00和2.00,则结果应为10.00。总数将显示在文本框中。您应该首先直接在数据库上测试查询。所以这个问题与delphi无关,它只与sql或abosulte数据库有关。Delphi无法修复您的非工作sql查询这不是Delphi问题。这是一个绝对的数据库SQL问题。在Delphi组件中使用SQL之前,您必须先使用SQL。有关支持的标量函数(如CAST或CONVERT),请参阅绝对数据库文档。将来,如果您有需要求和的数据,请将其放在数字列而不是字符串列中,这样就不会出现此问题。绝对数据库附带DBManager实用程序。我找不到太多关于它的信息。这不允许您单独执行SQL吗?@Robert但请注意,您的底层数据库存在严重问题:数值存储在字符串字段中。这意味着理论上该字段中可以有任何内容,并且您的查询将因错误或更糟的是错误的总和而失败。也许你很幸运,数据是由一个程序放在那里的,它可以确保数字的格式正确。我想你还是可以改变表的结构的,就这么做吧。我在谷歌上搜索了advantage db sumcastfield,就像mytable中的Cas一样浮动