Consultor Eletrônico



Kbase 19980: OPEN CLIENT: Sample Delphi Procedure for Input Temp-Table
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   9/9/2008
Status: Verified

GOAL:

How to: Communicate with the AppServer from Delphi

FACT(s) (Environment):

Delphi 5
Progress 9.x
ActiveX Data Objects (ADO)
Progress 9.x

FIX:

procedure TForm1.Button1Click(Sender: TObject);
var
AppServer : Variant;
TempTable : Variant;
RecordSet : Variant;

const
adChar = 129;
adOpenDynamic = 2;

begin

// Connect to the AppServer

AppServer := CreateOleObject('com.progress.kbase.KBaseObject');

AppServer.OC_Connect('AppServer://myhost:5162/kbase', '', '', '');

// Create an ADO Recordset (Disconnected Recordset)

RecordSet := CreateOleObject('ADOR.Recordset');

// Define Structure of Recordset

RecordSet.Fields.Append('SalesRep', adChar, 4, );
RecordSet.Fields.Append('RepName', adChar, 30, );
RecordSet.Fields.Append('Region', adChar, 8, );

// Open Recordset

RecordSet.Open(, , adOpenDynamic);

// Add Two (2) Records to Recordset

RecordSet.AddNew('SalesRep', 'XX01');
RecordSet.Update('RepName', 'Rep XX01');
RecordSet.Update('Region', 'Saturn');

RecordSet.AddNew('SalesRep', 'XX02');
RecordSet.Update('RepName', 'Rep XX02');
RecordSet.Update('Region', 'Mars');

// Force Entire Recordset To Be Sent To AppServer

RecordSet.MoveFirst;
RecordSet.MovePrevious;

// The name of the ActiveX Automation class for Temp-Table
// support in V9.1A is 'Progress.TempTable.2'. Prior to this
// the class name was 'Progress.TempTable'.

// Create a TempTable Holder Object

TempTable := CreateOleObject('Progress.TempTable.2');

// Tell The TempTable Holder Object To Get Data From The ADO
// Recordset

TempTable.DataSource := RecordSet;

// Invoke The 4GL Program Named 'UpdateData' And Pass The
// TempTable To It

AppServer.UpdateData(TempTable);

// Release The AppServer Connection

AppServer.OC_Release;
end;