?? datadrivereh.pas
字號:
MemRec.Value[DataFieldIndex, DataValueVersion] := Field.Value;
end;
procedure TDataDriverEh.DefaultRefreshRecord(MemRecord: TMemoryRecordEh);
var
vValues: Variant;
i: Integer;
KeyFound: Boolean;
Bookmark: TBookmarkStr;
// DeltaDataSet: TMemTableDataEh;
// DeltaRec: TMemoryRecordEh;
begin
if (ProviderDataSet <> nil) then
begin
// DeltaDataSet := CreateDeltaData;
// DeltaDataSet.DataStruct.Assign(MemRecord.DataStruct);
try
// DeltaRec := DeltaDataSet.RecordsList.NewRecord;
Bookmark := ProviderDataSet.Bookmark;
try
if MemRecord.UpdateStatus = usModified
then vValues := MemRecord.DataValues[KeyFields, dvvOldValueEh]
else vValues := MemRecord.DataValues[KeyFields, dvvValueEh];
KeyFound := ProviderDataSet.Locate(KeyFields, vValues, []);
if KeyFound then
// for i := 0 to DeltaDataSet.DataStruct.Count-1 do
// DeltaRec.Value[i, dvtValueEh] :=
for i := 0 to MemRecord.DataStruct.Count-1 do
AssignFieldValue(MemRecord.DataStruct.MemTableData, MemRecord, i,
dvvRefreshValue, ReaderDataSet)
else
raise Exception.Create('Key is not found in ProviderDataSet');
finally
if (Bookmark <> '') and DataSetBookmarkValid(ProviderDataSet, Bookmark) then
ProviderDataSet.Bookmark := Bookmark;
end;
// MemRecord.RefreshRecord(DeltaRec);
finally
// DeltaDataSet.Free;
end;
// Resync([]);
end;
end;
procedure TDataDriverEh.RefreshRecord(MemRecord: TMemoryRecordEh);
begin
if Assigned(OnRefreshRecord)
then OnRefreshRecord(Self, MemRecord.DataStruct.MemTableData, MemRecord)
else DefaultRefreshRecord(MemRecord);
end;
procedure TDataDriverEh.SetKeyFields(const Value: String);
begin
FKeyFields := Value;
end;
procedure TDataDriverEh.SetProviderDataSet(const Value: TDataSet);
begin
if Value <> FProviderDataSet then
begin
FProviderDataSet := Value;
if Value <> nil then Value.FreeNotification(Self);
end;
end;
{
function TDataDriverEh.GetReaderDataSet: TDataSet;
begin
Result := ProviderDataSet;
end;
}
procedure TDataDriverEh.SetProviderEOF(const Value: Boolean);
begin
if FProviderEOF <> Value then
begin
FProviderEOF := Value;
if FProviderEOF and (FReaderDataSet <> nil) and FReaderDataSetFreeOnEof then
begin
FReaderDataSet.Free;
FReaderDataSetFreeOnEof := False;
end;
FReaderDataSet := nil;
end;
end;
procedure TDataDriverEh.SetAutoIncFields(Fields: TFields; DataStruct: TMTDataStructEh);
begin
end;
function TDataDriverEh.GetDataDriverConsumer: TObject;
begin
Result := FDataDriverConsumer;
end;
procedure TDataDriverEh.SetDataDriverConsumer(ADataDriverConsumer: TObject);
begin
FDataDriverConsumer := ADataDriverConsumer;
end;
{ TCustomSQLCommandEh }
constructor TCustomSQLCommandEh.Create(ADataDriver: TCustomSQLDataDriverEh);
begin
inherited Create;
FDataDriver := ADataDriver;
FCommandText := TStringList.Create;
TStringList(FCommandText).OnChange := CommandTextChanged;
end;
destructor TCustomSQLCommandEh.Destroy;
begin
FreeAndNil(FCommandText);
inherited Destroy;
end;
function TCustomSQLCommandEh.GetCommandText: TStrings;
begin
Result := FCommandText;
end;
procedure TCustomSQLCommandEh.SetCommandText(const Value: TStrings);
begin
FCommandText.Assign(Value);
end;
function TCustomSQLCommandEh.Execute(var Cursor: TDataSet; var FreeOnEof: Boolean): Integer;
var
Processed: Boolean;
begin
Processed := False;
Result := -1;
Cursor := nil;
if DefaultSQLDataDriverResolver <> nil then
Result := DefaultSQLDataDriverResolver.ExecuteCommand(DataDriver, Self, Cursor, FreeOnEof, Processed);
end;
procedure TCustomSQLCommandEh.CommandTextChanged(Sender: TObject);
begin
if (DataDriver <> nil) then
DataDriver.CommandTextChanged(Self);
end;
procedure TCustomSQLCommandEh.CommandTypeChanged;
begin
end;
function TCustomSQLCommandEh.GetCommandType: TSQLCommandTypeEh;
begin
Result := FCommandType;
end;
procedure TCustomSQLCommandEh.SetCommandType(const Value: TSQLCommandTypeEh);
begin
FCommandType := Value;
end;
procedure TCustomSQLCommandEh.RefreshParams(MemRecord: TMemoryRecordEh; DataValueVersion: TDataValueVersionEh);
begin
end;
function TCustomSQLCommandEh.GetOwner: TPersistent;
begin
Result := FDataDriver;
end;
function TCustomSQLCommandEh.GetNamePath: String;
begin
Result := 'SQLCommand';
end;
function TCustomSQLCommandEh.IsCommandTypeStored: Boolean;
begin
Result := (FCommandType <> DefaultCommandType);
end;
function TCustomSQLCommandEh.DefaultCommandType: TSQLCommandTypeEh;
begin
Result := DataDriver.GetDefaultCommandTypeFor(Self);
end;
procedure TCustomSQLCommandEh.Assign(Source: TPersistent);
begin
if Source is TCustomSQLCommandEh then
with (Source as TCustomSQLCommandEh) do
begin
Self.CommandText := CommandText;
Self.CommandType := CommandType;
end;
end;
{procedure TCustomSQLCommandEh.AssignParams(AParams: TParams);
begin
end;
procedure TCustomSQLCommandEh.AssignToParams(AParams: TParams);
begin
end;}
function TCustomSQLCommandEh.GetParams: TParams;
begin
Result := nil;
end;
procedure TCustomSQLCommandEh.SetParams(AParams: TParams);
begin
end;
{procedure TCustomSQLCommandEh.SetDynamicSQL(const Value: Boolean);
begin
FDynamicSQL := Value;
end;
}
{ TBaseSQLCommandEh }
constructor TBaseSQLCommandEh.Create(ADataDriver: TBaseSQLDataDriverEh);
begin
inherited Create(ADataDriver);
FParams := TParams.Create(Self);
FParamCheck := True;
end;
destructor TBaseSQLCommandEh.Destroy;
begin
FreeAndNil(FParams);
inherited Destroy;
end;
procedure TBaseSQLCommandEh.RefreshParams(MemRecord: TMemoryRecordEh; DataValueVersion: TDataValueVersionEh);
var
I: Integer;
begin
for I := 0 to Params.Count - 1 do
begin
if Assigned(OnAssignParam)
then OnAssignParam(Self, MemRecord, DataValueVersion, Params[I])
else DefaultRefreshParam(MemRecord, DataValueVersion, Params[I]);
end;
end;
procedure TBaseSQLCommandEh.DefaultRefreshParam(MemRecord: TMemoryRecordEh;
DataValueVersion: TDataValueVersionEh; Param: TParam);
begin
DataDriver.AssignCommandParam(Self, MemRecord, DataValueVersion, Param);
end;
function TBaseSQLCommandEh.GetParamCheck: Boolean;
begin
Result := FParamCheck;
end;
procedure TBaseSQLCommandEh.SetParamCheck(const Value: Boolean);
begin
FParamCheck := Value;
end;
procedure TBaseSQLCommandEh.SetParams(AParams: TParams);
begin
if FParams <> AParams then
FParams.Assign(AParams);
end;
function TBaseSQLCommandEh.GetParams: TParams;
begin
Result := FParams;
end;
procedure TBaseSQLCommandEh.Assign(Source: TPersistent);
begin
inherited Assign(Source);
if Source is TBaseSQLCommandEh then
with (Source as TBaseSQLCommandEh) do
begin
Self.ParamCheck := ParamCheck;
Self.Params := Params;
end
else if Source is TCustomSQLCommandEh then
with (Source as TCustomSQLCommandEh) do
begin
Self.ParamCheck := ParamCheck;
Self.Params.Assign(GetParams);
end
end;
procedure TBaseSQLCommandEh.CommandTextChanged(Sender: TObject);
var
List: TParams;
begin
inherited CommandTextChanged(Sender);
if not (csReading in DataDriver.ComponentState) then
// if ParamCheck then
// Params.ParseSQL(CommandText.Text, True);
if ParamCheck or (csDesigning in DataDriver.ComponentState) then
begin
List := TParams.Create(Self);
try
List.ParseSQL(CommandText.Text, True);
List.AssignValues(Params);
Params.Clear;
Params.Assign(List);
finally
List.Free;
end;
end;
end;
function TBaseSQLCommandEh.GetDataDriver: TBaseSQLDataDriverEh;
begin
Result := TBaseSQLDataDriverEh(inherited DataDriver);
end;
{procedure TBaseSQLCommandEh.AssignParams(AParams: TParams);
begin
Params := AParams;
end;
procedure TBaseSQLCommandEh.AssignToParams(AParams: TParams);
begin
AParams.Assign(Params);
end;}
{ TCustomSQLDataDriverEh }
constructor TCustomSQLDataDriverEh.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FSelectCommand := CreateSelectCommand;
FSelectCommand.FCommandType := GetDefaultCommandTypeFor(FSelectCommand);
FUpdateCommand := CreateUpdateCommand;
FUpdateCommand.FCommandType := GetDefaultCommandTypeFor(FUpdateCommand);
FInsertCommand := CreateInsertCommand;
FInsertCommand.FCommandType := GetDefaultCommandTypeFor(FInsertCommand);
FDeleteCommand := CreateDeleteCommand;
FDeleteCommand.FCommandType := GetDefaultCommandTypeFor(FDeleteCommand);
FGetrecCommand := CreateGetrecCommand;
FGetrecCommand.FCommandType := GetDefaultCommandTypeFor(FGetrecCommand);
FSpecParams := TStringList.Create;
ResolveToDataSet := False;
FServiceCommand := CreateCommand;
FDynaSQLParams := TDynaSQLParamsEh.Create(Self);
end;
destructor TCustomSQLDataDriverEh.Destroy;
begin
FreeAndNil(FDynaSQLParams);
FreeAndNil(FSelectCommand);
FreeAndNil(FUpdateCommand);
FreeAndNil(FInsertCommand);
FreeAndNil(FDeleteCommand);
FreeAndNil(FGetrecCommand);
FreeAndNil(FServiceCommand);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -