Пока всё было внутри модуля формы и внутри локальной процедуры, то запись добавлялась в таблицу.
Решил сделать обёртку и перенёс код в общий модуль, чтобы использовать в других местах.
На винде, всё норм, а на смартфоне ошибок нет, но запись не добавляется.
type
TInputQueryResult = record
Res: TModalResult;
OutV: string;
end;
...
...
...
function myInputQuery(const Caption, Text, AVal: String): TInputQueryResult;
Var
val: array of string;
r: TInputQueryResult;
begin
SetLength(val, 1);
val[0] := AVal;
TDialogService.InputQuery(Caption, [Text], Val,
procedure(const AResult: TModalResult; const AValues: array of string)
begin
case AResult of
mrOk:
begin
R.Res := mrOk;
R.OutV:= AValues[0];
end;
mrCancel:
begin
R.Res := mrCancel;
R.OutV:= '';
end;
end;
end
);
result := r;
end;
Использование
procedure TfmReference.actInsertExecute(Sender: TObject);
Var
sTableName, cap: string;
res: TInputQueryResult;
begin
cap := comboRefType.Items[comboRefType.ItemIndex];
res := myInputQuery(cap, 'Добавить: ', '');
if res.Res = mrOk then
begin
if not res.OutV.IsEmpty then
begin
sTableName := GetTableName;
sqlInsert.sql.Text := Format('Insert into %s (name) values(' + QuotedStr(res.OutV) + ')', [sTableName]);
sqlInsert.Execute;
if sqlInsert.Transaction.Active then sqlInsert.Transaction.Commit;
actRefreshExecute(nil);
end;
end;
end;
Вопрос
x11
Пока всё было внутри модуля формы и внутри локальной процедуры, то запись добавлялась в таблицу.
Решил сделать обёртку и перенёс код в общий модуль, чтобы использовать в других местах.
На винде, всё норм, а на смартфоне ошибок нет, но запись не добавляется.
type TInputQueryResult = record Res: TModalResult; OutV: string; end; ... ... ... function myInputQuery(const Caption, Text, AVal: String): TInputQueryResult; Var val: array of string; r: TInputQueryResult; begin SetLength(val, 1); val[0] := AVal; TDialogService.InputQuery(Caption, [Text], Val, procedure(const AResult: TModalResult; const AValues: array of string) begin case AResult of mrOk: begin R.Res := mrOk; R.OutV:= AValues[0]; end; mrCancel: begin R.Res := mrCancel; R.OutV:= ''; end; end; end ); result := r; end;
Использование
procedure TfmReference.actInsertExecute(Sender: TObject); Var sTableName, cap: string; res: TInputQueryResult; begin cap := comboRefType.Items[comboRefType.ItemIndex]; res := myInputQuery(cap, 'Добавить: ', ''); if res.Res = mrOk then begin if not res.OutV.IsEmpty then begin sTableName := GetTableName; sqlInsert.sql.Text := Format('Insert into %s (name) values(' + QuotedStr(res.OutV) + ')', [sTableName]); sqlInsert.Execute; if sqlInsert.Transaction.Active then sqlInsert.Transaction.Commit; actRefreshExecute(nil); end; end; end;
Ссылка на комментарий
13 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.