Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Страницы: <<12345678
Страница: 8 из 8
Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: lybs (IP-адрес скрыт)
Дата: 13, January, 2021 10:57

Алексей, не подскажете, почему при установлении подключения появляется исключение AM.DuplicateKeyException: "name"?

Причём дома у меня оно вообще не возникает, а возникает только на работе, и при заключении в try { } нормально нормально работает и соединяется с базой данных.


private bool ConnectDB(string host, string port, string user, string pass, string dbname)
{ // try
// {
if(dbname=="") { MessageBox.Show("Ошибка: имя базы данных не указано!", ProgNameInMessageboxes, MessageBoxButtons.OK, MessageBoxIcon.Error);
return false; };

if (myclient.Connected) myclient.Disconnect();
myclient.ParseConnectionString("host="+host+";port="+port+";"

+ "user="+user+";password="+pass+";");

myclient.Database = dbname;
//try {

myclient.Connect();

// } catch{ }
;



return true;
// }
/* catch(Exception e)
{

MessageBox.Show("Ошибка подключения", this.ProgNameInMessageboxes, MessageBoxButtons.OK, MessageBoxIcon.Error);

return false;
}*/
}



Редактировано 5 раз. Последний раз 13.01.2021 11:22 пользователем lybs.

Вложения: AMDuplicateException.jpg (10.6KB)  
Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 13, January, 2021 14:32

lybs написал(а):
-------------------------------------------------------
> Алексей, не подскажете, почему при установлении
> подключения появляется исключение
> AM.DuplicateKeyException: "name"?

Такое исключение может возникать только при разборе INI-файла, присланного сервером. Это означает, что в нём обнаружены дублирующиеся строки (это если говорить по-простому).

У меня вопрос: Вы ведь подключаетесь дома и на работе под разными пользователями?

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: lybs (IP-адрес скрыт)
Дата: 13, January, 2021 15:46

Да, под разными, к разным БД.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 02, August, 2023 12:02

Здравствуйте! Хотел задать вопрос(ы) по библиотеке GoIrbis, темы посвященной этой библиотеке не нашел. Можно спросить здесь?

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 02, August, 2023 16:46

Ivanm написал(а):
-------------------------------------------------------
> Здравствуйте! Хотел задать вопрос(ы) по библиотеке
> GoIrbis, темы посвященной этой библиотеке не
> нашел. Можно спросить здесь?

Можно спросить здесь. Однако, я как автор библиотеки должен предупредить, что библиотека была создана в процессе изучения языка Go. Язык был изучен, найден бесперспективным (субъективно, чисто для меня), после чего проект был брошен. Никаких планов по развитию библиотеки нет, никаких доработок не планируется.

Если пришлете пулл-реквест, исправляющий недостатки библиотеки, могу смержить.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 03, August, 2023 11:04

Я хотел узнать можно ли искать данные по базе по полю или полям(к примеру 52 и 56) и можно ли как в библиотеке для C# получить данные mst файла напрямую(вроде бы заметил такое) получил все записи базы по запросу:
Цитата:
connection.SearchAll("K=$")

Для вывода интересующих меня данных сделал свой формат на примере уже имеющихся, так можно и в виде xml или json.
Хотел переделать существующий скрипт статистики с python на go т.к. в качестве GUI использовалось ранее окно браузера для вывода и ввода данных.(Диапазон дат и названия отделов)

Были сомнения что сейчас развивается только библиотека C#, но уже пишу небольшое веб-приложение для хранения и вывода статистических данных. Задумал дополнить все это выводом статистики ИРБИС (сколько всего записей в базах, возможность просмотра количества записей по данным в определенных полях).

На данный момент знакомлюсь с Golang поближе и изучаю библиотеку GoIrbis, всех возможностей библиотеки еще не знаю.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 03, August, 2023 11:07

Было бы очень удобно делать что-то типа SQL запросов к базе, думаю это возможно на языке форматирования ирбис, но на официальной wiki информации мало, особенно примеров.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 03, August, 2023 14:01

Еще странность если воспользоваться функцией GetDatabaseInfo.
Почему-то прибавляется единица при запросе максимального MFN, тестировал на двух базах в тестовой версии, в обоих такой результат.
+ Если база пустая то пишет будто там 1 MFN

Вложения: MaxMfn.png (24.4KB)   MaxMfn1.png (17.7KB)  
Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 04, August, 2023 02:52

Ivanm написал(а):
-------------------------------------------------------
> Я хотел узнать можно ли искать данные по базе по
> полю или полям(к примеру 52 и 56)

Это называется последовательным поиском и возможно при помощи метода SearchEx:

parameters := NewSearchParameters()
parameters.Expression = "IN=123$"
parameters.Sequential = "if p(v52) then '1' else '0' fi"
found := client.SearchEx(parameters)
if len(found) == 0 {
    println("Не нашли")
} else {
    // в found находится слайс структур FoundLine
    first := found[0]
    fmt.Println("MFN:", first.Mfn)
}

> можно ли как в библиотеке для C# получить данные mst файла
> напрямую(вроде бы заметил такое)

Посмотрите файл DirectExperiments.go.

> получил все записи базы по запросу:

Это стандартная практика. :)
Чаще используют запрос "I=$", он более универсальный.
Имейте в виду, что возвращаются только не удаленные и актуализированные записи.



Редактировано 1 раз. Последний раз 04.08.2023 02:52 пользователем amironov73.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 04, August, 2023 02:57

Ivanm написал(а):
-------------------------------------------------------
> Было бы очень удобно делать что-то типа SQL
> запросов к базе, думаю это возможно на языке
> форматирования ирбис, но на официальной wiki
> информации мало, особенно примеров.

Язык запросов ИРБИС описан здесь: http://sntnarciss.ru/irbis/spravka/irbis64.html

Он примитивен и сравнивать его с SQL нельзя даже в шутку.

Никаких телодвижений в сторону полноценного поискового языка, насколько я знаю, не планируется.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 04, August, 2023 02:59

Ivanm написал(а):
-------------------------------------------------------
> Еще странность если воспользоваться функцией
> GetDatabaseInfo.
> Почему-то прибавляется единица при запросе
> максимального MFN, тестировал на двух базах в
> тестовой версии, в обоих такой результат.
> + Если база пустая то пишет будто там 1 MFN

Это ожидаемое поведение. На самом деле возвращаемое число надо бы называть "Next MFN" (т. е. MFN, который будет присвоен следующей записи), но исторически прижилось название "MaxMFN". Согласен, несколько дезориентирует.



Редактировано 1 раз. Последний раз 04.08.2023 03:00 пользователем amironov73.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 21, August, 2023 09:39

Можно ли вводить запрос по диапазону дат как в самом ИРБИС?

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 21, August, 2023 14:40

Ivanm написал(а):
-------------------------------------------------------
> Можно ли вводить запрос по диапазону дат как в
> самом ИРБИС?

Посмотрите, во что раскрывает запрос с диапазоном дат сам ИРБИС, да и сделайте так же.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 22, August, 2023 13:17

Странно, но запрос в ирбисе работает, если через программу то ничего :(

if | p(v52^*) >= '20000101' and (v52^*) <= '20040101' then '1' else '0' fi

Сам запрос выглядит так: | val(V52^*)>=20000101 and val(V52^*)<=20040101
Пробовал по разному и с одним аргументом, без "|", все равно почему-то не находит

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 25, August, 2023 14:40

Ivanm написал(а):
-------------------------------------------------------
> Странно, но запрос в ирбисе работает, если через
> программу то ничего :(
>
> if | p(v52^*) >= '20000101' and (v52^*) <=
> '20040101' then '1' else '0' fi
>
> Сам запрос выглядит так: | val(V52^*)>=20000101
> and val(V52^*)<=20040101
> Пробовал по разному и с одним аргументом, без "|",
> все равно почему-то не находит

Во-первых вертикальная черта не интерпретируется библиотекой никак.

Во-вторых, покажите код. Вы проверяете код возврата?

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 27, November, 2023 15:48

Кое-что удалось реализовать. Довольно быстро отдает данные в json, не знаю только насколько стабильно будет работать при множестве запросов, к примеру если данные будут отдаваться на основной ресурс для единого личного кабинета. Один экземпляр подключения вызывается в отдельной функции, используется стандартная библиотека "net/http", а там многопоточность уже заложена насколько знаю.

Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 14, December, 2023 12:36

Здравствуйте. Подскажите пожалуйста как корректно вывести список книг на руках с соответствующей датой возврата. Книги приходят правильно, а даты (выдачи и возврата) выдает вообще все. Можно как-то вывести только последние?

Вложения: вывод.png (206KB)  
Re: Клиентская библиотека ИРБИС64 на языке C#
Пользователь: Ivanm (IP-адрес скрыт)
Дата: 29, December, 2023 15:19

Вот тут явно ошибка и в примере пропущен один параметр

Вложения: err.png (27KB)  
Страницы: <<12345678
Страница: 8 из 8


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.