Нужно сделать поиск в таблице DBGrid("Товары"), по значению "Код товара"(CODE_GOODS), т.е. по числовому значению, вводя в Edit
Сам накидал код, но при вводе в Edit выдает ошибку:
void __fastcall TMain::Edit3Change(TObject *Sender)
{
TLocateOptions Options;
Options.Clear();
Options << loCaseInsensitive << loPartialKey;
OraQuery1->Locate("CODE_GOODS", Edit3->Text, Options);
}
и кстати там Edit3->Text или StrToInt(Edit3->Text)? Ведь значение числовое.
Вот какую ошибку выдает:
'Access violation at address 004AD457 in module 'Project1.exe'.Read of address 00000094'.
Среда программирования Builder
21 июня 2009 в 16:05
Получилось) Была ошибка в том что у меня OraDataSourse была соединена с OraTable а не с OraQuery
Всем спасибо!
теперь делаю так:
OraDataSource1->DataSet = OraQuery2;
OraQuery2->Close();
OraQuery2->SQL->Clear();
OraQuery2->SQL->Add("select * from GOODS");
OraQuery2->Open();
TLocateOptions Options;
Options.Clear();
Variant KeyValues (Edit3->Text);
Options << loCaseInsensitive << loPartialKey;
OraQuery2->Locate("CODE_GOODS", KeyValues, Options);
OraQuery2->Active = true;
21 июня 2009 в 5:00
я конечно могу ошибать, но насколько я поняла программа работает с некой бд, так может нужно всетаки в запросе указать к ней путь?
20 июня 2009 в 15:03
OraQuery2->SQL->Add("select from GOODS");
вот в этой строке отредоктировал и написал
OraQuery2->SQL->Add("select * from GOODS");
Ошибку не выдает да и не ищет(
20 июня 2009 в 15:02
попробовал так:
OraQuery2->Close();
OraQuery2->SQL->Clear();
OraQuery2->SQL->Add("select from GOODS");
OraQuery2->Open();
TLocateOptions Options;
Options.Clear();
Variant KeyValues (Edit3->Text);
Options << loCaseInsensitive << loPartialKey;
OraQuery2->Locate("CODE_GOODS", KeyValues, Options);
Выдает:'ORA-00936:missing expression'
19 июня 2009 в 23:02
Видимо, нету. Вряд ли оралиба врать будет.
19 июня 2009 в 21:05
Проверьте заголовки в DBGrid. Что показывает? Там есть поле CODE_GOODS ???
19 июня 2009 в 21:00
в OraQuery запрос забыл написать:select * from GOODS))Текущая ошибка устранена, но выдает новую)))
'Field CODE_GOODS not found'
а вот сам код:
void __fastcall TMain::Edit3Change(TObject *Sender)
{
TLocateOptions Options;
Options.Clear();
Options << loCaseInsensitive << loPartialKey;
OraQuery2->Locate("CODE_GOODS", Edit3->Text, Options);
}
19 июня 2009 в 21:00
ну или можно так:
TLocateOptions Options;
Options.Clear();
Variant KeyValues (Edit3->Text);
Options << loCaseInsensitive << loPartialKey;
OraQuery2->Locate("CODE_GOODS", KeyValues, Options);
хотя тоже самое выдает, ошибку
19 июня 2009 в 16:02
Видимо, не создан объект OraQuery1.
19 июня 2009 в 15:03
Показывает ошибку на строку:
-> OraQuery1->Locate("CODE_GOODS", KeyValues, Options);
19 июня 2009 в 14:04
Где, !@#$%?
19 июня 2009 в 11:05
Та же самая ошибка(
19 июня 2009 в 11:02
"Уверен" — недостаточно. Мне нужен уровень "Знаю, проверил дебаггером".
19 июня 2009 в 11:02
Попробуй так.
void __fastcall TMain::Edit3Change(TObject *Sender)
{
TLocateOptions Options;
Options.Clear();
Variant KeyValues(Edit3->Text);
Options << loCaseInsensitive << loPartialKey;
OraQuery1->Locate("CODE_GOODS", KeyValues, Options);
}
19 июня 2009 в 11:01
Да, именно там и выдает ошибку. Ок…
19 июня 2009 в 10:03
Уверен, что вываливается в строке [OraQuery1->Locate("CODE_GOODS", Edit3->Text, Options);]. Причина: Неверные передаваемые параметры или неинициализированный указатель OraQuery1)
>>и кстати там Edit3->Text или StrToInt(Edit3->Text)? Ведь значение числовое.
Смотрим в доках описание функции Locate
19 июня 2009 в 9:01
Телепаты в отпуске. В каком месте сваливается с ошибкой?