![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите составить запрос [D7, dBase, FoxPro]
Dell3r © (2005-05-17 11:57:00)В сомбобоксе вводится слово. в процессе ввода нужно оставлять записи соответствующие вводимым символам без учета регистра
Я пишу:
procedure TForm.CBNameKeyPress(Sender: TObject; var Key: Char);
Memo1.Lines.Strings[1]:='Where Name like "%'+CBName.Text+'%"';
QueryTMC.SQL.Assign(Memo1.lines);
QueryTMC.Open;
Вроде всё работает но если ввожу слово "лада", то среди записей есть "Влад"
msguns (2005-05-17 13:38:00) [1]Мскаль (когда произносится быстро, звучит занятно)
Sergey13 (2005-05-17 13:21:00) [2]Мя Сной Ску ль. 8-)
ANB (2005-05-17 13:18:00) [3]Ну дык и где мастера ? Кто предложит понятный русский термин ?
Предлагаю "МелкоСкуль".
msguns (2005-05-17 13:03:00) [4]>ANB © (17.05.05 12:57) [29]
>- ну давай тоже буду скала писать. Это у меня со старой работы. Мы там конвертили Oracle -> MS SQL и привыкли его сиквелом называть. Может какой нибудь общепонятный термин на русском изобретем, а то надоело раскладку переключать ?
Хорошая идея, поддерживаю. Мне "скала" тоже не слишком.. Во-первых, есть одноименная банковская буржуйная сиса, во-вторых, на скалу ИМХО, MS SQL мало похож, - скорее на Джомолумгму со своим весом и прибамбасами ;))
ANB (2005-05-17 12:57:00) [5]
> Андрюха, с своим уставом во все монастыри ?
- ну давай тоже буду скала писать. Это у меня со старой работы. Мы там конвертили Oracle -> MS SQL и привыкли его сиквелом называть. Может какой нибудь общепонятный термин на русском изобретем, а то надоело раскладку переключать ?
Dell3r (2005-05-17 12:56:00) [6]>>Anatoly Podgoretsky © (17.05.05 12:54) [26]
с чего это?
Dell3r (2005-05-17 12:55:00) [7]1.Будет вестись история запросов.
2.При нажатии энтер обрабатывается кнопка Default которой равен true
Anatoly Podgoretsky (2005-05-17 12:54:00) [8]У тебя явно поврежденная база.
msguns (2005-05-17 12:54:00) [9]>ANB © (17.05.05 12:49) [23]
>- я про MS SQL говорю.
"Сиквелем" вообще-то обзывают SQL вообще. Любой. И причем здесь "скала" (я так называю твой MS SQL) ?
Андрюха, с своим уставом во все монастыри ?
;)))
Max Zyuzin (2005-05-17 12:50:00) [10]>Dell3r © (17.05.05 12:47) [22]
А нафига если не секрет это все нужно вводить в Комбобокс? Чем не угодил Edit?
ANB (2005-05-17 12:49:00) [11]
> Неужели ? Попутно вопрос: чем отличается "сиквел" о "Local
> SQL" ?
- я про MS SQL говорю.
> >Но если пишешь Upper(Field) = Upper(SearchStr
- факт. В оракле сразу план на фулл скан переходит.
Dell3r (2005-05-17 12:47:00) [12]Я понял нужно обрабатывать CBNameKeyUp(Sender: TObject; var Key: Word;
sql.text:
Select * from Name
Where UPPER(Name) like
"%ЛАДА%"
%ORDER
msguns (2005-05-17 12:47:00) [13]>ANB © (17.05.05 12:42) [20]
>- да не кипятись.
ни боже мой ;)
>Но если пишешь Upper(Field) = Upper(SearchStr), то индексы не юзаются. Я про то, что сиквел умеет в индексах игнорить регистр.
Неужели ? Попутно вопрос: чем отличается "сиквел" о "Local SQL" ?
>И, это, с русскими пробовал ? Я не уверен, но натыкался на проблемы. Но в самом FoxPro, не в Local SQL.
Слышал об этом. Сам с фоксом не работаю
ANB (2005-05-17 12:42:00) [14]
> msguns © (17.05.05 12:35) [17]
- да не кипятись. Знаю я про это. Не грю же, что вообще никак. Но если пишешь Upper(Field) = Upper(SearchStr), то индексы не юзаются. Я про то, что сиквел умеет в индексах игнорить регистр. И, это, с русскими пробовал ? Я не уверен, но натыкался на проблемы. Но в самом FoxPro, не в Local SQL.
> Dell3r © (17.05.05 12:36) [18]
- все примеры - небольшая модернизация твоего. SQL не умеет понимать, что ты хочешь только целиком слово. Это ручками надо делать.
Max Zyuzin (2005-05-17 12:40:00) [15]>Dell3r © (17.05.05 11:57)
Все это похоже на фигню какую то. Попробуй перед выполнением запроса куда нить выведи QueryTMC.SQL.Text и сразу увидишь какой реально запрос у тебя выполнялся. Запости его сюда. Я так понял что у тебя запрос берется из Memo. Вот введи в комбобоксе совем слово "Лада" и SQL.Text сюда напиши.
Dell3r (2005-05-17 12:36:00) [16]Вот пример [9] в принципе подошел, но опять таки он выводит
например Алладин, хотя совпадает только лад, то есть как будто последний введенный символ не учитывается.
msguns (2005-05-17 12:35:00) [17]>ANB © (17.05.05 12:28) [16]
>, не, это не то. Это ручками.
Из справки по Local SQL:
Converts all characters to lowercase.
LOWER(column_reference)
Description
Use LOWER to convert all of the characters in a character value (column, literal, parameter, or caculated values) to lowercase. For example, in the SELECT statement below the values in the Name column appear all in lowercase.
SELECT LOWER(Name)
FROM Country
When applied to retrieved data of a SELECT statement, the effect is transient and does not affect stored data. When applied to the update atoms of an UPDATE statement, the effect is persistent and permanently converts the case of the stored values.
The LOWER function can be used in WHERE clause string comparisons to effect a case-insensitive comparison. Apply LOWER to the values on both sides of the comparison operator (if one of the comparison values is a literal, simply enter it all in lower case).
SELECT *
FROM Cames
WHERE LOWER(LastName) = "smith"
Applicability
LOWER can only be used with character columns or literals. To use on values of other data types, the values must first be converted to CHAR using the CAST function.
Note: The LOWER function cannot be used with memo or BLOB columns.
Note: The lower case version of a given character is determined by the language driver used.
ANB (2005-05-17 12:28:00) [18]
> msguns © (17.05.05 12:23) [15]
, не, это не то. Это ручками. МикроСкуль умеет без так игнорить. Просто пишешь в любом регистре запрос, а он достает все строки с игнорированием регистра.
msguns (2005-05-17 12:23:00) [19]>ANB © (17.05.05 12:18) [10]
> Local SQL тоже не умеет регистр игнорить.
???
UPPER/LOWER
ANB (2005-05-17 12:21:00) [20]
> msguns © (17.05.05 12:18) [11]
ну так тогда проще like 'ЛАДА%'