![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D6, Access]
VVV © (2004-05-15 15:51:00)Добрый день всем. Прошу Вас помочь мне решить одну проблемммку.
Есть 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.
Спасибо.
VVV (2004-05-15 19:45:00) [1]Благодарю всех за предоставленную помощь.
Удачи!
Johnmen (2004-05-15 18:14:00) [2]1.
>...+DataModule1.PodrTableKod.Value+'''Group by Sotrudniki.SirName;
А где пробел ?
2. Группировка всё равно не пройдет. См. хелп по применению GROUP BY
VVV (2004-05-15 18:01:00) [3]>ну так в аксесе наверное значение параметра до того как он
>сформирован запросом не инициализируется.
А я вообще параметры не использую
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;
...а групировки нет ругается на Несоответствие типов!?
sniknik (2004-05-15 17:55:00) [4]> DataModule1.SotrQuery.Parameters.ParamByName('Dol').Value:=ComboBox.Text;
> DataModule1.SotrQuery.SQL.Text:='SELECT Sotrudniki.SirName, Sotrudniki.Name, ...
> в Access такой текст работает.
ну так в аксесе наверное значение параметра до того как он сформирован запросом не инициализируется.
VVV (2004-05-15 17:34:00) [5]>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 такой текст работает.
Mike Kouzmine (2004-05-15 16:36:00) [6]VVV (15.05.04 16:31) [4] Загрузи базу в аксесс, построй нужный запрос и посмотри его текст. Может поможет в дальнейшем?
Mike Kouzmine (2004-05-15 16:33:00) [7]VVV (15.05.04 16:09) [3] Как это не связаны?
"Есть 2 таблицы: Sotrudniki и Dolgnost
В табл. Sotrudniki нах. числовое поле Dolgnost" Если "нах." это не матом, то по этому полю и связываются. А в запросе у тебя этого нет.
А про параметря - покажи как ты это делаешь.
VVV (2004-05-15 16:31:00) [8]>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 текстовым - ошибок нет
и ДАННЫХ ТОЖЕ!!!, т.е. НД почему то пустой
Помогите разобраться.
С уважением, Виталий
VVV (2004-05-15 16:09:00) [9]А S и D как у тебя связываются? Используй параметры.
Эти таблицы вообще не связаны, точнее
один сотрудник -> одна должность
С параметрами вообще SQL запрос работает только один раз за сеанс,
сам непойму почему.
Mim1 (2004-05-15 16:00:00) [10]S.Dolgnost='''+ComboBox.Text +''' and LinkKey='+DataModule1.
Mike Kouzmine (2004-05-15 15:58:00) [11]А S и D как у тебя связываются? Используй параметры.