Помощь - Поиск - Пользователи - Календарь
Полная версия: Передача параметра для IBQuery
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
18192123
Здравствуйте!
Предположим, у меня есть компонент DBGrid2, куда будут выводятся результаты запроса компонента IBQuery2, но в тексте запроса присутствует параметр, в качестве которого хочу передавать значение поля, выделенного в другой DBGrid1....Так вот..а как прописать??


IBQuery2->Close();
//IBQuery2->Params->ParamByName("A")->AsString=DBGrid1-> а дальше не знаю...
IBQuery2->Open();



volvo
Ну, если
Цитата
значение поля, выделенного в другой DBGrid1
, то
IBQuery2->Params->ParamByName("A")->AsString=DBGrid1->SelectedField->AsString;
18192123
Цитата(volvo @ 2.12.2008 0:17) *

IBQuery2->Params->ParamByName("A")->AsString=DBGrid1->SelectedField->AsString;


Ошибка...Скажите пожалуйста, как её можно устранить..?
volvo
Не знаю... Ошибка возникает не при чтении из DBGrid1, а при работе с IBQuery скорее всего, потому что код
ShowMessage(DBGrid1->SelectedField->AsString);
, вызванный по нажатию кнопки, прекрасно отрабатывает, если в Гриде было выбрано какое-то поле. То есть, обращение к SelectedField->AsString вполне легально. А что там у тебя творится в IBQuery я не знаю...

Если передаешь значение непосредственно:
IBQuery2->Params->ParamByName("A")->AsString="что-то";
, работает?
18192123
Цитата(volvo @ 3.12.2008 2:10) *

Если передаешь значение непосредственно:
IBQuery2->Params->ParamByName("A")->AsString="что-то";
, работает?

Да..отрабатывает без ошибок..
volvo
Ну, тогда попробуй разделить эту операцию на 2: Сначала читать из ячейки Грида в дополнительную переменную (AnsiString), а потом - передавать эту строку в Query, и смотри, на каком этапе возникнет ошибка...
18192123
Цитата(volvo @ 3.12.2008 10:30) *

Ну, тогда попробуй разделить эту операцию на 2...

Вот...Попробывала..

IBQuery2->Close();
AnsiString temp;
temp=DBGrid1->SelectedField->AsString; //вот здесь мы и вылетаем...
IBQuery2->Params->ParamByName("A")->AsString=temp;
IBQuery2->Open();


т.е. что-то не так со считыванием из Grid..
volvo
Интересно... Мне такую ошибку удалось воспроизвести только при условии, что свойство DataSource->DataSet->Active этого самого Грида выставлено в False, тогда действительно из Грида ничего нельзя прочесть, ведь читать, собственно, нечего. Но тогда ведь и Грид пустой, он просто ничего не содержит, поскольку источник данных неактивен (или в 6-ом Билдере как-то по другому?)

Во всех других случаях, если в Гриде что-то есть, и присутствует эта стрелочка (активная запись) слева, то обращение к SelectedField отрабатывает без сбоя, другого простого способа обратиться к выбранному элементу по-моему просто нет... Кстати, а на каком событии висит у тебя этот код? Когда он вызывается?
18192123
Удалила компоненты и создала всё заново...И заработало-таки!
Спасибо за помощь!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.