| Products | Minisoft News | Events | Downloads | Product Manuals
 
  News

Minisoft News

Demo and Updates


Download an Evaluation today!

Updates

Release Notes (Jun 4, 2002)

Documentation


MiddleMan Manual

FAQ

   Product Review


Features

MSJOB

Using INETD_NT

MiddleMan
Application Samples

Know Problem Reports

Type Libraries

MDMDA

MDMFT

MDMFTP

MDMSA

 
   

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