Главная страница
    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.46 MB
Время: 0.039 c
2-1196144972
Мистик
2007-11-27 09:29
2007.12.23
Сохранить аттач с руским именем из idmessage


15-1195846286
Igor Zorkov
2007-11-23 22:31
2007.12.23
Anatoly Podgoretsky


2-1195909606
Servelat
2007-11-24 16:06
2007.12.23
Приведение типов


2-1196157691
BattleCruser
2007-11-27 13:01
2007.12.23
Обработка сообщений в невизуалных класах.


15-1196026503
Tos-ka
2007-11-26 00:35
2007.12.23
Подскажите условиями входит точка в тело или нет.





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