Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [BCB6] ADOQuery,Select, data! проблема работы с датой в селекте 
V
    Опции темы
XPyCT
Дата 23.5.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



здравствуйте!
никак не выходит выполнить запрос!

А именно, 
 есть главная таблица abonament в неи по условию отбора имени фамилии и дате рождения нужно в таблице оплата вывести все оплаты посетителя! все ид имя и фамилию получаем нормально , это проверялось по средством ShowMessage! загвоздка в выборе условия отбора в дате вот на скрине что пишет!


user posted image

вот код
Код

//---- начало В главной таблице  находим дату рождения посетителя по полученyому ид из таблицы plata
 int counter=1;
 String id, data_roj, imea, fam, SQL;
//--
 fam=AQuery->Fields->FieldByNumber(2)->AsString;
 imea=AQuery->Fields->FieldByNumber(3)->AsString;

 id=AQuery->Fields->FieldByNumber(1)->AsString;
 ShowMessage (id); // проверяем на верность соответствия ид ( о чем я говорил что все верно)

//---- Окончание поиска В главной таблице  находим дату рождения посетителя по полученyому ид из таблицы plata

//------далее по этому ид находим год рождения в главной таблице ( тоже все верно находит)
 fmGlavnoe->ADOTable1->First();
 for (; counter<=fmGlavnoe->ADOTable1->RecordCount; counter++)
    {
     if (fmGlavnoe->ADOTable1->Fields->FieldByNumber(2)->AsString==id)
      {
       data_roj=fmGlavnoe->ADOTable1->Fields->FieldByNumber(5)->AsString;
       break;
      }
      fmGlavnoe->ADOTable1->Next();
    }


//---- Вот тут вся загвоздка  в этом   data_roj  в обоих талицах поля где находятся даты
//----имеют формат   Краткий формат даты
 AQuery->Close();
 AQuery->SQL->Text="Select Abonament.id_abonament AS №_Абонемента, Abonament.fam as Фамилия, Abonament.name as Имя, plata.Plata_a as Нал, plata.Plata_b as Безнал, plata.La_achitare as К_оплате, plata.Bilant as Баланс from Abonament inner join plata on Abonament.id_abonament=plata.id_plata where Abonament.name='"+imea+"' and Abonament.fam='"+fam+"' and Abonament.date_r="+data_roj;
 AQuery->Open();


За ранее спс!
Парни не дайте расплавится моему серому веществу  smile 

Это сообщение отредактировал(а) XPyCT - 23.5.2009, 10:53
PM MAIL Skype   Вверх
XPyCT
Дата 25.5.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


1. формирование  ИД (Абонемент)

 ид формируется следующим образом  [месяц][год][номер ид начинается со 101] ! тобиш если таблица пустая то ид будет выглядеть на сегодняшний день так 0509101 иначе программа смотрит последний ид на этот месяц и генерирует новый 102,103 и так далее!

2. Пользователи

   пример: Васечкин. Иван  был записан каждый месяц на посещение бассейна  по пределенным дням! На каждый месяц у него свои ид,  но он характеризуется еще именем фамилием и датои рождения!


3. Состояние оплаты

    настает время просмотриеть состояние оплаты по васечуину! На текущий месяц все работает нормально! Но пользователь имее желание просмотреть все платежи васечкина! 

вот для этого я и составил тот запрос а именно:
а)  в таблице оплаты получаем ид васечкина

б) по этому ид уже в главной таблице получаем имя фамилию  и год рождения

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

Это сообщение отредактировал(а) XPyCT - 25.5.2009, 09:46
PM MAIL Skype   Вверх
mrbrooks
Дата 25.5.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



В Аксесе формат метки времени отличается от той что в Бормане по умолчанию, т.е. #dd/mm/yyyy#
поэтому в твоем случае камрад надо писать нечто подобное:

Код

//как я понимаю 5 поле имеет тип TDate
data_roj=fmGlavnoe->ADOTable1->Fields->FieldByNumber(5).FormatString("#dd/mm/yyyy#");


Добавлено через 1 минуту и 12 секунд
можно и на американский манер то бишь так:

Код

data_roj=fmGlavnoe->ADOTable1->Fields->FieldByNumber(5).FormatString("#mm/dd/yyyy#");

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


Опытный
**


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

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



to mrbrooks: Спс приду с работы попробую  и отпишу!
PM MAIL Skype   Вверх
XPyCT
Дата 25.5.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не не выходит!
Пишет типо разные несовместимые форматы!
хотя как я и говорил в акчессе поле имеет формат даты ( краткий формат даты)

Это сообщение отредактировал(а) XPyCT - 25.5.2009, 17:01
PM MAIL Skype   Вверх
XPyCT
Дата 25.5.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все же таки параметры рулят!


вот так работает!

Код

//---- начало В главной таблице  находим дату рождения посетителя по полученyому ид из таблицы plata
 int counter=1;
 String id, data_roj, imea, fam, SQL;
//--
 fam=AQuery->Fields->FieldByNumber(2)->AsString;
 imea=AQuery->Fields->FieldByNumber(3)->AsString;
 id=AQuery->Fields->FieldByNumber(1)->AsString;
 ShowMessage (id); // проверяем на верность соответствия ид ( о чем я говорил что все верно)
//---- Окончание поиска В главной таблице  находим дату рождения посетителя по полученyому ид из таблицы plata
//------далее по этому ид находим год рождения в главной таблице ( тоже все верно находит)
 fmGlavnoe->ADOTable1->First();
 for (; counter<=fmGlavnoe->ADOTable1->RecordCount; counter++)
    {
     if (fmGlavnoe->ADOTable1->Fields->FieldByNumber(2)->AsString==id)
      {
       data_roj=fmGlavnoe->ADOTable1->Fields->FieldByNumber(5)->AsString;
       break;
      }
      fmGlavnoe->ADOTable1->Next();
    }
//---- Вот тут вся загвоздка  в этом   data_roj  в обоих талицах поля где находятся даты
//----имеют формат   Краткий формат даты
 AQuery->Close();
 AQuery->SQL->Text="Select Abonament.id_abonament AS №_Абонемента, Abonament.fam as Фамилия, Abonament.name as Имя, plata.Plata_a as Нал, plata.Plata_b as Безнал, plata.La_achitare as К_оплате, plata.Bilant as Баланс from Abonament inner join plata on Abonament.id_abonament=plata.id_plata where Abonament.name= :name and Abonament.fam=:familia and Abonament.date_r= :data_rojdenia ";

 //------------

 AQuery->Parameters->ParamByName("name")-> Value = imea;
 AQuery->Parameters->ParamByName("familia")->Value = fam;
 AQuery->Parameters->ParamByName("data_rojdenia")->Value = data_roj;
 //------------

 AQuery->Open();



всем на будущее испльзуем параметры!

Это сообщение отредактировал(а) XPyCT - 25.5.2009, 18:31
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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