|
Как заполнить таблицу SQL из 1С??? | ☑ | ||
---|---|---|---|---|
0
_Dynamic_
25.07.12
✎
12:49
|
Есть таблица значений. Как мне ее закинуть в SQL????
|
|||
1
Ненавижу 1С
гуру
25.07.12
✎
12:49
|
лопатой
|
|||
2
Spieluhr
25.07.12
✎
12:51
|
адо
|
|||
3
х86
25.07.12
✎
12:51
|
Врем таблицы, не?
(0)а с какой целью интересуетесь? |
|||
4
Fragster
гуру
25.07.12
✎
12:52
|
insert into table values...
|
|||
5
Sorm
25.07.12
✎
12:52
|
(0) Соединяешься с SQL-сервером, создаешь там таблицу, потом делаешь insert, профит.
|
|||
6
_Dynamic_
25.07.12
✎
12:53
|
Задача стоит такая, данные из 1с-ки закинуть в sql, а из sql данные на сайт будут тянутся
|
|||
7
sash-ml
25.07.12
✎
12:54
|
выгружаешь в CSV делаешь Bulk Insert
|
|||
8
Fragster
гуру
25.07.12
✎
12:55
|
(6) я не против, делай
|
|||
9
Cандер
25.07.12
✎
13:09
|
Как-то так:
database="DB"; //имя базы uid="123"; //логин pwd="123"; //пароль Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = "Provider=MSDAORA;Password="+pwd+";User ID="+uid+";Data Source="+database+";Persist Security Info=True;CharSet=AMERICAN_AMERICA.CL8MSWIN1251;"; //строка подключения. Сейчас для ORACLE (необходимо поменять на нужное) Попытка Соединение.Open(); Возврат Соединение; Исключение Предупреждение("Не удалось соединиться с базой данных!"); Сообщить(ОписаниеОшибки()); Возврат ложь; КонецПопытки; Для каждого Строка из ТЗ Цикл ТекстЗапросаADO = "INSERT INTO TableName(Rekv1, Rekv2) VALUES (" + Строка.Значение1 + ", " + Строка.Значение2 + ", " + ")"; КонецЦикла; Соединение.Execute(ТекстЗапросаADO,,128); Соединение.Close(); |
|||
10
_Dynamic_
25.07.12
✎
13:19
|
Сандер, пишет Ошибка при вызове метода контекста (Execute) :(
|
|||
11
Fragster
гуру
25.07.12
✎
13:19
|
(10) не повезло
|
|||
12
Cандер
25.07.12
✎
13:53
|
(10) + Строка.Значение2 + ", " \\тут лишняя зп.
Проверь какой запрос получается в итоге. Должен быть INSERT INTO TableName(Rekv1, Rekv2) VALUES (1,2) |
|||
13
Maxus43
25.07.12
✎
13:55
|
(12) почто MSDAORA юзаеш? этож оракл
|
|||
14
Cандер
25.07.12
✎
13:56
|
(13) в листинге я указал, что надо поменять немного строку подключения под свою СУБД
|
|||
15
Cандер
25.07.12
✎
13:57
|
(13) + Я действительно юзаю Oracle
|
|||
16
Maxus43
25.07.12
✎
13:58
|
(14) упс, комент не прочитал)
|
|||
17
_Dynamic_
25.07.12
✎
14:06
|
У меня на выходе получается что то типа
INSERT INTO TableName(Rekv1, Rekv2) VALUES (1,2) INSERT INTO TableName(Rekv1, Rekv2) VALUES (3,4) ......... INSERT INTO TableName(Rekv1, Rekv2) VALUES (1,2) |
|||
18
Cандер
25.07.12
✎
14:24
|
(17) стоит признать, что запрос в цикле - не айс. Перенеси Execute в цикл. Ты же их должен выполнять каждый раз ) Моя ошибка цикл для тебя добавил )
|
|||
19
_Dynamic_
25.07.12
✎
14:49
|
Сандер, все равно эту же ошибку вываливает даже если в цикле :(
|
|||
20
Cандер
25.07.12
✎
14:54
|
(19) Код в студию
|
|||
21
Cандер
25.07.12
✎
14:58
|
(19) может у тебя строки и даты там? Строки надо обрамлять апосторфами "'", даты преобразовывать средствами SQL
|
|||
22
_Dynamic_
25.07.12
✎
14:59
|
ТекстЗапросаADO = "";
Для каждого СтрРезультатВыборки из РезультатВыборки Цикл ТекстЗапросаADO = ТекстЗапросаADO + "INSERT INTO ostatki(id, name, city, ed_izm, obem, massa, price, number) VALUES (" + СокрЛП(СтрРезультатВыборки.КаталожныйНомер)+", " + СокрЛП(СтрРезультатВыборки.НаименованиеПолное)+", " + СокрЛП(СтрРезультатВыборки.Город)+", " + Строка(СтрРезультатВыборки.ОсновнаяЕдиницаИзмерения)+", " + Строка(СтрРезультатВыборки.Объем)+", " + Строка(СтрРезультатВыборки.Масса)+", " + Строка(СтрРезультатВыборки.Цена) + Строка(СтрРезультатВыборки.Количество) + ")"; Соединение.Execute(ТекстЗапросаADO,,128); КонецЦикла; Соединение.Close(); |
|||
23
Serginio1
25.07.12
✎
15:00
|
ВыполнитьSQL_ИзТЗ
лМета = СоздатьОбъект("MetaDataWork"); СписокМета = СоздатьОбъект("ТаблицаЗначений"); СписокМета.НоваяКолонка("ID","Число"); Для ъ = 1 По мСпр.Реквизит() Цикл Если мСпр.Реквизит(ъ).Периодический = 1 Тогда СписокМета.НоваяСтрока(); СписокМета.ID = Число(лМета.ИДОбъекта(мСпр.Реквизит(ъ))); КонецЕсли; КонецЦикла; лЗапрос = СоздатьОбъект("ODBCRecordSet"); лЗапрос.Выполнить(" |IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE |ID=OBJECT_ID('tempdb..#TempTab') AND sysstat & 0xf = 3 ) |DROP TABLE #TempTab); лЗапрос.Выполнить(" |CREATE TABLE #TempTab (ID INT, PRIMARY KEY CLUSTERED (ID) )"); лЗапрос.Подготовить("Insert into #TempTab Values (?)"); лЗапрос.ВыполнитьSQL_ИзТЗ(СписокМета); |
|||
24
_Dynamic_
25.07.12
✎
15:02
|
всмысле вот, старый код скопал ))
Для каждого СтрРезультатВыборки из РезультатВыборки Цикл ТекстЗапросаADO = "INSERT INTO ostatki(id, name, city, ed_izm, obem, massa, price, number) VALUES (" + СокрЛП(СтрРезультатВыборки.КаталожныйНомер)+", " + СокрЛП(СтрРезультатВыборки.НаименованиеПолное)+", " + СокрЛП(СтрРезультатВыборки.Город)+", " + Строка(СтрРезультатВыборки.ОсновнаяЕдиницаИзмерения)+", " + Строка(СтрРезультатВыборки.Объем)+", " + Строка(СтрРезультатВыборки.Масса)+", " + Строка(СтрРезультатВыборки.Цена) + Строка(СтрРезультатВыборки.Количество) + ")"; Соединение.Execute(ТекстЗапросаADO,,128); КонецЦикла; Соединение.Close(); |
|||
25
Cандер
25.07.12
✎
15:02
|
Кавычки для всего где не числа добавь
|
|||
26
Cандер
25.07.12
✎
15:03
|
"'" + СокрЛП(СтрРезультатВыборки.КаталожныйНомер)+"', "
|
|||
27
_Dynamic_
25.07.12
✎
15:13
|
Вот что на выходе у меня получается
INSERT INTO ostatki(id, name, city, ed_izm, obem, massa, price, number) VALUES ("", "Держатель номерных знаков", "", "шт", "0", "0", "12 475", "17") правильно все? Все значения у меня типа строка |
|||
28
ДенисЧ
25.07.12
✎
15:19
|
(27) замени " на '
|
|||
29
х86
25.07.12
✎
15:30
|
(6)создай РС(можно справочник) и стандарно пиши в него данные
|
|||
30
_Dynamic_
25.07.12
✎
15:45
|
Всем большое спасибо за помощь! Заработало! :)
|
|||
31
dangerouscoder
25.07.12
✎
15:56
|
(30) можно еще юзать параметризированный запрос
http://www.sql.ru/forum/actualthread.aspx?tid=489735 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |