Имя: Пароль:
1C
1С v8
insert FDB из 1С
,
0 Юзер123
 
naïve
07.10.14
10:06
Доброго дня.

Пытаюсь настроить insert  из 1с в FDB  базу.


Вот строка запроса с данными

Insert INTO STAFF_CARDS_AREAS (ID_STAFF_CARDS_AREAS,STAFF_CARDS_ID, AREAS_TREE_ID,PROHIBIT,AREAS_IS_REQUIRED) values (777, 9995, 7 433, 0,0)


вот сам запрос


ТекстЗапросаНаДоступ =  "Insert INTO STAFF_CARDS_AREAS (ID_STAFF_CARDS_AREAS,STAFF_CARDS_ID, AREAS_TREE_ID,PROHIBIT,AREAS_IS_REQUIRED) " +
            "values ("+ ID_STAFF_CARDS_AREAS + ", " + СокрЛП(ID_CARD) + ", " + AREAS_TREE_ID + ", 0,0)";



Текст ошибки
Проблемы с выполнением запроса к FireBird{Форма.Форма.Форма(643)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 131



Таблица в FDB

http://i.gyazo.com/579610a2acd5f52b34a82ee24c5dc67e.png

в чем дело подскажите кто знает)
1 Banned
 
07.10.14
10:07
Сообщить(ТекстЗапросаНаДоступ);
2 Юзер123
 
naïve
07.10.14
10:09
(1)

Вот строка запроса с данными

Insert INTO STAFF_CARDS_AREAS (ID_STAFF_CARDS_AREAS,STAFF_CARDS_ID, AREAS_TREE_ID,PROHIBIT,AREAS_IS_REQUIRED) values (777, 9995, 7 433, 0,0)


все уже написал же)
3 Banned
 
07.10.14
10:09
"7 433"

Сюда внимательно смотри...
4 Ненавижу 1С
 
гуру
07.10.14
10:10
AREAS_TREE_ID  это число, используй функцию формат, чтобы исключить в преобразовании к строке неразрывный пробел
Конкретно здесь: 7 433
5 Юзер123
 
naïve
07.10.14
10:11
(4) (3)

сейчас уберу пробелу и  преобразую в число) .  минутку)
6 Юзер123
 
naïve
07.10.14
10:19
просто убрал пробелы и все заработало. Спасибо)
7 Юзер123
 
naïve
07.10.14
10:45
Вопрос в  по горячим следам.

Если надо сделать по 1 таблице
STAFF_CARDS_AREAS  2 строчки.  Как быть? Надо что бы ID_STAFF_CARDS_AREAS было уникальным. Но если вставить запрос в цикл то после записи данные не обновляются.

С SQL  запросами не особо дружу. Знаю есть некий UBDATE  но как оно работает ?
8 Юзер123
 
naïve
07.10.14
10:45
т.е.  надо сделать так что бы после записи в таблицу данные сразу же обновлялись..
9 Kurbash
 
07.10.14
10:49
так апдейт таблицу по этому ID
10 Юзер123
 
naïve
07.10.14
10:49
(9)  как это будет выглядеть?) ща погуглю)
11 Kurbash
 
07.10.14
10:50
update table ....set...where  ID_STAFF_CARDS_AREAS=...
12 Kurbash
 
07.10.14
10:50
update table ....set...where  ID_STAFF_CARDS_AREAS in (select ID_STAFF_CARDS_AREAS from....)
13 Юзер123
 
naïve
07.10.14
10:52
(12) (11)     ....  тут в  ступор вводят)
14 Kurbash
 
07.10.14
10:53
три точки в ступор вводят?
15 Юзер123
 
naïve
07.10.14
10:54
UPDATE STAFF_CARDS_AREAS
SET ID_STAFF_CARDS_AREAS='МойИд'


так?
16 Kurbash
 
07.10.14
10:55
нет,UPDATE STAFF_CARDS_AREAS set каким столбцам какие значения присваиваешь SET ID_STAFF_CARDS_AREAS='МойИд'
17 Kurbash
 
07.10.14
10:55
UPDATE STAFF_CARDS_AREAS set каким столбцам какие значения присваиваешь where ID_STAFF_CARDS_AREAS='МойИд'
18 Юзер123
 
naïve
07.10.14
10:56
(16)

ОК спс. Сейчас попробуем
19 Юзер123
 
naïve
07.10.14
10:57
set  повторяет то что в insert  написано?
20 Юзер123
 
naïve
07.10.14
10:57
через "="
21 Kurbash
 
07.10.14
10:57
22 Kurbash
 
07.10.14
10:59
Update INTO STAFF_CARDS_AREAS set AREAS_TREE_ID=777,PROHIBIT=9995 и так далее where where ID_STAFF_CARDS_AREAS='МойИд'
23 Kurbash
 
07.10.14
11:00
Update STAFF_CARDS_AREAS set AREAS_TREE_ID=777,PROHIBIT=9995 и так далее where where ID_STAFF_CARDS_AREAS='МойИд' как то так
24 Юзер123
 
naïve
07.10.14
11:07
(23) (21)

спасибо. учим)
25 Юзер123
 
naïve
07.10.14
11:21
ТекстUpdate = "Update STAFF_CARDS_AREAS set STAFF_CARDS_ID = "+СокрЛП(ID_CARD)+", PROHIBIT = 0, AREAS_IS_REQUIRED = 0, AREAS_TREE_ID = " +AREAS_TREE_ID+"
        | where ID_STAFF_CARDS_AREAS="+ ID_STAFF_CARDS_AREAS ;


ЗапросНаДоступ.Open(ТекстUpdate);


как то так?
26 Kurbash
 
07.10.14
11:23
похоже на правду, про пробелы не забудь
27 Юзер123
 
naïve
07.10.14
11:24
(26)  да проверил) все работает) спасибо.
28 Юзер123
 
naïve
07.10.14
11:27
а если без update  в какой момент происходит обновление таблиц?
29 Kurbash
 
07.10.14
11:28
после insert надо принять транзакцию. Для этого етсь команда Commit
30 Kurbash
 
07.10.14
11:28
т.е. инсерт и т.д тотом ставишь ";" и соммит
31 Юзер123
 
naïve
07.10.14
11:42
(30)   спасиб. надо почитать таки про sQl  запросы...
32 Kurbash
 
07.10.14
11:47
это уже не запросы это PL/SQL