Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Ошибка:HelpQuery1:CommandText does not return a re


Автор: QuiGonJinn 26.2.2013, 14:00
Написал процедуры к кнопке чтобы при нажатии данные заносились в БД...они заносятся но криво. вылетает ошибка при нажатии кнопки" HelpQuery1:CommandText does not return a result set. ". И после ошибки в гриде не прибавилось строк(). но когда заного ф9 тыкаешь - то в гриде видно что в конце нужная строка появаилась(т.е. только после перезапуска).
В самом коде ошибок - нет. Ошибка вылезает когда я запускаю прогу и и нажимаю кнопку.
не нашёл решения проблемы... часто пишут смени Open на ExecSQL.... а у меня и так  ExecSQL. 
Способа доступа TADO компоненты
Delphi xe3
mssql server management studio 2008
Код

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Vcl.ComCtrls,
  Data.DB, Data.Win.ADODB, Unit2, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
  data, time, TN, TK:string;
begin
  data:=quotedstr(unit1.Form1.Edit1.Text);
  time:=quotedstr(unit1.Form1.Edit2.Text);
  TN:=quotedstr(unit1.Form1.Edit3.Text);
  TK:=quotedstr(unit1.Form1.Edit4.Text);

    With unit2.Form2.HelpQuery1 do
      Begin
        close;
        SQL.Clear;
        SQL.Add('exec new_zapis '+data+' ,'+time+' ,'+TN+' ,'+TK);
        ExecSQL;
        Unit2.Form2.HelpQuery1.Active:=false;
        Unit2.Form2.HelpQuery1.Active:=true;
      End;
end;

procedure TForm1.Button2Click(Sender: TObject);
var id:string;
begin

end;

end.

Код

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB;

type
  TForm2 = class(TForm)
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    HelpQuery1: TADOQuery;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}



end.

процедуры которые я прописал в мсскюль
Код

Use [LIB]
go
Create procedure new_zapis(@Дата nvarchar(50), @Время nvarchar(50),@ТН nvarchar(50),@ТК nvarchar(50))
as
    begin
        insert into zapis values((select ISNULL(MAX(id)+1,1) from zapis),
        @Дата, @Время, @ТН,@ТК)
    end
    
Create procedure delete_zapis(@id int)
as
    begin
        Delete from zapis where zapis.id=@id
    end
    

Автор: Akella 27.2.2013, 11:14
Цитата(QuiGonJinn @  26.2.2013,  14:00 Найти цитируемый пост)
асто пишут смени Open на ExecSQL.... а у меня и так  ExecSQL. 


Вопрос номер раз: ты понимаешь разницу между двеями этими методами? Для чего тот и другой?

Добавлено через 14 секунд
Цитата(QuiGonJinn @  26.2.2013,  14:00 Найти цитируемый пост)
 заного

Заново smile

Добавлено через 1 минуту и 25 секунд
Цитата(QuiGonJinn @  26.2.2013,  14:00 Найти цитируемый пост)
SQL.Add('exec new_zapis 


Что это за "new_zapis"? Это хранимая процедура на сервере? Что за СУБД хоть?

Добавлено через 6 минут и 54 секунды
Цитата(QuiGonJinn @  26.2.2013,  14:00 Найти цитируемый пост)
чтобы при нажатии данные заносились в БД


Цитата(QuiGonJinn @  26.2.2013,  14:00 Найти цитируемый пост)
        Unit2.Form2.HelpQuery1.Active:=false;
        Unit2.Form2.HelpQuery1.Active:=true;


Почитай азы на тему Delphi и базы данных.
Обязательно пойми разницу между EXEC и OPEN

Пойми, что HelpQuery1.Active это всё равно что HelpQuery1.Open, если Вы понимаете разницу между EXEC и OPEN.

Автор: QuiGonJinn 27.2.2013, 14:47
Наконец нашёл в чём причина этой ошибки) Я указал не тот query  smile )) Как знал что дело в мелочи)
Akella- да это хранимая на сервере процедура) exec  и open  почитаю)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)