|
Update в postgresql из 1с | ☑ | ||
---|---|---|---|---|
0
10kgcaxapa
31.08.17
✎
11:14
|
Всем привет!
Возникла проблема при изменении записи в таблице sql. Запрос select к базе на сервере отрабатывает без ошибок,но вот update не работает,хотя в pgadmin на localhost та же конструкция работает. Может кто-что подскажет?Может есть какие-нибудь права на чтение-запись? перем НаборЗаписей, ИдБаланса; Процедура КнопкаВыполнитьНажатие(Кнопка) Connection = Новый COMОбъект("ADODB.CONNECTION"); Connection.ConnectionString = "Driver={PostgreSQL ODBC Driver(Unicode)}; Server="+"172.21.3.251"+";Port=" + "5432"+";Database="+"set"+";Uid="+"postgres"+";Pwd="+"00PaSsMSSQL!"+";STMT="+"utf8"; Попытка //Состояние("Подключение к базе PostgreSQL..."); Connection.open(); //Сообщить("База PostgreSQL подключена"); Исключение Сообщить("Не могу подключиться к базе PostgreSQL "); КонецПопытки; НаборЗаписей = Новый ComObject("ADODB.RecordSet"); Команда = Новый COMОбъект("ADODB.Command"); Попытка Команда.ActiveConnection = Connection; ТекстЗапроса= "SELECT |cards_bonusaccounts_balance.bonusaccounts_id |FROM | public.cards_bonusaccounts_balance, |public.card_cards, | public.card_internalcard_bonusaccount |WHERE |cards_bonusaccounts_balance.bonusaccounts_id = card_internalcard_bonusaccount.bonusaccountid AND |card_internalcard_bonusaccount.cardid = card_cards.id AND |cards_bonusaccounts_balance.balancetype = 0 and |card_cards.numberfield='"+НомерКарты+"'"; Команда.CommandText =ТекстЗапроса; НаборЗаписей = Команда.Execute(); ИдБаланса=НаборЗаписей.Fields(0).Value; Исключение Сообщить("Нет данных."); Возврат; КонецПопытки; Сообщить(ИдБаланса); Команда = Новый COMОбъект("ADODB.Command"); Попытка Команда.ActiveConnection = Connection; ТекстЗапроса = "UPDATE cards_bonusaccounts_balance |set ammount=0 |WHERE cards_bonusaccounts_balance.balancetype = 0 and |cards_bonusaccounts_balance.bonusaccounts_id = '"+Формат(ИдБаланса,"ЧГ=0")+"'"; Команда.Execute(ТекстЗапроса); Исключение Сообщить("Не получилось"); КонецПопытки; КонецПроцедуры |
|||
1
Вафель
31.08.17
✎
11:15
|
id разве строка?
|
|||
2
10kgcaxapa
31.08.17
✎
11:16
|
(1) Это формат числа
|
|||
3
10kgcaxapa
31.08.17
✎
11:26
|
||||
4
LuciferArh
31.08.17
✎
11:31
|
(0) А какой ошибкой матерится? Сам текст запроса, который отдается в команду, можешь привести?
|
|||
5
LuciferArh
31.08.17
✎
11:32
|
(4) + ошибка - это не та, которая "Не получилось", а реальная, которую сервер сообщает.
|
|||
6
10kgcaxapa
31.08.17
✎
11:35
|
(5) А как узнать? Я не в куре...Где-то в логах видно?
|
|||
7
arsik
гуру
31.08.17
✎
11:38
|
(6) ОписаниеОшибки()
|
|||
8
Вафель
31.08.17
✎
11:40
|
да просто попытку убрать
|
|||
9
10kgcaxapa
31.08.17
✎
11:42
|
{Форма.Форма.Форма(52)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не был задан текст команды для объекта команды.
|
|||
10
Вафель
31.08.17
✎
11:44
|
А если так
Команда.CommandText =ТекстЗапроса; Команда.Execute() |
|||
11
Господин ПЖ
31.08.17
✎
11:47
|
Команда.CommandText =ТекстЗапроса;
НаборЗаписей = Команда.Execute(); Команда.Execute(ТекстЗапроса); ничего не смущает? Команда про свой тип: Команда.CommandType = adCmdText; сама догадываться должна? |
|||
12
10kgcaxapa
31.08.17
✎
11:49
|
(10) Так работает,спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |