Главная страница
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.056 c
14-1084815408
/1
2004-05-17 21:36
2004.06.06
Интернет


14-1084610097
Sergey Masloff
2004-05-15 12:34
2004.06.06
О танцах с бубном. Может, кому пригодится...


1-1085402602
WebErr
2004-05-24 16:43
2004.06.06
Разборка с формулами


14-1085118443
Rule
2004-05-21 09:47
2004.06.06
А правда что все программеры больше всего любят пиво?


4-1082818484
gRad
2004-04-24 18:54
2004.06.06
Параметры ф-ий из dll