![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск по 2 полям
Lina © (2003-08-26 12:17:00)
Пожалуйста, подскажите формат команды поиска в базе данных locate, если поиск производить по 2 столбцам.
Поля: gr, kod.
Нужно произвести в базе данных поиск записи, для которой значение поля gr = переменной gr1, а поля kod = kod1.
Я использовала table5.Locate("kodraion", xx, [loPartialKey]);
Но ни разу поиск не прошел успешно, хотя в таблице есть такие поля с такими значениями.
Lina (2003-08-26 13:07:00) [1]
Ладно, проверю. Скорее всего опять проблема в лишних пробелах или т.п. в строковых переменных. Я не была уверена в правильности написания команды locate. Спасибо за столь бурное участие в моей судьбе. :)
Vlad (2003-08-26 13:05:00) [2]
А вы уверены, что перед Locate, переменные gr1,kod1 равны именно тому значению которое нужно ?
Если да, тогда могу сие безобразие списать лишь на краемухауслышанное мнение о глючности BDE-шных TTable. Правда бездоказательно.
Reindeer Moss Eater (2003-08-26 13:02:00) [3]
У блин, вот и верь после этого книгам.
Sandman25 (2003-08-26 12:59:00) [4]
Только что проверил в исходниках Delphi3.
CaseInsensitive := loCaseInsensitive in Options;
loPartialKey не учитывается.
Lina (2003-08-26 12:55:00) [5]
В хелпе по Делфи:
loCaseInsensitive - Key fields and key values are matched without regard to case.
loPartialKey - Key values can include only part of the matching key field value; for example, "HAM" would match both "HAMM" and "HAMMER."
И хватит спорить о том, о чем я не спрашивала. :)
Reindeer Moss Eater (2003-08-26 12:52:00) [6]
Про Delphi 3 не могу сказать, но в D5,6 - это не так. (На заметку)
Вообще-то версия Delphi здесь ни при чем.
Vlad (2003-08-26 12:51:00) [7]
2 Reindeer Moss Eater © (26.08.03 12:46) [10]
Про Delphi 3 не могу сказать, но в D5,6 - это не так. (На заметку)
Reindeer Moss Eater (2003-08-26 12:46:00) [8]
Vlad ©
"Использование Delphi 3" Тодд Миллер, Дэвид Пауэлл и др.
стр 259
на заметку:
Если используется параметр loPartialKey, при поиске будет игнорироваться различие между прописными и строчными буквами, даже если не применяется член loCaseInsensitive.
Lina (2003-08-26 12:35:00) [9]
UpperCase/LowerCase не имеет смысла потому что значения переменных, по которым производится поиск:
gr="1","2","3" и т.д.
kod="801",802","803" и т.п.
То есть числовые.
Vlad (2003-08-26 12:34:00) [10]
2 Reindeer Moss Eater © (26.08.03 12:30) [7]
Да ну ?
Reindeer Moss Eater (2003-08-26 12:30:00) [11]
loPartialKey и так подразумевает loCaseInsensitive
Vlad (2003-08-26 12:29:00) [12]
Может проблема в UpperCase/LowerCase ?
Попробуй написать
table3.Locate("gr; kod", vararrayof( [gr1,kod1] ),[loCaseInsensitive])
Lina (2003-08-26 12:26:00) [13]
Может, не работает потому, что я в параметрах поиска даю строковые переменные? А надо конкретные значения?
Lina (2003-08-26 12:25:00) [14]
Я написала поиск по одному полю, он работает.
А поиск по 2 полям:
table3.Locate("gr; kod", vararrayof( [gr1,kod1] ),[loPartialKey])
ни разу не нашел нужную запись, хотя есть такие поля и такие значения.
Но я смотрю, что видимо делала правильно.
Значит, ошибка в чем-то другом.
Zacho (2003-08-26 12:21:00) [15]
Все есть в хелпе. Вот пример именно оттуда:
with CustTable do
Locate("Company;Contact;Phone", VarArrayOf(["Sight Diver", "P", "408-431-1000"]), [loPartialKey]);
asp (2003-08-26 12:20:00) [16]
DataSet.Locate("FIELD1;FIELD2", VarArrayOf([Value1, Value2], [])
Reindeer Moss Eater (2003-08-26 12:19:00) [17]
Я использовала table5.Locate("kodraion", xx, [loPartialKey]);
Но ни разу поиск не прошел успешно, хотя в таблице есть такие поля с такими значениями.
Есть поле "kodraion" и в нем есть значение xx??