Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 808

/ вопрос открыт /

Добрый вечер.
Как можно (и можно ли вообще )использовать свойство ParamByName (Query, Command) что бы изменять часть запроса то есть мне нужно:

select * from DataBase.Table1;

чтобы DataBase можнл было задать также легко как и
значение :Param ??
select * from Table1
where pole1>:Param;

Сидаровский Георгий Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Сидаровский Георгий (статус: Посетитель)
Вопрос отправлен: 30 июля 2007, 20:35
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Сидаровский Георгий!
Если пойти в лоб и написать что то вида select * from :param - не работает. Но например я привык писать запросы непосредственно. тоесть я пишу функцию, которая на основании переданных ей параметров формирует правильный запрос.
ну где то так

function GetMySQL(Param1:string):string;
begin
  result:=\'select * from \'+Param1;
end;
и вызываем соответственно
Query1.SQL.text:=GetMySQL(\'data\');
Используя этот приём, можно получить очень гибкие запросы.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 30 июля 2007, 21:01
Оценка за ответ: 5

Комментарий к оценке: Спасибо.
я обычно просто делал без функций

Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 1 августа 2007, 17:39; участников в обсуждении: 2.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 31 июля 2007, 11:28 [#1]:

Да и есчо допустим у меня запрос будет больше чем 256 символов какой тип тогла лучше использовать ?
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 12:01 [#2]:

Ну если у вас не выставлены короткие строки (по умолчанию они не выставлены) то длина строки ограничена 4 гигабайтами, но на практике где то чуть меньше 2 гигов. Я думаю, этого хватит.
Галочка "подтверждения прочтения" - вселенское зло.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 31 июля 2007, 12:29 [#3]:

а где это можно увидить проверить.
хочется знать где выставляется это :)?
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 12:34 [#4]:

Меню Project - Options...
Вкладка Compiler
Галочка Huge String должна стоять
Галочка "подтверждения прочтения" - вселенское зло.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 31 июля 2007, 13:24 [#5]:

Блин всегда думал что через тип String можно передать только 256 символов. Спасибо что открыли мне глаза
Вадим К

Вадим К (статус: Академик), 31 июля 2007, 13:33 [#6]:

Пожалуйста.
В общем, эта возможность появилась с 2 делфи. Для совместимости ввели директиву {$H+} которая включает поддержку длинных строк и {$H-} - которая отключает. Можно даже по коду отключать/включать.
Также есть тип ShortString, который всегда короткий - 256 символов.
И ещё один миф развею, который сишники любят разводить.
Мол код length(s), где s - строка, медленно работает.Вычисляется долго. Неправда. если s - string, то этот код работает быстро, ибо это просто запрос ячейки памяти. Тоесть в 2 ассемблерные строки. Не медленней чем запрос переменной.
Но для PChar и PAnsiChar это не справедливо. Там действительно медленно.
Галочка "подтверждения прочтения" - вселенское зло.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 1 августа 2007, 17:39 [#7]:

Хм... честно говоря некогда не задумывался над скоростью выполнения Length(s). но знать неповредит я думаю

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.04 сек.