|
Ошибка при преобразовании типа данных nvarchar к bit | ☑ | ||
---|---|---|---|---|
0
Мисти
21.08.14
✎
19:10
|
Из 1С записываю в базу скл.
Ругается на Cmd.Execute(), когда определены 12 параметров. bit из них только один. Пыталась туда 0 засунуть, Ложь... Что она хочет?? |
|||
1
Мисти
21.08.14
✎
19:13
|
FALSE тоже не хочет.
|
|||
2
Господин ПЖ
21.08.14
✎
19:13
|
bit она хочет
|
|||
3
Voronve
21.08.14
✎
19:14
|
-1 запихни
|
|||
4
Мисти
21.08.14
✎
19:19
|
Почему-то пару дней назад 0 и 1 ее устраивали.
Как бит изобразить в 1С? |
|||
5
_fvadim
21.08.14
✎
19:21
|
а нолик не в кавычках?
|
|||
6
Мисти
21.08.14
✎
19:22
|
Нет, я просто 0 писала. Теперь никак не хочет.
|
|||
7
_fvadim
21.08.14
✎
19:23
|
а поле обязательное? мож его вообще опустить?
ну и запрос бы увидеть. |
|||
8
Мисти
21.08.14
✎
19:25
|
Ага, поле обязательное.
|
|||
9
Мисти
21.08.14
✎
19:43
|
Добилась новой ругани!
Конфликт типов операндов: bit несовместим с uniqueidentifier Это я закомментировала всё, что можно не писать (вдруг где-то еще проблема? ТекстЗапроса = "INSERT INTO gtw_ContractImport VALUES |(?, |NULL, |NULL, |?, |?, |NULL, |NULL, |NULL, |NULL, |NULL, |NULL, |?, |NULL)"; //[Id] [uniqueidentifier] NULL, 1 // [UI1C] [nvarchar](50) NULL, 2 // [ModifiedOn1C] [datetime2](7) NULL, 3 // [DoDelete] [bit] NOT NULL, 4 // [Number] [nvarchar](250) NOT NULL, 5 // [ContractType] [nvarchar](50) NULL, 6 // [ContractDate] [datetime2](7) NULL, 7 // [StartDate] [datetime2](7) NULL, 8 // [DueDate] [datetime2](7) NULL, 9 // [AccountId] [nvarchar](50) NULL, 10 // [TerminationContractDate] [datetime2](7) NULL, 11 // [TerminationReason] [nvarchar](250) NOT NULL, 12 // [PrimaryContractId] [uniqueidentifier] NUL 13 Cmd.CommandText = ТекстЗапроса; Если СокрЛП(СтрДоговорСКЛ.ID)="" Тогда Иначе Cmd.Parameters(0).Value = СтрДоговорСКЛ.ID; КонецЕсли; Cmd.Parameters(1).Value = FALSE;//СтрДоговорСКЛ.DoDelete; Cmd.Parameters(2).Value = СтрДоговорСКЛ.Number; Cmd.Parameters(3).Value = СтрДоговорСКЛ.TerminationReason; Cmd.Execute(); |
|||
10
vicof
21.08.14
✎
20:04
|
молотком уже воспользоваться предлагали?
|
|||
11
ДенисЧ
21.08.14
✎
20:08
|
(10) молоток в данном случае не поможет. Только стена и цианид. Причём совместно.
|
|||
12
vicof
21.08.14
✎
20:13
|
" Пыталась туда 0 засунуть, Ложь... Что она хочет??"
не нужно "туда" что попало совать) |
|||
13
Мисти
21.08.14
✎
21:39
|
Так чего, есть мысль, или только издевательства?
|
|||
14
Jaap Vduul
21.08.14
✎
23:07
|
(13)
Т.к. при вставке имена полей у тебя не обозначены, то, скорее всего, порядок полей в таблице не соответствует твоим ожиданиям. Для проверки можешь выполнить такой запрос: SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'gtw_ContractImport' ORDER BY ORDINAL_POSITION и проверить, соответствует ли полученный результат тому, что указано в (9) |
|||
15
Мисти
22.08.14
✎
09:36
|
Так а я же порядок полей описала! Я их вижу в таблице, они что, могут выглядить одним способом, а стоять - другим?
|
|||
16
ДенисЧ
22.08.14
✎
09:39
|
(15)
insert into table (fld1, fld2, ....) values (val1, val2,...) но ты всё упорно не хочешь читать документацию... |
|||
17
Мисти
22.08.14
✎
09:45
|
ТекстЗапроса = " SELECT COLUMN_NAME
|FROM INFORMATION_SCHEMA.COLUMNS |WHERE TABLE_NAME = N'gtw_ContractImport' |ORDER BY ORDINAL_POSITION"; Cmd.CommandText = ТекстЗапроса; Выборка = Cmd.Execute() А где я увижу результат? Я согласна в отладчике, но как? (16) - в смысле, что все можно поименовать? Я знаю, но я уже написала 3000 без имен, потому что все подряд записываю и всё работало, а тут вдруг перестало. |
|||
18
ДенисЧ
22.08.14
✎
09:46
|
(17) та под действием санкций пока ещё, не забыла?
|
|||
19
Мисти
22.08.14
✎
10:06
|
Не понимаю.
Мне всего - то - заполнить все столбцы. Вот найти всё нужное в 1с - это задача!! |
|||
20
Мисти
22.08.14
✎
10:08
|
Если я вижу такую таблицу
CREATE TABLE [dbo].[gtw_ContractImport]( [Id] [uniqueidentifier] NULL, [UI1C] [nvarchar](50) NULL, [ModifiedOn1C] [datetime2](7) NULL, [DoDelete] [bit] NOT NULL, [Number] [nvarchar](250) NOT NULL, [ContractType] [nvarchar](50) NULL, [ContractDate] [datetime2](7) NULL, [StartDate] [datetime2](7) NULL, [DueDate] [datetime2](7) NULL, [AccountId] [nvarchar](50) NULL, [TerminationContractDate] [datetime2](7) NULL, [TerminationReason] [nvarchar](250) NOT NULL, [PrimaryContractId] [uniqueidentifier] NULL ) ON [PRIMARY] Неужели там может быть другой порядок?? |
|||
21
igork1966
22.08.14
✎
10:11
|
мне показалось что
Cmd.Parameters(1).Value = FALSE;//СтрДоговорСКЛ.DoDelete; [ModifiedOn1C] [datetime2](7) NULL, Не? |
|||
22
_fvadim
22.08.14
✎
10:13
|
забавная табличка
[Id] [uniqueidentifier] NULL, зато [DoDelete] [bit] NOT NULL (20) надо сделать как в (16) |
|||
23
igork1966
22.08.14
✎
10:17
|
(22) так скорее всего bit это для Булево
и иметь три состояния в большинстве случаев совершенно излишне |
|||
24
Мисти
22.08.14
✎
10:18
|
(22) Зачем??
Мне тоже странно, что без идентификатора - пожалуйста, а причина расторжения, хоть в реальност обычно не существует - нужна! |
|||
25
igork1966
22.08.14
✎
10:19
|
(23) + чтобы потом не писать такое везде
ISNULL([DoDelete],0) = @Фильтр |
|||
26
Мисти
22.08.14
✎
10:19
|
(21) Не поняла вопрос!
Я закомментировала потом всё, что можно. |
|||
27
igork1966
22.08.14
✎
10:20
|
(26) в приведенном тобой явно смещены параметры
|
|||
28
Мисти
22.08.14
✎
10:20
|
(25) О чем ркечь???
|
|||
29
Мисти
22.08.14
✎
10:21
|
нет!! Где? целиком описано в 9
|
|||
30
igork1966
22.08.14
✎
10:21
|
(25) Если "[DoDelete] [bit] NULL"
то это уже три состояния, не два |
|||
31
igork1966
22.08.14
✎
10:22
|
(30) -> (28)
|
|||
32
Мисти
22.08.14
✎
10:22
|
Раньше я туда писала 0 и 1 и всё работало. Наверное, и правда, что-то с порядком.
|
|||
33
Мисти
22.08.14
✎
10:23
|
А! Это объяснение, почему не нулл, да? Чтобы было только 2 состояния, дошло.
|
|||
34
igork1966
22.08.14
✎
10:24
|
(33) именно
|
|||
35
Мисти
22.08.14
✎
10:25
|
ТекстЗапроса = "INSERT INTO gtw_ContractImport (DoDelete,Number,TerminationReason) VALUES (0,""345"",""финита"")"
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимое имя столбца "345". |
|||
36
Мисти
22.08.14
✎
10:30
|
ТекстЗапроса = "INSERT INTO gtw_ContractImport (DoDelete,Number,TerminationReason) VALUES (0,’345’,’финита’)";
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Неправильный синтаксис около конструкции "’". |
|||
37
ДенисЧ
22.08.14
✎
10:34
|
'345'
|
|||
38
igork1966
22.08.14
✎
10:34
|
(36) где ты такие берешь
INSERT INTO gtw_ContractImport (DoDelete,Number,TerminationReason) VALUES (0,'345','финита') |
|||
39
Мисти
22.08.14
✎
10:39
|
(38) в книжке!
|
|||
40
Мисти
22.08.14
✎
10:41
|
Так кто мне скажет, если я в самой базе вижу определенный порядок столбцов - он может быть не таким??
Ура. Так съела. |
|||
41
Torquader
22.08.14
✎
23:13
|
А [Number] написать так не пробовали ?
Что-то мне кажется, что не все слова SQL правильно переваривает. |
|||
42
Torquader
22.08.14
✎
23:15
|
И Можно CAST(0 AS BIT) попробовать, если хочется чудо.
Но у вас, как всегда, бобики зарыты в соседнем районе. P.S. борьба женщины с SQL-сервером часто заканчивается победой женщины, и потом, пока админы поднимают базу из BackUp-а женщина начинает решать другую задачу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |