Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];

Вниз

Уведомление о полученном сообщении   Найти похожие ветки 

 
uno ©   (2007-12-05 08:24) [0]

Привет всем! Помогите пожалуйста! Я писал модуль сообщений, его прицип в том что: ползователь A отсылает сообщение пользователю B,
это сообщение записываеться в Базу данных, а пользователю B приходит широкополосное сообщение по локальной сети, о том что пришло сообщение, и позже письмо уже извлекаеться из Б.Д. , как прописать это широкополоссное уведомление?


 
pavel_guzhanov ©   (2007-12-05 08:47) [1]

Напиши подробнее, что использовал для расылки сообщений, какая БД, и структуру программы.
В общем это представляется так: В базе должен быть триггер на вставку данных, триггер дает сообщение программе, а программа уже отсылает сообщение по сети и отправляет письмо. Программа вероятнее всего должна быть на сервере.


 
Kolan ©   (2007-12-05 09:10) [2]

Непонятно что такое «широкополосное сообщение». Если это широковещательное сообщение, то нах оно надо если посылается 1 пользователю.


 
Sergey13 ©   (2007-12-05 09:23) [3]

> [0] uno ©   (05.12.07 08:24)

Как вариант - пользователь B может и сам сканировать свой ящик например по таймеру.


 
uno ©   (2007-12-05 09:26) [4]

Я создал процедуру при нажатии кнопки отправить

procedure TMessagesForm.btnSend1Click(Sender: TObject);
begin
  with DataModule1.IBQShared do begin
         SQL.Clear;
         SQL.Add("insert into MESSAGE_EXT( MESSAGE_ID, MESSAGE_SENDER, MESSAGE_SAND_DATE, MESSAGE_SUBJECT)values (gen_id(MESSAGES_GEN, 1), :MESSAGE_SENDER, :MESSAGE_SAND_DATE)");// в таблице MESSAGE_EXT заносятья данные:ID сообщения, отправитель, дата отправки
         DataModule1.IBQShared.ParamByName("MESSAGE_ID").AsInteger := MESSAGE_ID;|| ID сообщения генерируеться
         DataModule1.IBQShared.ParamByNam("MESSAGE_SENDER").AsString :=     USER_ID;// прописанно в тригере таблицы,MESSAGE_SENDER есть USER_ID
         DataModule1.IBQShared.ParamByName("MESSAGE_SAND_DATE").AsString := TimeToStr(Time);// дата отправки сообщения
         SQL.Add("insert into MSGBODIES(MESSAGEBODY_ID, MESSAGE_TEXT)values (gen_id(MSGBODIES_GEN, 1), :MESSAGE_TEXT)");// запись тела сообщения в таблицу MSGBODIES
         DataModule1.IBQShared.ParamByName("MESSAGE_TEXT").AsBlob := redtSender1.Text;// вставка текста сообщения в поле

Далее пользавателю приходит уведамление что полученни сообщение и уже после идет извлеченипе из таблицы и прочтение его, как извлеч я знаю, а прописать отправку уведомления я не могу( из-за недостатка опыта и знаний наверно)


 
Sergey13 ©   (2007-12-05 09:32) [5]

> [4] uno ©   (05.12.07 09:26)
Странный код (мягко сказать). Только не говори мне, что он работает.


 
Kolan ©   (2007-12-05 09:36) [6]

Я понял, он хочет чтобы один человек что-то записал в БД, а другой об этом тут же узнал, так?


 
uno ©   (2007-12-05 09:38) [7]

Проверить не было возможности так как он еще не дописан, восможно есть ошибки, но так как я еще только начинающий я их не вижу, если не трудно то покскажите в чем заклю чаеться странность


 
uno ©   (2007-12-05 09:38) [8]

Да имеено так


 
Kolan ©   (2007-12-05 09:46) [9]

Сканировать стаблицу через интервылы времени — оч простое решение, можно начать с него.

Ты можешь делать SELECT COUNT(*) FORM <Твоя таблица>.

Если с прощлого раза кол-во изменилась, то узнаешь изменилось ли кол-во для конкретного пользователя
SELECT COUNT(*) FORM <Твоя таблица>
WHERE <Нужный пользователь>


Если изменилось, то делать селект записей.

Ессно это плохо нагрузкой на сеть, но это просто, имхо.


 
Плохиш ©   (2007-12-05 09:51) [10]


> Если с прощлого раза кол-во изменилась, то узнаешь изменилось
> ли кол-во для конкретного пользователя

Прикольно, предлагаешь делать двойную работу. Вот мне, как пользователю, первая часть твоего предложения глубоко фиолетова...


 
Sergey13 ©   (2007-12-05 09:53) [11]

> [7] uno ©   (05.12.07 09:38)
> если не трудно то покскажите в чем заклю чаеться странность

> SQL.Add("insert into MESSAGE_EXT( MESSAGE_ID, MESSAGE_SENDER,MESSAGE_SAND_DATE, MESSAGE_SUBJECT)values (gen_id(MESSAGES_GEN,
> 1), :MESSAGE_SENDER, :MESSAGE_SAND_DATE)");// в таблице > MESSAGE_EXT заносятья данные:ID сообщения, отправитель, дата отправки
>         DataModule1.IBQShared.ParamByName("MESSAGE_ID").AsInteger := MESSAGE_ID;|| ID сообщения генерируеться
>         DataModule1.IBQShared.ParamByNam("MESSAGE_SENDER").AsString :=     USER_ID;// прописанно в тригере таблицы, MESSAGE_SENDER есть USER_ID
>         DataModule1.IBQShared.ParamByName("MESSAGE_SAND_DATE").AsString := TimeToStr(Time);// дата отправки сообщения

Ты
1. В 4 указанных поля пишешь 3 значения.
2. Присваиваешь значения параметрам, которых нет в запросе
3. Присваиваешь в клиенте значения, которые логичнее было бы присваивать на сервере.
4. НЕ присваиваешь единственное значение, которое реально знать только в клиенте (адресата)
5. Не даешь команды на выполнение составленного запроса.

> SQL.Add("insert into MSGBODIES(MESSAGEBODY_ID, MESSAGE_TEXT)
> values (gen_id(MSGBODIES_GEN, 1), :MESSAGE_TEXT)");// запись
> тела сообщения в таблицу MSGBODIES

Ты
1. добавил к тексту запроса вторую строку. Теперь там две строки - старая и новая.
2. не пишешь идентификатор родительской таблицы. У тебя его похоже просто нет. Непонятен вообще смысл таблицы MSGBODIES. Модет быть несколько сообщений в один момент времени? Сомневаюсь.


 
Kolan ©   (2007-12-05 09:53) [12]

> Вот мне, как пользователю, первая часть твоего предложения
> глубоко фиолетова&#133

Ну это я придумал для ускорения работы. Можно всегда делать
SELECT COUNT(*) FORM <Твоя таблица>
WHERE <Нужный пользователь>


ЗЫ
 Это мой вариант решения, который пришел в голову. Подобную задачу не решал.


 
Sergey13 ©   (2007-12-05 10:04) [13]

> [7] uno ©   (05.12.07 09:38)

+ к [11] Sergey13 ©   (05.12.07 09:53)
> ParamByName("MESSAGE_SAND_DATE").AsString := TimeToStr(Time) ;// дата отправки сообщения
Работать с датой/временем надо как с датой/временем, а не как со строкой. Иначе неизбежно нарвешься на какой нибудь 25-й месяц.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
6-1176785568
mail
2007-04-17 08:52
2007.12.30
Получение инфы с удалённого сервера MySql


15-1196276512
NeiL
2007-11-28 22:01
2007.12.30
Cut_Image


15-1196415745
data
2007-11-30 12:42
2007.12.30
Баланс между скоростью разработки и внедрения и качеством. Мнения


2-1197019950
Иван1
2007-12-07 12:32
2007.12.30
Динамический массив


5-1164714160
Hollander
2006-11-28 14:42
2007.12.30
Проблема с SelAttributes





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