Главная страница
    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.45 MB
Время: 0.045 c
4-1176447569
Dmitry_177
2007-04-13 10:59
2007.12.23
Перевести SYSTEMTIME в строку


3-1187260709
Tonich
2007-08-16 14:38
2007.12.23
order by


1-1191597941
Kilkik
2007-10-05 19:25
2007.12.23
Выделение


3-1187120241
Anti
2007-08-14 23:37
2007.12.23
Как создать генератор


2-1196227707
vegarulez
2007-11-28 08:28
2007.12.23
Вопрос про insert в access`e.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский