I have written a VB com dll to extract a database schema including all
tables, stored procs, views etc.. I call this com object through <cf_object>
and it works as needed. 

However I have a query.... I have attempted to call the same methods in the
SQLDMO class directly in cold fusion, i.e no need to write the VB dll
directly to access the SQLDMO.

Here is the Vb code which works fine...

Public Function generateScript(server As String, database As String,
username As String, password As String) As String

    Dim SQLServer As New SQLDMO.SQLServer
    
    ' SQL Server security
    If username = "(local)" Then
        SQLServer.LoginSecure = True
        SQLServer.Connect "(local)"
    Else
        SQLServer.Connect server, username, password
    End If
    
    Dim tbl As SQLDMO.Table
    Dim sp As SQLDMO.StoredProcedure
    Dim view As SQLDMO.view
    
    ' Get a reference to the selected database
    Set SQLDatabase = SQLServer.Databases(database)
    
    Dim param As SQLDMO_SCRIPT_TYPE
    
    Dim Script As String
    
    param = SQLDMOScript_Default Or SQLDMOScript_Indexes Or
SQLDMOScript_Triggers Or SQLDMOScript_DatabasePermissions
    
    'Generate all the tables
    For Each tbl In SQLDatabase.Tables
        If Not tbl.SystemObject Then
            Script = Script & tbl.Script(param)
        End If
    Next
    
    param = SQLDMOScript_Default
    
    'Generate all the stored procedures
    For Each sp In SQLDatabase.StoredProcedures
        If Not sp.SystemObject Then
            Script = Script & sp.Script(param)
        End If
    Next
    
    param = SQLDMOScript_Default
    
    'Generate all the Views
    For Each view In SQLDatabase.Views
        If Not view.SystemObject Then
            Script = Script & view.Script(param)
        End If
    Next
    
    'Clean Up
    SQLServer.DisConnect
    Set SQLServer = Nothing
    
    generateScript = Script
End Function







I wanted to replicate this in Cold Fusion, however I was not sure how to
defined something like this ...       Dim tbl As SQLDMO.Table


Here is my cold Fusion code so far ....

<cfobject type="COM" name="SQLServer" class="SQLDMO.SQLServer"
action="CREATE" context="LOCAL">
<cfset SQLServer.Connect("SQLSERVER","(local)","")>
<cfset SQLDatabase = SQLServer.Databases()>

<cfobject type="COM" name="tbl" class="SQLDMO.Tables" action="CREATE"
context="LOCAL">

<cfloop index="i" from="1" to="#tbl.Count#">
        <cfdump var="#tbl.Script(4)#"><br>
</cfloop>


It throws an error when attempting to call the SQLDMO.Tables object... In
the VB code it does not instantiate the SQLDMO.Tables as a new object but
rather just assigns a variable.. Dim tbl As SQLDMO.Table


Finally my question is how do you call the SQLDMO.Tables method, If you
cannot instantiate it?

Ie is there a way to do this..

Something like this... <cfparam name="tbl" type="SQLDMO.Table">




This message may contain privileged or confidential information and is
intended only for the individual named. If you are not the named addressee
you should not disclose, disseminate, distribute or copy this e-mail. If you
have received this e-mail by mistake please notify the sender immediately by
e-mail and delete this e-mail from your system. You should rely on your own
virus checking programmes and procedures for checking any attachments.
Please advise us if you wish your name and e-mail address to be removed from
our database.


---
You are currently subscribed to cfaussie as: [EMAIL PROTECTED]
To unsubscribe send a blank email to [EMAIL PROTECTED]

MXDU2004 + Macromedia DevCon AsiaPac + Sydney, Australia
http://www.mxdu.com/ + 24-25 February, 2004

Reply via email to