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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2008, 15:15   #1
Irinka
Новичок
Джуниор
 
Регистрация: 28.03.2008
Сообщений: 2
По умолчанию Помогите пишу дипломку, срочно надо разобраться

помогите разобраться, пытаюсь выполнить запрос, но происходит ошибка
(Project Project1.exe raised exception class EDBEngineError with message ‘General SQL Error. [Microsoft] [Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 1. )

procedure TForm4.Button8Click(Sender: TObject);
begin
form3.Query1.Close;
form3.Query1.SQL.Add('SELECT * FROM абитуриенты WHERE льготы <> ('+combobox8.Text+') ');
form3.Query1.Open;
form3.DataSource1.DataSet:=form3.Qu ery1;
end;
В чем ошибка, база в Access
Irinka вне форума Ответить с цитированием
Старый 28.03.2008, 15:41   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А бог его знает, что у вас в SQL до этого было...
Делайте не
form3.Query1.SQL.Add...
а form3.Query1.SQL.Text:=...
mihali4 вне форума Ответить с цитированием
Старый 28.03.2008, 15:57   #3
Irinka
Новичок
Джуниор
 
Регистрация: 28.03.2008
Сообщений: 2
По умолчанию

Попробовала с form3.Query1.SQL.Text:= тоже самое
Irinka вне форума Ответить с цитированием
Старый 28.03.2008, 20:47   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Текст ошибки приведен не полностью.
Что следует за "Слишком мало параметров. Требуется 1........" ?
А без "WHERE льготы <> ('+combobox8.Text+')" работает?

Можно, конечно, попробовать так:
SELECT * FROM абитуриенты WHERE льготы <> (:myparam),
и задать параметр ParamByName('myparam').AsString:=co mbobox8.Text;

А вообще-то, как где-то совершенно справедливо и остроумно было подмечено - "Access - это недоБД"...
Так что, если это разрешено, лучше использовать что угодно, но не это "недо"...

Последний раз редактировалось mihali4; 28.03.2008 в 21:31.
mihali4 вне форума Ответить с цитированием
Старый 28.03.2008, 21:35   #5
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Может запрос должен так выглдить
SELECT * FROM абитуриенты WHERE абитуриенты.льготы <> ('+combobox8.Text+');
И что в combobox8.Text написано?
или льготы это таблица?
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 28.03.2008, 21:39   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от SNUPY Посмотреть сообщение
Может запрос должен так выглдить
SELECT * FROM абитуриенты WHERE абитуриенты.льготы <> ('+combobox8.Text+');
И что в combobox8.Text написано?
Это не поможет - аксесс настолько туп, что не понимает данных, взятых как свойства контролов формы. Даже если сделать <> (' + myform.combobox8.Text + ');
и то не поймет...
Со строковой константой будет работать (если все остальное - тип-топ), а вот переменные - на дух не переносит почему-то...

Последний раз редактировалось mihali4; 28.03.2008 в 22:51.
mihali4 вне форума Ответить с цитированием
Старый 28.03.2008, 22:33   #7
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Даже если сделать <> (' + myform.combobox8.Text + ');
Хмм.... а я думал, что текст запроса формируется в нашем экзешнике или я чето не догоняю????
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 29.03.2008, 11:25   #8
Professor Hubert
Пользователь
 
Аватар для Professor Hubert
 
Регистрация: 29.03.2008
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Irinka Посмотреть сообщение
помогите разобраться, пытаюсь выполнить запрос, но происходит ошибка
(Project Project1.exe raised exception class EDBEngineError with message ‘General SQL Error. [Microsoft] [Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 1. )

procedure TForm4.Button8Click(Sender: TObject);
begin
form3.Query1.Close;
form3.Query1.SQL.Add('SELECT * FROM абитуриенты WHERE льготы <> ('+combobox8.Text+') ');
form3.Query1.Open;
form3.DataSource1.DataSet:=form3.Qu ery1;
end;
В чем ошибка, база в Access
А вообще поле льготы какого типа?
Можно попробовать написать так.
Код:
form3.Query1.Close;
form3.Query1.SQL.Clear;
form3.Query1.SQL.Add('SELECT * FROM абитуриенты WHERE льготы <> quotedstr(+' combobox8.Text '+) ');
form3.Query1.Open;
form3.DataSource1.DataSet:=form3.Query1;

Последний раз редактировалось Professor Hubert; 29.03.2008 в 14:19.
Professor Hubert вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сама пишу на делфи...а надо... Алёна Фриланс 5 11.12.2007 21:43
помогите решить задачи на С++ (на зачёт надо срочно) headway Помощь студентам 0 27.11.2007 00:18
Помогите пожалуйста надо срочно!дельфи Алена Помощь студентам 6 10.11.2007 16:31