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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 10:07   #1
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию Delphi 7 синтаксис sql запроса

Добрый день, имеется БД, созданная в access, в подключаю ее с помощью ADOQuery и пытаюсь из табл. вывести данные с помощью запроса
Код HTML:
  SELECT пользователь, имя компьютера, ip адрес
                       FROM buh
                       WHERE ip адрес='192.168.110.17';
выдает ошибку синтаксиса, подскажте, пожалуйста в чем ошибка
detalik вне форума Ответить с цитированием
Старый 05.04.2011, 11:19   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Вообще-то Delphi не имеет ни какого отношения к SQL, в Delphi есть компоненты для работы со строками SQL. Корректен будет вопрос: как послать SQL запрос к СУБД? SQL строки обрабатываются на стороне СУБД. Пробуйте всегда в MS Access Ваш запрос. Попробуйте следующее:
Код:
SELECT [пользователь], [имя компьютера], [ip адрес]
FROM buh
WHERE buh.[ip адрес]='192.168.110.17';
Надеюсь Вы обратили внимание на скобки. То-же самое Вам сделает MS Access.
До свидания
OlegVE вне форума Ответить с цитированием
Старый 05.04.2011, 13:15   #3
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Огромное спасибо, получилось!
detalik вне форума Ответить с цитированием
Старый 05.04.2011, 13:20   #4
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

В связи с этим возник новый вопрос, хотя может быть его стоило опубликовать в другой теме. Запрос я формировал с помощью элемента ADOQuery, на вкладке propities есть строчка SQL. А если разместь поле Edit, куда будет вводиться условие отбора и элемент Button, для выполнения запроса, для реализации запроса нужно писать процедуру? Возникает вопрос где и как, заранне прошу прощения, если вопрос сформулирован неккоректно. Спасибо.
detalik вне форума Ответить с цитированием
Старый 05.04.2011, 14:07   #5
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

1. Создайте параметр для ADOQuery1, например, назовём его IPaddr, присвойте ему какое-либо существующее значение (можете поставить это-же значение для текста Edit, который Вы создадите на шаге 3).
2. Измените Ваш запрос на следующий:
Код:
SELECT [пользователь], [имя компьютера], [ip адрес]
FROM buh
WHERE buh.[ip адрес]= :IPaddr;
Примечание: Вот в этом месте сработает Delphi, т.е. при замене :IPaddr на введённое Вами (или каким-либо образом вычисляемое, подставляемое...) по ходу выполнения программы значение.
3. Создайте на форме Button и Edit и запишите для Button:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('IPaddr').Value := Edit1.Text;
ADOQuery1.Open;
end;
Здесь: IPaddr - имя Вашего параметра

Эта тема относится к ADOQuery с параметрами.

Последний раз редактировалось OlegVE; 05.04.2011 в 15:15.
OlegVE вне форума Ответить с цитированием
Старый 05.04.2011, 16:16   #6
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Огромное спасибо, все получилось!))
А что значит ADOQuery1.Close и затем OPen? Огромное спасибо.
detalik вне форума Ответить с цитированием
Старый 05.04.2011, 16:30   #7
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
Сообщение от detalik Посмотреть сообщение
А что значит ADOQuery1.Close и затем OPen?
Вообще-то могли и сами поискать и почитать.
Данные процедуры позволяют закрыть запрос... далее делаете то, что хотите с ним, потом наново открыть его, т.е. заставить выполниться в новой редакции. То-же самое можете проделать и с
Код:
...
ADOQuery1.Active := False;
ADOQuery1.Parameters.ParamByName('IPaddr').Value := Edit1.Text;
ADOQuery1.Active := True;
...
P.S. Попробуйте изменить значение параметра ADOQuery при разработке и увидите, произошли ли изменения, например в DBGrid. Потом установите Active - False, а потом Active - True (после изменения значения параметра конечно). И что Вы видите?

Последний раз редактировалось OlegVE; 05.04.2011 в 16:36.
OlegVE вне форума Ответить с цитированием
Старый 05.04.2011, 16:44   #8
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

И еще как сделать, чтобы форма DBGrid выводила на экран несколько столбоцов, наверное размер пикс нужно где-то поменять? Спасибо!!!
detalik вне форума Ответить с цитированием
Старый 05.04.2011, 16:51   #9
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Привыкайте создавать по каждому вопросу новую тему, чтобы и другим легче было искать ответы.
Создайте новую тему по DBGrid.
До встреч в новых темах
OlegVE вне форума Ответить с цитированием
Старый 07.04.2011, 08:24   #10
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Еще раз здравствуйте, а если потребуется выполнить запрос по еще одному столбцу и реализовать как показано вот здесь
Тогда нужно в свойстве SQL писать примерно так?
Цитата:
SELECT [пользователь], [имя компьютера], [ip адрес]
FROM buh
WHERE (buh.[ip адрес]= :IPaddr, buh.[пользовательъ=: User);
Только так не работает? ошибка...хромает синтаксис, подскажите пожалуйста, как правильно.
Хочется реализрвать еще один запрос в отдельном поле Edit по пользователю.Спасибо.
detalik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синтаксис SQL запроса с переменной формата Date kosvo Microsoft Office Access 3 15.12.2010 22:12
Как записать в переменную delphi результат sql запроса? mar4elo БД в Delphi 1 03.12.2009 16:59
Синтаксис SQL robert65 SQL, базы данных 0 24.03.2009 16:23
Синтаксис SQL-запроса для поиска по дате... Рустам БД в Delphi 13 06.04.2008 15:55