Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться, Работа с БД в C++ Builder 
:(
    Опции темы
Sadness
Дата 11.5.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Всем привет!
Я пишу маленькую программку на  C++ Builder 6. Программка представляет из себя что то вроде маленького " напоминателя ".Есть БД (MS Access) в которой храниться текст напоминания и время в которое должно появиться сообщение с тем самым текстом smile

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

Для подключения БД и отображения информации я использовал следующие компоненты:

ADOConnection,
DataSource,
ADOTable,
DBGrid.

Хух, надеюсь хоть кому то будет понятно что я написал smile

Заранее благодарен за помощь и примерчик smile

PM MAIL   Вверх
Данкинг
Дата 11.5.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Кидаешь ещё AdoQuery (если нужно, то привязать его к гриду) и SQL-запросом выводишь туда нужные тебе данные, т.е. где столбец с временем равен времени текущему.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sadness
Дата 11.5.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Спасибо что откликнулся smile

Ну AdoQuery и AdoTable похожы. Если тебе не трудно мне бы маленький примерчик с одним из них :}
PM MAIL   Вверх
Данкинг
Дата 11.5.2008, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Sadness @ 12.5.2008,  00:32)
Спасибо что откликнулся smile

Ну AdoQuery и AdoTable похожы. Если тебе не трудно мне бы маленький примерчик с одним из них :}

Не силён в Билдере, поэтому в синтаксисе могу ошибиться.  smile Закрываешь AdoQuery, очищаешь, затем в свойство sql добавляешь sql-запрос, а затем открываешь:

Код

AdoQuery1->clear
AdoQuery1->sql->clear
AdoQuery1->sql->add ('select pole, pole2 from BAZA where pole3="22222"')
AdoQuery1->open







Это сообщение отредактировал(а) Данкинг - 11.5.2008, 23:52


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sadness
Дата 14.5.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Все привет smile

Попитался сделать через Query.
Получилось следующие
Код


//---------------------------------------------------------------------------
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
  AnsiString cTime=FormatDateTime("hh/mm/ss",Time());
  AnsiString cDate=FormatDateTime("hh/mm/yyyy",Date());


  DataModule1->TimeQuery->Close();

  DataModule1->TimeQuery->SQL->Clear();

  DataModule1->TimeQuery->SQL->Add(
    "SELECT * FROM Напоминатель WHERE Время= ('"+ cTime +"')");

  DataModule1->TimeQuery->SQL->Add(
    "SELECT * FROM Напоминатель WHERE Дата = ('"+ cDate +"')");

  DataModule1->TimeQuery->Open();

  ResultForm->Show();

}
//---------------------------------------------------------------------------

Компилируется ,но при нажатии на кнопку возникает исключение.
вот собственно текст ошибки

Project reminder.exe raised exeption
class EOleExeption with message
'Ошибка синтаксиса. в выражении запроса 'Время= ('17.54.46')
SELECT * FROM  Напоминатель WHERE Дата = ('00.00.2008')".

Обьясните пожалуйста что я не так сделал )
заранее спасибо




Это сообщение отредактировал(а) Sadness - 14.5.2008, 23:16
PM MAIL   Вверх
orthrus
Дата 15.5.2008, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



Цитата(Sadness @  14.5.2008,  18:03 Найти цитируемый пост)
 Дата = ('00.00.2008')

Разве такое возможно? В этом у тебя и ошибка. Замени вот эти строчки:
Код

AnsiString cTime=FormatDateTime("hh/mm/ss",Time());
AnsiString cDate=FormatDateTime("hh/mm/yyyy",Date());

на эти:
Код

AnsiString cTime = Time().TimeString();
AnsiString cDate = Date().DateString();



--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Sadness
Дата 15.5.2008, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Тоже самое smile

Код

Project reminder.exe raised exeption
class EOleExeption with message
'Ошибка синтаксиса. в выражении запроса 'Время= ('7.26.22')
SELECT * FROM  Напоминатель WHERE Дата = ('15.05.2008')".


 smile 
PM MAIL   Вверх
orthrus
Дата 15.5.2008, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



Он у тебя на неправильно составленный запрос ругается. Ты пытаешься два запроса обьединить в одном Query, после обьединения он выглядит вот так:
Код

SELECT * FROM Напоминатель WHERE Время= ('7.26.22') SELECT * FROM  Напоминатель WHERE Дата = ('15.05.2008')

а это неправильный запрос, разноси его на два или делай вот так:
Код

DataModule1->TimeQuery->SQL->Clear();
DataModule1->TimeQuery->SQL->Add("SELECT * FROM Напоминатель WHERE Время= ('"+ cTime +"')");
DataModule1->TimeQuery->Open();
DataModule1->TimeQuery->Close();
DataModule1->TimeQuery->SQL->Clear();
DataModule1->TimeQuery->SQL->Add("SELECT * FROM Напоминатель WHERE Дата = ('"+ cDate +"')");
DataModule1->TimeQuery->Open();
ResultForm->Show();


Это сообщение отредактировал(а) orthrus - 15.5.2008, 08:11


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Sadness
Дата 15.5.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Спасибо smile
Вечером дома попробую.
PM MAIL   Вверх
Sadness
Дата 15.5.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 11.5.2008

Репутация: нет
Всего: нет



Теперь ругается  "Несоответствие типов данных  в выражении условия отбора"  smile 

Это сообщение отредактировал(а) Sadness - 15.5.2008, 18:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.