Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-1191232247
Yurikon
2007-10-01 13:50
2007.12.23
Директивы компилятору


15-1195700635
Slider007
2007-11-22 06:03
2007.12.23
С днем рождения ! 22 ноября 2007 четверг


1-1191691397
Андрей_Св
2007-10-06 21:23
2007.12.23
разрезание StringGrid по листам


15-1196009945
Kostafey
2007-11-25 19:59
2007.12.23
Интеграция Turbo JBuilder 2007 и Subversion


2-1196406798
Quart
2007-11-30 10:13
2007.12.23
setfocus




   Наверх