'开'或者' ExecSQL'在执行之前检测查询差异

时间:2016-11-08 12:39:56

标签: delphi absolute-db

有些查询需要使用' Open'命令和一些' ExecSQL'。

我正在使用备忘录进行查询(第一次)

Query1.SQL.Text := ADVMemo1.Lines.Text;

并且无法弄清楚如何处理上述差异 点击按钮。

当按下按钮时有没有办法检查这个,所以它知道要应用什么? 喜欢...如果查询以插入或更新开始,则执行其他操作...

1 个答案:

答案 0 :(得分:2)

此例程将检查SQL是否以select语句启动,如果是,它将打开它,否则它将执行它。

procedure OpenOrExecute(Query: TABSQuery);
var Command: string;
begin
  Command := LowerCase(Copy(Trim(Query.Sql.Text), 1, 6));
  if Command = 'select' then
  begin
    Query.Open;
  end
  else
  begin
    Query.ExecSQL;
  end;   
end;

现在您可以随时使用它来打开/执行查询。例如:

OpenOrExecute(Query1);

虽然这只适用于非常简单的查询,例如使用exec命令调用的存储过程可能会也可能不会返回记录集。单凭SQL命令无法知道它。