Омск и Томск

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Омск и Томск

Сообщение Summer.05 » 06.08.2006 (Вс) 14:38

Есть код. Работает.

Private Sub List1_Click()
Call PlaySound(CStr(CurDir) + "\Select.wav", 0, _
SND_FILENAME) ' Or SND_ASYNC)

Dim strMyString, retval
Dim Msg, Lng As String
With List1
strMyString = .List(.ListIndex)
Lng = Len(strMyString)
Text4 = Lng
retval = Left(strMyString, Lng)
Text3 = retval
If Text3 <> "" Then
Adodc1.RecordSource = "SELECT * FROM DB where City like " + _
Chr(39) + "%" + Text3 + "%" + Chr(39)
Adodc1.Refresh 'выполнить запрос
End If
End With

Text2.Text = DataGrid1.ApproxCount
L_Exit: Exit Sub
L_Err: MsgBox Err.Description & " (" & Err.Number & ")", vbExclamation, App.Title: GoTo L_Exit

End Sub


Нет никаких проблем ни с одним названием города, кроме двух

Если я ввожу "Томск", то и получаю список, где есть г. Томск.
Если я ввожу "Омск", то и получаю список, где есть И Омск, и Томск.

Как это понимать, подскажите, пожалуйста!
Спасибо!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.08.2006 (Вс) 14:40

Млин. А как надо-то?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2006 (Вс) 14:44

Это, видать, верные последователи http://bbs.vbstreets.ru/viewtopic.php?p=6621731#6621731...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 14:49

Как надо:
сли я ввел город "Воронеж", то в DataGrid у меня выводятся все строки, в колонке "City" которых есть Воронеж
если я ввел город "Томск", то в DataGrid у меня выводятся все строки, в колонке "City" которых есть Томск
если я ввел город "Омск", то в DataGrid у меня выводятся все строки, в колонке "City" которых есть и Омск, и Томск. Это - ненормально.

Я же определяю длину названия города через Len() и указываю это значение при отборе...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2006 (Вс) 14:53

Summer.05
Всё-таки перечитай ещё раз http://bbs.vbstreets.ru/viewtopic.php?p=6621731#6621731, потому что ты делаешь именно это...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 06.08.2006 (Вс) 15:00

В общем случае это никак не решишь. В частных случаях -
1. Если у тебя название города в начале, то можно "SELECT * FROM DB where City like '" + Text3 + "%'"
2. Eсли где угодно, то "SELECT * FROM DB where City like '% " + Text3 + "%'" (после первого % пробел)
3. Можно объединить 1 и 2 - City like ... or City like ...
Но если перед названием стоит какой-нибудь левый символ, то увы...
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 15:10

[quote="Antonariy"] 1. Если у тебя название города в начале, то можно "SELECT * FROM DB where City like '" + Text3 + "%'"quote]

Именно так. В этой колонке больше ничего нет, только название города.
Этот код,что указан выше, я и использовал на ранних стадиях, но ничего не помогало.

Насчет левого символа...
А что, если перед названием города стоит пробел? Это может
повлиять?
Последний раз редактировалось Summer.05 06.08.2006 (Вс) 15:21, всего редактировалось 1 раз.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 15:11

GSerg, спасибо, я разберусь и попробую решить ту задачу.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2006 (Вс) 15:13

Summer.05 писал(а):В этой колонке больше ничего нет, только название города.

... читая ответ Antonariy, я очень ясно представлял себе, как потом придёт Summer.05 и скажет именно это :)
Теперь я очень доволен :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 15:21

GSerg. Спасибо, а то ты меня напугал угрозой очень строгого предупреждения за дубль :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2006 (Вс) 15:33

А это тут причём? :roll:
Или ты не ходил по ссылке, но заключил, что там про дубль? :scratch:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 15:55

GSerg
Нет, я о другом. В одном из предыдущих постов у меня нечаянно получился дубль, хотя в то время я считал, что это разные вещи.
Ты пригрозил наказанием)))))

http://bbs.vbstreets.ru/viewtopic.php?t=27291#2

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 16:15

И все-таки, на зопрос по Томску выводится Томск.
На запрос по Омску выводятся и Омск, и Томск.
Ведь у них Len разная!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 06.08.2006 (Вс) 16:29

Именно так. В этой колонке больше ничего нет, только название города.
Этот код,что указан выше, я и использовал на ранних стадиях, но ничего не помогало.
Йопт! А если там ничего больше нет, то нафига like? Используй знак равенства. City='" + Text3 + "'"
А что, если перед названием города стоит пробел?
2. Eсли где угодно, то "SELECT * FROM DB where City like '% " + Text3 + "%'" (после первого % пробел)
Где угодно - это значит в любом месте предложения, т.е. перед ним стоит пробел. Если только автор не писал по-олбанзге.
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 06.08.2006 (Вс) 17:48

Спасибо, понял!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList