Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function TAqSqlCommandUpsertEngine.GenerateScritps: IAqSqlCommandUpsertEngine;
- var
- lField: TField;
- lIndex: Integer;
- begin
- Result := Self;
- fCommands.Clear;
- fDataset.DataSet.First;
- while fDataset.NotEof do
- begin
- fCommands.AppendFormat('UPDATE OR INSERT INTO %s (%s) VALUES (', [fTable, fCacheFields]);
- for lIndex := 0 to Pred(fCacheFieldsList.Count) do
- begin
- lField := fDataset.DataSet.FindField(fCacheFieldsList[lIndex]);
- case lField.DataType of
- ftSmallint, ftSingle, ftInteger, ftWord, ftShortint:
- fCommands.Append(TAqUtils.IIF<Int32>(lField.AsString, lField.AsInteger, 0));
- ftLargeint:
- fCommands.Append(TAqUtils.IIF<Int64>(lField.AsString, lField.AsLargeInt, 0));
- ftFMTBcd, ftExtended, ftFloat, ftCurrency, ftBCD:
- fCommands.Append(lField.AsFloat);
- ftDate:
- fCommands.Append(QuotedStr(FormatDateTime('yyyy-mm-dd', lField.AsDateTime)));
- ftTime:
- fCommands.Append(QuotedStr(FormatDateTime('hh:nn:ss', lField.AsDateTime)));
- ftDateTime, ftTimeStamp:
- fCommands.Append(QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', lField.AsDateTime)));
- ftString, ftWideString, ftMemo:
- fCommands.Append(QuotedStr(lField.AsString));
- else
- fCommands.Append('NULL');
- end;
- if lIndex < Pred(fCacheFieldsList.Count) then
- fCommands.Append(', ');
- end;
- fCommands.Append(')');
- if not fMatching.IsEmpty then
- fCommands.AppendFormat(' MATCHING (%s)', [fMatching]);
- fCommands.Append(';');
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement