Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Запись сообщения в таблице   Найти похожие ветки 

 
uno ©   (2007-11-29 09:03) [0]

Здравствуйте! Скажите в чем тут ошибка ( надо записать сообщение в Базу) вот код:

function TMessagesForm.InsMessage(MESSAGE_ID : integer; MESSAGE_SENDER : integer;
        MESSAGE_RECIPIENTS_NAMES : string;MESSAGE_SAND_DATE : string): boolean;
var
 InsMessageOk : boolean;
begin
 InsMessage := true;
 InsMessageOk := true;
 Message_ID := -1
    with DataModule1.IBQShared do begin
         SQL.Clear;
         SQL.Add("select gen_id(MESAAGES_GEN, 1) from RDB$DATABASE");
         Open;
         Message_ID := FieldByName("GEN_ID").AsInteger;
         Close;
         SQL.Clear;
         SQL.Add("insert into MESSAGE_EXT(MESSAGE_ID, MESSAGE_SANDER, MESSAGE_RECIPIENTS_NAMES, MASSAGE_SAND_DATE)values (:MESSAGE_ID, :MESSAGE_SENDER, :MESSAGE_RECIPIENTS_NAMES, :MESSAGE_SAND_DATE )
         FieldByName("MESSAGE_ID").AsInteger := Message_ID;
         FieldByName("MESSAGE_SENDER").AsInteger := USER_ID;
         FieldByName("MESSAGE_RECIPIENTS_NAMES").AsString := TreeView1.Selected.Text ;
         FieldByName("MESSAGE_SAND_DATE").AsString := TimeToStr(Time);
         try
         ExecSQL;
         except
         InsMessage := false;
         InsMessageOk := false;
         end;
     end;


 
Sergey13 ©   (2007-11-29 09:09) [1]

> [0] uno ©   (29.11.07 09:03)
> Скажите в чем тут ошибка

Зачем отдельно получать значение генератора?

> FieldByName("MESSAGE_ID").AsInteger := Message_ID;

Не поле это, а параметр.


 
uno ©   (2007-11-29 09:15) [2]

Я просто начинающий. Как будет провильно
Если таблица имеет следующие поля:
MESSAGE_ID
MESSAGE_SENDER
MESSAGE_RECIPIENTS_NAMES
MESSAGE_SAND_DATE


 
uno ©   (2007-11-29 09:20) [3]

Возможно вместо FieldByName использовать ParamByName?


 
Anatoly Podgoretsky ©   (2007-11-29 09:35) [4]

Смотри в справке как работать с ТВОИМ датасет.


 
Sergey13 ©   (2007-11-29 12:16) [5]

> [2] uno ©   (29.11.07 09:15)

В строке
> SQL.Add("insert into MESSAGE_EXT(MESSAGE_ID, MESSAGE_SANDER,
> MESSAGE_RECIPIENTS_NAMES, MASSAGE_SAND_DATE)values (:MESSAGE_ID,
> :MESSAGE_SENDER, :MESSAGE_RECIPIENTS_NAMES, :MESSAGE_SAND_DATE
> )
ты формируешь параметрический запрос на вставку. В values ты описал список ПАРАМЕТРОВ, значения которых запишутся в поля записи. Тебе надо присвоить значения этим параметрам. А ты пытаешся операторами типа FieldByName("MESSAGE_ID").AsInteger := Message_ID; присвоить значения полям датасета, которых там нет (запрос то на вставку).
И еще, в запрос можно сразу вставить
...values (gen_id(MESAAGES_GEN, 1), :MESSAGE_SENDER ....
и не получать его отдельно.



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-1191691397
Андрей_Св
2007-10-06 21:23
2007.12.23
разрезание StringGrid по листам


2-1196497132
Pacific
2007-12-01 11:18
2007.12.23
Ошибка


15-1195185939
Юрий Зотов
2007-11-16 07:05
2007.12.23
Похоливарим еще? (java, checked exceptions)


15-1196017801
Cyrax
2007-11-25 22:10
2007.12.23
JavaScript: "не выпускаем" пользователя из поля ввода, пока...


2-1196306724
snake-as
2007-11-29 06:25
2007.12.23
не могу воспроизвести звук