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