Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.06.2006, 10:03
Геральт Геральт вне форума
Прохожий
 
Регистрация: 06.06.2006
Сообщения: 6
Репутация: 10
Вопрос Чет я не оч понимаю...SQl BDE

s:='Олег';
DmUnit.DataModule2.Query1.Close;
with DmUnit.DataModule2.Query1.SQL do
begin
Clear;
Add('select * ');
Add('from Tstud ');
add('where Name="Олег"');
end;
DmUnit.DataModule2.Query1.Prepare;
DmUnit.DataModule2.Query1.ExecSQL;

Пишет что "Слишком мало параметров. Требуеться 1". и все....


и еще вопрос - есть DBTable как можно выполнить сортировку записей по кажатию на заголовке колонки

Последний раз редактировалось Геральт, 08.06.2006 в 10:06.
Ответить с цитированием
  #2  
Старый 08.06.2006, 10:41
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Сделай так:
Код:
S:='Олег';
...
with DmUnit.DataModule2.Query1 do
 begin
  SQL.Text:='SELECT * FROM TStud WHERE Name = :Name';
  Params.ParseSQL(SQL.Text,true);
  Params.ParamByName('Name').Value:=S;
  Open;
 end;
Ответить с цитированием
  #3  
Старый 08.06.2006, 10:50
Геральт Геральт вне форума
Прохожий
 
Регистрация: 06.06.2006
Сообщения: 6
Репутация: 10
По умолчанию

Получилось.. Пасиб.
мож объяснить че не так и как это применить в другом случае.
Ответить с цитированием
  #4  
Старый 09.06.2006, 06:57
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Скорее всего все дело в обозначении строки как таковой в запросе, разные движки используют разные указатели на начало/конец строки ( ' - одинарная ковычка (как в Delphi) или " - двойная ковычка (как в Basic'е), поэтому для того чтобы не налететь на несовместимость лучше использовать параметры (особенно критично для полей типа ДАТА).
Код:
SQL.Text:='SELECT * FROM TStud WHERE Name = :Name';
Этой строкой мы задаем текст SQL запроса в котором будет параметр Name (кста, давать полю имя Name не очень хорошо, опять же на некоторых движках может наблюдатся сбой)
Код:
Params.ParseSQL(SQL.Text,true);
Процедура ParseSQL парсит запрос на предмет поиска параметров и создает объекты вида TParameter для объекта TQuery, вторым параметром указываем очишать все созданные параметры перед тем как начать обработку запроса (почитай справку на это тему, там все понятно изложено)
Код:
Params.ParamByName('Name').Value:=S;
Здесь задаем значения параметра найдя его по имени.
Ну и потом открываем выборку.

Вот и все, если что не понятно - сорри, не силен я в объяснениях.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter