Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > поиск в DBGrid |
Автор: Ildarinho 18.6.2009, 17:52 |
Нужно сделать поиск в таблице 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'. |
Автор: Dmi3ev 19.6.2009, 00:58 | ||||
этот код работает, тип поля в данном примере текстовый
1) какой тип поля? 2) а в бд значения есть? 3) кроме этого кода ты больше ничего не делаешь? |
Автор: mrbrooks 19.6.2009, 08:15 |
Это в стандартном контроле, а в VCL Data Access Components присутствует TCRDBGrid - он и ищет, и фильтрует, только что не пляшет. |
Автор: Ildarinho 19.6.2009, 10:27 |
А если поле Integer то: if(ADOQuery2->Locate("id", StrToInt(Edit2->Text), o<<loCaseInsensitive)) ??? |
Автор: Данкинг 19.6.2009, 11:16 |
Ildarinho, попробуй - расскажешь... ![]() |
Автор: Ildarinho 19.6.2009, 11:40 |
Тоже самое.... Гыыыы( |
Автор: Данкинг 19.6.2009, 12:16 | ||
Значит, ошибка не в этом, как я и говорил. |
Автор: Ildarinho 19.6.2009, 14:50 |
Показывает ошибку на строку: -> OraQuery1->Locate("CODE_GOODS", KeyValues, Options); |
Автор: Alca 19.6.2009, 15:44 |
TCRDBGrid платный? |
Автор: Ildarinho 19.6.2009, 16:28 |
хз ![]() |
Автор: Ildarinho 19.6.2009, 20:15 |
в OraQuery запрос забыл написать ![]() '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); } |
Автор: Alca 19.6.2009, 20:49 | ||
'Поле CODE_GOODS не найдено' |
Автор: Данкинг 19.6.2009, 21:46 |
По-твоему, как сиё переводится с иностранного языка? |
Автор: Ildarinho 19.6.2009, 22:30 |
при попытке сделать запрос активным и выдает такую ошибку Тьфу, тьфу, но энто я переводить умею ![]() |
Автор: Данкинг 19.6.2009, 22:38 |
Код покажи. |
Автор: Ildarinho 20.6.2009, 13:14 |
OraQuery2->SQL->Add("select from GOODS"); TLocateOptions Options; Options.Clear(); Variant KeyValues (Edit3->Text); Options << loCaseInsensitive << loPartialKey; OraQuery2->Locate("CODE_GOODS", KeyValues, Options); OraQuery2->ExecSQL(); |
Автор: Данкинг 20.6.2009, 13:33 | ||
1. Для select... используется не OraQuery2->ExecSQL(); , а OraQuery2->Open; 2. Кверя должна быть сначала открыта. А потом с ней уже можно что-то делать, т.е. искать, как ты. 3. Перед изменением параметров SQL хорошо бы кверю закрыть и очистить. Т.е.:
|
Автор: Ildarinho 20.6.2009, 14:36 |
ошибка 'ORA-00936:missing expression'((( |
Автор: Данкинг 20.6.2009, 14:43 | ||
На какой строке?! ![]() |
Автор: Ildarinho 20.6.2009, 14:47 |
![]() Показывает что ошибка, на строку не указывает Добавлено через 3 минуты и 11 секунд OraQuery2->SQL->Add("select from GOODS"); вот в этой строке отредоктировал и написал OraQuery2->SQL->Add("select * from GOODS"); Ошибку не выдает да и не ищет( |
Автор: Ildarinho 21.6.2009, 14:46 |
Получилось) Была ошибка в том что у меня OraDataSourse была соединена с OraTable а не с OraQuery Всем спасибо! Добавлено через 3 минуты и 41 секунду теперь делаю так: 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.6.2009, 17:37 | ||
Я так и думал, что здесь что-то не то. ![]() |