Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Всем добрый день.
Подскажите плз - много перерыл, но не нашел ответа.
Делаю так....
На форму кидаю IBDatabase, ibTransaction, ibquery
Делаю подключение к базе , запрос - все ОК.
Теперь отключаю и включаю сервер FireBird и безуспешно пытаюсь реанимировать эту троицу...

Заранее спасибо.
25 сен 17, 13:18    [20820484]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234,

Ты наверно не у того объекта из "этой тройцы" вызываешь функцию "Реанимировать". Или передаешь параметр этой функции "ЧтобыВсёРаботало"=False, а надо True.
25 сен 17, 14:28    [20820835]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Гость1234,

Покажи плиз код, как ты пытаешься это сделать.
25 сен 17, 14:52    [20820956]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Любезный
Member

Откуда:
Сообщений: 441
Ты лучше сожги сервер и потом попробуй включить и подцепиться :)
25 сен 17, 15:47    [20821123]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Гость1234
Всем добрый день.
Подскажите плз - много перерыл, но не нашел ответа.
Делаю так....
На форму кидаю IBDatabase, ibTransaction, ibquery
Делаю подключение к базе , запрос - все ОК.
Теперь отключаю и включаю сервер FireBird и безуспешно пытаюсь реанимировать эту троицу...

Заранее спасибо.

Создай минимальное приложение, повторяющее "проблему", и выложи здесь.
25 сен 17, 16:33    [20821298]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
goldmi45
Member

Откуда:
Сообщений: 903
Гость1234,

после того, как вы остановили и снова запустили сервер, вы восстановили соединение с сервером у компоненты IBDatabase?
25 сен 17, 16:48    [20821322]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Спасибо всем за сообщение ))
Особенно любезен Любезный )))
Пишу из дома - завтра выложу код.
Я его действительно сделал отдельным, новым приложением и мусолил эти три компоненты по разному. Причем со всех сторон ))
Многое стирал и делал по новому. Почему то не нашел подобных проблем - прогуглил и данный форум и другие форумы. Конечно возможно ошибка в моем ДНК ))
В любом случае спасибо за отклики - завтра продолжу ...
25 сен 17, 17:03    [20821357]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
Гость1234,

В чем проблема то?
25 сен 17, 17:48    [20821528]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43944

_Vasilisk_
В чем проблема то?

Он же написал - в ДНК.

Posted via ActualForum NNTP Server 1.5

25 сен 17, 17:54    [20821541]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
Возможно, ему надо обратиться к застарелым статьям "Решение проблем дисконнекта в IBX" на ibase.ru. Не удивлюсь, если там с тех пор ничего не поменялось..
25 сен 17, 18:14    [20821566]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 545
там и не нужно ничего менять
произошел дисконнект - сам поднимай заново и коннект и запросы
25 сен 17, 22:06    [20821999]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
Это только на совсем неискушенный взгляд. Раньше оно в подобных обстоятельствах просто не давало дальше ничего сделать (даже просто нормально завершить приложение), засыпая пачками AV.
25 сен 17, 22:19    [20822032]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Guest7777
Это только на совсем неискушенный взгляд. Раньше оно в подобных обстоятельствах просто не давало дальше ничего сделать (даже просто нормально завершить приложение), засыпая пачками AV.

Какие тяжелые времена раньше были, смотри-ка.
25 сен 17, 23:06    [20822129]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
Не но, возможно, кто- то обладает информацией, чтобы уверенно и компетентно подтвердить, что сейчас в IBX в этой части стало все пристойно или будет продолжатся все то же растеканье мыслею по древу?
25 сен 17, 23:24    [20822166]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Guest7777
Не но, возможно, кто- то обладает информацией, чтобы уверенно и компетентно подтвердить, что сейчас в IBX в этой части стало все пристойно или будет продолжатся все то же растеканье мыслею по древу?


Вряд ли кто-то опишет решение так же конкретно, как ты выше описал проблему. Особенно если никто с проблемой не сталкивался.
25 сен 17, 23:32    [20822175]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
Я не просил описывать решений (решения для прежних версий приводились в т.ч. и мной в упомянутых статьях на сайте у Кузьменко), а лишь хотел услышать от современных пользователей IBX, как оно сейчас ведет себя при потере коннекта (не исключаю, что все так же), если кто-то из по-прежнему практикующих IBX курсе. Ибо сам со временем подзабил.))
25 сен 17, 23:48    [20822202]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Guest7777
как оно сейчас ведет себя при потере коннекта (не исключаю, что все так же)
Не знаю, что значит "все так же", но у меня на древнем D6 ведет себя абсолютно правиоьно - при потере коннекта на любое сетевое обращение выдается соотв. исключение, штатно обработав которое делаешь реконнект, переоткрываешь запросы и всё работает дальше как часы.
26 сен 17, 02:16    [20822292]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
YuRock, Guest7777 - а может дадите ссылки, где мне почитать о ваших решениях, чтобы и у меня работало как часы?
26 сен 17, 07:07    [20822341]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Вашему вниманию текущая проба решить проблему

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, IBDatabase, StdCtrls, Buttons, Grids, DBGridEh,
  IBCustomDataSet, IBQuery;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Edit2: TEdit;
    IBQuery1: TIBQuery;
    DBGridEh1: TDBGridEh;
    Button2: TButton;
    DataSource1: TDataSource;
    procedure ErrorRun();
    procedure BitBtn1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  tr:TIBTransaction;
  db1,db2:tibdatabase;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 try
   db1:=TIBDatabase.Create(self);
   db1.DatabaseName:='D:\Basa\Limonad\ZULFIRA.FBD';
   db1.Params.Add('user_name=SYSDBA');
   db1.Params.Add('password=masterkey');
   db1.LoginPrompt:=false;
   db1.Connected:=true;
   edit1.Text:='run';
 except
   edit1.Text:='err';
 end;
 try
   db2:=TIBDatabase.Create(self);
   db2.DatabaseName:='D:\Basa\Ekzam\EKZM.FDB';
   db2.Params.Add('user_name=SYSDBA');
   db2.Params.Add('password=masterkey');
   db2.LoginPrompt:=false;
   db2.Connected:=true;
   edit2.Text:='run';
 except
   edit2.Text:='err';
 end;
 tr:=TIBTransaction.Create(Self);
 tr.AddDatabase(db1);
 tr.AddDatabase(db2);
 Button2Click(Sender);
end;

procedure TForm1.Button2Click(Sender: TObject);
var err:boolean;
begin
  err:=false;
  try

   tr.Active:=false;
   db2.Connected:=false;
   IBQuery1.Database:=Db2;
   IBQuery1.Transaction:=tr;
   Db1.Connected:=true;
   Db2.Connected:=true;
   tr.Active:=true;
   with IBQuery1.SQL do begin
     clear;
     Add('select * from formul');
   end;
   IBQuery1.Active:=true;
   // îáû÷íîå îòêðûòèå
  except
    err:=true;
  end;
  if err then ErrorRun;
end;

procedure TForm1.ErrorRun;
begin
  try
    IBQuery1.Close;
  Except
  end;
  try
    tr.Databases[1].CloseDataSets;
  Except
  end;
  try
    tr.RemoveDatabase(1);
  Except
  end;
  try
    db2.CloseDataSets;
  Except
  end;
  try
    db2.Connected:=false;
    //  error writing data to the connection
  Except
  end;
  try
    tr.AddDatabase(db2);
  Except
  end;


end;

end.
26 сен 17, 08:15    [20822389]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
На db1 не смотрите - "рыбу заворачивал..."
26 сен 17, 08:22    [20822399]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Guest7777

Нашел эту статью... Попробую разобраться...
26 сен 17, 09:10    [20822489]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
Гость1234,

Ну и зачем тебе 2 Tibdatabase?
26 сен 17, 09:35    [20822567]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
DarkMaster

А куда рыбу заворачивать?
26 сен 17, 09:38    [20822576]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
schi
Member

Откуда: Москва
Сообщений: 2357
Гость1234
Вашему вниманию текущая проба решить проблему

procedure TForm1.ErrorRun;
begin
  try
    IBQuery1.Close;
  Except
  end;
  try
    tr.Databases[1].CloseDataSets;
  Except
  end;
  try
    tr.RemoveDatabase(1);
  Except
  end;
  try
    db2.CloseDataSets;
  Except
  end;
  try
    db2.Connected:=false;
    //  error writing data to the connection
  Except
  end;
  try
    tr.AddDatabase(db2);
  Except
  end;

end.


Ты хоть понимаешь, что ты делаешь или просто буквы знакомые пишешь ?
26 сен 17, 10:24    [20822742]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
schi

Уже походу больше буквы ищу знакомые - что только не пробовал ...
26 сен 17, 10:37    [20822827]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234
YuRock, Guest7777 - а может дадите ссылки, где мне почитать о ваших решениях, чтобы и у меня работало как часы?

Одно из костыльных решений
procedure TfrmMain.OnAppException(Sender: TObject; E: Exception);
begin
  if E is EIBError then begin
    Log( 'Ошибка базы данных: ' + E.Message, 1 );
    if IsCriticalIBError( ( E as EIBError ).IBErrorCode ) then
      ReconnectAllOnCriticalDBError;
  end else
    Log( 'Неопределенная ошибка: ' + E.Message, 1 );
end;

ф-ция IsCriticalIBError выглядит примерно так:
+
function IsCriticalIBError( iscErrorCode: Integer ): Boolean;
const
  MAX_IBCRITICAL_ERROR = 14;
  anIBCriticalErrors: Array[ 1..MAX_IBCRITICAL_ERROR ] of Integer = (
    isc_lost_db_connection,
    isc_net_init_error,
    isc_network_error,
    isc_net_connect_err,
    isc_net_connect_listen_err,
    isc_net_event_connect_err,
    isc_net_event_listen_err,
    isc_net_read_err,
    isc_net_write_err,
    isc_io_create_err,
    isc_io_open_err,
    isc_io_close_err,
    isc_io_read_err,
    isc_io_write_err
  );
var
  i: Integer;
begin
  for i := 1 to MAX_IBCRITICAL_ERROR do if iscErrorCode = anIBCriticalErrors[ i ] then begin
    Result := True;
    Exit;
  end;

  Result := False;
end;

в ReconnectAllOnCriticalDBError делаешь
if db.Connected then
  db.ForceClose;

db.Connected := True;

// И со своими препарированными запросы надо Unprepare/Prepare;
// И свои открытые датасеты надо переоткрыть
// (для чего, естественно, транзакцию опаять стартовать)
26 сен 17, 11:36    [20823199]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Гость1234
Вашему вниманию текущая проба решить проблему

Говно какое-то.
А почему ты не делаешь то, что я тебе говорил? 20821298
26 сен 17, 11:45    [20823251]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
YuRock

В данном случае, если я правильно понял, ты просто запускаешь свой обработчик поиска ошибки, и потом, запускаешь

if db.Connected then
  db.ForceClose;

db.Connected := True;

я видать уже совсем дымлюсь, но ошибка уже есть и у меня уже проходит коннект по новой, и транзакция по новой запускается, но как только я обращаюсь к ibquery, мне выдает "Dataset open", хотя я его и фалзил, и слозил...

чччД

Так то это и есть минимальное приложение, повторяющее проблему...

Я запускаю приложение, нажимаю BitBtn1 - вижу нормальное открытие, затем в панели инструментов останавливаю и запускаю по новой Службу FireBird и нажимаю Button2....
26 сен 17, 12:53    [20823523]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Гость1234
...
чччД

Так то это и есть минимальное приложение, повторяющее проблему...
...

Ну вот сам его с листа и компилируй, и ошибку сам ищи.
26 сен 17, 13:00    [20823562]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Док
Member

Откуда: Казань
Сообщений: 5233
Гость1234,

дык, тебе что надо-то в итоге? Датасет открыть? Или написать чего-то?
26 сен 17, 13:13    [20823616]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234
ты просто запускаешь свой обработчик поиска ошибки

Нет, я устанавливаю общий обработчик необработанных исключений Application.OnException := OnAppException.


Гость1234
но как только я обращаюсь к ibquery, мне выдает "Dataset open", хотя я его и фалзил, и слозил

Не знаю, что такое "фалзил, и слозил". Его надо на всякий сделать Dataset.Active := False; Dataset.Active := True; и думаю должно заработать. Если нет - установить в какой строке ошибка и исправлять её.
26 сен 17, 13:21    [20823637]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
чччД

Что сделать? Приложить архив папки с исходниками? могу...

Док

я хочу после проблем с сервером переоткрыть 3 компоненты IBdatabase, IBTrasaction и IBQuery...

К сообщению приложен файл (ClosBas.7z - 7Kb) cкачать
26 сен 17, 13:23    [20823653]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234
я хочу после проблем с сервером переоткрыть

А если не получится переоткрыть, что ты собираешься делать?
26 сен 17, 13:25    [20823659]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
чччД
Guest
Гость1234
чччД

Что сделать? Приложить архив папки с исходниками? могу...

Док

я хочу после проблем с сервером переоткрыть 3 компоненты IBdatabase, IBTrasaction и IBQuery...

Не, трэш у тебя там какой-то.

Почитай: http://www.ibase.ru/ibx/
26 сен 17, 13:28    [20823672]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
YuRock

ну вот и не получается этот Dataset переоткрыть. У меня его даже удалить не получается ...

Что буду делать - дерево трясти (из анекдота)
26 сен 17, 13:30    [20823677]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Док
Member

Откуда: Казань
Сообщений: 5233
Гость1234,

+ сделано на Лазаре, но в дельфях то же самое
procedure TForm1.Button1Click(Sender: TObject);
const
  DBPath: String = 'localhost/3302:d:\temp\Employee.fdb';
  ChrSet: String = 'UTF8';
  LibName: String = 'd:\Portable_program\Firebird_server\Firebird_3_0_2\fbclient.dll';
  UsrNm: String = 'sysdba';
  PW: String = 'cooladmin';
var
  Dbase: TIBDataBase;
  ReadTrans: TIBTransaction;
  Qry: TIBQuery;
  DS: TDataSource;
begin
  Dbase:= TIBDataBase.Create(Application);
  ReadTrans:= TIBTransaction.Create(Application);
  Qry:= TIBQuery.Create(Application);
  DS:= TDataSource.Create(Application);
  try
    with Dbase do
    begin
      DatabaseName:= DBPath;
      DefaultTransaction:= ReadTrans;
      LoginPrompt:= False;
      LibraryName:= LibName;
      Params.Add('lc_ctype=' + ChrSet);
      Params.Add('user_name=' + UsrNm);
      Params.Add('password=' + PW);
    end;

    with ReadTrans do
    begin
      Params.Add('read');
      Params.Add('read_committed');
      Params.Add('rec_version');
      Params.Add('nowait');
      DefaultDatabase:= Dbase;
    end;

    with Qry do
    begin
      Database:= Dbase;
      Transaction:= ReadTrans;
      AutoFetchAll:= True;
      SQL.Text:= 'SELECT COUNTRY, CURRENCY FROM COUNTRY';
    end;

    DS.DataSet:= Qry;
    DBGrid1.DataSource:= DS;

    try
      if not Dbase.Connected then Dbase.Connected:= True;
      try
        ReadTrans.Active:= True;
        try
          Qry.Active:= True;
        except
          on E:EIBError do //uses IB
          begin
            ShowMessage(E.Message);
            Exit;
          end;
        end;
      except
        on E:EIBError do
        begin
          ShowMessage(E.Message);
          Exit;
        end;
      end;
    except
      on E:EIBError do
      begin
        ShowMessage(E.Message);
        Exit;
      end;
    end;

    ShowMessage('Connected!');
  finally
    FreeAndNil(DS);
    FreeAndNil(Qry);
    FreeAndNil(ReadTrans);
    FreeAndNil(Dbase);
  end;
end;                                      


К сообщению приложен файл. Размер - 22Kb
26 сен 17, 13:52    [20823783]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234
ну вот и не получается этот Dataset переоткрыть

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

К сообщению приложен файл (Test.7z - 3Kb) cкачать
26 сен 17, 13:57    [20823812]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Док
сделано на Лазаре, но в дельфях то же самое

О, а давно в IBX появилась возможность писать
Dbase.LibraryName:= LibName;

?
26 сен 17, 14:00    [20823820]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Док

Проблемы создать, соединиться и после работы удалить нет.
В твоем случае попробуй, пожалуйста, во время коннекта остановить и запустить сервер и не удаляй созданные компоненты, а переконектись ими к базе по новой...
26 сен 17, 14:44    [20824022]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
YuRock
О, а давно в IBX появилась возможность писать
В ХЕ3 (IBX 17.17) LibraryName нет, но есть ServerType. Суть - зерегистрированный список строк. К каждой строке привязана своя реализация IGDSLibrary. В этой реализации можно менять клиентскую библиотеку
26 сен 17, 14:44    [20824026]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Гость1234
остановить и запустить сервер и не удаляй созданные компоненты, а переконектись ими к базе по новой

Ты хочешь то, что в моём примере делает нажатие кнопки ReOpenQuery после перезапуска службы сервера?
26 сен 17, 15:04    [20824139]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Док
Member

Откуда: Казань
Сообщений: 5233
YuRock
Док
сделано на Лазаре, но в дельфях то же самое

О, а давно в IBX появилась возможность писать
Dbase.LibraryName:= LibName;


?

Я форк юзаю от -Rik- а-ля фибы.
26 сен 17, 15:26    [20824224]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
YuRock,

Да срабатывает, но почему то у меня после двойного нажатия на ReOpenQuery )))

В любом случае прикольно - спасибо)) Попробую разобраться со своим хозяйством ))
26 сен 17, 15:32    [20824248]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Док
Member

Откуда: Казань
Сообщений: 5233
Гость1234
В твоем случае попробуй, пожалуйста, во время коннекта остановить и запустить сервер и не удаляй созданные компоненты, а переконектись ими к базе по новой...

Я потому и спрашивал, чего тебе надо, так как ты внятно не можешь объяснить суть проблемы.
26 сен 17, 15:33    [20824251]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
_Vasilisk_
YuRock
О, а давно в IBX появилась возможность писать
В ХЕ3 (IBX 17.17) LibraryName нет, но есть ServerType. Суть - зерегистрированный список строк. К каждой строке привязана своя реализация IGDSLibrary. В этой реализации можно менять клиентскую библиотеку

А сам-то реально пробовал таким макаром привязать к IBX что-то фаербердовское, а не интербейзовское или пока что чисто теоретические построения?
26 сен 17, 15:35    [20824262]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
Guest7777
А сам-то реально пробовал таким макаром привязать к IBX что-то фаербердовское
Да. Именно таким макаром привязал FB и FBEmbedded. Единственный минус - Эмбаркадера засунула свою реализацию IGDSLibrary в implementation. Поэтому вместо простого наследования пришлось копировать всю реализацию
26 сен 17, 15:59    [20824348]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
_Vasilisk_,

т.е. в свойстве ServerType после этого появилась пара новых позиций, соответствующих FB и соотв. образом функциональных?
26 сен 17, 16:27    [20824441]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
Guest7777
т.е. в свойстве ServerType после этого появилась пара новых позиций, соответствующих FB
Да
Guest7777
и соотв. образом функциональных?
С этим сложнее. Т.к. мне кроме выбора библиотеки ничего больше не было нужно. Т.е. я скопировал реализацию IGDSLibrary для IB и просто заменил библиотеку. Никаких особых FB-фич мне не требовалось. А так да - я выбираю ServerType и гружу нужного мне клиента.
26 сен 17, 17:02    [20824536]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
_Vasilisk_,

Понял, учту. Ибо сам под XE5 счел необходимым править непосредственно исходники IBX для достижения примерно того же функционала, не найдя с наскоку способа сделать это по-человечески надстройкой сверху. Хотя тоже действовал через дополнительную реализацию IGDSLibrary.
26 сен 17, 17:19    [20824608]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
Guest7777,

Дарю 20543220
26 сен 17, 17:40    [20824674]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Guest7777
Guest
_Vasilisk_,

Спасибо, конечно, но я, наверное, со своим патчем не сей предмет непосредственно составляющих IBX, пока пешком постою. Все-таки он на порядок менее громоздкий при сравнимом выходном эффекте..
26 сен 17, 18:37    [20824815]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Док

Извини дорогой - водится грешок по поводу внятности мыслей. В любом случае спасибо за помощь )))
26 сен 17, 18:49    [20824847]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Док
Member

Откуда: Казань
Сообщений: 5233
Гость1234
В любом случае спасибо за помощь )))

теперь, когда у тебя куча полезного кода на руках, обработать событие падение сервера и и потери коннекта - плевое дело. Мне - лениво, извини :)
26 сен 17, 22:55    [20825304]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Гость1234
Guest
Всем огромное спасибо за помощь - разобрался))
Особенно YuRock, Guest7777, Док и чччД ))
Тема закрыта ...
27 сен 17, 08:54    [20825690]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Погляди еще в http://www.loginovprojects.ru/index.php?page=ibxfbutils

Там может быть уже какие-то наработки, чтобы не изобретать велосипед
27 сен 17, 13:48    [20826607]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Arioch,

Скачал, посмотрел. Про реконнект там ничего нет (я не нашел).
Там есть:
1. Монстры ConnectionPool и IniFile и подобные, которые нужны в редчайших случаях и реализованы сомнительно (особенно умиляют фразы типа "Перед использованием объекта TFBIniFile Вам необходимо создать в базе данных следующую таблицу...");
2. Обычные обертки для создания динамических запросов, которые только уводят начинающих разработчиков в сторону от правильной работы с параметризованными подготовленными запросами;
3. Бессмысленные древние средства для бэкапа/ресторе, которые могут быть только хуже использования элементарных батников с вызовом стандартных средств. И благодаря которым можно только "научиться" и пристраститься делать бэкапы на сервере.

Еще из того, что заметил - все коннекшены делаются синхронно ч-з мьютекс (что является маразмом и совершенно не нужно для 3-го ФБ как минимум, и "говорят" и для 2.5).

Вообще странно выглядят следующие фразы автора:

Чаще всего разработчики делают сравнительно простые приложения, состоящие только из одного (основного) потока...

И особенно:
Сами по себе компоненты IBX мало чем помогут:
- при создании базы данных "с нуля" (IBX позволяет создать лишь пустую базу данных; создание таблиц, полей и прочих объектов осуществляется, как правило, в IBExpert);
- при коррекции структуры рабочей базы данных (в этом случае также используют IBExpert);
- при разработке высокопроизводительных многопоточных серверных приложений;


1-й раз слышу такое. Но уж явно не эту библиотеку я бы использовал для решения этих задач. Вот голый IBX - другое дело.
27 сен 17, 14:42    [20826833]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Arioch
Member

Откуда:
Сообщений: 9144
я бы вообще не пользовался голым IBX в новый проектах, поскольку это заплыв против течения

Сегодня просто чтобы загрузить fbclient.dll вместо gds32.dll потребовалось копи-пастить реализацию iGDSLibrary, завтра в IBX откусят ещё что-нибудь FBb-специфичное и т.д.

Я даже не знаю (давно не интересовался) многократный выхов SP из IBX убрали уже или всё ещё там....

Впрочем, это вкусовщина
27 сен 17, 14:54    [20826874]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9917
YuRock
все коннекшены делаются синхронно ч-з мьютекс (что является маразмом и совершенно не нужно для 3-го ФБ как минимум, и "говорят" и для 2.5).
Для IB актуально до сих пор
Arioch
многократный выхов SP из IBX убрали уже или всё ещё там....
Это как? Впервые о таком слышу
27 сен 17, 15:08    [20826915]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
_Vasilisk_
Это как? Впервые о таком слышу

Было во времена мамонтов. До 6.02 кажись было (в некоторых случаях, то ли при какой-то ошибке, то ли еще когда - уже не вспомню) - я у себя подпилил, как и многое другое.
Arioch
я бы вообще не пользовался голым IBX в новый проектах

Я тоже. Естественно, он в обязательном порядке требует ручной допилки.
Я имел ввиду скорее "голый API со взятым IBX за основу".
27 сен 17, 16:08    [20827139]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
Arioch
Member

Откуда:
Сообщений: 9144
YuRock
я у себя подпилил

YuRock
в обязательном порядке требует ручной допилки.


Вопрос 1: зачем брать что-то только ради того, чтобы допилить ?

Вопрос 2: это если допилишь везде и всё, а если

_Vasilisk_
Впервые о таком слышу


то как ты будешь допиливать то, о чем ни сном ни духом?

Поэтому для меня, если проект на Firebird, то IBX'у там не место. Это минное поле замедленного действия.
28 сен 17, 17:28    [20829794]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при работе с компонентами interbase  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Arioch
Поэтому для меня, если проект на Firebird, то IBX'у там не место

В делфе и для новичков - наверно, да. А вот в Лазаре Док на "портированном" почти-IBX вполне работает вроде.
Arioch
Это минное поле замедленного действия

На самом деле баги в нем достаточно серьезны, чтобы замедленными быть. Они вылазят сразу. Они описаны везде почти все. Но я не агитирую. Я агитирую, повторяю, за голое апи, т.к. оно развивается и дополняется (в отличие от IBX, т.к. он к Firebird вообще не имеет отношения). И IBX как пример - очень не плох.
А можно вообще на новом апи Firebird начинать. Есть библиотеки, написанные через него? Сомневаюсь.
28 сен 17, 17:52    [20829883]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить