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()); } }
public static IrbisRecord ReadRecord ( [NotNull] this IrbisConnectionPool pool, int mfn ) { ManagedClient64 client = pool.AcquireConnection(); IrbisRecord result = client.ReadRecord(mfn); pool.ReleaseConnection(client); return(result); }
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); } }