Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.043 c
15-1195137434
alikon1
2007-11-15 17:37
2007.12.23
Не могу уследить логику работы калькулятора Windows


2-1196165148
ImA
2007-11-27 15:05
2007.12.23
Paradox в меня не понимать =)


15-1195550328
misha_gr
2007-11-20 12:18
2007.12.23
Borland C++ Builder 5.0 download


15-1195904689
Petr V. Abramov
2007-11-24 14:44
2007.12.23
Болтовня по Skype


3-1187156508
bss
2007-08-15 09:41
2007.12.23
Oracle+ADO, Формат даты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский