Announcement

Collapse
No announcement yet.

Call Glossary Sample from Access VBA?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • David Warner
    replied
    Thanks for the example code James, I just tried it from an Access 2003 module using a slightly modified version of your Button1_Click code...

    Code:
    Private Sub JCFServer_Test()
    
            Dim oJcf As JCFServer.IJCFSERV
            Dim L2 As Integer
    
            Set oJcf = CreateObject("CJCFSERV")
            oJcf.L1 = 7
            L2 = oJcf.DoIt()
    
    End Sub
    Unfortunately Access failed in a fairly spectacular fashion generating an exception error as follows...

    Microsoft Office Access has encountered a problem and needs to close.
    We are sorry for the inconvenience.

    Code:
    Error signature
      AppName: msaccess.exe 
      AppVer: 11.0.8166.0
      AppStamp: 46437912
      ModName: jcfserv.dll
      ModVer: 0.0.0.0
      ModStamp: 00003039
      fDebug:0
      Offset: 00002def
    I had actually managed to make something similar to this happen with the Glossary example but thought I was doing something wrong. I'll continue digging.

    David

    Leave a comment:


  • Thomas Tierney
    replied
    This doesnt work in VBA, VB or VBSCRIPT either. It might work in vb.net but not in the other vb's

    Leave a comment:


  • jcfuller
    replied
    I thought I had posted this?? Maybe elsewhere?


    James

    Code:
    '=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    'SED_PBWIN
    '=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    
    
    '******************************************************************************
    '                            James C. Fuller
    '                            August 8, 2008
    '                         [email protected]
    '******************************************************************************
    #COMPILE DLL "JCFSERV.DLL
    #DIM ALL
    #COM NAME "JCFServer"
    #COM GUID GUID$("{C7214A4E-D4F7-456C-9F4A-994B56091E95}")
    #COM TLIB ON
    'This embeds the Typelib in the dll using José's SED
    '% RC TEXT 1 TYPELIB "JCFSERV.tlb"
    
    $cJcfServGuid = GUID$("{34D68488-BD5E-4F80-B060-84E373F4D112}")
    $iJcfServGuid = GUID$("{E211F708-8350-4CBE-B3B3-C6BD70E25108}")
    GLOBAL UserName AS STRING
    
    CLASS cJcfServ $cJcfServGuid AS COM
        INSTANCE L1 AS LONG
        INTERFACE iJcfServ $iJcfServGuid : INHERIT IDISPATCH
            METHOD DoIt<101>() AS LONG
                ?"I Am Here"+$CR + FORMAT$(L1)
            END METHOD
            PROPERTY GET L1<102>() AS LONG
                PROPERTY = L1
            END PROPERTY
            PROPERTY SET L1<102>(BYVAL Param AS LONG)
                L1 = Param
            END PROPERTY
        END INTERFACE
    
    END CLASS
    '=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
    You will need to register the server: regsvr32 JCFSERV.DLL
    '------------------------------------------------------------------------------
    Also I used Add Reference from the Project Menu of VB


    THis is the Vb 2008 Express Edition code.
    Just a Form with a button.

    Code:
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim oJcf As JCFServer.IJCFSERV
            Dim L2 As Integer
    
            oJcf = CreateObject("CJCFSERV")
            oJcf.L1 = 7
            L2 = oJcf.DoIt()
    
        End Sub
    End Class

    Leave a comment:


  • Thomas Tierney
    replied
    David,

    If you look at the class using OLEVW.EXE I believe that you will see that it is notcreatable. I have asked this question before and I was told that it was due to the fact that I didnt inherit from dual which is where I was inheriting from. I havnt been able to get this to work from vbscript or vb. I am not quite sure where the problem is coming from or what the problem is but I have tried creating three seperate different classes and interfaces to no avail.

    Leave a comment:


  • David Warner
    replied
    Hi James,

    > all strings need to be unicode

    I gave it a try from Access 97 (which is non-unicode) and I get the same error. Any ideas?

    I am floundering a little here (as you can probably tell).

    Cheers

    David

    Leave a comment:


  • jcfuller
    replied
    First I believe all strings need to be unicode.

    James

    Leave a comment:


  • David Warner
    started a topic Call Glossary Sample from Access VBA?

    Call Glossary Sample from Access VBA?

    Hi Folks,

    I have been looking through the PB/Win9 Glossary COM Server sample and would like to call it from Access 2003 if possible. I am having trouble creating the Glossary object in my VBA module. I believe this should be possible but there is a lot of information to take in and I wonder if I have missed something.

    I have set up the reference to the .tlb file.

    [Access 2003 Module1]... Tools Menu... References Menu...

    Available References... List of Glossary Terms and Definitions [Ticked for inclusion]
    Location: C:\PBWin90\Samples\Com\Glossary\GlossaryServer.tlb
    Language: Standard

    The VBA module contains the following sub...

    Code:
    Sub Test_Glossary()
         
         Dim oGlossary As Object
    
         Set oGlossary = CreateObject("Glossary.CGLOSSARY")
         
         Set oGlossary = Nothing
    
    End Sub
    VBA produces the following error when performing the CreateObject...

    Run-time error '429':
    ActiveX component cannot create object

    Has anyone else perhaps called a COM Server from VBA? If so could you offer me some guidance please?

    Thanks,

    David
Working...
X