FBDataSet (библиотека доступа к данным FireBird/Interbase.)

Модератор: Модераторы

Ответить
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexs писал(а):FBDataSet и UIBQuery - это...

Буквально вчера и то т то "пощупал". alexs-у большой спасибо за FBDataSet. Очень толково сделано. Одного не понял...

Как передать/присвоить значения параметрам (Params) компонента tUIBQuery?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Код: Выделить всё

procedure DoSaveRow;
begin
  rxSmsData.First;
  while not rxSmsData.Eof do
  begin
    quSaveRow.Params.ByNameAsInteger['tb_file_packet_id']:=PacketId;
    quSaveRow.Params.ByNameAsString['tb_file_packet_row_sms_text']:=GetFormatedSMS;
    quSaveRow.Params.ByNameAsString['tb_file_packet_row_phone']:=rxSmsData.Fields[0].AsString;
    quSaveRow.ExecSQL;
    rxSmsData.Next;
  end;
end;

Всё понятно?
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexs писал(а):Всё понятно?

Понятней некуда. Только у меня почему-то: unitsql.pas(97,48) Error: No member is provided to access property

В IBX (дельфи) все работало, с tSQLQuery тоже. Тут нескладуха какая-то... :(
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

dunin писал(а):unitsql.pas(97,48) Error: No member is provided to access property

Как я люблю такие сообщения об ошибках :-)
А что у тебя в модуле unitsql в 97 строке за текст? Может покажешь? :D :D :D :D
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

alexs писал(а):Как я люблю такие сообщения об ошибках :-)
...

Извинямс... :oops:
Вот так работает:

Код: Выделить всё

function InsSQL  (Base:tIBConnection; TableName: string; FieldsName: array of string; NewValues: array of variant; DoCommitRetaining: boolean = True): boolean;
  var iSQL: tSQLQuery;
      S: string; I: Integer;
begin
  if (Length(FieldsName) <> Length(NewValues))
    then begin
      raise Exception.Create(sql001+' InsSQL');
      exit;
    end;

  iSQL:= tSQLQuery.Create(Base);
  iSQL.DataBase:= Base;
  iSQL.Transaction:= Base.Transaction;

  iSQL.SQL.Add('insert into '+TableName+' ');
  S:='';
  for I:= 0 to High(FieldsName)
    do S:= S + TableName+'.'+FieldsName[i]+',';
  SetLength(S, Length(S)-1);
  iSQL.SQL.Add('('+S+') values ');
  S:='';

  for I:= 0 to High(NewValues)
    do S := S+':'+IntToStr(i)+',';
  SetLength(S, Length(S)-1);
  iSQL.SQL.Add('('+S+')');

  for I:= 0 to High(NewValues)
    do iSQL.Params.ParamByName(inttostr(i)).Value:= NewValues[i];
  try
    iSQL.ExecSQL;
    if DoCommitRetaining then Base.Transaction.CommitRetaining;
  finally
    iSQL.Close;
    FreeAndNil(iSQL);
    Base.Transaction.Active:=True;
  end;//finally
Result:= True;
end;   

А вот так НЕ работает

Код: Выделить всё

function InsSQL  (Base:TJvUIBDataBase; TableName: string; FieldsName: array of string; NewValues: array of variant; DoCommitRetaining: boolean = True): boolean;
  var iSQL: tJvUIBQuery;
      //iSQL: tFBDataSet;
      S: string; I: Integer;
begin
  if (Length(FieldsName) <> Length(NewValues))
    then begin
      raise Exception.Create(sql001+' InsSQL');
      exit;
    end;

  iSQL:= tJvUIBQuery.Create(Base);
  //iSQL:= tFBDataSet.Create(Base);
  iSQL.DataBase:= Base;
  //iSQL.Transaction:= Base.Transaction;
  iSQL.SQL.Clear; // ?????

  iSQL.SQL.Add('insert into '+TableName+' ');
  S:='';
  for I:= 0 to High(FieldsName)
    do S:= S + TableName+'.'+FieldsName[i]+',';
  SetLength(S, Length(S)-1);
  iSQL.SQL.Add('('+S+') values ');
  S:='';

  for I:= 0 to High(NewValues)
    do S := S+':'+IntToStr(i)+',';
  SetLength(S, Length(S)-1);
  iSQL.SQL.Add('('+S+')');

  for I:= 0 to High(NewValues)
    do iSQL.Params.ByNameAsVariant[inttostr(i)]:= NewValues[i]; // <-- здесь не работает !!!!!!
  try
    iSQL.ExecSQL;
    //if DoCommitRetaining then Base.Transaction.CommitRetaining;
  finally
    iSQL.Close;
    //iSQL.Free;
    FreeAndNil(iSQL);
    //Base.Transaction.Active:=True;
  end;//finally
Result:= True;
end;     
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Код: Выделить всё

  UIBQuery1.Params.ByNameAsVariant[IntToStr(i)]:='aaa';

Вот это у меня скомпилировалось.
Может всё дело в том, что у тебя слишком старые UIB? Генри достаточно давно уже разругался проектом JEDI и выкинул все ссылки на них из своего кода. Теперь там все объявления идут без приставки jv :-)
alexrayne
постоялец
Сообщения: 125
Зарегистрирован: 03.12.2008 15:56:26

Сообщение alexrayne »

Леш, пора тебе вывесить на своих страничках БОЛЬЩОЙ банер про jv. и в багтрекере кинуть етот баг и окоментировать его
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

да тут бы вобще сайтом своим заняться...
yuray
новенький
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина

Сообщение yuray »

fbdemofpc 1.9.3.34, FBDataSet SQL Editor: наличие двух кнопок Ok. :roll:
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

В транке давно исправлено вроде.
yuray
новенький
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина

Сообщение yuray »

У меня в установленных пакетах для fbdemofpc прописана версия 1.9.3.34. Для dcl_fb_id_dataset - 1.0.0.1.
А как узнать ревизию FBDataSet компоненты, которая установлена? Брал FBDataSet с SVN. При переносе на другой комп все каталоги .svn удалил...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

возьми заново с свн :-)
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Где можно взять одним файлом версию FBDataSet совместимую с последней версией UIB (которая без Jv префиксов)?
Спасибо.

Добавлено спустя 1 час 24 минуты 12 секунд:
dunin писал(а):Где можно взять одним файлом версию FBDataSet совместимую с последней версией UIB (которая без Jv префиксов)?

Вопрос снят. Получилось черепашкой забрать файлы.
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

Модуль jvuibtransactionedit не компилируется: в Uses забыт модуль uiblib, где описан тип tTransParams.

И ещё не понимаю, что и зачем находится в каталоге lazUIBEditors. Сначала не заметил пакета в корне и начал ставить из lazUIBEditors, получил при компиляции ещё плюс к вышеназванной кучу ошибок с модулями и типами с, если не ошибаюсь, давно устаревшим префиксом Jv, e.g. TJvUIBDatabase.
Впрочем, в корне тоже лежит много модулей с этим префиксом.
Что это - рудименты? Или для совместимости со старыми UIB? Или?..

И UIB, и FBDataset из SVN.
alexrayne
постоялец
Сообщения: 125
Зарегистрирован: 03.12.2008 15:56:26

Сообщение alexrayne »

ИМХО, оно случайно туда залетело и потом в репозиторий скопом было принято.
А вообще попросите у Алексея логин и ветку в проекте и вычищайте мусор.
впринципе можно патчами Алексею откилывать но он етого нелюбит, вообще лень ему возится с чужими правками
Ответить