Проблема с SQL запросом

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ReDLI, 27 Apr 2015.

  1. ReDLI

    ReDLI New Member

    Joined:
    20 Dec 2009
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Всем доброго времени суток!
    Делаю я тут, значит, базу данных.
    И у меня возникла такая ошибка.
    У меня есть SQL запрос, который по нажатию кнопки должен брать айди из одной таблицы и записывать в другую, но еще он должен записывать данные введенные пользователем в DateEdit1, в итоге, как я понял, получается 2 оператора insert в одном запросе и из-за этого выдает ошибку или я понял что-то не так)
    Подскажите пожалуйста знающие люди.
    Вот процедура на кнопку:

    procedure TForm11.Button1Click(Sender: TObject);
    begin
    DataModule1.SQLQuery5.Close;
    DataModule1.SQLQuery5.SQL.Clear;
    DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(ID_DIRECTION)');
    DataModule1.SQLQuery5.SQL.Add('select ID_DIRECTION');
    DataModule1.SQLQuery5.SQL.Add('FROM DIRECTION');
    DataModule1.SQLQuery5.SQL.Add('UNION');
    DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(DATE_TIME) values : DATE_TIME)');
    DataModule1.SQLQuery5.ParamByName('DATE_TIME').AsDate := DateEdit1.Date;
    DataModule1.SQLQuery5.ExecSQL;
    DataModule1.SQLTransaction1.Commit;
    DataModule1.SQLQuery5.SQL.Text:='select * from SCHEDULE';
    DataModule1.SQLQuery5.Open;
    Close;
    end;

    Ошибка такого рода:
    Проект project1 вызвал класс исключения 'EIBDatabaseError' с сообщением:
    IBCon: PrepareStatement:
    -Dynamic SQL Error
    -SQL error code=-104
    -Token unknown
    -line5, column 1
    -insert

    Как я понял, он ругается на эту строку, т.к. это линия 5:
    DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(DATE_TIME) values : DATE_TIME)');
     
  2. ReDLI

    ReDLI New Member

    Joined:
    20 Dec 2009
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Проблему решил, тему можно закрыть
    Если кому интересно:


    Code:
    procedure TForm11.Button1Click(Sender: TObject);
    begin
    DataModule1.SQLQuery5.Close;
    DataModule1.SQLQuery5.SQL.Clear;
    DataModule1.SQLQuery5.SQL.Add('insert into SCHEDULE(ID_DIRECTION, DATE_TIME)');
    DataModule1.SQLQuery5.SQL.Add('select ID_DIRECTION, :DATE_TIME');
    DataModule1.SQLQuery5.SQL.Add('FROM DIRECTION');
    DataModule1.SQLQuery5.ParamByName('DATE_TIME').AsDate := DateEdit1.Date;
    DataModule1.SQLQuery5.ExecSQL;
    DataModule1.SQLTransaction1.Commit;
    DataModule1.SQLQuery5.SQL.Text:='select * from SCHEDULE';
    DataModule1.SQLQuery5.Open;
    Close;
    end;  
     
    yarbabin likes this.