⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysqldataset.pas

📁 MYSQL 连接控件 MYSQL 连接控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
     property Filtered;
     property FieldName: string read FFieldName write SetFieldName;
     property IndexDefs stored StoreIndexDefs;
     property MacroDel;
     property Macros;
    	property MasterFields;
    	property MasterSource;
     property Options;
     property ParamCheck;
     property RawData;
     property ReadOnly;
     property ResultType;
     property ShareConnection;
     property SQL;
     property SQLBatch;
     property SQLCached;
     property SQLDelete;
     property SQLInsert;
     property SQLUpdate;
     property TableName;
     property UseCursor;
     property OnAfterAdd;
     property OnExecSQL;
     property OnMacro;
     property OnCustomValue;
     property OnDefaultValue;
     property OnThreadOpened;
     property OnThreadPosted;
     property BeforeOpen;
     property AfterOpen;
     property BeforeClose;
     property AfterClose;
     property BeforeInsert;
     property AfterInsert;
     property BeforeEdit;
     property AfterEdit;
     property BeforePost;
     property AfterPost;
     property BeforeCancel;
     property AfterCancel;
     property BeforeDelete;
     property AfterDelete;
     property BeforeScroll;
     property AfterScroll;
     property BeforeRefresh;
     property AfterRefresh;
     property OnCalcFields;
     property OnDeleteError;
     property OnEditError;
     property OnNewRecord;
     property OnPostError;
  end;
  TMySQLTable = class(TMySQLDatasetBase)
  public
     constructor Create(AOwner: TComponent); override;
  published
     property Active;
     property CachedUpdates;
     property Constraints;
     property FieldDefs stored StoreFieldDefs;
     property Filter;
     property Filtered;
     property IndexDefs stored StoreIndexDefs;
     property IndexFieldNames;
    	property MasterFields;
    	property MasterSource;
     property ReadOnly;
     property TableName;
     property Options default [doShareConnection,doMacrosEnabled,doMacroCheck,do2KStrToMemo,doRetrieveFieldValues,doRetrieveIndexDefs,doUseCursor];
     property OnAfterAdd;
     property OnExecSQL;
     property OnMacro;
     property OnDefaultValue;
     property OnThreadOpened;
     property OnThreadPosted;
     property BeforeOpen;
     property AfterOpen;
     property BeforeClose;
     property AfterClose;
     property BeforeInsert;
     property AfterInsert;
     property BeforeEdit;
     property AfterEdit;
     property BeforePost;
     property AfterPost;
     property BeforeCancel;
     property AfterCancel;
     property BeforeDelete;
     property AfterDelete;
     property BeforeScroll;
     property AfterScroll;
     property BeforeRefresh;
     property AfterRefresh;
     property OnCalcFields;
     property OnDeleteError;
     property OnEditError;
     property OnNewRecord;
     property OnPostError;
  end;
  TMySQLQuery = class(TMySQLDatasetBase)
  published
     property Active;
     property CachedUpdates;
     property Constraints;
    	property DataSource: TDataSource read GetDataSource write SetDataSource;
     property Filter;
     property Filtered;
     property Options;
     property ParamCheck;
     property ParamDelimiters: string read GetMacroString write SetMacroString stored StoreMacroDel;
     property Params;
     property ResultType;
     property SQL;
     property SQLDelete;
     property SQLInsert;
     property SQLUpdate;
     property ReadOnly;
     property TableName;
     property OnAfterAdd;
     property OnExecSQL;
     property OnMacro;
     property OnDefaultValue;
     property OnThreadOpened;
     property OnThreadPosted;
     property BeforeOpen;
     property AfterOpen;
     property BeforeClose;
     property AfterClose;
     property BeforeInsert;
     property AfterInsert;
     property BeforeEdit;
     property AfterEdit;
     property BeforePost;
     property AfterPost;
     property BeforeCancel;
     property AfterCancel;
     property BeforeDelete;
     property AfterDelete;
     property BeforeScroll;
     property AfterScroll;
     property BeforeRefresh;
     property AfterRefresh;
     property OnCalcFields;
     property OnDeleteError;
     property OnEditError;
     property OnNewRecord;
     property OnPostError;
  end;
const
  DefaultFieldClasses: array[TFieldType] of TFieldClass = (
    nil,                { ftUnknown }
    TMySQLStringField,  { ftString }
    TSmallintField,     { ftSmallint }
    TIntegerField,      { ftInteger }
    TWordField,         { ftWord }
    TBooleanField,      { ftBoolean }
    TFloatField,        { ftFloat }
    TCurrencyField,     { ftCurrency }
    TBCDField,          { ftBCD }
    TDateField,         { ftDate }
    TTimeField,         { ftTime }
    TDateTimeField,     { ftDateTime }
    TBytesField,        { ftBytes }
    TVarBytesField,     { ftVarBytes }
    TAutoIncField,      { ftAutoInc }
    TBlobField,         { ftBlob }
    TMemoField,         { ftMemo }
    TGraphicField,      { ftGraphic }
    TBlobField,         { ftFmtMemo }
    TBlobField,         { ftParadoxOle }
    TBlobField,         { ftDBaseOle }
    TBlobField,         { ftTypedBinary }
    nil,                { ftCursor }
    TStringField,       { ftFixedChar }
    TWideStringField,   { ftWideString }
    TLargeIntField,     { ftLargeInt }
    TADTField,          { ftADT }
    TArrayField,        { ftArray }
    TReferenceField,    { ftReference }
    TDataSetField,      { ftDataSet }
    TBlobField,         { ftOraBlob }
    TMemoField,         { ftOraClob }
    TVariantField,      { ftVariant }
    TInterfaceField,    { ftInterface }
    TIDispatchField,    { ftIDispatch }
    TGuidField			 { ftGuid }
{$IFDEF LINUX}
    ,TSQLTimeStampField { ftTimeStamp }
    ,TFMTBcdField
{$ELSE}
	{$IFDEF DELPHI6UP}
	  	,TSQLTimeStampField { ftTimeStamp }
  	,TFMTBcdField
	{$ENDIF}
	{$IFDEF DELPHI10UP}
    ,TWideStringField   { ftFixedWideChar }
    ,TWideMemoField     { ftWideMemo }
    ,TSQLTimeStampField { ftOraTimeStamp }
    ,TStringField       { ftOraInterval }
	{$ENDIF}
{$ENDIF}
	);
implementation
uses
{$IFDEF MSWINDOWS}
	MySQLThread, Forms,{$ENDIF}{$IFDEF LINUX}	{$IFNDEF CONSOLEAPP}	QForms,	{$ENDIF}	Types,{$ENDIF}
  MySQLDrivers, MySQLStrUtils;


//**********************************************************************
//                              TMySQLStringField
//**********************************************************************

constructor TMySQLStringField.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FValues := TStringList.Create;
  FStringType := stNormal;
end;

destructor TMySQLStringField.Destroy;
begin
  FreeAndNil(FValues);
  inherited;
end;

class procedure TMySQLStringField.CheckTypeSize(Value: Integer);
begin
end;

function TMySQLStringField.GetStringType: TMySQLStringTypes;
begin
  Result := TMySQLDatasetBase(Dataset).GetStringType(Self);
  if Result<>stNone then
     FStringType := Result;
  Result := FStringType;
end;

function TMySQLStringField.StrInValue(const Value: string): boolean;
begin
  Result := pos(UpperCase(Value),UpperCase(Text))>0;
end;

function TMySQLStringField.GetStringValues: TStrings;
var
  R: string;
begin
  R := TMySQLDatasetBase(Dataset).GetStringValues(Self);
  if length(R)>0 then begin
     FValues.Clear;
     FValues.CommaText := R;
  end;
  Result := FValues;
end;

procedure TMySQLStringField.SetStringValues(Value : TStrings);
begin
  if (Value.Text <> FValues.Text) then
    FValues.Assign(Value);
end;

//**********************************************************************
//                              TMySQLBlobStream
//**********************************************************************

constructor TMySQLBlobStream.Create(Field: TBlobField; Mode: TBlobStreamMode);
begin
  FMode := Mode;
  FField := Field;
  FDataSet := FField.DataSet as TMySQLDatasetBase;
  if not FDataSet.GetActiveRecBuf(FBuffer) then Exit;
  if not FField.Modified and (Mode <> bmRead) then
  begin
    if FField.ReadOnly then MYSQLError(nil,nil,-1,'Field is readonly');
    if not (FDataSet.State in [dsEdit, dsInsert]) then MYSQLError(nil,nil,-1,'Dataset not in edit or insert mode');
    FCached := True;
  end
  else
     FCached := (FBuffer = FDataSet.ActiveBuffer);
  FOpened := True;
  if Mode = bmWrite then Truncate;
end;

destructor TMySQLBlobStream.Destroy;
begin
  if FOpened and FModified then FField.Modified := True;
  if FModified then
  try
     FDataSet.DataEvent(deFieldChange, Longint(FField));
  except
     raise;
  end;
end;

function TMySQLBlobStream.GetBlobFromRecord(Field: TField): TBlobData;
var
  Rec: PRecInfo;
  Pos: Integer;
begin
  Result := '';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -