Thanks for that, Peter,

You have confirmed my suspicions (i.e. MapBasic functionality not available directly) *AND* supplied a cute workaround - or about as cute as possible under the circumstances. As you point out, the problem of never really knowing how many connections are open, or what the highest numbered handle might be, is a nuisance. However your suggested approach should do the trick.

Cheers,
David

Peter Horsbøll Møller wrote:
David,

The connections are number from 1 and up. So what you need to do is to check 
each number from one until a connection isn't available or you can set a 
minimum number of connections you want to check before assuming that there is 
no more.

The "problem" is that MapInfo doesn't change the connection number. I call it a 
problem here, but in general I'm glad that they keep the number.
The problem here is that you can have 3 connections open, but the first connection number can be 5, if you have closed the 4 first connections.

'****************************************************************************************************
Include "MapBasic.def"

Type T_CONNECTION_INFO
        szDriverName    As String
        szDatabaseName  As String
        szSQLUserName   As String
        szDataSourceName        As String
        szQuoteChar             As String
End Type

Declare Sub Main
Declare Function GetConnectionInfo(ByVal nConn As Integer, tcInfo As 
T_CONNECTION_INFO) AS Logical

Sub Main

Dim     nConn As Integer,
        tcInfo As T_CONNECTION_INFO

        For nConn = 1 To 2000
                If GetConnectionInfo(nConn, tcInfo) Then
                        Print "Driver: " & tcInfo.szDriverName
                                & " Database: " & tcInfo.szDatabaseName
                                & " Username: " & tcInfo.szSQLUserName
                                & " Data Source: " & tcInfo.szDataSourceName
                                & " Quote Char: " & tcInfo.szQuoteChar
                Else
                        '**No more conections ?
                        If nConn > 10 Then
                                '**If ConnectionNumber is larger than 10, I 
guess there is no more connections ??
                                '**10 can be changed to any number
                                Exit For
                        End If
                End if
                tcInfo.szDriverName     = ""
                tcInfo.szDatabaseName   = ""
                tcInfo.szSQLUserName    = ""
                tcInfo.szDataSourceName = ""
                tcInfo.szQuoteChar      = ""
        Next
End Sub

Function GetConnectionInfo(ByVal nConn As Integer, tcInfo As T_CONNECTION_INFO) 
AS Logical

OnError GoTo NoConnection

GetConnectionInfo = FALSE

        tcInfo.szDriverName     = Server_ConnectInfo (nConn, 
SRV_CONNECT_INFO_DRIVER_NAME)
        tcInfo.szDatabaseName   = Server_ConnectInfo (nConn, 
SRV_CONNECT_INFO_DB_NAME)
        tcInfo.szSQLUserName    = Server_ConnectInfo (nConn, 
SRV_CONNECT_INFO_SQL_USER_ID)
        tcInfo.szDataSourceName = Server_ConnectInfo (nConn, 
SRV_CONNECT_INFO_DS_NAME)
        tcInfo.szQuoteChar      = Server_ConnectInfo (nConn, 
SRV_CONNECT_INFO_QUOTE_CHAR)

        GetConnectionInfo = TRUE

        Exit Function
'--------------------
NoConnection:
        Print "Connection doesn't exist: " & nConn
                        & " Error: " & Error$()

End Function
'****************************************************************************************************

HTH,

Peter Horsbøll Møller
GIS Developer, MTM
Geographical Information & IT
COWI A/S
Odensevej 95
DK-5260 Odense S.
Denmark
Tel +45 6311 4900
Direct  +45 6311 4908
Mob     +45 5156 1045
Fax     +45 6311 4949
E-mail  [EMAIL PROTECTED]
http://www.cowi.dk/gis

COWI har fået ny hjemmeside. Ydelserne GIS og IT, kort, kortlægning, 3D 
visualisering og arealforvaltning ligger under SAMFUND. Se mere her : 
www.cowi.dk

COWI has changed its homepage. Our services within cadastre and 
landadministration, geodataproducts, mapping and GIS can be seen under SOCIETY. 
See our services here: www.cowi.com


-----Original Message-----
From: David Jerrard [mailto:[EMAIL PROTECTED] Sent: Friday, October 07, 2005 4:08 AM
To: [email protected]
Subject: MI-L Server_ConnectInfo - What are my current connections?


Hi all,

I am writing MapBasic code to run in an environment where more than one Oracle Spatial 
database connection may be current at any time.  I would like to "interrogate" 
those connections to see if a suitable connection already exists before prompting the 
user to login (... again, and again, and again...).

The Server_ConnectInfo() function looks *ALMOST* like what I'm after.  Once I 
have a connection handle, I can find out what database it connects to, what 
username was used to login, etc.

What I can't find is anything to tell me:
 (a) How many existing connections exist, and
 (b) What connection handles (integers) they use

Come to think of it, another nice-to-have would be a "test connection" option, as some of 
these connections go "stale" if left overnight when a database backup takes place.  But 
that's another story...

Any assistance finding either the existing MapBasic functionality to do this, 
or a cute workaround in its absence, would be greatly appreciated.

Cheers,
David Jerrard



---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com | To 
unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 18166






---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 18178

Reply via email to