2011-03-07 77 views
1

当我与Microsoft SQL Server Management Studio中德尔福:德尔福和Microsoft SQL Server 2005从功能不好的计算值

SELECT dbo.MOV('Hi',10,2) + dbo.MOV('Hi2',8,2) 

SQL Server 2005中发送此查询的查询返回400

的结果任何发送到该函数将返回200,除非最后两 参数,其中0的价值回归将是100,并从功能的十进制(12,2)

问题返回的值类型,是当我做查询德尔福

Query.SQL.Add('SELECT dbo.MOV(''Hi'',10,2) + dbo.MOV(''Hi2'',8,2)'); 
Query.Open; 
Query.Next; 
ShowMessage(Query.Fields[0].AsString); 

查询将返回200(在消息对话框),如SQL Server是否只是把第一个功能,而忽略第二个,所以我能做的从SQL Server 2005的正确计算进去德尔福。谢谢。

+2

为什么在Query.Open之后使用'Query.Next;'?当您检索单个记录结果时,不需要“下一个”调用。记得当你执行'open'程序时,返回的'Dataset'已准备好被读取。 – RRUZ 2011-03-07 06:51:43

+0

我会从'Query.SQL.Clear'开始,以确保安全。然后,我会尝试选择上半场,然后是下半场,然后检查结果。 – 2011-03-07 06:53:53

回答

5

尝试在Query.SQL.Add之前清除Query.SQL。

Query.SQL.Clear 
Query.SQL.Add('SELECT dbo.MOV(''Hi'',10,2) + dbo.MOV(''Hi2'',8,2)'); 

如果你已经有一个存储在SQL中的查询,你将只能看到第一个结果。

+0

这是问题所在,我在添加SQL句子之前没有使用Clear语句,非常感谢。 – alexzm1 2011-03-07 15:23:56

+0

+1水晶球 – jachguate 2011-03-08 15:40:50