with dm.qryWrite do
begin
// A. INSERT & EDIT EVENTS
//
for intCount := 0 to Pred(intRows) do
begin
// Clear the SQL text
SQL.Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).UserField0) = EmptyStr then
begin
SQL.Text := Format(SQLInsertPlanningEvent, [SCHEMA]);
Prepare;
end
else
begin
SQL.Text := Format(SQLUpdatePlanningEvent, [SCHEMA]);
Prepare;
ParamByName('tvp_event_id').AsInteger := StrToInt(vJSEvents.Value(intCount).UserField0); // RemoteID in the database
end;
// Copy the parameters. NOTE: NULL values are empty strings in the JSON string sent by the client
//
if VariantToUTF8(vJSIDs.Value(0).ID2) <> EmptyStr then
ParamByName('historique_emploi_id').AsInteger := StrToInt(vJSIDs.Value(0).ID2)
else
ParamByName('historique_emploi_id').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).ResourceID) <> EmptyStr then
ParamByName('tvp_resource_id').AsInteger := StrToInt(vJSEvents.Value(intCount).ResourceID)
else
ParamByName('tvp_resource_id').Clear;
// "StartTime": "2017-06-06T12:00:00"
if VariantToUTF8(vJSEvents.Value(intCount).StartTime) <> EmptyStr then
//ParamByName('debut').AsDateTime := DateAsDMY(StringReplace(vJSEvents.Value(intCount).StartTime, 'T', ' ', [rfReplaceAll]), '-')
ParamByName('debut').AsDateTime := SQLDateTimeToDateTime(StringReplace(vJSEvents.Value(intCount).StartTime, 'T', ' ', [rfReplaceAll]))
else
ParamByName('debut').Clear;
// "EndTime": "2017-06-06T15:00:00"
if VariantToUTF8(vJSEvents.Value(intCount).EndTime) <> EmptyStr then
//ParamByName('fin').AsDateTime := DateAsDMY(StringReplace(vJSEvents.Value(intCount).EndTime, 'T', ' ', [rfReplaceAll]), '-')
ParamByName('fin').AsDateTime := SQLDateTimeToDateTime(StringReplace(vJSEvents.Value(intCount).EndTime, 'T', ' ', [rfReplaceAll]))
else
ParamByName('fin').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).Description) <> EmptyStr then
ParamByName('description').AsString := VariantToUTF8(vJSEvents.Value(intCount).Description)
else
ParamByName('description').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).Location) <> EmptyStr then
ParamByName('lieu').AsString := VariantToUTF8(vJSEvents.Value(intCount).Location)
else
ParamByName('lieu').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).Notes) <> EmptyStr then
ParamByName('commentaires').AsString := VariantToUTF8(vJSEvents.Value(intCount).Notes)
else
ParamByName('commentaires').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).Category) <> EmptyStr then
ParamByName('categorie').AsInteger := StrToInt(vJSEvents.Value(intCount).Category)
else
ParamByName('categorie').Clear;
// TO DO!
if VariantToUTF8(vJSEvents.Value(intCount).AllDayEvent) <> EmptyStr then
ParamByName('alldayevent').AsBoolean := StrToBool(vJSEvents.Value(intCount).AllDayEvent)
else
ParamByName('alldayevent').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).DingPath) <> EmptyStr then
ParamByName('dingpath').AsString := VariantToUTF8(vJSEvents.Value(intCount).DingPath)
else
ParamByName('dingpath').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).AlarmSet) <> EmptyStr then
ParamByName('alarmset').AsBoolean := StrToBool(vJSEvents.Value(intCount).AlarmSet)
else
ParamByName('alarmset').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).AlarmAdvance) <> EmptyStr then
ParamByName('alarmadvance').AsInteger := StrToInt(vJSEvents.Value(intCount).AlarmAdvance)
else
ParamByName('alarmadvance').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).AlarmAdvanceType) <> EmptyStr then
ParamByName('alarmadvancetype').AsInteger := StrToInt(vJSEvents.Value(intCount).AlarmAdvanceType)
else
ParamByName('alarmadvancetype').Clear;
// SQLDateTimeToDateTime
if (Trim(VariantToUTF8(vJSEvents.Value(intCount).SnoozeTime)) <> EmptyStr) and (vJSEvents.Value(intCount).SnoozeTime <> null) then
ParamByName('snoozetime').AsDateTime := SQLDateTimeToDateTime(vJSEvents.Value(intCount).SnoozeTime)
else
ParamByName('snoozetime').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).RepeatCode) <> EmptyStr then
ParamByName('repeatcode').AsInteger := StrToInt(vJSEvents.Value(intCount).RepeatCode)
else
ParamByName('repeatcode').Clear;
// SQLDateTimeToDateTime
if (Trim(VariantToUTF8(vJSEvents.Value(intCount).RepeatRangeEnd)) <> EmptyStr) and (vJSEvents.Value(intCount).RepeatRangeEnd <> null) then
ParamByName('repeatrangeend').AsDateTime := SQLDateTimeToDateTime(vJSEvents.Value(intCount).RepeatRangeEnd)
else
ParamByName('repeatrangeend').Clear;
//
if VariantToUTF8(vJSEvents.Value(intCount).CustomInterval) <> EmptyStr then
ParamByName('custominterval').AsInteger := StrToInt(vJSEvents.Value(intCount).CustomInterval)
else
ParamByName('custominterval').Clear;
// Update the database
ExecSQL;
end; // for intCount := 0 to Pred(intRows) do