Пример #1
0
        internal void CopyRecord(string fromMfn, string toMfn, string recordIndex)
        {
            _recordIndex = "(" + recordIndex + ") ";
            recordFrom   = client.ReadRecord(Int32.Parse(fromMfn));
            recordTo     = client.ReadRecord(Int32.Parse(toMfn));
            try
            {
                RecordField fiedl922 = new RecordField("922");
                AddSubfield(fiedl922, 'C', "200", 'A');
                AddSubfield(fiedl922, 'F', "700", 'A');
                AddSubfield(fiedl922, '?', "700", 'G');
                AddSubfield(fiedl922, '1', "700", '1');
                AddSubfield(fiedl922, 'A', "700", 'C');
                recordTo.Fields.Add(fiedl922);

                CopyField("300");
                CopyField("331");
                CopySubField("215", 'A');
                CopySubField("316", 'A');


                foreach (RecordField field210 in recordFrom.Fields.GetField("210"))
                {
                    if (!field210.ToString().Contains("^5"))
                    {
                        _recordIndex = _recordIndex.Replace(" ", "");
                    }

                    var field   = new RecordField("210");
                    var sub2105 = new SubField('5', _recordIndex + field210.GetFirstSubFieldText('5'));
                    var sub210d = new SubField('D', field210.GetFirstSubFieldText('d'));
                    field.SubFields.Add(sub210d);
                    field.SubFields.Add(sub2105);
                    logging.WriteLine(field.Text);
                    recordTo.Fields.Add(field);
                    logging.WriteLine(recordTo.FM("210"));
                }



                client.WriteRecord
                (
                    recordTo,
                    false,
                    true
                );
            }
            catch (Exception ex)
            {
                logging.WriteLine("ERROR DURING COPYING RECORD! ");
                logging.WriteLine(ex.StackTrace);
                logging.WriteLine(ex.ToString());
            }
        }
Пример #2
0
        /// <summary>
        /// Сохранение записей с помощью пула.
        /// </summary>
        public static void WriteRecord
        (
            [NotNull] this IrbisConnectionPool pool,
            [NotNull] IrbisRecord record
        )
        {
            ManagedClient64 client = pool.AcquireConnection();

            client.WriteRecord(record, false, true);
            pool.ReleaseConnection(client);
        }
Пример #3
0
        private static void Main()
        {
            try
            {
                using (ManagedClient64 client = new ManagedClient64())
                {
                    // Подключаемся к серверу
                    client.ParseConnectionString("host=127.0.0.1;port=6666;"
                                                 + "user=1;password=1;");
                    client.Connect();

                    // Ищем все книги, у которых автор начинается на А (кириллица)
                    int[] foundRecords = client.Search("\"A={0}$\"", "А");

                    // Чтобы не распечатывать все найденные записи,
                    // ограничимся первыми 10
                    int recordsToShow = Math.Min(foundRecords.Length, 10);

                    for (int i = 0; i < recordsToShow; i++)
                    {
                        int thisMfn = foundRecords[i];

                        // Считываем запись
                        IrbisRecord record = client.ReadRecord(thisMfn);

                        // Получаем основное заглавие
                        string mainTitle = record
                                           .Fields
                                           .GetField("200")
                                           .GetSubField('a')
                                           .GetSubFieldText()
                                           .FirstOrDefault();

                        // Можно было просто написать:
                        // string mainTitle = record.FM("200", 'a');

                        Console.WriteLine
                        (
                            "MFN={0}, Main title={1}",
                            thisMfn,
                            mainTitle
                        );

                        // Расформатируем запись
                        Console.WriteLine
                        (
                            "BRIEF: {0}",
                            client.FormatRecord("@brief", record)
                        );

                        // Создаем запись
                        IrbisRecord newRecord = new IrbisRecord();
                        newRecord.AddField
                        (
                            "700",
                            'a',
                            "Управляемый клиент ИРБИС64"
                        )
                        .AddField
                        (
                            "200",
                            'a',
                            string.Format("Новая Запись от {0}", DateTime.Now),
                            'f',
                            "Управляемый клиент"
                        );

                        // Отсылаем вновь созданную запись на сервер
                        client.WriteRecord
                        (
                            newRecord,
                            false,
                            true
                        );

                        Console.WriteLine(new string('-', 60));
                    }

                    // По выходу из using автоматически вызывается client.Disconnect ()
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }