Dim obSAS As SAS.Workspace Dim obWorkspaceManager As New SASWorkspaceManager.WorkspaceManager Private Sub Form_Load() Dim obConnection As New ADODB.Connection Dim obRecordSet As New ADODB.Recordset Dim errorString As String Set obSAS = obWorkspaceManager.Workspaces.CreateWorkspaceByServer( "MyWorkspaceName", VisibilityProcess, Nothing, "", "", errorString) obSAS.LanguageService.Submit "data a; x=1; y=100; output; x=2; y=200; output; run;" obConnection.Open "provider=sas.iomprovider.1; SAS Workspace ID=" + obSAS.UniqueIdentifier obRecordSet.Open "work.a", obConnection, adOpenStatic, adLockReadOnly, adCmdTableDirect obRecordSet.MoveFirst Debug.Print obRecordSet(1).Value End Sub Private Sub Form_Unload(Cancel As Integer) ' If we don't close SAS, the ' SAS process might run forever If Not (obSAS is Nothing) Then obWorkspaceManager.Workspaces.RemoveWorkspace obSAS obSAS.Close End If End Sub
Dim obSAS As SAS.Workspace Dim obWorkspaceManager As New SASWorkspaceManager.WorkspaceManager Private Sub Form_Load() Dim obConnection As New ADODB.Connection Dim obRecordSet As New ADODB.Recordset Dim obServerDef As New SASWorkspaceManager.ServerDef Dim xmlString As String obServerDef.Port = ObjectServerPort obServerDef.Protocol = ProtocolBridge ' Multiple hostNames can be provided ' for failover; order is unreliable. obServerDef.MachineDNSName = "myServer.myCompany.com" Set obSAS = obWorkspaceManager.Workspaces.CreateWorkspaceByServer( "MyWorkspaceName", VisibilityProcess, obServerDef, "MyUserID", "MyPassword", xmlString) obSAS.LanguageService.Submit "data a; x=1; y=100; output; x=2; y=200; output; run;" obConnection.Open "provider=sas.iomprovider.1; SAS Workspace ID=" + obSAS.UniqueIdentifier obRecordSet.Open "work.a", obConnection, adOpenStatic, adLockReadOnly, adCmdTableDirect obRecordSet.MoveFirst Debug.Print obRecordSet(1).Value End Sub Private Sub Form_Unload(Cancel As Integer) If not (obSAS is Nothing) Then obWorkspaceManager.Workspaces.RemoveWorkspace obSAS obSAS.Close End If End Sub
Dim obSAS As SAS.Workspace Dim obWorkspaceManager As New SASWorkspaceManager.WorkspaceManager Private Sub Form_Load() Dim errorXML As String On Error GoTo CREATEERROR ' Establish File parameters Set obSAS = obWorkspaceManager.Workspaces.CreateWorkspaceByLogicalName( "MyWorkspaceName", VisibilityProcess, "", "", errorXML) ' errorXML only gets returned when there is a successful connection, ' otherwise err.description gets the XML If (Len(errorXML) > 0) Then ParseXML errorXML CREATEERROR: If (Err.Number > SASWorkspaceManager.Errors.SEE_XML) Then GoTo TROUBLE End If DISPLAYXML: ParseXML Err.Description GoTo NOTROUBLE TROUBLE: Debug.Print Str(Err.Number) + ": " + Err.Source + ": " + Err.Description NOTROUBLE: End Sub Private Sub ParseXML(xml As String) ' Another option would be to create some XML to make this look nice. ' Write the XML to a file so it can be parsed ' Form2 simply has a WebBrowser control in it Dim f As New Scripting.FileSystemObject Dim fname As String Dim tstream As Scripting.TextStream fname = f.BuildPath(f.GetSpecialFolder(TemporaryFolder), f.GetTempName) Set tstream = f.OpenTextFile(fname, ForWriting, True) tstream.Write ("html>body>xml id=""combridgeOutput"">") tstream.Write (xml) tstream.Write ("/xml>table datasrc=""#combridgeOutput"">thead> th>sasServer/th>th>sasLogin/th>") tstream.Write ("th colspan=50>machineDNSName/th>th colspan=20> port/th>th colspan=40>status/th>") tstream.Write ("th colspan=200>description/th>/thead>tbody>tr> td>span datafld=""sasserver"">") tstream.Write ("/span>/td>td>span datafld=""saslogin"">/span>/td> td colspan=50>") tstream.Write ("span datafld=""sasmachinednsname"">/span>/td> td colspan=50>span datafld=""sasport"">") tstream.Write ("/span>/td>td colspan=40>span datafld=""status""> /span>/td>td colspan=200>") tstream.Write ("span datafld=""description"">/span>/td>/tr>/tbody> /table>/body>/html>") tstream.Close Form2.WebBrowser1.Navigate "file://" + fname Form2.Show End Sub
' Either of these lines will create a PooledWorkspace using COM+ dim obPooledWorkspace as new SASWorkspaceManager.PooledWorkspace set obPooledWorkspace = CreateObject("SASWorkspaceManager.PooledWorkspace") ' Note that from this point on, the code is the same in both the COM+ ' and the Integration Technologies pooling. Dim obSAS as SAS.Workspace Set obSAS = obPooledWorkspace.Workspace ' Now use obSAS. Debug.Print obSAS.UniqueIdentifier 'When done, release the obPooledWorkspace to return it to the pool. Set obPooledWorkspace = Nothing
' Get the pool. If it doesn't exist, create it Dim obWorkspaceManager As New SASWorkspaceManager.WorkspaceManager Dim obPool As SASWorkspaceManager.WorkspacePool On Error Resume Next ' Assume the pool already exists Set obPool = obWorkspaceManager.WorkspacePools("MyLogical") On Error GoTo 0 If (obPool Is Nothing) Then ' The pool doesn't exist; create it Dim obServer As New SASWorkspaceManager.ServerDef Dim obLogin As New SASWorkspaceManager.LoginDef obServer.Protocol = ProtocolBridge obServer.Port = 4321 ' A random number obServer.MachineDNSName = "MyMachine.MyCompany.com" obLogin.LoginName = "MyLogin" obLogin.Password = "MyPassword" Set obPool = obWorkspaceManager.WorkspacePools.CreatePoolByServer( "MyLogical", obServer, obLogin) End If ' Now the pool is created, get a Workspace from it: Dim obPooledWorkspace As SASWorkspaceManager.PooledWorkspace set obPooledWorkspace = obPool.GetPooledWorkspace("", "", 1000) ' Note that from this point on, the code is the same in both the COM+ ' and the Integration Technologies pooling. Dim obSAS As SAS.Workspace Set obSAS = obPooledWorkspace.Workspace ' Now use obSAS. Debug.Print obSAS.UniqueIdentifier 'When done, release the obPooledWorkspace to return it to the pool. Set obPooledWorkspace = Nothing