Страница 1 из 1
Быстрый поиск в каталоге
Добавлено: 16 авг 2006, 16:34
evchic
Добрый день!
Может кто подскажит как сделать быстый поиск используя * в качестве любой буквы например чтоб найти Угол нужно ввести "*ол*" и в браузере появится все слова имеющие эти 2 буквы
В Акцесе можно было сделать вот так
Код: Выделить всё
SELECT * FROM KatMC WHERE ((KatMC.Name Like '*ол*'));
Но в галактеке не такого понятия ка Like
Может есть идеи по данному вопросу?
Добавлено: 16 авг 2006, 17:43
coolibin
что-нибудь типа
where instr(katmc.name, 'ол') > 0
Добавлено: 16 авг 2006, 18:24
evchic
Не так не работает...
Добавлено: 16 авг 2006, 18:58
Seybukan
function MatchesMask(Str, Mask : string): Boolean;
MatchesMask(KatMc.name,'?ол?')=true
Добавлено: 17 авг 2006, 11:30
поЧитатель
SELECT * FROM KatMC WHERE
instr('ол', katmc.name) > 1;
Добавлено: 18 авг 2006, 12:14
Seybukan
SELECT * FROM KatMC WHERE
instr('ол', katmc.name) > 1;
В таком случае будет не тока "Угол", но еще и "футбол" и "ганбол".

Добавлено: 19 авг 2006, 13:24
evchic
Смысл всего в том что у меня на панели есть Текстовое поле и браузер...
И при наборе текста в текстовом поле должен происходить запрос в выдавать в браузере все слова где встречается набранный текст!!!

Добавлено: 21 авг 2006, 10:11
поЧитатель
Пробуй через Condition
interface ConditionMc 'Выберите МЦ' escclose,cyan;
show at (,2,,20);
Create View
var
temps : string;
KatMc.Name
from
KatMC (ReadOnly)
Condition FiltrName as
instr(temps, katmc.name) > 0;
;
panel tbKatMc;
table KatMc;
Screen scSetup ( ,, sci1Esc);
show at (,,,3);
Fields
temps: noprotect;
Buttons
cmOk, Default;
cmAll;
<<
Строка поиска : .@@@@@@@@@@@@@@@@@
<.Искать.> <.Все МЦ.>
>>
end; // Screen
HandleEvent
cmOk:
{
if(temps>''){
PushCondition(tcFiltrName);
RereadRecord;
}else{
Message('Введите строку поиска!');
}
}
cmAll:
{
PopCondition(tcFiltrName);
RereadRecord;
}
end; //Event
end; //Screen
Browse brNamBank;
show at (,4,,);
fields
KatMC.Name 'Наименование матценности', hcOkatalM1ComplMC,sci1378Esc) : [31], PickButton;
end; //Browse
end; //Panel
end.
// Оговорюсь сразу: блок не проверял, времени сейчас нет, но что-то
в этом духе, хотя постановка задачи выглядит удручающе

Добавлено: 23 авг 2006, 14:28
evchic
И так всем спасибо... собрав все вместе получился следующий код:
Код: Выделить всё
interface Etest1 'Выберите МЦ' escclose,cyan;
show at (,2,,20);
Create View
var
temps : string;
as Select KatMc.Name from
KatMC (ReadOnly)
Condition FiltrName as
MatchesMask(KatMc.name,temps)=true;
;
panel tbKatMc;
table KatMc;
Screen scSetup;
show at (,,,3);
Fields
temps: noprotect;
Buttons
cmOk, Default;
cmAll;
<<
Строка поиска : .@@@@@@@@@@@@@@@@@
<.Искать.> <.Все МЦ.>
>>
end; // Screen
HandleEvent
cmOk:{
StartNewVisual(vtRotateVisual,0,'Подготовка данных ...',1);
{
if(temps>''){
PushCondition(tcFiltrName);
RereadRecord;
}else{
Message('Введите строку поиска!');
}
}
StopVisual('',0);
}
cmAll:
{
PopCondition(tcFiltrName);
RereadRecord;
}
end; //Event
end; //Screen
Browse brNamBank;
show at (,4,,);
fields
KatMC.Name 'Наименование матценности': [31], PickButton;
end; //Browse
end.
Благодарю за помощь!!!
Следующая функция работает в Gal 7.12 точно
Код: Выделить всё
function MatchesMask(Str, Mask : string): Boolean;
MatchesMask(KatMc.name,'?ол?')=true
Добавлено: 25 авг 2006, 02:23
Screw
Сравнивать результат выполнения булевской функции с булевской же константой вульгарно. Зачем сравнивать true с true, чтобы получить true или false с true, чтобы получить false? Функция сама сообщает вам "правду" или "ложь". Короче говоря, просто пишите
Код: Выделить всё
сondition FiltrName MatchesMask(KatMc.name,temps)
Кроме того, никому не рекомендую использовать
PushCondition - с ее помощью вы накладываете ограничение на
всю логическую таблицу. Будь у вас в ней побольше узлов - то-то вы бы попотели, пытаясь понять, куда исчезают все данные после наложения условия. Думаю, многие уже сталкивались с загадочным поведением кода при использовании PushCondition.
В общем, рекомендую
всегда использовать только
PushConditionForLeave.
Добавлено: 25 авг 2006, 09:55
f1-help
ВСЕ ХОРОШО ИСХОДНЫЙ ТЕКСТ КОМПИЛЯЕТСЯ, ЗАПУСКАЕТСЯ, ДА И ПО ЛОГИГЕ ТОЖЕ ВСЕ ВРОДЕ ПОНЯТНО! НО НЕ РАБОТАЕТ!!! ВНОСИШЬ В СТРОКУ ДАННЫЕ (ВЛОБ ПРОСТО КОПИРУЕШЬ ИЗ ТАБЛИЦЫ СТРОКУ НАИМЕНОВАНИЕ И ВСТАВЛЯЕШЬ), НО ПОСЛЕ ПОДГОТОВКИ ДАННЫХ ТАБЛ-А ПУСТАЯ.

Добавлено: 28 авг 2006, 12:56
evchic
Screw писал(а):Сравнивать результат выполнения булевской функции с булевской же константой вульгарно. Зачем сравнивать true с true, чтобы получить true или false с true, чтобы получить false? Функция сама сообщает вам "правду" или "ложь". Короче говоря, просто пишите
Код: Выделить всё
сondition FiltrName MatchesMask(KatMc.name,temps)
Кроме того, никому не рекомендую использовать
PushCondition - с ее помощью вы накладываете ограничение на
всю логическую таблицу. Будь у вас в ней побольше узлов - то-то вы бы попотели, пытаясь понять, куда исчезают все данные после наложения условия. Думаю, многие уже сталкивались с загадочным поведением кода при использовании PushCondition.
В общем, рекомендую
всегда использовать только
PushConditionForLeave.
Благодарю за совет!!!

Добавлено: 29 авг 2006, 06:50
Алексей
Screw
Про кондишны

Попадал на баундсах на тоже самое

Пока опытным путём "догнал" в чём дело - много воды утекло

Теперь пользуюсь AddBounds SubBounds
Зато наглядно, здесь положил баундс, надо ещё положил, надо убрал

Добавлено: 04 сен 2006, 19:32
Maverick
Screw
Про кондишны Попадал на баундсах на тоже самое Пока опытным путём "догнал" в чём дело - много воды утекло
Теперь пользуюсь AddBounds SubBounds
Зато наглядно, здесь положил баундс, надо ещё положил, надо убрал
ток нужно следить за индексами и порядком добавления баундсов )))
в принципе noindex здесь поможет )))
Добавлено: 24 сен 2006, 03:17
Screw
Слушайте Мэва, он не обманет.