singlepost

Поиск в DBGrid << На главную или назад  

Нужно сделать поиск в таблице 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

18 ответов в теме “Поиск в DBGrid”

  1. 17
    Ильдар Ильясов ответил:

    Получилось) Была ошибка в том что у меня 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;

  2. 16
    Анюта Щербина ответил:

    я конечно могу ошибать, но насколько я поняла программа работает с некой бд, так может нужно всетаки в запросе указать к ней путь?

  3. 15
    Ильдар Ильясов ответил:

    OraQuery2->SQL->Add("select from GOODS");
    вот в этой строке отредоктировал и написал
    OraQuery2->SQL->Add("select * from GOODS");
    Ошибку не выдает да и не ищет(

  4. 14
    Ильдар Ильясов ответил:

    попробовал так:
    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'

  5. 13
    Кирилл Быков ответил:

    Видимо, нету. Вряд ли оралиба врать будет.

  6. 12
    Денис Боенсков ответил:

    Проверьте заголовки в DBGrid. Что показывает? Там есть поле CODE_GOODS ???

  7. 11
    Ильдар Ильясов ответил:

    в 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);
    }

  8. 10
    Ильдар Ильясов ответил:

    ну или можно так:

    TLocateOptions Options;
    Options.Clear();
    Variant KeyValues (Edit3->Text);
    Options << loCaseInsensitive << loPartialKey;
    OraQuery2->Locate("CODE_GOODS", KeyValues, Options);

    хотя тоже самое выдает, ошибку

  9. 9
    Кирилл Быков ответил:

    Видимо, не создан объект OraQuery1.

  10. 8
    Ильдар Ильясов ответил:

    Показывает ошибку на строку:
    -> OraQuery1->Locate("CODE_GOODS", KeyValues, Options);

  11. 7
    Кирилл Быков ответил:

    Где, !@#$%?

  12. 6
    Ильдар Ильясов ответил:

    Та же самая ошибка(

  13. 5
    Кирилл Быков ответил:

    "Уверен" — недостаточно. Мне нужен уровень "Знаю, проверил дебаггером".

  14. 4
    Кирилл Быков ответил:

    Попробуй так.
    void __fastcall TMain::Edit3Change(TObject *Sender)
    {
    TLocateOptions Options;
    Options.Clear();
    Variant KeyValues(Edit3->Text);
    Options << loCaseInsensitive << loPartialKey;
    OraQuery1->Locate("CODE_GOODS", KeyValues, Options);
    }

  15. 3
    Ильдар Ильясов ответил:

    Да, именно там и выдает ошибку. Ок…

  16. 2
    Денис Боенсков ответил:

    Уверен, что вываливается в строке [OraQuery1->Locate("CODE_GOODS", Edit3->Text, Options);]. Причина: Неверные передаваемые параметры или неинициализированный указатель OraQuery1)

    >>и кстати там Edit3->Text или StrToInt(Edit3->Text)? Ведь значение числовое.
    Смотрим в доках описание функции Locate

  17. 1
    Кирилл Быков ответил:

    Телепаты в отпуске. В каком месте сваливается с ошибкой?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.