Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 07:43   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
Радость sql запрос через Query

Делаю так
Код:
procedure TAddData.PoiskButtonClick(Sender: TObject);
var
q:string;
begin
q:='select Sotrudniki from Sotrudniki where Sotrudniki.Номер сотрудника = 1';
PoiskQuery1.SQL.Clear;
PoiskQuery1.SQL.Add(q);
PoiskQuery1.Open;
end;
РУгается на Sotrudniki.Номер сотрудника = 1 не хватает оператора, что не верно.
Lokos вне форума
Старый 25.02.2010, 07:59   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

1. Не используйте русские буквы в названии полей.
2. Правильный порядок кода должен быть таким:
Код:
procedure TAddData.PoiskButtonClick(Sender: TObject);
var
q:string;
begin
PoiskQuery1.Active:=False;
PoiskQuery1.SQL.Clear;
PoiskQuery1.SQL.Text:='select Sotrudniki from Sotrudniki where Sotrudniki.Номер сотрудника = 1';
PoiskQuery1.Open;
end;
3. Эта конструкция Sotrudniki.Номер сотрудника = ... обычно применяется, когда нужно прописать связи между таблицами в запросе. В Вашем случае, должно быть так примерно:
Код:
procedure TAddData.PoiskButtonClick(Sender: TObject);
var
q:string;
begin
PoiskQuery1.Active:=False;
PoiskQuery1.SQL.Clear;
PoiskQuery1.SQL.Text:='select Sotrudniki,Номер сотрудника from Sotrudniki where Номер сотрудника = 1';
PoiskQuery1.Open;
end;
Это при условии, что поля Sotrudniki и Номер сотрудника находятся в одной таблице.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 25.02.2010, 08:12   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не используйте русские буквы в названии полей.
Это зависит от СУБД. MS SQL например прекрасно работатет с русским языком (что мне лично очень нравится в нем)
Цитата:
Правильный порядок кода должен быть таким:
Дружище, у автора вполне нормальный порядок

Вы оба господа не заметили важнейшей веши:
Цитата:
select Sotrudniki from Sotrudniki
Никого кроме меня не настораживает что поле, выбираемое и имя таблицы совпадают?
I'm learning to live...
Stilet вне форума
Старый 25.02.2010, 08:58   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Вы оба господа не заметили важнейшей веши:
Цитата:select Sotrudniki from Sotrudniki

Никого кроме меня не настораживает что поле, выбираемое и имя таблицы совпадают?
Stilet, дружище, мне простительно, что я не заметил, я только проснулся минуту назад, когда писал свой первый пост .
Цитата:
Это зависит от СУБД. MS SQL например прекрасно работатет с русским языком (что мне лично очень нравится в нем)
Я не говорил, что совсем во всех СУБД нельзя работать так, я сказал, что нежелательно
Автор и так не указал ни название СУБД, ни нормальные имена полей, да и я почему уцепился за условие where. А я что, неправильно написал про это условие?)
Цитата:
Дружище, у автора вполне нормальный порядок
У каждого свой стиль. Не спорю
Цитата:
Никого кроме меня не настораживает что поле, выбираемое и имя таблицы совпадают?
А может у автора так действительно таблица называется?))
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 25.02.2010, 09:12   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Еще подводный камень:
автор, попробуй, используя в именах полей русские буквы, вместо пробела ставить знак подчеркивания.
Т.е. не "Номер сотрудника", а "Номер_сотрудника"
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 25.02.2010, 09:38   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Еще подводный камень:
автор, попробуй, используя в именах полей русские буквы, вместо пробела ставить знак подчеркивания.
Т.е. не "Номер сотрудника", а "Номер_сотрудника"
а вот это уже ни к чему
хоть 10 пробелов пиши, но потом в запросе обрами кавычками
soleil@mmc вне форума
Старый 02.03.2010, 05:49   #7
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

изменил код следующим образом
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select Номер сотрудника  from Sotrudniki where  Номер сотрудника  = 2';
adoquery1.Open;
end;
Номер сотрудника поле в таблице Sotrudniki
все равно выдает ошибку
Lokos вне форума
Старый 02.03.2010, 07:09   #8
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

изменив за прос на
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select*from Sotrudniki where Namber  = 2';
adoquery1.Open;
end;
все заработало.
Но мне нужно чтоб там были русские буквы как это го можно достич
субд ACCESS
Поля с русскими названиями можно запрашивать следующим способом
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Text:='select*from Sotrudniki where Sotrudniki.Номер  = 2';
adoquery1.Open;
end;
но если поле будет называться следующим образом "Номер удостоверения" то выдается ошибка может кто знает как ее избежать.

Последний раз редактировалось Lokos; 02.03.2010 в 07:35.
Lokos вне форума
Старый 02.03.2010, 07:28   #9
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

где были русские буквы? в DBGRID?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума
Старый 02.03.2010, 07:32   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если бы Вы запустили MS Access и там написали этот свой запрос, то сами бы сразу увидели, как в Access задаются русские имена полей в запросах!

попробуйте:
Код:
begin
  adoquery1.Active:=false;
  adoquery1.SQL.Text:='select * from Sotrudniki where Sotrudniki.[Номер сотрудника]  = 2';
  adoquery1.Open;
end;
p.s. обратите внимание, я выкинул из вашего примера adoquery1.SQL.Clear;
т.к. в данном случае это НЕ НУЖНО (присвоение тексту обнулит всё, что было в тексте ранее. Clear нужно делать, если строчки в запрос добавляются через .SQL.Add(...)
Serge_Bliznykov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое обновление таблице через запрос sql eda Microsoft Office Excel 8 19.04.2011 12:47
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
параметрический запрос с помощью Microsoft Query Alexa24 Microsoft Office Excel 1 22.10.2009 15:59
Редактирование записи через компонент Query Macklay БД в Delphi 11 30.06.2009 12:16
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15