![]() |
![]() |
![]() |
|
запрос через ADO в Oracle с параметрами | ☑ | ||
---|---|---|---|---|
0
alexsy
26.10.05
✎
11:55
|
Простенький запрос:
Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Новый COMОбъект("ADODB.Connection"); Command.CommandText = "select * from VW_RPT_CFT_PERSON_F_1C where DATE_MOVE >= :DATEN"; par = Command.CreateParameter("DATEN", 133, 1); par.Value = ДатаН; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); ломается: "Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): ORA-01008: не все переменные привязаны" если делать запрос без параметра :DATEN то все ок, но он мне нужен. Передавать его как сторку не очень бы хотелось. Почему же ломается? |
|||
1
Худой
26.10.05
✎
12:17
|
Ну ты перед запросом сформируй ТЕКСТ. И вместо ":DATEN" поставь, например "01.04.2005"
|
|||
2
Худой
26.10.05
✎
12:20
|
ТЕКСТ = "01.04.2005";
Command.CommandText = "select * from VW_RPT_CFT_PERSON_F_1C where DATE_MOVE >= "+ ТЕКСТ; |
|||
3
Худой
26.10.05
✎
12:22
|
Пардон. Не совсем внимательно прочитал. А почему "Передавать его как сторку не очень бы хотелось"?
В чем проблемы с этим? |
|||
4
alexsy
26.10.05
✎
12:22
|
(1) например такой запрос
select * from VW_RPT_CFT_PERSON_F_1C where DATE_MOVE >= '01/01/2000' работает. Но меня уже заусило разобраться как именно через ADO передать параметр и почему ломается. |
|||
5
колодина
26.10.05
✎
12:23
|
а параметр-строку передает? проблема только с датой?
|
|||
6
Худой
26.10.05
✎
12:23
|
И не надо "заусиваться". Зачем тебе думать как ADO работает?
|
|||
7
alexsy
26.10.05
✎
12:25
|
(3) "Надо делать не так, чтобы работало, а так, как правильно"
хотя бы по возможности ;-) (5) щас проверять буду |
|||
8
Худой
26.10.05
✎
12:29
|
(7)А правильнее - пиши тогда на оракле. Зачем 1с?
|
|||
9
alexsy
26.10.05
✎
12:36
|
(5) побарабану какой тип параметра. все ломаются одинаково.
(8) из оракла нада в 1С подтянуть данных. из-за специфики ситуации из оракла в 1С залесть низя. (да если чесно вообще не могу представить как это можно сделать-знаний не хватает, вот запросик написать - это другое дело :) ) |
|||
10
колодина
26.10.05
✎
12:38
|
значит вообще параметры не передает.... думаю, это может быть из-за разного представления данных .... тогда выхода нет, как формировать строку запроса....
|
|||
11
Худой
26.10.05
✎
12:40
|
Да это все понятно. Я к тому "что правильно". Правильно не всегда "правильно". (9)Пиши тогда систему ПОЛНОСТЬЮ на оракле. Это тоже будет, по своему, "правильно". Короче, определяй в 1с перед селектом то, что тебе нужно выбрать. Вот тебе и параметр будет.
|
|||
12
alexsy
28.10.05
✎
11:13
|
работает так:
Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Новый COMОбъект("ADODB.Connection"); Command.CommandText = "select * from VW_RPT_CFT_PERSON_F_1C where DATE_MOVE >= ?"; par = Command.CreateParameter("DATEN", 133, 3); Command.Parameters.Append(par); par.Value = ДатаН; Command.NamedParameters = Ложь; // можно не писать, по умолчанию и так ложь RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |