|   |   | 
| 
 | 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) Так работает,спасибо)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |