Using Data Access – From Delphi 3 with Arrays
The MDMDA session object is being called from a Borland Delphi 3 application.
This sample includes references to an item array (12J1).
The dataset and items are defined as follows:
ITEMS: ITEM-NO, Z6; SALES-PERIODS, 12X6; SALES-HISTORY, 12P12; MISC, 12J1; OTHER, J2; SETS: NAME: HISTORY, DETAIL (1/18); ENTRY: ITEM-NO(!HISTORY-M), SALES-PERIODS, SALES-HISTORY, MISC, OTHER; CAPACITY: 101; END.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; MISC: TStringGrid; Next: TButton; Rewind: TButton; Add: TButton; procedure FormCreate(Sender: TObject); procedure NextClick(Sender: TObject); procedure RewindClick(Sender: TObject); procedure AddClick(Sender: TObject); private da : Variant; db : Variant; ds : Variant; t1 : string; procedure GetItemValues; procedure SetItemValues; end; var Form1: TForm1; implementation {$R *.DFM} uses comobj; procedure TForm1.GetItemValues; var t2 : string; ii : integer; jj : integer; begin t1 := ''; for ii := 0 to 11 do begin t2 := trim(Misc.Cells[0,ii]); if ( t2 = '' ) then begin jj := 0; end else begin try jj := StrToInt ( t2 ); except jj := 0; end; end; t1 := t1 + format ( '%6d', [jj] ); end; ds.Item('ITEM-NO') := Edit1.Text; ds.Item('MISC') := t1; Edit2.Text := t1; end; procedure TForm1.SetItemValues; var t2 : string; ii : integer; jj : integer; begin Edit1.Text := ds.Item('ITEM-NO'); t1 := ds.Item('MISC'); Edit2.Text := t1; for ii := 0 to 11 do begin t2 := trim(copy(t1, 1+(ii*6),6)); if ( t2 = '' ) then begin jj := 0; end else begin try jj := StrToInt ( t2 ); except jj := 0; end; end; Misc.Cells [0,ii] := IntToStr ( jj ); end; end; procedure TForm1.FormCreate(Sender: TObject); begin da := CreateOleObject('MdmDA.Session'); da.TraceLevel := 0; da.HostAddress := 'support'; da.Port := '30002'; da.LoginUser := 'mgr'; da.UserPassword := InputBox('user password','user password', ''); da.LoginGroup := 'util'; da.LoginAccount := 'minisoft'; If Not da.Connect Then begin ShowMessage ( 'Connect failed' ); exit; End; If da.LoginStatus = False Then begin ShowMessage ( 'Login failed' ); exit; End; db := da.AddImageDBRef('MSCARD'); ds := db.AddDatasetRef('HISTORY'); If Not db.Open('MSCARD', 'UTIL', 'MINISOFT', 1, 'DO-ALL') Then begin ShowMessage ( 'Open failed' ); Exit; End; ds.Delimiter := ''; If Not ds.ReadSerialNext('@;') Then begin ShowMessage ( 'readserialnext failed: ' + ds.ErrorMessage ); Exit; End; SetItemValues; end; procedure TForm1.NextClick(Sender: TObject); begin If Not ds.ReadSerialNext('@;') Then begin ShowMessage ( 'readserialnext failed: ' + ds.ErrorMessage ); Exit; End; SetItemValues; end; procedure TForm1.RewindClick(Sender: TObject); begin If Not ds.Rewind Then begin ShowMessage ( 'Rewind Failed: ' + ds.ErrorMessage ); Exit; End; end; procedure TForm1.AddClick(Sender: TObject); begin GetItemValues; If Not ds.Write('@;') Then begin ShowMessage ( 'Write failed: ' + ds.ErrorMessage ); Exit; End; end; end