![]() |
|
|
![]()
|
|
| Maledictus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 7.9.2008 Где: Республика Белару сь, Борисов Репутация: нет Всего: 1 |
Мое почтение.
Сабж:Добавляю запись в базу.Тут же хочу найти ее.Поиск по нескольким пеараметрам.Заполняю только один из них..При исрользовании strstr() NULL-овая строка существует в любой строке поэтому все зависит от заполненного параметра.Но почему то при проверке strstr для остальных параметры выдают NULL. И тем самым поиск не проходит.Но стоит открыть и закрыть приложение, как поиск тут же начинает работать с этой записью нормально.Куда копать? Благодарю. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
Если ты пишешь на mfc, то на первый взгляд дело в типе рекордсета. CRecordset::Open первым параметром позволяет выбрать тип, среди прочих свойств которого можно найти способ обновления данных - либо после операции выборки, либо после закрытия/открытия рекордсета. Если выбрано последнее, то понятно что происходит в твоем случае - после добавления рекордсет не обновляется и ищет среди записей, существовавших до добавления. После открытия происходит повторное открытие рекордсета и он получает добавленные данные.
|
|||
|
||||
| Maledictus |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 7.9.2008 Где: Республика Белару сь, Борисов Репутация: нет Всего: 1 |
По моему это не так.Дело в том что когда запись только добавил и сразу же начинаю искать, то в этом коде:
,где str1,srt2,str4 = NULL,a str3 != NULL. почему то как и положено:
,но
, что не должно быть. А после перезапуска все становится отлично
PS:пишу в C++Builder 6.0 Это сообщение отредактировал(а) Maledictus - 17.12.2008, 07:25 |
||||||||
|
|||||||||
| dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
Вообще-то, strstr не должна работать в случае когда один из параметров равен 0 (Сейчас попробовал пример на vs2003 и он окончился access violation). Откуда информация о
Попробуй добавить в условие проверку на наличие строки. Что-то вроде
|
||||
|
|||||
| Maledictus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 7.9.2008 Где: Республика Белару сь, Борисов Репутация: нет Всего: 1 |
Спасибо-помогло.Но на C++ Builder 6 получается что NULL-овая строка существует в любой строке.=)))
|
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
Если что-то явно не описано в документации производителя библиотеки - результат выполнения есть следствие неопределенного поведения кода, которое в частном случае может быть желаемым, но полагаться на него все равно нельзя.
|
|||
|
||||
![]()
|
| Правила форума "C++: Базы данных" | |
|
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |