Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > База Данных |
Автор: ura5 17.4.2007, 11:31 |
//Выбираем sql M_Lsab->ADOQueryLsab->SQL->LoadFromFile("Lsab2.sql"); Str1 = M_Lsab->ADOQueryLsab->SQL->Text; //Выбираем куда грузить набор данных из таблицы M_Lsab->DataSourceLsab->DataSet = M_Lsab->ADOQueryLsab; //Связываем возвращаемый набор данных и визуальные компоненты DBGrid1->DataSource = M_Lsab->DataSourceLsab; DBNavigatorSprLsab->DataSource = M_Lsab->DataSourceLsab; //открываем M_Lsab->ADOQueryLsab->Open(); ВОПРОС: 1. Как проверить БД на пустоту и выдать при этом сообщение 2. Как проверить БД на правильность структуры (т.е. ,если вдруг поменялась структура таблицы,то мой SQL-запрос не сработает и мне при этом надо выдать сообщение-обработать ошибку). Я не знаю обработку ошибок . Спасибо. |
Автор: Anikmar 17.4.2007, 11:36 |
1. У TADOQuery есть метод IsEmpty() 2. В достаточной мере зависит от СУБД (хотя может быть можно использовать TADOCommand - тут я не особо петрю) |
Автор: ura5 17.4.2007, 15:42 |
M_Lsab->ADOQueryLsab->Open(); if ( M_Lsab->ADOQueryLsab->IsEmpty()) ShowMessage("Справочник пуст!"); Спасибо |
Автор: ura5 17.4.2007, 16:14 |
M_Lsab->ADOQueryLsab->SQL->LoadFromFile("Lsab2.sql"); ВОПРОС: Как проверить существование этого запроса? Есть он или нет? То же самое что спросить есть ли таблица или нет. Спасибо. |
Автор: Anikmar 17.4.2007, 16:24 |
На счет файла - легко if (FileExists("...")) На счет таблицы - универсальный ловить исключение, если запрос не открылся или смотреть документацию БД |
Автор: IgorDV 17.4.2007, 21:07 | ||
Если СУБД Oracle, то можно так проверить на существование таблиц
![]() |
Автор: Nat 18.4.2007, 09:58 |
Здравствуйте! Подскажите, пожалуйста, как проверить выполнение ADOQuery1->ExecSQL()? InEmpty() в данной ситуации не работает. |
Автор: Anikmar 18.4.2007, 10:04 | ||
Посмотрите хелп по этой функции. По-моему она возвращает количество обработанных записей. |
Автор: Nat 18.4.2007, 10:12 |
Да я бы с радостью! Только у меня Builder без Help'а :( |
Автор: ura5 18.4.2007, 10:44 |
Спасибо за запрос. Извините за неграммотность.Я работаю в СУБД Oracle.Но не на сколько его знаю. Этот запрос отработал на Oracle и вернул число записей ноль.Я поставила вместо tabl1,...,tabl6 имена таблиц (TABLES). Я не поняла что это за /*'TABLE'...*/ Видимо,что-то здесь свое надо поставить.Не знаю что. Помогите Добавлено через 8 минут и 55 секунд ВСЕ РАБОТАЕТ.СПАСИБО. |
Автор: Anikmar 18.4.2007, 11:14 |
Достаточно часто вижу такую проблему. Вопрос к администрации форума: Может быть выложить арзив хелпов по билдеру на сайт? Это будет нарушением авторских прав? |
Автор: Coala 18.4.2007, 12:14 | ||
Query->Open(). |
Автор: Nat 18.4.2007, 13:21 |
Мне и надо изменить данные ![]() |
Автор: Anikmar 18.4.2007, 13:27 |
Хелп по функции Exec Executes the SQL statement for the ADO query. int __fastcall ExecSQL(void); Description Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE). ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement. Note: For SELECT statements, call Open instead of ExecSQL or set the Active property to true. To speed performance, an application should ordinarily prepare the query by setting the Prepared property to true before calling ExecSQL for the first time. |
Автор: Coala 19.4.2007, 07:42 | ||
|
Автор: Nat 19.4.2007, 08:22 |
Спасибо! ![]() |