powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Редактирование данных из View'хи
8 сообщений из 33, страница 2 из 2
Редактирование данных из View'хи
    #39988866
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

Я вообще не понял к чему этот код, но через триггеры всё равно проще всего ИМХО, так что сначала так попробую.
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39988897
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,
это код строит sql на update или insert

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
procedure TSQLiteDS.DoPost(DataSet: TDataSet);
var
  s     : string;
  i     : integer;
  fParam : TParam;
  fField : TField;
begin
  if Tag <> 0 then Exit;
  if fTable = '' then Exit;
  if fKeyField = '' then Exit;
  if not (DataSet.State in [dsInsert, dsEdit]) then Exit;
  try
    case DataSet.State of
      dsInsert: s := BuildInsert(DataSet, fTable);
      dsEdit:   s := BuildUpdate(DataSet, fBuffer, fTable, fKeyField);
    end;
    if s = '' then Exit;
    fQuery.Close;
    fQuery.SQL.Text := s;
    fQuery.FetchParams;
    for i := 0 to fQuery.Params.Count - 1 do begin
      fParam := fQuery.Params[i];
      fField := DataSet.FindField(fParam.Name);
      case fField.DataType of
        ftBoolean    : fParam.AsBoolean  := fField.AsBoolean;
        ftWord,
        ftSmallInt,
        ftLargeInt,
        ftInteger    : fParam.AsInteger  := fField.AsInteger;
        ftTime,
        ftDate,
        ftDateTime   : fParam.AsDateTime := fField.AsDateTime;
        ftMemo,
        ftWideString,
        ftString     : fParam.AsString   := fField.AsString;
        else           fParam.Value      := fField.Value;
      end; // case fParams[i].DataType
    end;
    fQuery.Execute;
    fQuery.DataBase.Commit;
    fBuffer.EmptyTable;
  except
    on E:Exception do begin
      s := E.Message;
      ShowError(s);
      Abort;
    end;
  end;
end;

...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39988898
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaratIsk


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  for i := 0 to DataSet.Fields.Count -1 do begin
    FieldName := DataSet.Fields[i].FieldName;
    if not VarIsNull(DataSet.FindField(FieldName).Value) then begin
      s1 := s1 + FieldName + ', ';
      s2 := s2 + ':' + FieldName + ', ';
    end else begin
      s1 := s1 + FieldName + ', ';
      s2 := s2 + 'NULL, ';
    end; // if not VarIsNull(DataSet.Fields[i].Value)
  end; // for i := 0 to FieldList.Count



1) У тебя есть индекс поля, но ты все равно его заново ищешь - зачем?
2) Добавление запятой дублируется
3) У поля есть IsNull, это не помню чем, но чем-то лучше (то ли быстрее, то ли надежнее). Ну и нагляднее
4) Вся условная конструкция сводится к одной строчке с помощью IfThen
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39988948
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskэто код строит sql на update или insert

И зачем он делает эту бессмысленную работу?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39988971
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я всегда на вьюху просто вешал хранимки на апдейт, а в них уже анализировал что и куда рассовывать и надо ли вообще, если поле не менялось.
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39989024
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

MaratIskэто код строит sql на update или insert

И зачем он делает эту бессмысленную работу?..


умный поймет, глупый посмеется :)
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39989115
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk
умный поймет

Умный выкинет эту бездарную хрень.
...
Рейтинг: 0 / 0
Редактирование данных из View'хи
    #39989199
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Редактирование данных из View'хи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]