0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
1

Ошибка в запросе с ADOQuery: "Отсутствие значения для одного или нескольких требуемых параметров"

06.06.2015, 17:42. Показов 1703. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно создать в таблице Contract поиск по названию договора.
Вот сам код:
SQL
1
2
3
SELECT Contract.[ID Contract], Contract.[ID Provider], Contract.[NUMBER Contract], Contract.[DATA]
FROM Contract
WHERE (((Contract.[NUMBER Contract])=["Number Contact"]));
Далее создаю кнопку и ввожу туда:
Form3->ADOQuery1->Open();

А в итоге получаю ошибку:

Помогите пожалуйста. Уже все что можно перечитала, но так толком ничего конкретного по этой теме не нашла.
(Занимаюсь этим первый раз для диплома).
Миниатюры
Ошибка в запросе с ADOQuery: "Отсутствие значения для одного или нескольких требуемых параметров"  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2015, 17:42
Ответы с готовыми решениями:

Ошибка в запросе с ADOQuery: "Отсутствие значения для одного или нескольких требуемых параметров"
Код: ADOQuery1->Close(); s = DBGrid1->Columns->Items->Field->AsInteger;...

exception class EOleException with message ' отсутствие значения одного или нескольких требуемых параметров'
procedure TForm3.DBEdit1Change(Sender: TObject); var h1,h2: string; begin ...

Ошибка: Отсутствует значение для одного или нескольких требуемых параметров
Здравствуйте, подскажите, пожалуйста, как исправить ошибку "Отсутствует значение для одного или...

Ошибка - отсутствует значение для одного или нескольких требуемых параметров
делаю запрос взять значение из таблицы по id счетчик но выходит ошибка string s =...

Отсутствует значение для одного или нескольких требуемых параметров. В чем ошибка?
Есть код Form2 frm = new Form2(); frm.Show(this); ...

23
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
06.06.2015, 17:49  [ТС] 2
Поиск не по названию, а по НОМЕРУ контракта.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.06.2015, 17:54 3
LackrimoZa, покажите ваш код в билдере, пока что ничего не понятно...
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
06.06.2015, 18:03  [ТС] 4
В самом ADOQuery:
SQL
1
2
3
SELECT Contract.[ID Contract], Contract.[ID Provider], Contract.[NUMBER Contract], Contract.[DATA]
FROM Contract
WHERE (((Contract.[NUMBER Contract])=["Number Contact"]));
В самой кнопке которая должна выполнять запрос:
C++
1
2
3
4
5
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//----------------------------------------------------------------------
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
06.06.2015, 18:25 5
Цитата Сообщение от LackrimoZa Посмотреть сообщение
.[ID Contract],
Пробелы в Си??????? Этот код вообще не должен компилироваться
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 10:44  [ТС] 6
Ну а как тогда написать правильно? Я просто в этом вообще не понимаю...

Добавлено через 16 часов 18 минут
Неужели никто не поможет?...
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
07.06.2015, 11:41 7
Цитата Сообщение от LackrimoZa Посмотреть сообщение
В самой кнопке которая должна выполнять запрос:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
И где тут код выполнения запроса?
Скажите, какая БД, приведите структуру таблицы Contract (названия и тип полей)
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 12:02  [ТС] 8
Цитата Сообщение от D1973 Посмотреть сообщение
И где тут код выполнения запроса?
Скажите, какая БД, приведите структуру таблицы Contract (названия и тип полей)
Ошибочка вышла.
Правильно было ADOQuery1->Open();

А таблица Contract:
ID Contract (счетчик)
ID Provider (числовой)
Number Contract (тектовый)
Data (дата/время)
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
07.06.2015, 12:17 9
Попробуйте такой текст запроса:
SQL
1
SELECT * FROM Contract WHERE [NUMBER Contract] = '<Значение отбора>'
<Значение отбора> - это Ваши реальные данные, на основании которых будут записи из БД отбираться
А вообще-то, лучше избегать в названиях полей кирилицы и всяких там пробелов.
Ведь вместо Number Contract можно написать Number_Contract. И суть та же, и проблем меньше.
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 12:25  [ТС] 10
Цитата Сообщение от D1973 Посмотреть сообщение
<Значение отбора> - это Ваши реальные данные, на основании которых будут записи из БД отбираться
А вообще-то, лучше избегать в названиях полей кирилицы и всяких там пробелов.
Ведь вместо Number Contract можно написать Number_Contract. И суть та же, и проблем меньше.
И все это записывается в ADOQuery и в кнопке просто добавить:
C++
1
2
3
4
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form2->ADOQuery1->Open();
}
?
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
07.06.2015, 12:31 11
Можно и так.
А можно сделать правильней: создавать текст запроса непосредственно в программе.
Например: введем значение отбора (NUMBER Contract) в поле ввода Edit1.
Тогда обработчик нажатия кнопки может выглядеть так
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   Form2->ADOQuery1->Close();
   Form2->ADOQuery1->SQL->Clear();
   String s = "SELECT * FROM Contract WHERE [NUMBER Contract] = '" + Edit1->Text + "'";
   Form2->ADOQuery1->SQL->Add(s);
   Form2->ADOQuery1->Open();
}
0
1408 / 571 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
07.06.2015, 12:37 12
D1973,
зачем переменная s?

ADOQuery1->SQL->Text
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 12:39  [ТС] 13
Цитата Сообщение от D1973 Посмотреть сообщение
Можно и так.
А можно сделать правильней: создавать текст запроса непосредственно в программе.
Например: введем значение отбора (NUMBER Contract) в поле ввода Edit1.
Тогда обработчик нажатия кнопки может выглядеть так
Код C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form2->ADOQuery1->Close();
Form2->ADOQuery1->SQL->Clear();
String s = "SELECT * FROM Contract WHERE [NUMBER Contract] = '" + Edit1->Text + "'";
Form2->ADOQuery1->SQL->Add(s);
Form2->ADOQuery1->Open();
}
Выдает ошибку на
C++
1
ADOQuery1->SQL->Clear;
[C++ Error] Unit7.cpp(27): E2235 Member function must be called or its address taken
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
07.06.2015, 12:46 14
_Dimon_, а так, для наглядности
LackrimoZa, а у Вас Form2 подключена? Лично у меня этот код никаких проблем не вызывает.
Можете показать, где, что и как Вы пишете?

Добавлено через 1 минуту
Цитата Сообщение от LackrimoZa Посмотреть сообщение
ADOQuery1->SQL->Clear
А скобки где?
ADOQuery1->SQL->Clear()
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 13:04  [ТС] 15
Цитата Сообщение от D1973 Посмотреть сообщение
А скобки где?
ADOQuery1->SQL->Clear()
Уже исправила)
В общем, выложу сейчас полностью код)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm7::Button1Click(TObject *Sender)
{
ADOQuery1->Close(); 
ADOQuery1->SQL->Clear(); 
ADOQuery1->SQL->Add("SELECT * FORM Contract WHERE IDContract = " + Edit4->Text); 
ADOQuery1->Open(); 
if(ADOQuery1->IsEmpty()
{
    ShowMessage("Данный контракт не найден!\n Попробуйте еще раз"); 
    Edit4->Clear(); 
    Edit4->SetFocus(); 
    return; 
 }
else 
 {
    Edit1->Text = ADOQuery1->FieldByName("IDProvider")->Value; 
    Edit2->Text = ADOQuery1->FieldByName("NumberContract")->Value;
    Edit3->Text = ADOQuery1->FieldByName("Data")->Value;
    }
}
Хотелось бы сделать, что бы В каждом Edit был результат поиска
Например:
IDProvider
Edit1

NumberContract
Edit2

и т.д.
Миниатюры
Ошибка в запросе с ADOQuery: "Отсутствие значения для одного или нескольких требуемых параметров"  
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 13:10  [ТС] 16
Или если можно, как-то сделать это через таблицу... Или если можно, то как?)
Я уже запуталась
0
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.06.2015, 13:14 17
Цитата Сообщение от LackrimoZa Посмотреть сообщение
Хотелось бы сделать, что бы В каждом Edit был результат поиска
У тебя наверно поиск не удовлетворяет условию, поэтому в едит ничего не попадает

Добавлено через 1 минуту
Цитата Сообщение от LackrimoZa Посмотреть сообщение
Edit1->Text = ADOQuery1->FieldByName("IDProvider")->Value;
* * Edit2->Text = ADOQuery1->FieldByName("NumberContract")->Value;
* * Edit3->Text = ADOQuery1->FieldByName("Data")->Value;
Какие типы полей у тебя?
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 13:16  [ТС] 18
Цитата Сообщение от Sasha Посмотреть сообщение
Какие типы полей у тебя?
ID Contract (счетчик)
ID Provider (числовой)
Number Contract (тектовый)
Data (дата/время)
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
07.06.2015, 13:18 19
Ну все, практически, правильно делаете, только вот сразу приведение типов надо делать, вроде такого
C++
1
2
3
Edit1->Text = ADOQuery1->FieldByName("IDProvider")->AsString; 
Edit2->Text = ADOQuery1->FieldByName("NumberContract")->AsString;
Edit3->Text = ADOQuery1->FieldByName("Data")->AsString;
0
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 14
07.06.2015, 13:21  [ТС] 20
Цитата Сообщение от D1973 Посмотреть сообщение
Ну все, практически, правильно делаете, только вот сразу приведение типов надо делать, вроде такого
Код C++
1
2
3
Edit1->Text = ADOQuery1->FieldByName("IDProvider")->AsString;
Edit2->Text = ADOQuery1->FieldByName("NumberContract")->AsString;
Edit3->Text = ADOQuery1->FieldByName("Data")->AsString;
И все равно та же ошибка((
(вложение скриншота чуть выше)
0
07.06.2015, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2015, 13:21
Помогаю со студенческими работами здесь

Ошибка синтаксиса в предложении FROM, либо отсутствует значение для одного или нескольких требуемых параметров
Здравствуйте! Делаю проект с БД access на языке C#. Прописала коды, вроде все верно, делаю по спец...

Ошибка при выводе данных в таблицу (0x80040E10): Отсутствует значение для одного или нескольких требуемых параметров
internal async Task ExecuteRequestA(TextBox categoryText) { try ...

Ошибка "Отсутствует значение для одного или нескольких требуемых параметров"
Доброго времени суток! Помогите,пожалуйста, разобрать в ошибке. private BindingSource source...

Ошибка 80040E10 VBS - "отсутствует значение для одного или нескольких требуемых параметров"
Добрый день!) Помогите исправить ошибку :cry: Dim Conn, rs, S Set...

Отсутствует значение для одного или нескольких требуемых параметров
Помогите, пожалуйста найти ошибку... Вот код который выполняет сохранение: id_kl :=...

Отсутствует значение для одного или нескольких требуемых параметров
1) DataGridView не отображает таблицу из Access 2) Если попытаться добавить или удалить что-то из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru