Mega Code Archive

 
Categories / Delphi / ADO Database
 

Uygulama içindeki tüm datasetleri yenilemek[ado]

// Bunları uygulamamda test yaparken gerektiği için yazmıştım // ama sonra sağlam olduğunu düşünerek // uygulamanın son halinde de kullandım... // umarım bu prosedürler işinize yarar... // Bir de tablo ismine gore yenileyen versionu var... // M. Utku Altınkaya / utkualtinkaya@lycos.co.uk procedure RefreshDatasets(Component: TComponent); var i: integer; ABookmark: Pointer; begin for i:=0 to Component.ComponentCount - 1 do begin if Component.Components[i] is TCustomADODataSet then with TCustomADODataSet(Component.Components[i]) do begin if Active and Not (State in [dsEdit, dsInsert])then begin DisableControls; ABookmark := GetBookmark; Requery; GotoBookmark(ABookmark); FreeBookmark(ABookMark); EnableControls; end; end; if Component.Components[i] is TComponent then RefreshDatasets(Component.Components[i]); end; end; RefreshDatasets(Form1); RefreshDatasets(Application); procedure RefreshTables(TableName: string; Component: TComponent); var i: integer; begin for i:=0 to Component.ComponentCount - 1 do begin if Component.Components[i] is TADOQuery then with TADOQuery(Component.Components[i]) do begin if Active and (Pos(TableName, SQL.Text) > 0) then Requery; end; if Component.Components[i] is TComponent then RefreshTables(Tablename, Component.Components[i]); end; end; RefreshTables('musteriler', Application); // gibi... // Ben bunları data modulume method olarak ekledim... // Tercih meselesi...