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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2008, 17:44   #1
Dissonance
Пользователь
 
Регистрация: 19.05.2008
Сообщений: 36
По умолчанию Подскажите

Мне нужно чтобы combobox.text выводил числовые поля(счётчик)
Вот мой код(Sql запрос) помогите ошибку исправить.

begin
if Form4.ComboBox1.Text<>'' then
begin
Form4.ADOQuery1.SQL.Clear;
Form4.ADOQuery1.SQL.Text:='SELECT [Компьютеры].[№ ПК], [Список программ].[Номер программы], [Разработчик].[Разработчик], [Список программ].[Системные требования(Mb)], [Список программ].[Наличие лицензии], [Список программ].[Срок действия лицензии], Продавец.Продавец';
Form4.ADOQuery1.SQL.Text:='FROM ([Разработчик] INNER JOIN ([Продавец] INNER JOIN [Список программ] ON [Продавец].[№ Продавца] = [Список программ].[№ Продавца]) ON [Разработчик].[№ Разработчика] = [Список программ].[№ Разработчика])';
Form4.ADOQuery1.SQL.Text:='INNER JOIN (Компьютеры INNER JOIN [Каталог установленных программ]';
Form4.ADOQuery1.SQL.Text:='ON [Компьютеры].[№ ПК] = [Каталог установленных программ].[№ ПК]) ON [Список программ].[Номер программы] = [Каталог установленных программ].[Номер установленной программы]';
Form4.ADOQuery1.SQL.Text:='WHERE ((([Компьютеры].[№ ПК])='''+ComboBox1.text+'''))';
Form4.AdoQuery1.Active:=true;
Form4.DataSource1.DataSet:=Form4.AD OQuery1;
end;
Dissonance вне форума Ответить с цитированием
Старый 18.06.2008, 18:04   #2
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Если текст запроса разбиваете, то вместо ADOQuery1.SQL.Text используйте ADOQuery1.SQL.Add(). Или сразу помещайте в ADOQuery1.SQL.Text весь текст запроса.
edgy вне форума Ответить с цитированием
Старый 18.06.2008, 21:45   #3
Dissonance
Пользователь
 
Регистрация: 19.05.2008
Сообщений: 36
По умолчанию

А так по теме есть ошибки?
Dissonance вне форума Ответить с цитированием
Старый 19.06.2008, 09:28   #4
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

по SQL? Что за СУБД? Access? Проверьте для начала работоспособность запроса из самого Access. Если там нормально выполняется, то и здесь проблем быть не должно.
По коду? Ну я бы заключил весь код c ADOQuery в блок try except. Вместо прямой подстановки ComboBox1.text в условии запроса использовал бы параметры. Так надежнее.
edgy вне форума Ответить с цитированием
Старый 19.06.2008, 10:40   #5
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
Сообщение от edgy Посмотреть сообщение
Вместо прямой подстановки ComboBox1.text в условии запроса использовал бы параметры. Так надежнее.
Я бы сказал так правильнее. Каждый раз когда в запросе меняется константа в where, сервер БД выделяет память под запрос, он (сервер БД) считает, что это новый запрос. А ставя параметр, в этом случае это один и тот же запрос для сервера БД, меняется только значение параметра.
Вывод: запросы с параметром выполняются быстрее чем с константами.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите Ser Паскаль, Turbo Pascal, PascalABC.NET 1 15.03.2008 18:32
Подскажите код Romuald Microsoft Office Excel 2 26.11.2007 13:53
Подскажите что тут не так!? dcl Общие вопросы Delphi 5 28.03.2007 08:15