Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

SQL   Найти похожие ветки 

 
VVV   (2004-05-15 15:51) [0]

Добрый день всем. Прошу Вас помочь мне решить одну проблемммку.

Есть 2 таблицы: Sotrudniki и Dolgnost
В табл. Sotrudniki нах. числовое поле Dolgnost
С помощью DBLookupComboBox вставляю значение ДОЛЖНОСТИ в поле Dolgnost таблицы Sotrudniki
из Таблицы Dolgnost
Нужен запрос, чтобы выводил Ф.И.О. Должность сотрудника:

По нажатии кнопки выполняется делаю вот что:
begin
DataModule1.SotrQuery.Active:=false;
DataModule1.SotrQuery.SQL.Clear;
DataModule1.SotrQuery.SQL.Text:="Select S.SirName,S.Name,S.Otchestvo,D.naimDol from Sotrudniki S, Dolgnost D where S.Dolgnost="+ComboBox.Text +" and LinkKey="+DataModule1.PodrTableKod.Value;
DataModule1.SotrQuery.Active:=true;
MainForm.wwDBGrid1.DataSource:=DataModule1.SotrFindSource;
end;

......и получаю вот это:

Project Kadry.exe raised exception class EOleException with message
"Ошибка синтаксиса (пропущен оператор) в выражении запроса "S.Dolgnost=лаборант химического анализа and LinkKey=002"".
Process stoped. Use Step or Run to continue.

Спасибо.


 
Mike Kouzmine ©   (2004-05-15 15:58) [1]

А S и D как у тебя связываются? Используй параметры.


 
Mim1 ©   (2004-05-15 16:00) [2]

S.Dolgnost="""+ComboBox.Text +""" and LinkKey="+DataModule1.


 
VVV   (2004-05-15 16:09) [3]

А S и D как у тебя связываются? Используй параметры.

Эти таблицы вообще не связаны, точнее
один сотрудник -> одна должность

С параметрами вообще SQL запрос работает только один раз за сеанс,
сам непойму почему.


 
VVV   (2004-05-15 16:31) [4]

>Mim1 ©  (15.05.04 16:00) [2]
>S.Dolgnost="""+ComboBox.Text +""" and LinkKey="+DataModule1.

Появилось
Project Kadry.exe raised exception class EOleException with message "Несоответствие  типов данных в условии отбора".
Process stoped. Use Step or Run to continue.

Сделал поле Dolgnost в таблице Sotrudniki текстовым - ошибок нет
и ДАННЫХ ТОЖЕ!!!, т.е. НД почему то пустой
Помогите разобраться.
С уважением, Виталий


 
Mike Kouzmine ©   (2004-05-15 16:33) [5]

VVV   (15.05.04 16:09) [3] Как это не связаны?
"Есть 2 таблицы: Sotrudniki и Dolgnost
В табл. Sotrudniki нах. числовое поле Dolgnost" Если "нах." это не матом, то по этому полю и связываются. А в запросе у тебя этого нет.
А про параметря - покажи как ты это делаешь.


 
Mike Kouzmine ©   (2004-05-15 16:36) [6]

VVV   (15.05.04 16:31) [4] Загрузи базу в аксесс, построй нужный запрос и посмотри его текст. Может поможет в дальнейшем?


 
VVV   (2004-05-15 17:34) [7]

>VVV  (15.05.04 16:31) [4] Загрузи базу в аксесс, построй нужный >запрос и посмотри его текст. Может поможет в дальнейшем?

Сделал как ты посоветовал получил такой текст
"SELECT Sotrudniki.SirName, Sotrudniki.Name, Sotrudniki.Otchestvo, Dolgnost.NaimDol FROM Sotrudniki INNER JOIN Dolgnost ON Sotrudniki.Dolgnost = Dolgnost.Key WHERE Dolgnost.NaimDol="""+ ComboBox.Text +""" and LinkKey="+DataModule1.PodrTableKod.Value;
и работает
но если добавить Group by Sotrudniki.SirName

"SELECT Sotrudniki.SirName, Sotrudniki.Name, Sotrudniki.Otchestvo, Dolgnost.NaimDol FROM Sotrudniki INNER JOIN Dolgnost ON Sotrudniki.Dolgnost = Dolgnost.Key WHERE Dolgnost.NaimDol="""+ ComboBox.Text +""" and LinkKey="""+DataModule1.PodrTableKod.Value+"""Group by Sotrudniki.SirName;
то получается вот, что
Project Kadry.exe raised exception class EOleException with message
"Несоответствие  типов данных в условии отбора".
Process stoped. Use Step or Run to continue. ХОТЯ
в Access такой текст работает.

>А про параметря - покажи как ты это делаешь.

DataModule1.SotrQuery.Active:=false;
DataModule1.SotrQuery.SQL.Clear;
DataModule1.SotrQuery.Parameters.ParamByName("Dol").Value:=ComboBox.Text;
DataModule1.SotrQuery.SQL.Text:="SELECT Sotrudniki.SirName, Sotrudniki.Name, Sotrudniki.Otchestvo, Dolgnost.NaimDol FROM Sotrudniki INNER JOIN Dolgnost ON Sotrudniki.Dolgnost = Dolgnost.Key WHERE Dolgnost.NaimDol=:Dol and LinkKey="+DataModule1.PodrTableKod.Value;
DataModule1.SotrQuery.Active:=true;
выскакивает
Project Kadry.exe raised exception class EOleException with message
"Несоответствие  типов данных в условии отбора".
Process stoped. Use Step or Run to continue. ХОТЯ
в Access такой текст работает.


 
sniknik ©   (2004-05-15 17:55) [8]

> DataModule1.SotrQuery.Parameters.ParamByName("Dol").Value:=ComboBox.Text;
> DataModule1.SotrQuery.SQL.Text:="SELECT Sotrudniki.SirName, Sotrudniki.Name, ...

> в Access такой текст работает.
ну так в аксесе наверное значение параметра до того как он сформирован запросом не инициализируется.


 
VVV   (2004-05-15 18:01) [9]

>ну так в аксесе наверное значение параметра до того как он
>сформирован запросом не инициализируется.
А я вообще параметры не использую
SELECT Sotrudniki.SirName, Sotrudniki.Name, Sotrudniki.Otchestvo, Dolgnost.NaimDol FROM Sotrudniki INNER JOIN Dolgnost ON Sotrudniki.Dolgnost = Dolgnost.Key WHERE Dolgnost.NaimDol="""+ ComboBox.Text +""" and LinkKey="""+DataModule1.PodrTableKod.Value+"""Group by Sotrudniki.SirName;
...а групировки нет ругается на Несоответствие типов!?


 
Johnmen ©   (2004-05-15 18:14) [10]

1.
>...+DataModule1.PodrTableKod.Value+"""Group by Sotrudniki.SirName;

А где пробел ?

2. Группировка всё равно не пройдет. См. хелп по применению GROUP BY


 
VVV   (2004-05-15 19:45) [11]

Благодарю всех за предоставленную помощь.
Удачи!



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

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
14-1085224655
Jel
2004-05-22 15:17
2004.06.06
Подскажите софт для редактирования mp3 без преобразования в wav


3-1084141117
NoName
2004-05-10 02:18
2004.06.06
Дополнительное поле


1-1085034842
Zedican
2004-05-20 10:34
2004.06.06
Прошу помочь с компонентом


14-1084776900
Vlad Oshin
2004-05-17 10:55
2004.06.06
http://www.exler.ru/novels/wife.htm ;)


3-1084864248
Karlson
2004-05-18 11:10
2004.06.06
Несовместимость типов Delphi и SQL Server