Программирование
Главная » FAQ » Базы данных |
unit Project1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, ComCtrls; type TfmMain = class(TForm) btnNewDB: TButton; DBGrid1: TDBGrid; btnSearch: TButton; Edit1: TEdit; procedure btnNewDBClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnSearchClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var fmMain: TfmMain; implementation {$R *.dfm} uses DB, ADODB, ComObj; const dbName : String = 'mybase.mdb'; MasterTable : String = 'MyMasterTable'; var ADOCommand : TADOCommand; ADOConnection : TADOConnection; ADODataSetMaster : TADODataSet; MasterDataSource : TDataSource; strCmdText : String; strConnectString : String; procedure TfmMain.FormCreate(Sender: TObject); begin // Строка для подключения к базе strConnectString := 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' + dbName + ';Jet OLEDB:Engine Type=5'; // Создаём переменные и подключаемся к базе ADOConnection := TADOConnection.Create(nil); ADOConnection.ConnectionString := strConnectString; ADOConnection.LoginPrompt := False; ADOConnection.Mode := cmReadWrite; ADOConnection.Connected := True; ADOCommand := TADOCommand.Create(nil); ADOCommand.Connection := ADOConnection; ADOCommand.CommandType := cmdText; ADODataSetMaster := TADODataSet.Create(nil); ADODataSetMaster.Connection := ADOConnection; ADODataSetMaster.CommandType := cmdText; ADODataSetMaster.CommandText := 'SELECT * FROM ' + MasterTable; ADODataSetMaster.Active := True; MasterDataSource := TDataSource.Create(nil); MasterDataSource.DataSet := ADODataSetMaster; // Выводим данные в DBGrid DBGrid1.DataSource := MasterDataSource; end; procedure TfmMain.btnNewDBClick(Sender: TObject); var ADOX: OLEVariant; i: integer; j: int64; begin // Создаем базу ADOX := CreateOleObject('ADOX.Catalog'); ADOX.Create(strConnectString); ADOX := NULL; // Подключаемся к созданной базе ADOConnection := TADOConnection.Create(nil); ADOConnection.ConnectionString := strConnectString; ADOConnection.LoginPrompt := False; ADOConnection.Mode := cmReadWrite; ADOConnection.Connected := True; ADOCommand := TADOCommand.Create(nil); ADOCommand.Connection := ADOConnection; ADOCommand.CommandType := cmdText; // Создаём в базе таблицу strCmdText := 'CREATE TABLE ' + MasterTable + '([id] COUNTER,'+ '[ИНН] DECIMAL PRIMARY KEY NOT NULL UNIQUE,' + '[Имя] VARCHAR(150) WITH COMPRESSION,' + '[Адрес] VARCHAR(150) WITH COMPRESSION,' + '[Телефон] VARCHAR(150) WITH COMPRESSION)'; ADOCommand.CommandText := strCmdText; ADOCommand.Execute; // Просто пример, добавляем данные в таблицу j := 665906037862; for i := 193 to 196 do begin strCmdText := 'INSERT INTO ' + MasterTable + '(ИНН, Имя, Адрес, Телефон) VALUES'+ '("' + IntToStr(j) + '", "'+Chr(Ord(i))+'иванов", "улица, дом", "(343)123-45-67")'; ADOCommand.CommandText := strCmdText; ADOCommand.Execute; Inc(j, 100000000000); end; end; procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin // Освобождаем переменные if ADOConnection <> nil then begin ADOConnection.Connected := False; ADOConnection.Free; ADOConnection := nil; end; if ADOCommand <> nil then begin ADOCommand.Free; ADOCommand := nil; end; if ADODataSetMaster <> nil then begin ADODataSetMaster.Active := False; ADODataSetMaster := nil; end; if MasterDataSource <> nil then begin MasterDataSource.Free; MasterDataSource := nil; end; end; procedure TfmMain.btnSearchClick(Sender: TObject); begin DBGrid1.DataSource.DataSet.DisableControls; // Пример, поиск в таблице по полю [Имя], по известному началу строки ADODataSetMaster.Active := False; strCmdText := 'SELECT * FROM '+ MasterTable + ' WHERE [Имя] LIKE "'+ Edit1.Text + '%"'; ADODataSetMaster.CommandText := strCmdText; ADODataSetMaster.Active := True; DBGrid1.DataSource.DataSet.EnableControls; end; end. |
1-5 6-6