Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запрос на выборку (2002)
 
 автор: SergeyKV   (01.12.2008 в 08:41)   личное сообщение
 
 

Доброе утро! Очень легкий вопрос у меня к вам , вот запрос , нужно И (имя) объединить с О (отчество) и вставить в Ф (фамилию). Ф И О находятся в разных столбцах. Вот запрос , как нужно его изменть что бы он заработал ? (щас учу мат часть)

st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, Ф 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф = [Результаты поиска].Данные) AND (ОСФИО.И = [Результаты поиска].Данные) AND (ОСФИО.О = [Результаты поиска].Данные) like '*" & txtFieldCryt & "*'"
    Poisk.Execute st

Я так понимаю ошибка после слова where...

  Ответить  
 
 автор: Кабан   (01.12.2008 в 09:10)   личное сообщение
 
 

это по каковски вообще?

я ничё нипонял, но хотябы так было бы хоть что-то более-менее логичное, имхо

st = "insert into [Результаты поиска] ([Id Rec],[Данные],[Продукт]) " & _
     "select [сч_ОСФИО], [Ф] & [И] & [О], 'Открытие счета' as dbtext " & _
     "from ОСФИО " & _
     "where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О like '*" & txtFieldCryt & "*'" 
Poisk.Execute st 

  Ответить  
 
 автор: SergeyKV   (01.12.2008 в 12:23)   личное сообщение
 
 

Понятно, а если я хочу отделить имя от фамилии пробелом :

st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, [Ф] & " " & [И] & " " & [О], 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'"
    Poisk.Execute st

почему то ошибка синтаксиса, хотя делаю все по книжке...

  Ответить  
 
 автор: osmor   (01.12.2008 в 12:31)   личное сообщение
 
 


st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) 
select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext
from ОСФИО 
where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'"
    Poisk.Execute st

  Ответить  
 
 автор: SergeyKV   (01.12.2008 в 12:44)   личное сообщение
 
 

там были двойные кавычки чес слово! osmor и Кабан

  Ответить  
 
 автор: SergeyKV   (01.12.2008 в 15:59)   личное сообщение
 
 

а еще , я ставлю условие отбора like "*" , а пробелы не хотят на звездочку замещаться. Как нужно делать правильно что бы поиск по неполным комбинациям слов срабатывал ?

  Ответить  
 
 автор: osmor   (01.12.2008 в 17:48)   личное сообщение
 
 

всмысле

  Ответить  
 
 автор: SergeyKV   (01.12.2008 в 18:55)   личное сообщение
 
 

тоесть например, куч*иг = кучин игорь. Как сечас запрос - не работает.

  Ответить  
 
 автор: osmor   (01.12.2008 в 18:57)   личное сообщение
 
 

и не должен
куч*иг* = кучин игорь

  Ответить  
 
 автор: SergeyKV   (02.12.2008 в 10:59)   личное сообщение
 
 

osmor почему запрос не работает по любой части если * уже стоят перед и после искомого слова ?

like '*" & txtFieldCryt & "*'

  Ответить  
 
 автор: osmor   (02.12.2008 в 11:01)   личное сообщение
 
 

покажите строку поиска и что по вашему по ней должно находиться и не находится?

  Ответить  
 
 автор: SergeyKV   (02.12.2008 в 11:06)   личное сообщение
 
 

строка поиска, та что выше, где вы исправили мои ошибки. По ней находятся отдельные только отдельные слова, а комбинации из неполных Ф И О нет(( а если поставить в поле поиска звездочки между словами то все ищется. Вот я и подумал значит надо вставить в программу строчку, которая будет переводить пробелы в звездочки... А с другой стороны вроде бы у меня поле для поиска уже окружена * с обеих сторон, поэтому я и не понимаю почему не ищет по неполным комбинациям слов

  Ответить  
 
 автор: osmor   (02.12.2008 в 11:15)   личное сообщение
 
 

*куч иг* <> кучин игорь
*иниго* <> кучин игорь
*кучи иг* <> кучин игорь
*кучиyиг* <> кучин игорь
*ин иго* = кучин игорь

не понимаю вашего вопроса

  Ответить  
 
 автор: SergeyKV   (02.12.2008 в 11:22)   личное сообщение
 
 

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

st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт])  
select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext 
from ОСФИО  
where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like '*" & txtFieldCryt & "*'" 
    Poisk.Execute st

  Ответить  
 
 автор: osmor   (02.12.2008 в 11:38)   личное сообщение
 
 

like '*ин иго*' найдет "кучин игорь" в том случае если кол-во СИМВОЛОВ ПРОБЕЛ одинаково

Но судя по тому что у вас в запросе написано искаться у вас будет не
"кучин игорь"
а
"кучинигорь"
поскольку в ...where (ОСФИО.Ф & ОСФИО.И & ОСФИО.О) like ....
между "Ф" и "И" не вставляются пробелы

  Ответить  
 
 автор: SergeyKV   (02.12.2008 в 11:52)   личное сообщение
 
 

я вас понял, буду исправлять

  Ответить  
 
 автор: SergeyKV   (03.12.2008 в 16:05)   личное сообщение
 
 

Люди, я все таки не совсем понял что osmor пытался мне донести! Я повторюсь, почему мой запрос не отбирает по примеру куч иг = кучин игорь ? чего в нем не хватает!

st = "insert into [Результаты поиска] ([Id Rec],Данные,[Продукт]) select сч_ОСФИО, [Ф] & ' ' & [И] & ' ' & [О], 'Открытие счета' as dbtext from ОСФИО where (ОСФИО.Ф & ' ' & ОСФИО.И & ' ' & ОСФИО.О) like '*" & Me.txtFieldCryt & "*'"
            Poisk.Execute st

  Ответить  
 
 автор: osmor   (03.12.2008 в 16:13)   личное сообщение
 
 

повторюсь

*куч иг* <> кучин игорь
*иниго* <> кучин игорь
*кучи иг* <> кучин игорь
*кучиyиг* <> кучин игорь
*ин иго* = кучин игорь
*куч*иг* = кучин игорь
*куч* = кучин игорь
*иг* = кучин игорь

  Ответить  
 
 автор: SergeyKV   (03.12.2008 в 16:19)   личное сообщение
 
 

ну а как же тогда пробелы на звездочки заменить? тоесть чтобы искать например *куч*иг* = кучин игорь
сейчас у меня ищется только когда *ххх* = ххх хххххх.
Плиз дайте подсказку

  Ответить  
 
 автор: osmor   (03.12.2008 в 16:46)   личное сообщение
 
 

причем здесь пробелы?
У вас недостает как минимум 2-х символов кроме пробела
кучИН игорь
почитайте что нибудь про маски... вы просто никак не хотите понять, что только "*" заменяте любое кол-во символов, а там где у вас нет "*" в искомой строке должно быть тоже что и в строке поиска.

т.е. когда вы пишите
*ку иг* будут найдены все строки в который в середине, начале или конце содержится сдержатся сочетание символов
"ку иг"

если внутри есть какие-то другие символы (пробел или любые другие), то такая строка не соответствует критерию поиска, или если какого-то символа (даже пробела) недостает.
например
"куиг"
"ку!иг"
"ку иг"
"куч иг"
"кучи иг"
"кучиниг"
"кин иг"

Все эти строки НЕ соответствуют маске "*ку иг*"

  Ответить  
 
 автор: Кабан   (03.12.2008 в 16:48)   личное сообщение
 
 

  Ответить  
 
 автор: SergeyKV   (03.12.2008 в 16:51)   личное сообщение
 
 

да я бегло зацепил маски http://hiprog.com/forum/read.php?id_forum=1&id_theme=4140&page=1 но там написано что лучше их не использовать и я от них оказался ..
щас изучу повнимательнее

То что вы написали я понял сразу (почти ) поэтому и спрашивал как грамотно заменить символы пробел на звездочки

  Ответить  
 
 автор: Кабан   (03.12.2008 в 16:47)   личное сообщение
 
 

replace(СтрокаПоиска,chr(32),chr(42))

  Ответить  
 
 автор: SergeyKV   (04.12.2008 в 10:36)   личное сообщение
 
 

Всем доброе утро, по московскому времени!
как сказал Кабан у меня не вышло сделал вот так (подсмотрел в одном примере) :

like '*" & DivideString(txtFieldCryt.Value) & "*'"

в таком виде прекрасно ищется куч иг = кучин игорь !
П.с. может кому будет полезно
П.п.с. спасибо всем кто мне ответил, а особенно оsmor и Кабан
П.п.п.с Сейчас вбил в поис devidestring и нашел пример(2004 года) уже тут, http://hiprog.com/index.php?option=com_content&task=view&id=445&Itemid=35 жалко что раньше не увидел хотя искал, дошел до 2005 года и бросил

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList