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;
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.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.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;
Вот это у меня скомпилировалось. Может всё дело в том, что у тебя слишком старые UIB? Генри достаточно давно уже разругался проектом JEDI и выкинул все ссылки на них из своего кода. Теперь там все объявления идут без приставки jv
У меня в установленных пакетах для fbdemofpc прописана версия 1.9.3.34. Для dcl_fb_id_dataset - 1.0.0.1. А как узнать ревизию FBDataSet компоненты, которая установлена? Брал FBDataSet с SVN. При переносе на другой комп все каталоги .svn удалил...
Модуль jvuibtransactionedit не компилируется: в Uses забыт модуль uiblib, где описан тип tTransParams.
И ещё не понимаю, что и зачем находится в каталоге lazUIBEditors. Сначала не заметил пакета в корне и начал ставить из lazUIBEditors, получил при компиляции ещё плюс к вышеназванной кучу ошибок с модулями и типами с, если не ошибаюсь, давно устаревшим префиксом Jv, e.g. TJvUIBDatabase. Впрочем, в корне тоже лежит много модулей с этим префиксом. Что это - рудименты? Или для совместимости со старыми UIB? Или?..
ИМХО, оно случайно туда залетело и потом в репозиторий скопом было принято. А вообще попросите у Алексея логин и ветку в проекте и вычищайте мусор. впринципе можно патчами Алексею откилывать но он етого нелюбит, вообще лень ему возится с чужими правками