rajatrakesh
New Member
Hi,
I am trying to write some data into a excel file, and then run Solver on the data set, and receive the output back into progress.
However, for some reason, when i run solver, it throws up error 5890...Solver internal error, indicating that out of memory.
Will really appreciate if someone could help me out on this.
Rajat
---------------------------------------------------------
Progress Code :-
DEFINE VARIABLE hExcel AS COM-HANDLE.
DEFINE VARIABLE chkSolver as integer.
DEFINE VARIABLE SolverSolution as decimal.
CREATE "Excel.Application" hExcel.
/* hExcel:VISIBLE = TRUE. */
hExcel:Application:Workbooks:Open("C:\GTPL.xls").
hExcel:Run("CheckSolver"). /* Check if solver addin is installed */
chkSolver = hExcel:range("N2"):value.
if chkSolver = 9999 then do:
hExcel:Worksheets("Sheet1"):Cells(7, 2)="200".
hExcel:Worksheets("Sheet1"):Cells(8, 2)="128".
hExcel:Worksheets("Sheet1"):Cells(9, 2)="265".
hExcel:Worksheets("Sheet1"):Cells(10, 2)="142".
hExcel:Worksheets("Sheet1"):Cells(11, 2)="75".
hExcel:Worksheets("Sheet1"):Cells(12, 2)="82".
end.
hExcel:Run("Solution").
SolverSolution = hExcel:range("I2"):value.
hExcel:workbooks(1):close(true) No-error.
hExcel:Application:QUIT NO-ERROR.
release object hExcel.
-------------------------------------
Excel Code:-
--------------------------------------
Sub Solution()
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverAdd CellRef:="$B$27", Relation:=3, FormulaText:="$H$2"
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverOptions MaxTime:=100, Iterations:=1000, Precision:=0.000001, AssumeLinear _
:=True, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, _
IntTolerance:=5, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=True
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverSolve
End Sub
Function fAddInLoaded(strAddInTitle) As Integer
' Finds if an add-in is loaded and attempts to load it if it
'is not. Returns zero if the
' add-in is loaded, 1 if the function had to load the add-in, -1
'if the add-in could
' not be located and -2 if an error occurred.
Dim adnAddIn As AddIn
On Error GoTo fAddInLoadedError
' Search through add-ins collection for our add-in...
For Each adnAddIn In Application.AddIns
If adnAddIn.Title = strAddInTitle Then
' Found it! Is it installed?
' Return success value
fAddInLoaded = 0
If Not adnAddIn.Installed Then
' If it's not installed then
' install it...
AddIns(strAddInTitle).Installed = True
' Return value indicating that we
' had to load the add-in
fAddInLoaded = 1
End If
Exit Function
End If
Next
' Add-In was not in the add-ins collection...
fAddInLoaded = -1
Exit Function
fAddInLoadedError:
fAddInLoaded = -2 ' unknown error occurred
End Function
'here is how u can give the call
Sub Aut
pen()
' Load Analysis Toolpak if it is not currently
' loaded...
iAddInATPRet = fAddInLoaded("Solver Add-in")
If iAddInATPRet = -1 Then
' Error finding Analysis Toolpak...
MsgBox "Analysis ToolPak Not Found", vbExclamation
Range("A1").Select
ActiveCell.FormulaR1C1 = "9999"
End
ElseIf iAddInATPRet = -2 Then
' Unknown Error...
MsgBox "An Error Has Occurred", vbExclamation
Range("A1").Select
ActiveCell.FormulaR1C1 = "1111"
End
End If
End Sub
I am trying to write some data into a excel file, and then run Solver on the data set, and receive the output back into progress.
However, for some reason, when i run solver, it throws up error 5890...Solver internal error, indicating that out of memory.
Will really appreciate if someone could help me out on this.
Rajat
---------------------------------------------------------
Progress Code :-
DEFINE VARIABLE hExcel AS COM-HANDLE.
DEFINE VARIABLE chkSolver as integer.
DEFINE VARIABLE SolverSolution as decimal.
CREATE "Excel.Application" hExcel.
/* hExcel:VISIBLE = TRUE. */
hExcel:Application:Workbooks:Open("C:\GTPL.xls").
hExcel:Run("CheckSolver"). /* Check if solver addin is installed */
chkSolver = hExcel:range("N2"):value.
if chkSolver = 9999 then do:
hExcel:Worksheets("Sheet1"):Cells(7, 2)="200".
hExcel:Worksheets("Sheet1"):Cells(8, 2)="128".
hExcel:Worksheets("Sheet1"):Cells(9, 2)="265".
hExcel:Worksheets("Sheet1"):Cells(10, 2)="142".
hExcel:Worksheets("Sheet1"):Cells(11, 2)="75".
hExcel:Worksheets("Sheet1"):Cells(12, 2)="82".
end.
hExcel:Run("Solution").
SolverSolution = hExcel:range("I2"):value.
hExcel:workbooks(1):close(true) No-error.
hExcel:Application:QUIT NO-ERROR.
release object hExcel.
-------------------------------------
Excel Code:-
--------------------------------------
Sub Solution()
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverAdd CellRef:="$B$27", Relation:=3, FormulaText:="$H$2"
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverOptions MaxTime:=100, Iterations:=1000, Precision:=0.000001, AssumeLinear _
:=True, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, _
IntTolerance:=5, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=True
SolverOk SetCell:="$I$2", MaxMinVal:=2, ValueOf:="0", ByChange:="$G$7:$G$26"
SolverSolve
End Sub
Function fAddInLoaded(strAddInTitle) As Integer
' Finds if an add-in is loaded and attempts to load it if it
'is not. Returns zero if the
' add-in is loaded, 1 if the function had to load the add-in, -1
'if the add-in could
' not be located and -2 if an error occurred.
Dim adnAddIn As AddIn
On Error GoTo fAddInLoadedError
' Search through add-ins collection for our add-in...
For Each adnAddIn In Application.AddIns
If adnAddIn.Title = strAddInTitle Then
' Found it! Is it installed?
' Return success value
fAddInLoaded = 0
If Not adnAddIn.Installed Then
' If it's not installed then
' install it...
AddIns(strAddInTitle).Installed = True
' Return value indicating that we
' had to load the add-in
fAddInLoaded = 1
End If
Exit Function
End If
Next
' Add-In was not in the add-ins collection...
fAddInLoaded = -1
Exit Function
fAddInLoadedError:
fAddInLoaded = -2 ' unknown error occurred
End Function
'here is how u can give the call
Sub Aut

' Load Analysis Toolpak if it is not currently
' loaded...
iAddInATPRet = fAddInLoaded("Solver Add-in")
If iAddInATPRet = -1 Then
' Error finding Analysis Toolpak...
MsgBox "Analysis ToolPak Not Found", vbExclamation
Range("A1").Select
ActiveCell.FormulaR1C1 = "9999"
End
ElseIf iAddInATPRet = -2 Then
' Unknown Error...
MsgBox "An Error Has Occurred", vbExclamation
Range("A1").Select
ActiveCell.FormulaR1C1 = "1111"
End
End If
End Sub