Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 08:44   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Структура БД. Нужен совет). Firebird

Здравствуйте, пишу программу для салона красоты. Спроектировал вроде как БД из имеющейся информации, но запрос, который я пишу не возвращает мне то, что мне нужно. Структура БД на скрине.

А запрос пишу такой:
Код:
  Form1.pFIBDataSet3.Close;
  Form1.pFIBDataSet3.SQLs.SelectSQL.Clear;
  Form1.pFIBDataSet3.SQLs.SelectSQL.Text:='SELECT DISTINCT * FROM RABOTNIKI,KLIENTY,USLUGI,VREMY WHERE (USLUGI.IDFIO = RABOTNIKI.ID) AND (VREMY.IDKLIENTA = KLIENTY.ID) AND (VREMY.IDSS = RABOTNIKI.ID) AND FAMR=' + QuotedStr(Form1.DBEditEh1.Text) + ' AND IMYR=' + QuotedStr(Form1.DBEditEh2.Text) + ' AND OTCHER=' + QuotedStr(Form1.DBEditEh3.Text);
  Form1.pFIBDataSet3.Open;
По моей задумке я хочу, чтобы мне вернулись все записи, которые относятся к указанному работнику, но этого не получается . Как мне кажется, то чего-то не хватает в моей структуре, какого-то поля наверное, а какого понять не могу. Что можете сказать по этому поводу
Изображения
Тип файла: jpg DB.jpg (83.9 Кб, 128 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.03.2010, 11:43   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

А что данный запрос возвращает?
Код:
SELECT DISTINCT * FROM RABOTNIKI,KLIENTY,USLUGI,VREMY
WHERE RABOTNIKI.ID = USLUGI.IDFIO
AND RABOTNIKI.ID = VREMY.IDSS
AND KLIENTY.ID = VREMY.IDKLIENTA
PS
Пользуйся переносами в коде, а то не возможно читать
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 26.03.2010 в 11:53.
quit вне форума Ответить с цитированием
Старый 26.03.2010, 13:04   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
А что данный запрос возвращает?
Ничего не возвращает. Записи в DBGridEh-e так и остаются и ничего не меняется.
Цитата:
Пользуйся переносами в коде, а то не возможно читать
Ок, учту). Что на счет структуры БД?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.03.2010, 14:20   #4
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Что означает?
Цитата:
Ничего не возвращает. Записи в DBGridEh-e так и остаются и ничего не меняется.
данный запрос по идее должен выводить все записи...

По поводу структуры посоветовал бы вынести услуги в отдельную таблицу и создать отдельную таблицу, где будет соответствие работника к услуге.
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 26.03.2010, 14:32   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Неплохо бы при подстановке в запрос параметров (при поиске по ФИО) и параметры и соответствующие поля БД приводить к одному регистру, а вводимые данные тримить, например

Код:
+ ' upper(OTCHER)=upper(' + Trim(QuotedStr(Form1.DBEditEh3.Text)) + ')';
soleil@mmc вне форума Ответить с цитированием
Старый 26.03.2010, 17:17   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

1. Лучше пользоваться параметризованными запросами
2. Лучше тестировать работоспособность запросов в IBExpert, ибо тут возможна неправильная работа с компонентами или еще какой-то косяк, а запрос может быть и правильным.
pu4koff вне форума Ответить с цитированием
Старый 26.03.2010, 17:26   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
По поводу структуры посоветовал бы вынести услуги в отдельную таблицу и создать отдельную таблицу, где будет соответствие работника к услуге.
Вообще-то у меня уже есть таблица uslugi.
Цитата:
Неплохо бы при подстановке в запрос параметров (при поиске по ФИО) и параметры и соответствующие поля БД приводить к одному регистру, а вводимые данные тримить, например

Код:

+ ' upper(OTCHER)=upper(' + Trim(QuotedStr(Form1.DBEditEh3.Text )) + ')';
После чего записать этот код?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.03.2010, 18:09   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Все, вроде разобрался . Всем спасибо)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 26.03.2010 в 18:11.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет doroga Свободное общение 6 04.03.2010 10:11
нужен совет миха18 Помощь студентам 3 01.06.2009 10:06
Нужен совет... Расим Общие вопросы Delphi 1 15.04.2009 16:18
Нужен совет по С++ profi Помощь студентам 3 28.07.2008 19:20
Нужен совет Михаил Юрьевич Общие вопросы Delphi 3 04.05.2008 21:52