Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Modules / DAO / VBA / October 2007

Tip: Looking for answers? Try searching our database.

What database am I using?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
NevilleT - 05 Oct 2007 08:26 GMT
I have an application that some people will use with SQL Server and others
with Access.  There are a few differences I need to cater for with SQL Server
such as stripping off the dbo_ from the front of linked tables.  Is there a
way to check a linked table to decide if it is Access or SQL Server?
RoyVidar - 05 Oct 2007 08:55 GMT
> I have an application that some people will use with SQL Server and others
> with Access.  There are a few differences I need to cater for with SQL Server
> such as stripping off the dbo_ from the front of linked tables.  Is there a
> way to check a linked table to decide if it is Access or SQL Server?

Yes, one way, would be using the MSysObjectsTable

SELECT Name,
Switch(
    Type = 1, "Native table",
    Type = 4, "ODBC linked table",
    Type = 6, "Jet linked table")
FROM MSysObjects
WHERE Type In(1, 4, 6)

Also, I think if you loop the tabledefs collection and study the connect
property of each tabledef object, it should return the connection string
if it is linked, where you can investigate what type of database you're
using.

Signature

Roy-Vidar

Allen Browne - 05 Oct 2007 09:33 GMT
Neat, Roy.

I was thinking of parsing it with Split() from the Connect property of the
TableDef.

Signature

Allen Browne - Microsoft MVP.  Perth, Western Australia
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

>> I have an application that some people will use with SQL Server and
>> others with Access.  There are a few differences I need to cater for with
[quoted text clipped - 16 lines]
> if it is linked, where you can investigate what type of database you're
> using.
RoyVidar - 05 Oct 2007 13:14 GMT
> Neat, Roy.

Thanx - I like the Switch and Choose functions.

Signature

Roy-Vidar

NevilleT - 06 Oct 2007 01:44 GMT
Thanks very much Roy and Allen (again).  I modified what you suggested to do
the trick.  Just for completeness and to help anyone else who has this issue,
the final code is:

   Dim strSQL As String
   Dim tbl As TableDef
   
   ' Used for SQL Server database which attaches a "dbo_" to the front of
table names.
   strSQL = "SELECT * FROM MSysObjects WHERE Type = 4;"            ' Type 4
= ODBC
   
   If funRecordCount(strSQL) > 0 Then                              ' Check
if a record is found
       For Each tbl In CurrentDb.TableDefs
           If Len(tbl.Connect) > 0 Then
               tbl.Name = Replace(tbl.Name, "dbo_", "")
           End If
       Next
       Set tbl = Nothing
   End If

funRecordCount is a generic function I use in the application

Public Function funRecordCount(strSQL As String) As Integer
   Dim dbs As Database
   Dim rst As Recordset
   
   On Error GoTo Error_funRecordCount
   
   Set dbs = CurrentDb
   Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot, dbSeeChanges)
   
   ' Find the number of records.  First test records were found.
   If (rst.EOF = True) And (rst.BOF = True) Then
       funRecordCount = 0
      Else
       rst.MoveLast
       funRecordCount = rst.RecordCount
   End If
   
Exit_funRecordCount:
   Set dbs = Nothing
   Set rst = Nothing
   Exit Function
   
Error_funRecordCount:
   MsgBox "Error in funRecordCount " & Err.Number & " - " & Err.Description
   GoTo Exit_funRecordCount
   
End Function

> > Neat, Roy.
>
> Thanx - I like the Switch and Choose functions.
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.