|
v7: 1C++ Покажите пример запроса к DBF базе за период по позицию документа | ☑ | ||
---|---|---|---|---|
0
totparen
09.11.12
✎
15:08
|
Ребята, киньте пожалуйста примером запроса. Мне нужно выбрать все документы с указанной даты до указанной позиции документа (не на конец даты)
|
|||
1
totparen
09.11.12
✎
15:14
|
Текущий текст запроса:
" |SELECT | * | |FROM | 1SJourn Жур |INNER JOIN | $Документ.ПоступлениеТМЦ as Док ON Док.IDDoc = Жур.IDDoc AND | Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ AND | Жур.Closed = 1 | " |
|||
2
akaBrr
09.11.12
✎
15:19
|
(0) http://www.1cpp.ru/forum/YaBB.pl?board=query - тут были?
|
|||
3
Ёпрст
09.11.12
✎
15:20
|
дык передавай позицию и привет
|
|||
4
totparen
09.11.12
✎
15:23
|
(3) Дык ведь в ДБФ ке дата и время документа хранится разных полях. Или сработает?
|
|||
5
МихаилМ
09.11.12
✎
15:24
|
в базе документы только опер учета?
(намек на Closed = 1) |
|||
6
totparen
09.11.12
✎
15:27
|
Только опер. Но вопрос не в этом.
Как-то нужно период по указанный документ. |
|||
7
Ёпрст
09.11.12
✎
15:29
|
эх.ё..
|
|||
8
totparen
09.11.12
✎
15:31
|
(3) (4)+
Попытался впихнать в параметр КонДата позицию документа - ругается. Запрос.УстановитьТекстовыйПараметр("КонДата", Докум.ПолучитьПозицию()); |
|||
9
totparen
09.11.12
✎
15:35
|
МОЖно конечно через объединение сперва получить данные на начало даты, потом данные за текущий день до позиции. Но проще можно?
|
|||
10
Ёпрст
09.11.12
✎
15:40
|
(0)
ОлеДБКоманда = глОлеДБ.СоздатьКоманду(); ОлеДБКоманда.Выполнить("EXECSCRIPT('SET ANSI OFF')"); ........... |where dtos(Жур.date)+Жур.time+Жур.iddoc between |dtos(:НачПериод~~)+' '+' ' |And dtos(:КонПериод~~)+'ZZZZZZ'+'ZZZZZZZZZ' это для дат, для позиции, заместо dtos(кон период)+... втыкаешь позицию документа. |
|||
11
totparen
09.11.12
✎
15:45
|
(10) Мерси. Буду пробывать.
|
|||
12
Ёпрст
09.11.12
✎
15:46
|
позицию получаешь через
ПолучитьДатуВремяИдДок |
|||
13
Ёпрст
09.11.12
✎
15:47
|
объекта метадатаворк.
|
|||
14
Ёпрст
09.11.12
✎
15:47
|
пример лень рисовать
|
|||
15
Ёпрст
09.11.12
✎
15:49
|
+ строка для подключения должна быть такая:
ОлеДБ = СоздатьОбъект("OLEDBData"); Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ()+ ";Mode=ReadWrite;Collating Sequence=MACHINE"; ОлеДБ.Соединение(Соединение); Запрос = ОлеДБ.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); // Устанавливаем время ожидания захвата таблиц , если во время выполнения запроса кто то проводит документы // Очень полезная функция - аналогична времени ожидания в 1С Запрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')"); // Убираем буфепизацию, чтобы данные возвращаемые запросам всегда были актуальны Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");// Отключили блокировки |
|||
16
totparen
12.11.12
✎
07:45
|
(10)
Я так понимаю 'ZZZZZZ'+'ZZZZZZZZZ', это будет на конец периода, а как с позицией документа применять эти ЗЗЗЗ? |
|||
17
totparen
12.11.12
✎
08:13
|
(10) Спасибо друг!
Условие получилось следующее |dtos(Жур.Date)+Жур.Time+Жур.IdDoc BETWEEN dtos(:НачДата~~)+' '+' ' AND :КонДата Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата); Запрос.УстановитьТекстовыйПараметр("КонДата", МД.ПолучитьДатуВремяИдДок(Докум.ПолучитьПозицию())); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |