View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.sqlserver.programming
[email protected] j.dambrauskaite@gmail.com is offline
external usenet poster
 
Posts: 2
Default Excel crashes when VBA window is closed

I added 3 subs where I suspect the problem might be. The first sub is
called by command button which calls the GetFund_ID function. The
latter connects to the DB and should retrieve the IDs. I also added
the EnsureConnection Sub, though it does not seem to be a problem
because it is used in other codes.
The worst thing is that I cannot trace the bug because if i open the
VBA window, the code works.

-------------------------
Public Sub ImportButton_Click()
Dim i As Integer
Dim Error As Integer
Dim Result As Variant

On Error GoTo Handler:
Error = 0

'retrieve fund_id's from DB

For i = 1 To 50
If Sheet9.Cells(9, i + 1) = "" Then Exit For
Call GetFund_ID(Sheet9.Cells(9, i + 1), Result)
Sheet9.Cells(10, i + 1).Value = Result
Next i

<..importing..

'restore connection with DB. I am using 2 DBs, therefore i have to
restore connection with the default one. The RestoreConnection sub is
almost the same as EnsureConnection, just with different parameters.

RestoreConnection

MsgBox ("The import is finished")

If Error = 1 Then
MsgBox ("Connection with DBfailed. Please try again.")

End If

Exit Sub

Handler:
Error = 1
Resume Next

End Sub


-------------------------------------------------


Public Sub GetFund_ID(RefCol As String, Result As Variant)
Dim strSQL As String

If Application.VBE.MainWindow.Visible Then
Debug.Print "System Report:" & strSQL


strSQL = strSQL & "SELECT Fund_id FROM Funds WHERE Fund_Name like
'%"
strSQL = strSQL & RefCol
strSQL = strSQL & "%'"

EnsureConnection

Dim rs As Recordset: Set rs = OpenRecordsetCache(Cache, Cn, strSQL)
Result = ADODBExcel.FormatRecordset(rs)

End If

End Sub


------------------------------------------

Public Sub EnsureConnection()
Dim SQLString As String

SQLString = "Provider=SQLOLEDB.1;Password=Password1;"
SQLString = SQLString & "Persist Security Info=True;User
ID=User1;"
SQLString = SQLString & "Initial Catalog="
SQLString = SQLString & CStr([DBNAME])
SQLString = SQLString & ";Data Source=ServerName
\DatabaseName;"
SQLString = SQLString & "Use Procedure for Prepare=1;Auto
Translate=True;"
SQLString = SQLString & "Packet Size=4096;Workstation
ID=PCID;Use Encryption for Data=False;"
SQLString = SQLString & "Tag with column collation when
possible=False"

Set Cn = New ADODB.Connection
Cn.ConnectionString = SQLString

Cn.Open

SaveSetting "DBName", "Database", "ConnectionString",
Cn.ConnectionString
End Sub