Текущий архив: 2003.09.15;
Скачать: CL | DM;
Вниз
Поиск по 2 полям Найти похожие ветки
← →
Lina (2003-08-26 12:17) [0]Пожалуйста, подскажите формат команды поиска в базе данных locate, если поиск производить по 2 столбцам.
Поля: gr, kod.
Нужно произвести в базе данных поиск записи, для которой значение поля gr = переменной gr1, а поля kod = kod1.
Я использовала table5.Locate("kodraion", xx, [loPartialKey]);
Но ни разу поиск не прошел успешно, хотя в таблице есть такие поля с такими значениями.
← →
Reindeer Moss Eater © (2003-08-26 12:19) [1]Я использовала table5.Locate("kodraion", xx, [loPartialKey]);
Но ни разу поиск не прошел успешно, хотя в таблице есть такие поля с такими значениями.
Есть поле "kodraion" и в нем есть значение xx??
← →
asp © (2003-08-26 12:20) [2]DataSet.Locate("FIELD1;FIELD2", VarArrayOf([Value1, Value2], [])
← →
Zacho © (2003-08-26 12:21) [3]Все есть в хелпе. Вот пример именно оттуда:
with CustTable do
Locate("Company;Contact;Phone", VarArrayOf(["Sight Diver", "P", "408-431-1000"]), [loPartialKey]);
← →
Lina (2003-08-26 12:25) [4]Я написала поиск по одному полю, он работает.
А поиск по 2 полям:
table3.Locate("gr; kod", vararrayof( [gr1,kod1] ),[loPartialKey])
ни разу не нашел нужную запись, хотя есть такие поля и такие значения.
Но я смотрю, что видимо делала правильно.
Значит, ошибка в чем-то другом.
← →
Lina (2003-08-26 12:26) [5]Может, не работает потому, что я в параметрах поиска даю строковые переменные? А надо конкретные значения?
← →
Vlad © (2003-08-26 12:29) [6]Может проблема в UpperCase/LowerCase ?
Попробуй написать
table3.Locate("gr; kod", vararrayof( [gr1,kod1] ),[loCaseInsensitive])
← →
Reindeer Moss Eater © (2003-08-26 12:30) [7]loPartialKey и так подразумевает loCaseInsensitive
← →
Vlad © (2003-08-26 12:34) [8]2 Reindeer Moss Eater © (26.08.03 12:30) [7]
Да ну ?
← →
Lina (2003-08-26 12:35) [9]UpperCase/LowerCase не имеет смысла потому что значения переменных, по которым производится поиск:
gr="1","2","3" и т.д.
kod="801",802","803" и т.п.
То есть числовые.
← →
Reindeer Moss Eater © (2003-08-26 12:46) [10]Vlad ©
"Использование Delphi 3" Тодд Миллер, Дэвид Пауэлл и др.
стр 259
на заметку:
Если используется параметр loPartialKey, при поиске будет игнорироваться различие между прописными и строчными буквами, даже если не применяется член loCaseInsensitive.
← →
Vlad © (2003-08-26 12:51) [11]2 Reindeer Moss Eater © (26.08.03 12:46) [10]
Про Delphi 3 не могу сказать, но в D5,6 - это не так. (На заметку)
← →
Reindeer Moss Eater © (2003-08-26 12:52) [12]Про Delphi 3 не могу сказать, но в D5,6 - это не так. (На заметку)
Вообще-то версия Delphi здесь ни при чем.
← →
Lina (2003-08-26 12:55) [13]В хелпе по Делфи:
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."
И хватит спорить о том, о чем я не спрашивала. :)
← →
Sandman25 (2003-08-26 12:59) [14]Только что проверил в исходниках Delphi3.
CaseInsensitive := loCaseInsensitive in Options;
loPartialKey не учитывается.
← →
Reindeer Moss Eater © (2003-08-26 13:02) [15]У блин, вот и верь после этого книгам.
← →
Vlad © (2003-08-26 13:05) [16]А вы уверены, что перед Locate, переменные gr1,kod1 равны именно тому значению которое нужно ?
Если да, тогда могу сие безобразие списать лишь на краемухауслышанное мнение о глючности BDE-шных TTable. Правда бездоказательно.
← →
Lina (2003-08-26 13:07) [17]Ладно, проверю. Скорее всего опять проблема в лишних пробелах или т.п. в строковых переменных. Я не была уверена в правильности написания команды locate. Спасибо за столь бурное участие в моей судьбе. :)
Страницы: 1 вся ветка
Текущий архив: 2003.09.15;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.022 c