Embarcodero Delphi and MDB

avatar Do-Vah-Kiin

551

7

Do-Vah-Kiin

Пользователь

Регистрация: 19.08.2012

Сообщения: 2966

Рейтинг: 1569

Do-Vah-Kiin

Регистрация: 19.08.2012

Сообщения: 2966

Рейтинг: 1569

Раз уж пошла такая пьянка вопросик, как подключить таблицу аксесса к делфи? Мне нужно закинуть данные в таблицу

dnoskill

Пользователь

Регистрация: 23.10.2012

Сообщения: 589

Рейтинг: 253

dnoskill

Регистрация: 23.10.2012

Сообщения: 589

Рейтинг: 253

http://www.delphisources.ru/pages/faq/base/open_access_db.html
не за что

RockSttr

Пользователь

Регистрация: 16.10.2012

Сообщения: 1413

Рейтинг: 384

RockSttr

Регистрация: 16.10.2012

Сообщения: 1413

Рейтинг: 384

http://www.google.ru/search?q=%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BA+access++%D0%B8%D0%B7+%D0%B4%D0%B5%D0%BB%D1%8C%D1%84%D0%B8&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

Denisonin

Пользователь

Регистрация: 07.01.2013

Сообщения: 731

Рейтинг: 448

Denisonin

Регистрация: 07.01.2013

Сообщения: 731

Рейтинг: 448


TMyClass = class(TInterfacedObject, RecordsetEventsVt)
private
...
FEventsID: integer;
protected
...
{ RecordsetEventsVt }
// здесь объявление функций интерфейса RecordsetEventsVt
...
function RecordChangeComplete(adReason: EventReasonEnum; cRecords: Integer;
const pError: ADODB_TLB.Error; var adStatus: EventStatusEnum;
const pRecordset: Recordset15): HResult; stdcall;
public
...
function CreateRecordSet: ADODB_TLB.Recordset;
procedure AddRecord(Value1, Value2: String);
end;
...
function CreateADOObject(const ClassID: TGUID): IUnknown;
var
Status: HResult;
FPUControlWord: Word;
begin
asm
FNSTCW FPUControlWord
end;
Status := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IUnknown, Result);
asm
FNCLEX
FLDCW FPUControlWord
end;
if (Status = REGDB_E_CLASSNOTREG) then raise Exception.CreateRes(@SADOCreateError)
else OleCheck(Status);
end;
function TMyClass.RecordsetChangeComplete(adReason: EventReasonEnum;
const pError: ADODB_TLB.Error; var adStatus: EventStatusEnum;
const pRecordset: Recordset15): HResult;
begin
...
Result := S_OK;
end;
function TMyClass.CreateRecordSet: ADODB_TLB.Recordset;
var
ICPC: IConnectionPointContainer;
ICP: IConnectionPoint;
begin
Result := CreateADOObject(CLASS_Recordset) as ADODB_TLB._Recordset;
OleCheck(Result.QueryInterface(IConnectionPointContainer, ICPC));
OleCheck(ICPC.FindConnectionPoint(DIID_RecordsetEvents, ICP));
OleCheck(ICP.Advise(Self as IUnknown, FEventsID));
Result.Open('table1', FCnn, adOpenKeyset, adLockReadOnly, adCmdTable);
end;
procedure TMyClass.AddRecord(Value1, Value2: String);
var
rst: ADODB_TLB._Recordset;
begin
rst := CreateADOObject(CLASS_Recordset) as ADODB_TLB._Recordset;
rst.Open('table1',FCnn,adOpenForwardOnly,adLockOptimistic,adCmdTableDirect);
rst.AddNew(EmptyParam,EmptyParam);
rst.Fields[1].Value := Value1;
rst.Fields[2].Value := Value2;
rst.Update(EmptyParam,EmptyParam);
rst.Close;
rst := nil;
end;

Sh3lby

Пользователь

Регистрация: 02.07.2012

Сообщения: 151

Рейтинг: 104

Sh3lby

Регистрация: 02.07.2012

Сообщения: 151

Рейтинг: 104

Denisonin сказал(а):↑


TMyClass = class(TInterfacedObject, RecordsetEventsVt)
private
...
FEventsID: integer;
protected
...
{ RecordsetEventsVt }
// здесь объявление функций интерфейса RecordsetEventsVt
...
function RecordChangeComplete(adReason: EventReasonEnum; cRecords: Integer;
const pError: ADODB_TLB.Error; var adStatus: EventStatusEnum;
const pRecordset: Recordset15): HResult; stdcall;
public
...
function CreateRecordSet: ADODB_TLB.Recordset;
procedure AddRecord(Value1, Value2: String);
end;
...
function CreateADOObject(const ClassID: TGUID): IUnknown;
var
Status: HResult;
FPUControlWord: Word;
begin
asm
FNSTCW FPUControlWord
end;
Status := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IUnknown, Result);
asm
FNCLEX
FLDCW FPUControlWord
end;
if (Status = REGDB_E_CLASSNOTREG) then raise Exception.CreateRes(@SADOCreateError)
else OleCheck(Status);
end;
function TMyClass.RecordsetChangeComplete(adReason: EventReasonEnum;
const pError: ADODB_TLB.Error; var adStatus: EventStatusEnum;
const pRecordset: Recordset15): HResult;
begin
...
Result := S_OK;
end;
function TMyClass.CreateRecordSet: ADODB_TLB.Recordset;
var
ICPC: IConnectionPointContainer;
ICP: IConnectionPoint;
begin
Result := CreateADOObject(CLASS_Recordset) as ADODB_TLB._Recordset;
OleCheck(Result.QueryInterface(IConnectionPointContainer, ICPC));
OleCheck(ICPC.FindConnectionPoint(DIID_RecordsetEvents, ICP));
OleCheck(ICP.Advise(Self as IUnknown, FEventsID));
Result.Open('table1', FCnn, adOpenKeyset, adLockReadOnly, adCmdTable);
end;
procedure TMyClass.AddRecord(Value1, Value2: String);
var
rst: ADODB_TLB._Recordset;
begin
rst := CreateADOObject(CLASS_Recordset) as ADODB_TLB._Recordset;
rst.Open('table1',FCnn,adOpenForwardOnly,adLockOptimistic,adCmdTableDirect);
rst.AddNew(EmptyParam,EmptyParam);
rst.Fields[1].Value := Value1;
rst.Fields[2].Value := Value2;
rst.Update(EmptyParam,EmptyParam);
rst.Close;
rst := nil;
end;

Нажмите, чтобы раскрыть...

херь выложил, нет?

Denisonin

Пользователь

Регистрация: 07.01.2013

Сообщения: 731

Рейтинг: 448

Denisonin

Регистрация: 07.01.2013

Сообщения: 731

Рейтинг: 448

Sh3lby сказал(а):↑

херь выложил, нет?
Нажмите, чтобы раскрыть...

Увы нет.

Do-Vah-Kiin

Пользователь

Регистрация: 19.08.2012

Сообщения: 2966

Рейтинг: 1569

Do-Vah-Kiin

Регистрация: 19.08.2012

Сообщения: 2966

Рейтинг: 1569

dnoskill сказал(а):↑


не за что
Нажмите, чтобы раскрыть...
Ок 2005ой сто лет в обед

dnoskill

Пользователь

Регистрация: 23.10.2012

Сообщения: 589

Рейтинг: 253

dnoskill

Регистрация: 23.10.2012

Сообщения: 589

Рейтинг: 253

Do-Vah-Kiin сказал(а):↑

Ок 2005ой сто лет в обед
Нажмите, чтобы раскрыть...

и что? ты кодишь на делфи и тебя огорчает инфа 2005 года? у меня для тебя плохие новости.