| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > создание ошибки при выборе данных |
| Автор: Igor Graf 13.6.2005, 10:30 | ||||
| Привет всем большой! У меня появился один, наверное простой вопрос, но че-то я никак не могу понять как это сделать, задача такая: Значит есть у меня бд, с данными, я подключаю
ну значит данные выбираются и выводятся на форму, теперь надо предусмотреть тот момент, когда данных нет, я делаю так:
но че-то он этоусловие проскакивает, как быть, подскажите с уважением Graf |
| Автор: Naghual 13.6.2005, 10:42 | ||
Что такое
Если реч идет об отсутствии записей в таблице, то нужно пользоватся свойствами RecordCount и EOF объекта Recordset. Если говорить о незаполненных полях, то инструкция is nothing не сработает. Она служит для проверки содержания Объекта! Проверяй через Is Null и/или Len(Trim$(data2.recordset.fields!fileldsname)) = 0 |
| Автор: Igor Graf 13.6.2005, 11:56 |
| Naghual спасибо, за помощь! В данном случае речь идет именно об отсутствии записи в таблице info, из которой я выбираю записи. Буду пробовать RecordCount Еще раз спасибо С уважением Graf |
| Автор: Гость_boevik 13.6.2005, 14:24 | ||
Проверяй рекордсет на EOF и BOF. Так как RecordCount не всегда дает верную информацию
|
| Автор: Naghual 13.6.2005, 17:35 |
| Гость_boevik : Это когда-же RecordCount дает не верную информацию? |
| Автор: boevik 14.6.2005, 08:18 | ||||
К примеру самый простой случай когда все параметры берутся по умолчанию:
Во всех случаях, не зависимо есть данные или нет, recordcount равен -1. Выдержка из http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdprorecordcount.asp:
|
| Автор: Igor Graf 14.6.2005, 09:04 |
| Большое спасибо boevik, весьма понятно и доступно С уважением Graf |
| Автор: Naghual 14.6.2005, 10:37 | ||
| boevik: Вы батенька MSDN сильно далеко читаете! А там сказано, что RecordCount нужно использовать после инструкций MoveLast и MoveFirst. Вот тогда он не будет вызывать описанные Вами выше проблемы. Тоесть после каждого Открытия Recordset, добавления или удаления из него данных необходимо выполнять такой код:
И вот тогда RecordCount будет именно правильный. Говоря по большому счету, RecordCount они придумали только для удобства и в самый последний момент. И как всегда недоработали! А сами то пользуются EOF! |
| Автор: boevik 14.6.2005, 10:51 |
| Naghual, 1) ты просил пример когда RecordCount не работает, пример приведен. 2) Где сказано, что надо выполнять Recordset.MoveLast: Recordset.MoveFirst? 3) В примере приведенном Igor Graf, не используется Recordset.MoveLast: Recordset.MoveFirst, да и проблематично его выполнять на пустом recordset-e. 4) Не всегда можно выполнить Recordset.MoveFirst. (В случае когда CursorType = adOpenForwardOnly) Из все выше сказаного следует, что применять RecordCount довольно проблематично, но возможно. |
| Автор: Naghual 14.6.2005, 10:55 |
| Согласен. Что тут скажеш. |