| |
|
|
| | Доброе утро! Очень легкий вопрос у меня к вам , вот запрос , нужно И (имя) объединить с О (отчество) и вставить в Ф (фамилию). Ф И О находятся в разных столбцах. Вот запрос , как нужно его изменть что бы он заработал ? (щас учу мат часть)
st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, Ф 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф = [Результаты поиска].Данные) AND (ОСФИО.И = [Результаты поиска].Данные) AND (ОСФИО.О = [Результаты поиска].Данные) like '*" & txtFieldCryt & "*'"
Poisk.Execute st
|
Я так понимаю ошибка после слова where... | |
| |
| |
| |
|
|
| | это по каковски вообще?
я ничё нипонял, но хотябы так было бы хоть что-то более-менее логичное, имхо
st = "insert into [Результаты поиска] ([Id Rec],[Данные],[Продукт]) " & _
"select [сч_ОСФИО], [Ф] & [И] & [О], 'Открытие счета' as dbtext " & _
"from ОСФИО " & _
"where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О like '*" & txtFieldCryt & "*'"
Poisk.Execute st
|
| |
| |
| |
| |
|
|
| | Понятно, а если я хочу отделить имя от фамилии пробелом :
st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, [Ф] & " " & [И] & " " & [О], 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'"
Poisk.Execute st
|
почему то ошибка синтаксиса, хотя делаю все по книжке... | |
| |
| |
| |
|
|
| |
st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт])
select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext
from ОСФИО
where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'"
Poisk.Execute st
|
| |
| |
| |
| |
|
|
| | там были двойные кавычки чес слово! osmor и Кабан  | |
| |
| |
| |
|
|
| | а еще , я ставлю условие отбора like "*" , а пробелы не хотят на звездочку замещаться. Как нужно делать правильно что бы поиск по неполным комбинациям слов срабатывал ? | |
| |
| |
|
|
| |
|
|
| | тоесть например, куч*иг = кучин игорь. Как сечас запрос - не работает. | |
| |
| |
| |
|
|
| | и не должен
куч*иг* = кучин игорь | |
| |
| |
| |
|
|
| | osmor почему запрос не работает по любой части если * уже стоят перед и после искомого слова ?
like '*" & txtFieldCryt & "*'
|
| |
| |
| |
| |
|
|
| | покажите строку поиска и что по вашему по ней должно находиться и не находится? | |
| |
| |
| |
|
|
| | строка поиска, та что выше, где вы исправили мои ошибки. По ней находятся отдельные только отдельные слова, а комбинации из неполных Ф И О нет(( а если поставить в поле поиска звездочки между словами то все ищется. Вот я и подумал значит надо вставить в программу строчку, которая будет переводить пробелы в звездочки... А с другой стороны вроде бы у меня поле для поиска уже окружена * с обеих сторон, поэтому я и не понимаю почему не ищет по неполным комбинациям слов | |
| |
| |
| |
|
|
| | *куч иг* <> кучин игорь
*иниго* <> кучин игорь
*кучи иг* <> кучин игорь
*кучиyиг* <> кучин игорь
*ин иго* = кучин игорь
не понимаю вашего вопроса | |
| |
| |
| |
|
|
| | сформулирую так, этот запрос должен искать по неполным комбинациям слов ? напр ввожу ин иго и находится кучин игорь ?
st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт])
select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext
from ОСФИО
where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'"
Poisk.Execute st
|
| |
| |
| |
| |
|
|
| | like '*ин иго*' найдет "кучин игорь" в том случае если кол-во СИМВОЛОВ ПРОБЕЛ одинаково
Но судя по тому что у вас в запросе написано искаться у вас будет не
"кучин игорь"
а
"кучинигорь"
поскольку в ...where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like ....
между "Ф" и "И" не вставляются пробелы | |
| |
| |
| |
|
|
| | я вас понял, буду исправлять | |
| |
| |
| |
|
|
| | Люди, я все таки не совсем понял что osmor пытался мне донести! Я повторюсь, почему мой запрос не отбирает по примеру куч иг = кучин игорь ? чего в нем не хватает!
st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф & ' ' & ОСФИО.И & ' ' & ОСФИО.О) like '*" & Me.txtFieldCryt & "*'"
Poisk.Execute st
|
| |
| |
| |
| |
|
|
| | повторюсь
*куч иг* <> кучин игорь
*иниго* <> кучин игорь
*кучи иг* <> кучин игорь
*кучиyиг* <> кучин игорь
*ин иго* = кучин игорь
*куч*иг* = кучин игорь
*куч* = кучин игорь
*иг* = кучин игорь | |
| |
| |
| |
|
|
| | ну а как же тогда пробелы на звездочки заменить? тоесть чтобы искать например *куч*иг* = кучин игорь
сейчас у меня ищется только когда *ххх* = ххх хххххх.
Плиз дайте подсказку | |
| |
| |
| |
|
|
| | причем здесь пробелы?
У вас недостает как минимум 2-х символов кроме пробела
кучИН игорь
почитайте что нибудь про маски... вы просто никак не хотите понять, что только "*" заменяте любое кол-во символов, а там где у вас нет "*" в искомой строке должно быть тоже что и в строке поиска.
т.е. когда вы пишите
*ку иг* будут найдены все строки в который в середине, начале или конце содержится сдержатся сочетание символов
"ку иг"
если внутри есть какие-то другие символы (пробел или любые другие), то такая строка не соответствует критерию поиска, или если какого-то символа (даже пробела) недостает.
например
"куиг"
"ку!иг"
"ку иг"
"куч иг"
"кучи иг"
"кучиниг"
"кин иг"
Все эти строки НЕ соответствуют маске "*ку иг*" | |
| |
| |
|
|
| |
|
|
| | да я бегло зацепил маски http://hiprog.com/forum/read.php?id_forum=1&id_theme=4140&page=1 но там написано что лучше их не использовать и я от них оказался ..
щас изучу повнимательнее
То что вы написали я понял сразу (почти ) поэтому и спрашивал как грамотно заменить символы пробел на звездочки | |
| |
| |
| |
|
|
| | replace(СтрокаПоиска,chr(32),chr(42)) | |
| |
| |
| |
|
|
| | Всем доброе утро, по московскому времени!
как сказал Кабан у меня не вышло сделал вот так (подсмотрел в одном примере) :
like '*" & DivideString(txtFieldCryt.Value) & "*'"
|
в таком виде прекрасно ищется куч иг = кучин игорь !
П.с. может кому будет полезно
П.п.с. спасибо всем кто мне ответил, а особенно оsmor и Кабан 
П.п.п.с Сейчас вбил в поис devidestring и нашел пример(2004 года) уже тут, http://hiprog.com/index.php?option=com_content&task=view&id=445&Itemid=35 жалко что раньше не увидел хотя искал, дошел до 2005 года и бросил  | |
| |
| |