|
|
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
В каком виде нужно указывать критерий для поиска в ADO-рекородсете ? ADP 2000 rstDemand.Find "[DemandDate]='" & Format$(rstDemandImport![DemandDate], "mm\/dd\/yy") & "'", , adSearchForward, 1 Не работает, ругается, что аргументы имеют неверный тип и т.д. Пробовал апострофы менять на # - то же самое. При указании даты в WHERE для строки SQL вышеуказанная конструкция работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 07:06 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
когда работаешь через ADO с MS SQL Server дату в строку SQL можно подставлять в виде: 'yyyy-mm-dd' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 08:53 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
не уверен что пройдет в конкретном случае но можно попробовать так: rstDemand.Find "[DemandDate]=" & clng(rstDemandImport![DemandDate]) -2 , , adSearchForward, 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 08:57 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Просто небольшое предостережение по поводу преобразования даты в лонг. В случае если в поле хранится дата со временем могут быть некоторые неприятные моменты. Вот пример на T-SQL: Код: plaintext 1. 2. 3. ЗЫ: Хотя в данном случае скорей всего это сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:09 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Что показывает в Immediate Window ?rstDemand.Fields("DemandDate").Type ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:30 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю. Вот так по отдельности работает rstDemand.Find "[DemandNum]='П-07-247'", , adSearchForward, 1 rstDemand.Find "[DemandDate]='2003-06-21'", , adSearchForward, 1 но мнне надо rstDemand.Find "[DemandNum]='П-07-247' AND [DemandDate]='2003-06-21'", , adSearchForward, 1 Так не хочет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:39 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
rstDemand.Fields("DemandDate").Type 135 rstDemandImport.Fields("DemandDate").Type 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:42 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Ничего не понимаю. А это уже в хелп: Only a single-column name may be specified in criteria. This method does not support multi-column searches. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:43 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
И как же тогда в рекордсете ADO искать по нескольким полям ? Два раза подряд делать rst.Find ? В DAO можно было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:54 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
И как же тогда в рекордсете ADO искать по нескольким полям ? Два раза подряд делать rst.Find ? Ага, наверное... Только сначала отсортироваться надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 09:56 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Как вариант - Filter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:03 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
И как же тогда в рекордсете ADO искать по нескольким полям ? Соболезную Используй свойство Filter Например: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:04 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
В догонку Можно использовать сочетание Filter и Find Сначала Filter по одному критерию ,потом Find по другому перед применением Filter (или после) ставь rs.Filter="" или rs.filter=adFilterNone 'отменяет предыдущее значение свойства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:18 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
А не лучше ли создать хранимую процедуру? Хотя я может и не знаю всей задачи целиком, но стоит ли в данном случае использовать поиск на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:33 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Сделал через Filter, все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:39 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Согласен с Senin Viktor Можно еще и рекордсет сразу с условием открывать. Действительно задача не известна, но это еще с DAO тянется - для поиска одной нужной записи открыть рекордсет, в нем по условию найти эту запись. В клиент-серверной технологии нужно экономить с траффиком - открывать только те наборы записей, которые действительно нужны, а не тащить через сетку весь набор, а потом на клиенте в нем что-то искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:46 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
В клиент-серверной технологии нужно экономить с траффиком Нипральна Экономить с траффиком нужно и в файл-серверной архитектуре тоже. Но в случае клиент-сервера это сделать можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 10:59 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
Спасибо, incold - а то у меня нужных слов не нашлось :) Сам сейчас этим "мучаюсь" - все свои Find, Seek переделываю в ХП - занятие более чем увлекательное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 11:00 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
2 Senin Viktor Необязательно все переделывать, кое-что можно и на рекордсетах оставить, только открывать их сразу с необходимым ограничением. 2 ALL Может кому пригодится: иногда нужно вернуть значение из таблицы/запроса по какому-то условию, для этого многие пользуются функциями Dmin() Dmax() Dlookup() однако эти функции имеют ряд ограничений и по быстродействию оставляют желать лучшего. Я пользуюсь собственной функцией. my_lookup(Выражение as String, Таблица_или_текст_запроса as String, Условие as String) Думаю, что функция внутри делает ясно Отмечу только, что в текст формируемой строки запроса а добавил TOP 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 11:19 |
|
||
|
Поиск в рекордсете ADO
|
|||
|---|---|---|---|
|
#18+
кстати, про DLookup (искал искла ссылку, не нашел, хорошо что в другом форуме АлексейЕ подсказал http://hiprog.com/access/article.asp?id=314 Сейчас ещё скажу что у меня своих Lookupов уже несколько (использую Access 97 mdb) - через DAO, через ADO, с множественным возвратом параметров и т.д. Самый быстрый конечно через ADO (только объект ADODB.Connection надо закешировать - не обязательно соединение открытым держать, главное чтобы объект не создавался заново каждый раз.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2003, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32201714&tid=1680683]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 387ms |

| 0 / 0 |
