SequestTech
asked on
What does the following error mean?
MyApplication.exe is a Delphi 5 app that creates and outputs and EDI file. The processing in the app outputs to a debug file, which is where I receive the exception.
Exception
Exception EOleSysError in module MyApplication.exe at 00061D4A. No named arguments.
MyApplication.exe is running on a terminal services desktop with Windows Server 2008 (64 bit).
I need to know if there is a missing entry in the registry, missing dll files, etc.
Exception
Exception EOleSysError in module MyApplication.exe at 00061D4A. No named arguments.
MyApplication.exe is running on a terminal services desktop with Windows Server 2008 (64 bit).
I need to know if there is a missing entry in the registry, missing dll files, etc.
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB, ExtCtrls, ComCtrls, Registry, Mask, ToolEdit, IniFiles,
Buttons;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
ADODataSet2: TADODataSet;
ADODataSet3: TADODataSet;
ADODataSet4: TADODataSet;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
Button2: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Animate1: TAnimate;
Label11: TLabel;
Label12: TLabel;
Panel4: TPanel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Button1: TButton;
Label17: TLabel;
RadioGroup1: TRadioGroup;
Button3: TButton;
OpenDialog1: TOpenDialog;
Qry: TADOQuery;
OutDirEdit : TEdit;
DirBtn: TSpeedButton;
ProgBar: TProgressBar;//Can only be used with Delphi label component
//Label18: TTierLabel; Needs to be Delphi label, not TIER
//Label19: TTierLabel; Needs to be Delphi label, not TIER
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Label1DblClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
function FindPayorDir( PayorID : integer ) : string;
procedure DirBtnClick(Sender: TObject);
private
BatchKey : Integer;
MapNameID : Integer;
TransID : Integer;
PayorID : Integer;
ConnectionStr : string;
V1Builder : Boolean;
V2Builder : Boolean;
UserDir : string;
IniFile: TIniFile;
IsIniUsed, IsParUsed : Boolean;
EDIOutputDir : String;
ConnectionStr2 : String;
{ Private declarations }
public
//Can only be used with Delphi labels
//procedure setMinMax(AMin : Integer; AMax : Integer);
//procedure UpdatePrg;
{ Public declarations }
end;
const
WM_ACK = WM_USER + 1;
var
Form1: TForm1;
implementation
uses BuildEdiSpc, FileVersion, BuildEdiSpc2;
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
var
Total : integer;
Pass : integer;
Fail : Integer;
FName : string;
begin
if ( ComboBox1.ItemIndex <> - 1 ) then
PayorID := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
if ( ComboBox2.ItemIndex <> - 1 ) then
MapNameID := Integer(ComboBox2.Items.Objects[ComboBox2.ItemIndex]);
if ( ComboBox3.ItemIndex <> - 1 ) then
TransID := Integer(ComboBox3.Items.Objects[ComboBox3.ItemIndex]);
if ( ComboBox4.ItemIndex <> - 1 ) then
BatchKey := Integer(ComboBox4.Items.Objects[ComboBox4.ItemIndex]);
Panel3.BringToFront;
V2Builder := True;
Animate1.Visible := False;
Animate1.Active := False;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
UserName : string;
UserPass : string;
Database : string;
MyProvider : string;
Server : string;
V1, V2, V3, V4 : Word;
Reg : TRegistry;
IniSec: string;
CurrentDir : string;
begin
V1Builder := False;
V2Builder := True;
BatchKey := -1;
MapNameID := -1;
TransID := -1;
PayorID := -1;
Label6.Caption := '';
Label9.Caption := '';
Label11.Caption := '';
Label12.Caption := '';
RadioGroup1.Visible := False;
RadioGroup1.ItemIndex := 1;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
OutDirEdit.Text := '';
ConnectionStr2 := '';
IsIniUsed := False;
IsParUsed := False;
ADOConnection1.Close;
with ADOConnection1 do
begin
ConnectionString := ConnectionStr;
IsIniUsed := ReadLoginwINI( UserName, UserPass, Database, Server, MyProvider );
IsParUsed := ReadLoginwPAR( UserName, UserPass, Database, Server, MyProvider );
if ( UserName <> '' ) and ( Database <> '' ) and ( UserPass <> '' ) and ( Server <> '' ) and ( MyProvider <> '' ) then
begin
ConnectionString := Format('Provider=%s;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s;Packet Size=4096',[MyProvider,UserPass,UserName,Database,Server]);
end;
CurrentDir := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName));
OutDirEdit.Text := CurrentDir;
if ( FileExists(CurrentDir + 'EdiBuilder.udl') = True ) then
begin
ConnectionString := Format('FILE NAME=%sEdiBuilder.UDL', [CurrentDir]);
AdoConnection1.ConnectionString := ConnectionString;
Label17.Caption := ConnectionString;
//Comment out-testing only//
//ConnectionStr := ConnectionString;
//Comment out-testing only//
end;
if ( ConnectionString = '' ) then
begin
//01.18.2006 TIER 4.0.77 outputs connection info in Parameter 5 D.L.
if Pos('Provider', ParamStr(5)) > 0 then
begin
AdoConnection1.ConnectionString := ParamStr(5);
Label17.Caption := ParamStr(5);
ConnectionStr2 := ParamStr(5);
OutDirEdit.Text := CurrentDir; //always specify the directory EdiBuilder executes from
end;
//01.18.2006 Other versions of TIER may use Parameter 6 D.L.
if Pos('Provider', ParamStr(6)) > 0 then
begin
AdoConnection1.ConnectionString := ParamStr(6);
Label17.Caption := ParamStr(6);
ConnectionStr2 := ParamStr(6);
OutDirEdit.Text := CurrentDir; //always specify the directory EdiBuilder executes from
end;
end;
Label17.Visible := False;
//BatchKey := 1053328; //Comment out after testing//
end; //end with adoconnection
try
AdoConnection1.Open;
except
ShowMessage('Failed to connect to SQL Server');
exit;
end;
{ handle param 2,3,4 via EdiBuilder.par file - START}
IniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'EdiBuilder.par');
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add(Format('SELECT OutputTypeLU FROM BIL_Batches WHERE BatchKey = %d', [BatchKey]));
Qry.Open;
if Qry.FieldByName('OutputTypeLU').AsInteger = 3 then
IniSec := 'Medicare'
else
IniSec := 'Medicaid';
//comment out after testing//
//MapNameID := 49;
//TransID := 1;
//PayorID := 316998;
//comment out after testing//
//uncomment after testing//
MapNameID := IniFile.ReadInteger(IniSec, 'MapNameID', -1);
TransID := IniFile.ReadInteger(IniSec, 'TransID', -1);
PayorID := IniFile.ReadInteger(IniSec, 'PayorID', -1);
//uncomment after testing//
{ handle param 2,3,4 via EdiBuilder.par file - END}
Animate1.Visible := False;
Animate1.Active := False;
GetBuildInfo( ParamStr(0), V1, V2, V3, V4 );
Caption := Caption + ' ' + Format('%d.%d.%d',[V1,V2,V3]);
if ( ParamCount > 1 ) then
begin
//Comment out after testing//
//BatchKey := 1053328;
//Label6.Caption := IntToStr(Batchkey);
//Label6.Update;
//Label9.Caption := IntToStr(BatchKey) + '.837';
//Comment out after testing//
//uncomment out after testing//
BatchKey := StrToInt( ParamStr(1) );
Label6.Caption := ParamStr(1);
Label6.Update;
Label9.caption := ParamStr(1) + '.837';
//uncomment out after testing//
if ( OutDirEdit.Text <> '' ) then
OutDirEdit.Text := FindPayorDir( PayorID );
if ( ParamCount = 5 ) or ( ParamCount = 7 ) then
begin
Label6.Caption := ParamStr(1);
Label6.Update;
Label9.caption := ParamStr(1) + '.837';
OutDirEdit.Text := FindPayorDir( PayorID );
Application.ProcessMessages;
BatchKey := StrToInt( ParamStr(1) );
if ( ParamCount > 2 ) then
begin
PayorID := StrToInt( ParamStr(3) );
if ( FindPayorDir( PayorID ) <> '' ) then
OutDirEdit.Text := FindPayorDir( PayorID );
end;
if ( ParamCount > 3 ) then
MapNameID := StrToInt( ParamStr(4) );
if ( MapNameID = -1 ) then
MapNameID := IniFile.ReadInteger(IniSec, 'MapNameID', -1);
if ( ParamCount > 4 ) then
TransID := StrToInt( ParamStr(5) );
if ( TransID = -1 ) then
TransID := IniFile.ReadInteger(IniSec, 'TransID', -1);
ConnectionStr := '';
if ( ParamCount > 5 ) then
ConnectionStr := ParamStr(6);
Panel3.BringToFront;
Panel3.Update;
Application.ProcessMessages;
Animate1.Visible := False;
exit;
end;
if ( ParamCount >= 2 ) then
SendMessage ( StrToInt(ParamStr(2)), WM_ACK, 0, 0 );
Application.ProcessMessages;
end;
ComboBox1.Items.Clear;
ComboBox3.Items.Clear;
with ADODataSet1 do
begin
Open;
First;
ComboBox1.Items.Clear;
while ( not eof ) do
begin
ComboBox1.Items.AddObject( FieldByName('PayorName').AsString, TObject( FieldByName('PayorKey').AsInteger ) );
Next;
end;
Close;
end;
//original - uncomment after testing//
with ADODataSet2 do
begin
Close;
Parameters.ParamByName('Key').Value := PayorID;
Open;
First;
ComboBox2.Items.Clear;
while ( not eof ) do
begin
ComboBox2.Items.AddObject( FieldByName('MapName').AsString, TObject( StrToInt(FieldByName('EdiMapNameID').AsString) ) );
Next;
end;
Close;
end;
//original - uncomment after testing//
//select Description, EDIMapTransactionID from EDI_Map_Transaction
with ADODataSet3 do
begin
Close;
Parameters.ParamByName('TransID').Value := TransID;
Open;
ComboBox3.Items.Clear;
while ( not eof ) do
begin
ComboBox3.Items.AddObject( FieldByName('Description').AsString, TObject( FieldByName('EdiMapTransactionID').AsInteger ) );
Next;
end;
Close;
end;
with ADODataSet4 do
begin
Open;
First;
ComboBox4.Items.Clear;
while ( not eof ) do
begin
ComboBox4.Items.AddObject( FieldByName('BatchKey').AsString, TObject( FieldByName('BatchKey').AsInteger ) );
Next;
end;
Close;
end;
if ( PayorID <> -1 ) then
ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject( TObject(PayorID) );
if ( MapNameID <> -1 ) then
ComboBox2.ItemIndex := ComboBox2.Items.IndexOfObject( TObject(MapNameID) );
if ( TransID <> -1 ) then
ComboBox3.ItemIndex := ComboBox3.Items.IndexOfObject( TObject(TransID) );
if ( BatchKey <> -1 ) then
ComboBox4.ItemIndex := ComboBox4.Items.IndexOfObject( TObject(BatchKey) );
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
PayorKey : Integer;
begin
ComboBox2.Items.Clear;
if ( ComboBox1.ItemIndex = -1 ) then exit;
PayorKey := Integer( ComboBox1.Items.Objects[ ComboBox1.ItemIndex] );
with ADODataSet2 do
begin
Close;
Parameters.ParamByName('Key').Value := PayorKey;
Open;
while ( not eof ) do
begin
ComboBox2.Items.AddObject( FieldByName('MapName').AsString, TObject( FieldByName('EdiMapNameID').asInteger ) );
Next;
end;
Close;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.Label1DblClick(Sender: TObject);
begin
Label17.Visible := True;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Total : integer;
Pass : integer;
Fail : Integer;
FName : string;
begin
FName := '';
if ( OutDirEdit.Text <> '' ) then
FName := OutDirEdit.Text;
if ( ConnectionStr2 <> '' ) then
ConnectionStr := ConnectionStr2;
//ProgBar.Visible := True; Can only be used with Delphi label
Animate1.Visible := True;
Animate1.Active := True;
LoadEDI2( BatchKey, MapNameID, PayorID, TransID, ConnectionStr, Total, Pass, Fail, FName );
Animate1.Visible := False;
Animate1.Active := False;
Sleep(250);
Panel4.BringToFront;
Label13.Caption := 'Total Transactions ' + IntToStr( Total );
Label14.Caption := 'Total Pass Transactions ' + IntToStr( Pass );
Label15.Caption := 'Total Fail Transactions ' + IntToStr( Fail );
Label16.Caption := 'Output file name ' + FName;
SendMessage ( StrToInt(ParamStr(2)), WM_ACK, 0, 0 );
end;
function TForm1.FindPayorDir( PayorID : integer ) : string;
var
Reg : TRegistry;
iIndex : integer;
Entries : TStringList;
begin
Result := GetCurrentDir;
Entries := TStringList.Create;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('\Software\Sequest Technologies\Tier\EdiBuilder', False );
Reg.GetKeyNames( Entries );
for iIndex := 0 to Entries.count -1 do
begin
if (Reg.OpenKey('\Software\Sequest Technologies\Tier\EdiBuilder\'+ Entries[iIndex], False ) ) then
begin
if ( Reg.ValueExists('PayorID') ) then
begin
if ( PayorID = Reg.ReadInteger('PayorID') ) then
begin
Result := Reg.ReadString('OutputDir');
Reg.CloseKey;
exit;
end;
end;
end;
end;
Entries.Free;
Reg.CloseKey;
end;
procedure TForm1.DirBtnClick(Sender: TObject);
var ExpandedName : String;
begin
with OpenDialog1 do begin
OpenDialog1.Title := 'Select Output Directory';
ExpandedName := OutDirEdit.Text;
InitialDir := ExpandedName;
Filename := '(this folder)';
if Execute then
begin
OutDirEdit.Text := ExtractFilePath(FileName);
EDIOutputDir := OutDirEdit.Text;
end;
end;
end;
{Can only be used with Delphi label
procedure TForm1.setMinMax(AMin : Integer; AMax : Integer);
begin
ProgBar.Min := AMin;
ProgBar.Max := AMax;
end;
procedure TForm1.UpdatePrg;
begin
ProgBar.Position := ProgBar.Position + 1;
Application.ProcessMessages;
end;
}
end.
DebugEdi.TXT
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.