imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 24.07.2003, 17:08     # 1
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
SQL vs BDE?

Сделал я вот такой запрос.

А он работать не хочет. Все части по отдельности работают, все вместе нет. В DD тоже работает, а вот в дельфе фиг. Есть у меня такое подозрение, что это ограничение делфи или БДЕ на вложенность, т.е. если самую внутренню часть (которая и нехочет работать ктогда все вместе) поднять на уровень вверх, то все работает.

Вопрос собственно в том, как можно обойти это ограничение, или сделать по другому, или в чем вообще тут проблема?

Способы введения дополнительного кода в приложение не предлогать. Надо решить вопрос либо радикально по другому, либо средствами SQL

SQL_Delete.Add('Select * FROM Sostav_Otdelov');
SQL_Delete.Add('WHERE Sostav_Otdelov.Sos_Code=');
SQL_Delete.Add(' (');
SQL_Delete.Add(' SELECT Sostav_otdelov.Sos_Code');
SQL_Delete.Add(' FROM Sostav_Otdelov');
SQL_Delete.Add(' WHERE (Sostav_otdelov.Sos_Otdel_Code=:CurOtdel)');
SQL_Delete.Add(' And (Sostav_otdelov.Sos_Sotrudnik_Code=:CurSotrudnik)');
SQL_Delete.Add(' And (Sostav_otdelov.Sos_Razryad=:CurRazryad)');
SQL_Delete.Add(' And (Sostav_otdelov.Sos_Stavka_Code=');
SQL_Delete.Add(' (');
SQL_Delete.Add(' SELECT Stavki.S_Code');
SQL_Delete.Add(' FROM Stavki');
SQL_Delete.Add(' WHERE (UPPER(TRIM(Stavki.S_Name))=UPPER(TRIM(:CurStavka)))');
SQL_Delete.Add(' ))');
SQL_Delete.Add(' And (Sostav_otdelov.Sos_Dolgnost_Code=');
SQL_Delete.Add(' (');
SQL_Delete.Add(' SELECT Dolgnosti.D_Code');
SQL_Delete.Add(' FROM Dolgnosti');
SQL_Delete.Add(' WHERE (UPPER(TRIM(Dolgnosti.D_Name))=(UPPER(TRIM(:CurDolgnost)))');
SQL_Delete.Add(' ))');
SQL_Delete.Add(' )');
Felan вне форума  
Старый 25.07.2003, 08:32     # 2
Flex256
Guest
 
Сообщения: n/a

я не специалист в программировании (я слесарь ваще-то), но по-моему
запрос составлен не правильно в принципе...
Напиши здесь по паре-тройке строк из каждой таблицы и то, что ты хочешь получить.
После этого ты скорее всего сам поймешь где ошибка.
 
Старый 25.07.2003, 13:48     # 3
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
Цитата:
Как писал Flex256
я не специалист в программировании (я слесарь ваще-то), но по-моему
запрос составлен не правильно в принципе...
Напиши здесь по паре-тройке строк из каждой таблицы и то, что ты хочешь получить.
После этого ты скорее всего сам поймешь где ошибка.
Поясни, что значет в принципе? Как надо делать правильно? Почему же тогда работает в DD???

Вот структура таблиц (заполнение не имеет значения - лень набивать), хотя я и не понимаю, какое это имеет отношение к вопросу.

Таблица - Sotrudniki
Код_сотрудника(So_Code) +
Tабельный_номер(S0_Tabel_Num) I
Имя(So_Name) A25
Инициал_Фамилия(So_Family) A1
Инициал_Отчество(So_Otchestvo) A1

Таблица - Sostav_Otdelov
Код_записи(Sos_Code) +
Код_Отдел(Sos_Otdel_Code) I
Код_Сотрудник(Sos_Sotrudnik_Code) I
Код_Должность(Sos_Dolgnost_Code) I
Код_Ставка(Sos_Stavka_Code) I
Разряд(Sos_Razryad) I

Таблица – Otdely
Код_отдела(O_Code) +
Название(O_Name) A60
Аббревиатура(O_Short_Name) A20

Таблица – Dolgnosti
Код_должности(D_Code) +
Название_должности(D_Name) A40
Аббревиатура(D_Short_Name) A15

Таблица – Stavki
Код_ставки(S_Code) +
Название_ставки(S_Name) A30
Felan вне форума  
Старый 25.07.2003, 16:04     # 4
Flex256
Guest
 
Сообщения: n/a

ты не написал, что ты хочешь в результате запроса получить
Но оторвавшись от напильника и тисков (и получив от бригадира по кепке) получим

SELECT Sotrudniki.S0_Tabel_Num, Sotrudniki.So_Family, Sotrudniki.So_Otchestvo, Otdely.O_Name, Dolgnosti.D_Name, Stavki.S_Name, Sostav_Otdelov.Sos_Razryad
FROM Sostav_Otdelov, Sotrudniki, Otdely, Dolgnosti, Stavki
WHERE Sostav_Otdelov.Sos_Sotrudnik_Code=Sotrudniki.So_Code
AND Sostav_Otdelov.Sos_Otdel_Code=Otdely.O_Code
AND Sostav_Otdelov.Sos_Dolgnost_Code=Dolgnosti.D_Code
AND Sostav_Otdelov.Sos_Stavka_Code=Stavki.S_Code

Ну или что-то похожее на это...
я это не проверял
 
Старый 28.07.2003, 11:37     # 5
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
Цитата:
Как писал Flex256
ты не написал, что ты хочешь в результате запроса получить
-skip-
Ну или что-то похожее на это...
я это не проверял
Ага. Точно! Блин, совсем из головы вылетело. Я его тут еще и не правильно приве! Я написал тестевый вариант, а должно быть вместо SELECT * должно быть DELETE.

А суть запроса в том, что бы удалить единственную (естественно они там все уникальны, но поднаборы атрибутов могут повторяться) строку из таблицы sostav_otdelov используюя данные, которые были выведены на основе этой строки. Т.е. есть только Код_Сотрудника, Название_отдела, Название_ставки и Разряд.

Вот. Хотя, я думаю что это ограничение BDE...
Felan вне форума  
Старый 28.07.2003, 14:51     # 6
Flex256
Guest
 
Сообщения: n/a

ну и где здесь "ограничения bde"?
 
Старый 29.07.2003, 09:38     # 7
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
Цитата:
Как писал Flex256
ну и где здесь "ограничения bde"?
Да фиг его знает. Я же сказал, что мне так кажется. Собственно что бы узнать ответ на этот вопрос я сюда и написал, а ты мне его переадресовываешь...
Felan вне форума  
Старый 29.07.2003, 11:53     # 8
Flex256
Guest
 
Сообщения: n/a

Если новый запрос работает - следовательно ограничений нет
Такие простейшие запросы не могут наткнуться на ограничения... вооот
 
Старый 29.07.2003, 13:21     # 9
Felan
Junior Member
 
Аватар для Felan
 
Регистрация: 19.05.2003
Адрес: Самара
Сообщения: 52

Felan Путь к славе только начался
Цитата:
Как писал Flex256
Если новый запрос работает - следовательно ограничений нет
Такие простейшие запросы не могут наткнуться на ограничения... вооот
Да не такой уж он и простейший...

Ну да ладно, все уже работает. Хоть и не твой вариант, но все равно спасибо, за помощь.
Felan вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 01:21.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.