Имя: Пароль:
1C
 
Запись в базу SQL
0 mdv92
 
06.12.10
16:14
MyRst.Fields("Resultat").Value="Киргуду";
MyRst.Update();
Эти волшебные слова у меня есть. Мне не хватает - как сказать, в какую именно таблицу я хочу писать и как добавить новую запись.
1 Grusswelle
 
06.12.10
16:15
а это смотря как тебе надо: замещением или добавлением
2 ado
 
06.12.10
16:18
3 mdv92
 
06.12.10
16:19
(1) Добавлением!
4 el-gamberro
 
06.12.10
16:20
Update table
Set field  = 'Киргуду'
Where ...
5 ado
 
06.12.10
16:21
(3) Используй SQL-запрос INSERT. Писать в базу через рекордсет тебе не любой провайдер позволит.
6 mdv92
 
06.12.10
16:29
Предположим, мне надо создать 10 новых записей с номером 1,2, ... 10 и словом Кирдуду в таблице TLIST
7 mdv92
 
06.12.10
16:33
INSERT INTO TLIST VALUES ('1', Кирдуду);
Так? Уже записалось?
Потом только
   MyRst.Close();
   Коннект.Close();
или TLIST.Close();
8 el-gamberro
 
06.12.10
16:41
(7) что за объект TLIST?)
9 mdv92
 
06.12.10
16:43
(7) Это одна из таблиц базы.
10 el-gamberro
 
06.12.10
16:49
(9) Рекомендую объект Command

objComm = Новый COMОбъект("ADODB.Command");
objComm.CommandText = "INSERT INTO TLIST VALUES ('1', Кирдуду);";
objComm.Execute();
11 el-gamberro
 
06.12.10
16:49
+10 objComm = Неопределено;
12 КМ155
 
06.12.10
16:58
(0) во нафлюдили

у MyRst ест метод AddNew()
13 mdv92
 
06.12.10
17:01
Сначала написано:
СтрСоединения = "dri.....245376;";
   
Коннект = Новый COMObject("ADODB.Connection");
КонКоманда = Новый COMObject("ADODB.Command");
Коннект.Open(СтрСоединения);
КонКоманда.ActiveConnection = Коннект;
КонКоманда.CommandText = "select id from "+ПолеВводаНаименованиеБазы+".dbo.TLIST";
КонКоманда.Prepared = 1;

АДОРекордСет = Новый COMОбъект("ADODB.RecordSet");
АДОРекордСет = КонКоманда.Execute();

Для каждого Эл из Справочники.Номенклатура Цикл

   ТекЭл=Эл.ПолучитьСсылку;
   NSERT INTO АДОРекордСет VALUES (ТекЭл.Код,ТекЭл.Родитель.ПолныйКод,ТекЭл.Наименование);
   КонецЦикла;
14 mdv92
 
06.12.10
17:02
Похоже?
15 КМ155
 
06.12.10
17:03
(13) бред
близкий к помешательству
16 mdv92
 
06.12.10
17:08
(15) Бред - только здесь!
"NSERT INTO АДОРекордСет VALUES"
17 el-gamberro
 
06.12.10
17:08
(13) вау, шикарно просто))))
18 ado
 
06.12.10
17:11
(13) Тьфу, блин. Позовите программиста.
19 el-gamberro
 
06.12.10
17:11
ТекстКоманды = "";
Сч = 1;
Для каждого Эл из Справочники.Номенклатура Цикл
ТекстКоманды  = ТекстКоманды + " INSERT INTO TLIST VALUES ('+"Сч"+', '+"Эл.Наименование"+'); ";
Сч = Сч + 1;
КонецЦикла;

objComm = Новый COMОбъект("ADODB.Command");
objComm.CommandText = ТекстКоманды;
objComm.Execute();
20 mdv92
 
06.12.10
17:15
Выборка=Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
NSERT INTO АДОРекордСет VALUES (Выборка.Код,Выборка.Родитель.ПолныйКод,Выборка.Наименование);
   
КонецЦикла;
21 КМ155
 
06.12.10
17:15
(16) тебе же русским языком сказано AddNew()
в гугле забанили ?
22 mdv92
 
06.12.10
17:16
(19) Агп! А потом всё запишется одновременно!
23 mdv92
 
06.12.10
17:17
(22) А до этого сказали - INSERT INTO.
Всё! Поняла! Спасибо.
Про название таблицы-то у меня правильно написано?
24 mdv92
 
06.12.10
17:33
Соединение=СоздатьОбъект("ADODB.Connection");
   НаборЗаписей=СоздатьОбъект("ADODB.RecordSet");
   Соединение.ConnectionString="DRIVER=Microsoft FoxPro VFP Driver (*.dbf);SourceDB=D:\;SourceType=DBF;";
   Соединение.ConnectionTimeOut=15;
   Соединение.CursorLocation=3;
   Соединение.Open();
   СтрокаЗапроса="SELECT * FROM METRO.dbf";
   НаборЗаписей.CursorType=2;
   НаборЗаписей.LockType=3;
   НаборЗаписей.ActiveConnection=Соединение;
   НаборЗаписей.Open(СтрокаЗапроса);
   НаборЗаписей.AddNew();
   НаборЗаписей.Fields(0).Value=1;
   НаборЗаписей.Fields(1).Value=2;
   НаборЗаписей.Fields(2).Value=AnsiToOem("Иван Иванович Иванов");
   НаборЗаписей.Fields(3).Value=AnsiToOem("John Smith");
   НаборЗаписей.Update();
Во какую я штуку украла!
Сейчас ее приспособлю!
25 Жан Пердежон
 
06.12.10
17:37
(24) какой ужас, insert into используй, как выше сведущие люди советуют;
26 mdv92
 
06.12.10
17:39
А в чем разница?
27 mdv92
 
06.12.10
17:42
НаборЗаписей.CursorType=2;
   НаборЗаписей.LockType=3;
   НаборЗаписей.ActiveConnection=Соединение;
Вот эта часть - нужна?
28 mdv92
 
06.12.10
17:44
Если я ничего не хочу из таблицы вытаскивать - можно начать прямо с
Соединение=СоздатьОбъект("ADODB.Connection");
   НаборЗаписей=СоздатьОбъект("ADODB.RecordSet");
   Соединение.ConnectionString="DRIVER=Microsoft FoxPro VFP Driver (*.dbf);SourceDB=D:\;SourceType=DBF;";
   Соединение.ConnectionTimeOut=15;
   Соединение.CursorLocation=3;
   Соединение.Open();

 НаборЗаписей.AddNew();
   НаборЗаписей.Fields(0).Value=1;
   НаборЗаписей.Fields(1).Value=2;
   НаборЗаписей.Fields(2).Value=AnsiToOem("Иван Иванович Иванов");
   НаборЗаписей.Fields(3).Value=AnsiToOem("John Smith");
   НаборЗаписей.Update();
29 mdv92
 
06.12.10
17:51
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
ТекстСелект="Select * from TLIST ";
Попытка
           НаборЗаписей.Open(СтрокаЗапроса);

Исключение Сообщить(ОписаниеОшибки());
КонецПопытки;

Выборка=Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
   НаборЗаписей.AddNew();      НаборЗаписей.Fields(0).Value=Выборка.Код;             НаборЗаписей.Fields(1).Value=Выборка.Родитель.ПолныйКод;НаборЗаписей.Fields(2).Value=Выборка.Наименование;    
НаборЗаписей.Update();    
КонецЦикла;

Ну как??
30 el-gamberro
 
06.12.10
17:53
Вы 92 или 67го? Неловко конечно у дамы спрашивать, но...
31 mdv92
 
06.12.10
17:54
Да какая разница? 92 - моя дочь, уверена, она бы справилась лучше, но ей некогда.
32 mdv92
 
06.12.10
17:55
но мне кажется, в (29) - уже близко к истине!
33 Жан Пердежон
 
06.12.10
18:03
близко было в (20), а потом пошло не в ту сторону
34 mdv92
 
06.12.10
18:15
Так в чём разница-то?
Наверное, я могу и так написать:
ТекстКоманды="";
Выборка=Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
ТекстКоманды  = ТекстКоманды + " INSERT INTO TLIST VALUES (Выборка.Код,Выборка.Родитель.ПолныйКод,Выборка.Наименование); ";
КонецЦикла;
objComm = Новый COMОбъект("ADODB.Command");
objComm.CommandText = ТекстКоманды;
objComm.Execute();

Значения можно прямо так перечислять? Зачем в (19) кавычки?
35 Жан Пердежон
 
06.12.10
18:26
(34) затем, что просто так нельзя:

objComm = Новый COMОбъект("ADODB.Command");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
objComm.CommandText = "INSERT INTO TLIST VALUES ("+Выборка.Код+","+Выборка.Родитель.ПолныйКод+","+... +")";
objComm.Execute();
КонецЦикла;
36 mdv92
 
06.12.10
18:49
А двойная кавычка годится разве?
37 mdv92
 
06.12.10
18:51
TLIST - это имя таблицы, этого достаточно?
А всего прочего огорода не надо?
Соединение=СоздатьОбъект("ADODB.Connection");
   НаборЗаписей=СоздатьОбъект("ADODB.RecordSet");
   Соединение.ConnectionString="DRIVER=Microsoft FoxPro VFP Driver (*.dbf);SourceDB=D:\;SourceType=DBF;";
   Соединение.ConnectionTimeOut=15;
   Соединение.CursorLocation=3;
   Соединение.Open();
Не, надо как-то сообщить, что objComm относится к нашей базе.
38 mdv92
 
06.12.10
18:54
А сначала вот это!
СтрСоединения = "dri.....245376;";
   
Коннект = Новый COMObject("ADODB.Connection");
objComm = Новый COMObject("ADODB.Command");
Коннект.Open(СтрСоединения);
objComm.ActiveConnection = Коннект;

Потом
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
objComm.CommandText = "INSERT INTO TLIST VALUES ("+Выборка.Код+","+Выборка.Родитель.ПолныйКод+","+... +")";
objComm.Execute();
КонецЦикла;

И потом еще закрыть?
39 Amra
 
06.12.10
18:54
В коннекшнстринг указывай базу
40 mdv92
 
06.12.10
18:57
(39) в смысле - в СтрСоединения?
Ошибка? Это не ошибка, это системная функция.