• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

проблемка с Notesdatabase.ftsearch

  • Автор темы Sandr
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sandr

При реализации поиска для одной базки, наткнулся на одну проблемку. Не работает поиск по диапазону дат в который1 попадает значение одного поля типа "дата". FTSearch воспринимает поле как текстовое и не дает использовать операции сравнения “>”, “<”, “<=” и “>=”.

Прибить индекс и создать его заново не помогает. Может, уже кто-то сталкивался с подобной проблемой и знает, как легко её обойти…

Я знаю один способ, но мне он не очень подходит... грубо говоря не подходит совсем...
 
M

Mihal

Уси-пуси :). Как бальзам на душу!:D Проблемки у конкурентов! Мелочь, а приятно! :p

Удостоверся что нигде в формах нету поля с таким же именем, но текстовым. А вдруг?

P.S. и выдай текст запроса который ты пытаешься впихануть.
 
S

Sandr

Мишань, проблема именно в том, что пока поле пустое - оно текстовое... а када индекс формируется первый раз, он же ж не смотрит все документы.. он нашел первый попавшийся, посмотрел, шо поле текстовое (пустое патамуша) и зафигачил в свою таблицу тот факт, шо оно текстовое... А как эту заразу переубедить - ХЗ... Есть способ - создать реплику и индекс для неё, авось в ней полу будет уже датой... А потом подменить базку репликой - но способ настока брутальный, шо даже не хочу это делать... Ищу способы покрасивей.. А ты, вместо того, шоб радоватся проблемкой у конкурентов (кстати не у них проблемка.. а у меня :)) - помог бы коллеге...

запрос до безобразия простой...

( [Form]= "Form1") & ([Date1] >= 27.09.2007) & ([Date1] <= 28.09.2007)
 
M

morpheus

<!--QuoteBegin-Sandr+6:11:2007, 13:43 -->
<span class="vbquote">(Sandr @ 6:11:2007, 13:43 )</span><!--QuoteEBegin-->(пустое патамуша)
[snapback]84413" rel="nofollow" target="_blank[/snapback]​
[/quote]
па рукам за такое )
 
S

Sandr

за какое? Так а шо делать, если оно и должно быть пустым, пока его не завполнят... Оно не обязательно на определенных стадиях...
 
M

Mihal

Заполнять @now али @today. И флажок рядышком завести. Флажок взведён - значит на дату нада обращать внимание, флажок опущен - значит на дату забить.
 
S

Sandr

Клиент, к сожалению, не поймет причины такого неудобства в интерфейсе...
 
M

morpheus

Значит далать второ поле которое будет отобрадаться - а то по которому будт искать - будет скрытым и т.д.
 
S

Sandr

Если бы база писалась с нуля, то так и сделал бы.. но ведь она уже существует... :)
 
S

Sandr

Причем тут шаблоны? Предлагаете создать новую БД? База уже в работе, коиент пользуется - как исправить?
 
M

morpheus

Зачем создавать новую БД ... разве у Вас шаблонов по которм создавались БД не осталося?
прописать просто поле которое надо для поиска -скрытым(Поле1) , а новое поле зделать видимым(Поле2)

Поле 1 = если поле1 и поле2 пусто будет принимать значение 1900/01/01.
ну соответсвено поле2 = пусто( если поле1 - 1900/01/01 ), либо равно поле1

ну чтото в этом роде
 
S

Sandr

Да поймите, не в этом проблема, а проблема в том, что в существующей базе этим проблему не решишь... Проблема возникла при ПЕРВОМ создании индекса... Поменять поля - это тоже самое, что махать кулаками после боя...

ЗЫ: По-вашему, я что, не в состоянии поля сделать? :)
 
M

morpheus

ну тады звыняйте, о любые пустые поля будут восприниматься как текстовые пустышки

по этому я и не пользуюсь FTSearch - это зло
 
M

morpheus

я тоже склоняюсь к агентику который или убивает поля или заполняет их дефаултными значениями
 
S

Sandr

так.. как я понял, никто не понял основной сути проблемы...

Ну что толку от этого всего? Как это повлияет на определения типа поля в индексе? Он ведь определяется при ПЕРВОМ построении индекса... Даже если прибить все, индекс и все документы в БД, а потом создать один документ с заполенным полем даты и заново создать индекс - проблема останется... :D

Единственный выход - создать реплику существующей базы, проследить корректность заполенныз полей в ней, создать индекс и подменить базу этой репликой...
 
30.05.2006
1 345
12
BIT
0
Это вы ничего не поняли.

Если ваша база настолько крива, что одноименное поле в разных док-тах содержит где текст, а где дату, то толку никакого, поиск по этому полю невозможен.

Если в вашей базе данное поле ТОЛЬКО датовского типа ЛИБО пустое, то агентик поможет, поиск будет работать.
 
I

IsAvailable

Для: Sandr
После отработки агента индекс пересоздать...
Или база недосягаема? Тогда как вообще о каких-то изменениях говорить? =\
 
S

Sandr

Это вы ничего не поняли.

Если ваша база настолько крива, что одноименное поле в разных док-тах содержит где текст, а где дату, то толку никакого, поиск по этому полю невозможен.

Если в вашей базе данное поле ТОЛЬКО датовского типа ЛИБО пустое, то агентик поможет, поиск будет работать.

Ну что толку? База не кривая.. все поля типа Дата или пустые. Тип поля в индексе определен как текст, а определяется он при ПЕРВОМ создании индекса... Он криво создался в первый раз - все его не переубедить, что поле не текстовое... Прибить индек и создать его заново - результата не дает... Я же говорил это выше... Помогает тока если создать реплику, создать в ней индекс, а птом подсунуть реплику вместо базы...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!