Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
ADO [17]
ASCII и CSV [12]
Access [20]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [0]
ODBC [10]
Oracle [0]
Paradox [0]
SQL [29]
Sybase [1]
База данных [0]
Закладки [2]
Записи [0]
Индексы [10]
Компоненты и Базы данных [0]
Модуль данных [3]
Отчеты [2]
Ошибки БД [17]
Поиск [16]
Поля [0]
Сортировка и Фильтр [6]
Таблицы [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Базы данных » Access

Записываем в Access используя ADO
// Читаем Access`овскую базу используя ADO 
// Проверяе являеться ли файл .mdb Access
// Записываем запись в базу 
// Нужны компаненты- 
// TADOtable,TDataSource,TOpenDialog,TDBGrid, 
// TBitBtn,TTimer,TEditTextBox 
program ADOdemo; 

uses Forms, uMain in 'uMain.pas' {frmMain}; 

{$R *.RES} 

begin 
  Application.Initialize; 
  Application.CreateForm(TfrmMain, frmMain); 
  Application.Run; 
end. 
/////////////////////////////////////////////////////////////////// 
unit uMain; 

interface 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  Db, DBTables, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Buttons, 
  ComObj; 

type 
  TfrmMain = class(TForm) 
  DBGridUsers: TDBGrid; 
  BitBtnClose: TBitBtn; 
  DSource1: TDataSource; 
  EditTextBox: TEdit; 
  BitBtnAdd: TBitBtn; 
  TUsers: TADOTable; 
  BitBtnRefresh: TBitBtn; 
  Timer1: TTimer; 
  Button1: TButton; 
  procedure FormCreate(Sender: TObject); 
  procedure ConnectToAccessDB(lDBPathName, lsDBPassword: string); 
  procedure ConnectToMSAccessDB(lsDBName, lsDBPassword: string); 
  procedure AddRecordToMSAccessDB; 
  function CheckIfAccessDB(lDBPathName: string): Boolean; 
  function GetDBPath(lsDBName: string): string; 
  procedure BitBtnAddClick(Sender: TObject); 
  procedure BitBtnRefreshClick(Sender: TObject); 
  procedure Timer1Timer(Sender: TObject); 
  function GetADOVersion: Double; 
  procedure Button1Click(Sender: TObject); 
  private 
  { Private declarations } 
  public 
  { Public declarations } 
  end; 

var 
  frmMain: TfrmMain; 
  Global_DBConnection_String: string; 
const 
  ERRORMESSAGE_1 = 'No Database Selected'; 
  ERRORMESSAGE_2 = 'Invalid Access Database'; 

implementation 

{$R *.DFM} 

procedure TfrmMain.FormCreate(Sender: TObject); 
begin 
  ConnectToMSAccessDB('ADODemo.MDB', '123'); // DBName,DBPassword 
end; 

procedure TfrmMain.ConnectToMSAccessDB(lsDBName, lsDBPassword: string); 
var 
  lDBpathName: string; 
begin 
  lDBpathName := GetDBPath(lsDBName); 
  if (Trim(lDBPathName) <> '') then 
  begin 
  if CheckIfAccessDB(lDBPathName) then 
  ConnectToAccessDB(lDBPathName, lsDBPassword); 
  end 
  else 
  MessageDlg(ERRORMESSAGE_1, mtInformation, [mbOK], 0); 
end; 

function TfrmMain.GetDBPath(lsDBName: string): string; 
var 
  lOpenDialog: TOpenDialog; 
begin 
  lOpenDialog := TOpenDialog.Create(nil); 
  if FileExists(ExtractFileDir(Application.ExeName) + '\' + lsDBName) then 
  Result := ExtractFileDir(Application.ExeName) + '\' + lsDBName 
  else 
  begin 
  lOpenDialog.Filter := 'MS Access DB|' + lsDBName; 
  if lOpenDialog.Execute then 
  Result := lOpenDialog.FileName; 
  end; 
end; 

procedure TfrmMain.ConnectToAccessDB(lDBPathName, lsDBPassword: string); 
begin 
  Global_DBConnection_String := 
  'Provider=Microsoft.Jet.OLEDB.4.0;' + 
  'Data Source=' + lDBPathName + ';' + 
  'Persist Security Info=False;' + 
  'Jet OLEDB:Database Password=' + lsDBPassword; 

  with TUsers do 
  begin 
  ConnectionString := Global_DBConnection_String; 
  TableName := 'Users'; 
  Active := True; 
  end; 
end; 

// Check if it is a valid ACCESS DB File Before opening it. 

function TfrmMain.CheckIfAccessDB(lDBPathName: string): Boolean; 
var 
  UnTypedFile: file of Byte; 
  Buffer: array[0..19] of Byte; 
  NumRecsRead: Integer; 
  i: Integer; 
  MyString: string; 
begin 
  AssignFile(UnTypedFile, lDBPathName); 
  reset(UnTypedFile,1); 
  BlockRead(UnTypedFile, Buffer, 19, NumRecsRead); 
  CloseFile(UnTypedFile); 
  for i := 1 to 19 do MyString := MyString + Trim(Chr(Ord(Buffer[i]))); 
  Result := False; 
  if Mystring = 'StandardJetDB' then 
  Result := True; 
  if Result = False then 
  MessageDlg(ERRORMESSAGE_2, mtInformation, [mbOK], 0); 
end; 

procedure TfrmMain.BitBtnAddClick(Sender: TObject); 
begin 
  AddRecordToMSAccessDB; 
end; 

procedure TfrmMain.AddRecordToMSAccessDB; 
var 
  lADOQuery: TADOQuery; 
  lUniqueNumber: Integer; 
begin 
  if Trim(EditTextBox.Text) <> '' then 
  begin 
  lADOQuery := TADOQuery.Create(nil); 
  with lADOQuery do 
  begin 
  ConnectionString := Global_DBConnection_String; 
  SQL.Text := 
  'SELECT Number from Users'; 
  Open; 
  Last; 
  // Generate Unique Number (AutoNumber in Access) 
  lUniqueNumber := 1 + StrToInt(FieldByName('Number').AsString); 
  Close; 
  // Insert Record into MSAccess DB using SQL 
  SQL.Text := 
  'INSERT INTO Users Values (' + 
  IntToStr(lUniqueNumber) + ',' + 
  QuotedStr(UpperCase(EditTextBox.Text)) + ',' + 
  QuotedStr(IntToStr(lUniqueNumber)) + ')'; 
  ExecSQL; 
  Close; 
  // This Refreshes the Grid Automatically 
  Timer1.Interval := 5000; 
  Timer1.Enabled := True; 
  end; 
  end; 
end; 

procedure TfrmMain.BitBtnRefreshClick(Sender: TObject); 
begin 
  Tusers.Active := False; 
  Tusers.Active := True; 
end; 

procedure TfrmMain.Timer1Timer(Sender: TObject); 
begin 
  Tusers.Active := False; 
  Tusers.Active := True; 
  Timer1.Enabled := False; 
end; 

function TfrmMain.GetADOVersion: Double; 
var 
  ADO: OLEVariant; 
begin 
  try 
  ADO := CreateOLEObject('adodb.connection'); 
  Result := StrToFloat(ADO.Version); 
  ADO := Null; 
  except 
  Result := 0.0; 
  end; 
end; 

procedure TfrmMain.Button1Click(Sender: TObject); 
begin 
  ShowMessage(Format('ADO Version = %n', [GetADOVersion])); 
end; 

end.
Категория: Access | Добавил: Skinner (03.07.2008)
Просмотров: 490 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2024 Хостинг от uCoz