Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизЗапись сообщения в таблице Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c