Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL查询输出到Delphi中的变量?_Sql Server_Delphi_Unidac - Fatal编程技术网

Sql server SQL查询输出到Delphi中的变量?

Sql server SQL查询输出到Delphi中的变量?,sql-server,delphi,unidac,Sql Server,Delphi,Unidac,我想知道如何将SQL查询结果放入变量中 我知道这一点 integerVariable := UniQuery1.RecordCount; 但是这个呢 integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000' 您需要做的是首先“执行”sql,然后检查结果,如果结果存在,然后将其存储在变量中,我的意思是: procedure ...; var LCount: Integer; begin LCount := 0

我想知道如何将SQL查询结果放入变量中

我知道这一点

integerVariable := UniQuery1.RecordCount;
但是这个呢

integerVariable := SELECT COUNT(*) FROM Orders WHERE Amount='1000' 

您需要做的是首先“执行”sql,然后检查结果,如果结果存在,然后将其存储在变量中,我的意思是:

procedure ...;
var
  LCount: Integer;
begin
  LCount := 0;
  //
  // note that I am doubling the single quote to escape it
  //
  // set the query
  UniQuery1.SQL.Text := 'SELECT COUNT(*) FROM Orders WHERE Amount=''1000'';';
  //
  // "execute" it
  //
  UniQuery1.Open;
  //
  // SELECT COUNT(*) will return 1 record with 1 field
  // most likely the field name is 'count' <= lower case
  // but we are sure that there should be only 1 field so we 
  // access it by Fields[Index].As[TYPE]
  //
  LCount := UniQuery1.Fields[0].AsInteger;
  ShowMessageFmt('Total count of orders with Amount = 1000: %d', [LCount]);
end;
程序。。。;
变量
l计数:整数;
开始
l计数:=0;
//
//请注意,我将单引号加倍以避开它
//
//设置查询
UniQuery1.SQL.Text:=“从订单中选择计数(*),其中金额=”“1000”“;”;
//
//“执行”它
//
唯一1.开放;
//
//选择计数(*)将返回1条记录和1个字段

//最有可能的字段名是“count”Ehm,什么?我想你的意思是类似于
UniQuery1.Fields[0].AsInteger
的东西,如果你在数据集的第一行,但我们甚至不知道
UniQuery1
@TLama UniQuery1:TUniQuery是什么类型,他/她使用的UniDAC组件来自别忘了接受解决你问题的答案。它将帮助未来的访问者识别正确的解决方案。谢谢,祝你愉快!显然,这个特定的查询将始终返回一个结果,而且,它将返回一个值(与NULL相反),因为
COUNT()
始终返回一个值,而不是NULL。因此,在这种情况下,
notisempty
测试可以省略。@Andriy是对的。也不需要
UniQuery1.FindFirst
。我不知道
TUniQuery
,但执行
TUniQuery.Open之后,数据集不是已经在第一行了吗?像
UniQuery1.Open这样的东西是不够的;LCount:=UniQuery1.字段[0]。AsInteger?字段名不是
count
。要指定名称,请使用
选择count(*)作为RecordCount
并使用
UniQuery1.FiledByName('RecordCount').AsInteger
。另外,最好在
SQL.Text
中使用参数,而不是将单引号加倍。@kobik我写道“很可能字段名是'count'”,在Postgres中,如果没有定义别名,字段名将是“count”,我不知道SQL server