|
v7: запрос к dbf | ☑ | ||
---|---|---|---|---|
0
Junior1s
26.06.14
✎
07:53
|
Привет всем,
картина такая. Есть две базы (1 и 2), по структуре идентичные. Работал вот такой запрос, из 1 базы к dbf 2 базы. Этим запросом из dbf я тащил даты продаж купонов и возврата из 2 базы в свою 1 базу. СтрокаСоединение = "Provider=VFPOLEDB.1;Data Source="+СокрЛП(ПутьДоОргБД)+";Mode=ReadWrite;Collating Sequence=MACHINE"; DB = СоздатьОбъект("OLEDBData"); Рез = DB.Соединение(СтрокаСоединение); Запрос = DB.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')"); ТекстЗапроса = " |SELECT | Серия.code as Номер_Купона, | $Серия.ДатаВыдачи as Дата_Продажи, | $Серия.ДатаВозврата as Дата_Возврата |FROM | $Справочник.Серия as Серия |WHERE | (($Справочник.Серия.ДатаВыдачи >= :НачДата~~) and ($Справочник.Серия.ДатаВыдачи <= :КонДата~~)) |ORDER BY | Серия.code |"; Запрос.УстановитьТекстовыйПараметр("НачДата", Дата1); Запрос.УстановитьТекстовыйПараметр("КонДата", Дата2); _тз = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); Я изменил в 1 базе реквизит "ДатаВозврата", сделал его периодическим. Запрос поломался, так как пишет, что нет такого поля в табличке. Почитав в инете, я понял, что все пер. рекв. хранятся в табличке 1SCONST.DBF, но ведь во 2й базе этот реквизит не периодический, почему не работает запрос. И если я добавлю левое соединение к этой таблице, как этот запрос будет отрабатывать во 2й базе ? |
|||
1
Junior1s
26.06.14
✎
09:56
|
апну чтоли :)
|
|||
2
Junior1s
26.06.14
✎
14:17
|
еще один ап.
|
|||
3
acanta
26.06.14
✎
14:19
|
В первой базе той скл запрос компилируется как к своей?
|
|||
4
КонецЦикла
26.06.14
✎
14:41
|
Тянешь из первой базы во вторую?
И в первой базе сделал реквизит периодическим? Ну вроде все сходится, конечно поломался. Перед юзанием прямого доступа надо хотя бы приблизительно понимать что где хранится и как менять структуру. |
|||
5
Junior1s
26.06.14
✎
14:44
|
не из 1й во 2ю, а из 2й в 1ю.
|
|||
6
acanta
26.06.14
✎
14:46
|
Неважно туда или обратно, запрос лезет в чей ДДшник?
|
|||
7
Ёпрст
26.06.14
✎
14:48
|
вообще не так надо делать было..
Можно и в 1 запросе обращаться к разным базам данных, и что самое главное, заставить работать метапарсер. |
|||
8
Ёпрст
26.06.14
✎
14:49
|
т.е, строку подключения, можно было тупо травить на КаталогИБ, а не на каталог в стороннюю бд.
|
|||
9
КонецЦикла
26.06.14
✎
14:50
|
Вот может пригодиться для синхронизированного переноса
http://1c911.by/stati_1s/statya-zaprosy-v-1s-k-dvum-bazam-odnovremenno-dbf-ole-db.htm |
|||
10
Junior1s
26.06.14
✎
15:04
|
спасибо.
|
|||
11
pechevas
26.06.14
✎
15:17
|
Попробуйте так:
ТекстЗапроса = " |SELECT | Серия.code as Номер_Купона, | $Серия.ДатаВыдачи as Дата_Продажи, | $Серия.ДатаВозврата as Дата_Возврата |FROM | $Справочник.Серия as Серия |LEFT OUTER JOIN ( | SELECT | Период.objid as objid, | Период.value as Цена | FROM 1sconst as Период | WHERE | Период.date IN | (SELECT | MAX(Константа.date) | FROM 1sconst as Константа | WHERE | (Константа.date <= :КонДата~~) | AND (Константа.id = $ИсторияРеквизита.Серия.ДатаВозврата) | AND (Константа.objid = Период.objid) | ) | AND Период.id = $ИсторияРеквизита.Серия.ДатаВозврата | ) as ДатаВозврата ON ДатаВозврата.objid = Серия.id |WHERE | (($Справочник.Серия.ДатаВыдачи >= :НачДата~~) and ($Справочник.Серия.ДатаВыдачи <= :КонДата~~)) |ORDER BY | Серия.code |"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |