Nie miałem zamiaru robić wojny. Ja tylko chciałem iść do domu. Ale spojrzałem za okno i ... skończyłem to, co miałem kończyć jutro i naskrobałem przykładzik.
Pomoc dla pytacza. Uruchamiamy Delphi, nowa aplikacja i w private formy wpisujemy trzy deklaracje, jak niżej. Potem wypełniamy OnCreate i OnClose - też jak niżej.
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB;
type
TMyForm = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
MyTable: TADODataSet;
MyDataSource: TDataSource;
MyDBGrid: TDBGrid;
public
{ Public declarations }
end;
var
MyForm: TMyForm;
implementation
{$R *.dfm}
procedure TMyForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
with TSaveDialog.Create(Self) do
try
Title := 'Zapisz jako ...';
if Execute then
MyTable.SaveToFile(FileName);
finally
Free;
end;
MyDBGrid.Free;
MyDataSource.Free;
MyTable.Free;
end;
procedure TMyForm.FormCreate(Sender: TObject);
begin
MyTable := TADODataSet.Create(Self);
with MyTable do
begin
Name := 'MyTable';
LockType := ltBatchOptimistic;
CommandType := cmdTable;
with FieldDefs.AddFieldDef do
begin
Name := 'ID';
DataType := ftAutoInc;
end;
with FieldDefs.AddFieldDef do
begin
Name := 'Opis';
DataType := ftString;
Size := 200;
end;
with FieldDefs.AddFieldDef do
begin
Name := 'Temperatura';
DataType := ftCurrency;
end;
StoreDefs := True;
CreateDataSet;
end;
MyDataSource := TDataSource.Create(Self);
with MyDataSource do
begin
Name := 'MyDataSource';
DataSet := MyTable;
end;
MyDBGrid := TDBGrid.Create(Self);
with MyDBGrid do
begin
Name := 'MyDBGrid';
Parent := Self;
Align := alClient;
DataSource := MyDataSource;
TabOrder := 0;
end;
with TOpenDialog.Create(Self) do
try
Title := 'Otwórz uprzednio zapisane ...';
if Execute then
MyTable.LoadFromFile(FileName);
finally
Free;
end;
end;
end.
No i serwer niepotrzebny. Mając tabelę o strukturze zgodnej z M$ SQL pracujemy bez serwera. Oczywiście odpada w zasadzie jakikolwiek bardziej złożony sql. No ale coś za coś. I jak poczytasz o BatchUpdate (a może UpdateBatch - teraz nie pamiętam), to dowiesz się, co można z tym zrobić dalej :-).