Имя: Пароль:
1C
1C 7.7
v7: 1c 7.7 и firebird 2.2
0 Zoeh
 
23.09.13
14:59
Тут все ништяк:
    wc=CreateObject("ADODB.Connection");
    wc.ConnectionString = "DRIVER=Firebird/InterBase(r) driver;PWD=;UID=;DBNAME=d:\1C_Bases\firebird\ORDERS.FDB";
    Попытка
    wc.Open();
    Исключение
    Сообщить(ОписаниеОшибки());
    Предупреждение("Не удалось подключиться к Базе ...")
    КонецПопытки;
    Запрос=СоздатьОбъект("ADODB.Recordset");
    Запрос.ActiveConnection = wc;
    Запрос.Source = "select * from orders_hdrs";
    Запрос.Open();
    //кол = 0;
    Пока Запрос.Eof()=0 Цикл
    //кол = кол + Строка(Запрос);
    //обрабатываем Recordset
    //Сообщить(Запрос);
    Сообщить(Запрос.Fields("ORDER_ID").Value);
    Сообщить(Запрос.Fields("ORDER_DATE").Value);
    Запрос.MoveNext();
    КонецЦикла;
    //Сообщить(кол);
    
    //Запрос.execute();
    Запрос.Close();

А как мне добавить / обновить / удалить любую запись в таблице
1 Zoeh
 
23.09.13
15:00
?
2 ДенисЧ
 
23.09.13
15:04
insert/update/delete
Учебник по скулю не предлагать?
3 пипец
 
23.09.13
15:05
4 MKZM
 
23.09.13
15:07
ibase.ru
5 MKZM
 
23.09.13
15:08
Лучше сделай хранимки и юзай их из 1с
6 Zoeh
 
23.09.13
15:09
Запрос.Execute("insert into orders_hdrs(order_id, order_date) values(160, '23.9.2013')");
{D:\1C_BASES\FIREBIRD\ОБРАБОТКА.ERT(47)}: Поле агрегатного объекта не обнаружено (Execute)
7 Mikeware
 
23.09.13
15:11
Запрос.ActiveConnection = wc; - доставляет!
8 Zoeh
 
23.09.13
15:17
Запрос.CommandText =  "insert into orders_hdrs(order_id, order_date) values(160, '23.9.2013')";
{D:\1C_BASES\FIREBIRD\ОБРАБОТКА.ERT(47)}: Поле агрегатного объекта не обнаружено (CommandText)
9 Zoeh
 
23.09.13
15:18
(7) непойму
10 Mikeware
 
23.09.13
15:20
wc - Water Closet
11 Zoeh
 
23.09.13
15:21
ну что туалет это я знаю, а причем здесь это?
12 Mikeware
 
23.09.13
15:22
(11) ну, то, что ты установил активное соединение с туалетом, и что-то оттуда собрался качать...
13 Zoeh
 
23.09.13
15:24
мне бы строчечку чтобы записать туда че нидь.
14 Zoeh
 
23.09.13
15:27
Ну или название провайдера для подключения:
//Открываем соединение
  DBConn = CreateObject("ADODB.Connection");
  DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                   "Data Source=" + Path + ";" +
                   "Extended Properties=""DBASE IV;"";");
15 Zoeh
 
23.09.13
15:27
Provider=...
16 Zoeh
 
23.09.13
15:33
ОДБЦ = СоздатьОбъект("ADODB.Connection");
        СтрокаПодключения = "Provider=LCPI.IBProvider;
                            |Data Source=localhost:d:\1C_Bases\firebird\ORDERS.FDB;
                            |auto_commit=True;
                            |ctype=none;
                            |User Id=SYSDBA;
                            |Password=masterkey";
                            
        ОДБЦ.Open(СтрокаПодключения);
        
ОДБЦ.Open(СтрокаПодключения);
{D:\1C_BASES\FIREBIRD\ОБРАБОТКА.ERT(10)}: ADODB.Connection: Не удается найти указанного поставщика. Вероятно, он установлен неправильно.
17 Zoeh
 
23.09.13
15:38
Запрос.AddNew("order_id, order_date","160, '23.9.2013'");
{D:\1C_BASES\FIREBIRD\ОБРАБОТКА.ERT(53)}: ADODB.Recordset: Текущий объект Recordset не поддерживает обновление. Это связано с ограничением поставщика или с выбранным типом блокировки.
18 Zoeh
 
23.09.13
15:42
как мне скорректировать подключение, чтоб можно было писать?
wc.ConnectionString = "DRIVER=Firebird/InterBase(r) driver;PWD=;UID=;DBNAME=d:\1C_Bases\firebird\ORDERS.FDB";
19 Zoeh
 
23.09.13
15:49
,,
20 Torquader
 
23.09.13
22:35
Писать в firebird нужно SQL-запросами.
AdoCommand=CreateObject("ADODB.Command");
AdoCommand.ActiveConnection=FireBird;
AdoCommand.CommandText="INSERT INTO TAB_ONE(FIELD_ONE,FIELD_TWO)VALUES(?,?)";
AdoCommand.Parameters.Item(0).Value=1;
AdoCommand.Parameters.Item(1).Value="Вася";
AdoCommand.Execute();

где-то так - писал по памяти.
Если уж хочется через recordset, то при его открытии нужно сказать, что он для добавления - но, не всегда корректно работает (ставим тип курсора и наслаждаемся).

Удачи.

P.S. "жаренный петух" - ещё та птица.
21 Zoeh
 
24.09.13
08:55
Чтение и запись firebird
Для всех кому интересно, закрывая ветку даю дельный совет, и единственный думаю как писать и читать файрбердную базу.
должно быть установлено:
Firebird-2.1.1.17910-0_Win32
Firebird_ODBC_2.0.2.153_Win32

    AdoCommand=CreateObject("ADODB.Command");
    //AdoCommand.ActiveConnection
    AdoCommand.ActiveConnection="DRIVER=Firebird/InterBase(r) driver;PWD=masterkey;UID=SYSDBA;DBNAME=d:\1C_Bases\firebird\ORDERS.FDB";
    AdoCommand.CommandText="insert into orders_hdrs(order_id, order_date) values(162, '23.9.2013')";//пишем окончание
//читаем начало и до конца
AdoCommand.Execute();
    
    AdoCommand.CommandText = "select * from orders_hdrs";
    Запрос = AdoCommand.Execute();
    Пока Запрос.Eof()=0 Цикл
        //кол = кол + Строка(Запрос);
        //обрабатываем Recordset
        //Сообщить(Запрос);
        Сообщить(Запрос.Fields("ORDER_ID").Value);
        Сообщить(Запрос.Fields("ORDER_DATE").Value);
        Запрос.MoveNext();
    КонецЦикла;
22 Злой Бобр
 
24.09.13
12:58
(21) Ваше незнание кривого FB вовсе неозначает что ваш вариант единственно правильный. Я помучался при синхроне 1С с ним прилично. Вывод - работайте с БД без глупых ограничений и пр. фигни. Сэкономите не только время но и нервы.
23 Torquader
 
26.09.13
01:00
(22) Firebird достаточно прямой и хороший, только кривые настройки и битая база приводят к неудачной работе.
Можно и recordset открыть на запись и с курсором - по крайней мере на VbScript работало - покопаюсь - выложу пример.
А в (21) пример работы с MySql, который только прямо работать и умеет - писать значения в текст напрямую - плохой тон - можно оставить столько дыр, сколько будет запросов.