Текущий архив: 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