Option Compare Database

Public Function Reattach(ByVal pstrFullFile As String) As Boolean
On Error GoTo HandleErrors

    Dim tdfSource   As DAO.TableDef
    Dim tdfMe       As DAO.TableDef
    Dim rst         As DAO.Recordset
    Dim dbMe        As DAO.Database
    Dim dbSource    As DAO.Database
    Dim i           As Integer
    Dim bleLinkLocal    As Boolean

    Dim intCount    As Integer
    Dim varSysCmd   As Variant
    
    DoCmd.Hourglass True
    Reattach = True
    
    Set dbSource = OpenDatabase(pstrFullFile)
    Set dbMe = CurrentDb
    
    'this part deletes attachments
    With dbMe
        For i = .TableDefs.Count - 1 To 0 Step -1
            Set tdfMe = .TableDefs(i)
            With tdfMe
                If (.Attributes And dbAttachedTable) = dbAttachedTable Then
                    dbMe.TableDefs.Delete (.Name)
                End If
            End With
        Next i
    End With
    
    dbMe.TableDefs.Refresh
    i = 0
    
    'this part attaches to pstrFullFile tables
    With dbSource
        varSysCmd = SysCmd(acSysCmdInitMeter, "Linking tables from " & pstrFullFile & "...", .TableDefs.Count)
        For Each tdfSource In .TableDefs
            bleLinkLocal = False
            If Left(tdfSource.Name, 4) <> "MSys" Then
                For Each tdfMe In dbMe.TableDefs
                    If tdfMe.SourceTableName = tdfSource.Name Then
                        bleLinkLocal = True
                        Exit For
                    End If
                Next tdfMe
                Set tdfMe = Nothing
                If Not bleLinkLocal Then
                    Set tdfMe = dbMe.CreateTableDef(tdfSource.Name)
                    With tdfMe
                        .Connect = ";Database=" & dbSource.Name
                        .SourceTableName = tdfSource.Name
                    End With
                    dbMe.TableDefs.Append tdfMe
                    'Hide table:  tdf.Attributes = dbHiddenObject
                    tdfMe.RefreshLink
                End If
                i = i + 1
                varSysCmd = SysCmd(acSysCmdUpdateMeter, i)
            End If
        Next tdfSource

        'this part I use to record attached file name in a table utblSysAdmin.  Delete it if you don't want it.
        Set rst = .TableDefs("utblSysAdmin").OpenRecordset(dbOpenTable)
        
        With rst
            .Edit
                !AttachFile = pstrFullFile
            .Update
            .Close
        End With
        
        .Close
    End With

ExitHere:
    'If Not (dbSource Is Nothing) Then dbSource.Close
    Set dbMe = Nothing
    Set tdfMe = Nothing
    Set tdfSource = Nothing
    varSysCmd = SysCmd(acSysCmdRemoveMeter)
    Application.Echo True
    DoCmd.Hourglass False
    Exit Function
    
HandleErrors:
    Reattach = False
    If Err = 3011 Then
        If MsgBox("Table " & tdfMe.Name & " not found.  Would you like to " _
         & "permanently remove the link to this table?", vbYesNo + vbQuestion) = vbYes Then
            dbMe.TableDefs.Delete (tdfMe.Name)
        End If
        Resume Next
    Else
        'your generic error handler here
        Reattach = False
        Resume ExitHere
    End If
    
End Function



 

Visual basic (VB.net) Online Compiler

Write, Run & Share VB.net code online using OneCompiler's VB.net online compiler for free. It's one of the robust, feature-rich online compilers for VB.net language, running on the latest version 16. Getting started with the OneCompiler's VB.net compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as VB.net. OneCompiler also has reference programs, where you can look for the sample code to get started with.

Read input from STDIN in VB.net

OneCompiler's VB.net online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample VB.net program which takes name as input and prints hello message with your name.

Public Module Program
	Public Sub Main(args() As string)
	 Dim name as String = Console.ReadLine()    ' Reading input from STDIN
   Console.WriteLine("Hello " & name)           ' Writing output to STDOUT
	End Sub
End Module

About VB.net

Visual Basic is a event driven programming language by Microsoft, first released in the year 1991.

Key Features

  • Beginner's friendly language.
  • Simple and object oriented programming language.
  • User friendly language and easy to develop GUI based applications.

Syntax help

Variables

Variable is a name given to the storage area in order to identify them in our programs.

Simple syntax of Variable declaration is as follows

Dim variableName [ As [ New ] dataType ] [ = initializer ]

Variable initialization

variableName = value

Conditional Statements

1. If

If condition-expression Then 
    'code
End If

2. If-else

If(conditional-expression)Then
   'code if the conditional-expression is true 
Else
  'code if the conditional-expression is false 
End If

3. If-else-if ladder

If(conditional-expression)Then
   'code if the above conditional-expression is true 
Else If(conditional-expression) Then
        'code if the above conditional-expression is true 
    Else
        'code if the above conditional-expression is false 
End If

4. Nested-If

If(conditional-expression)Then
   'code if the above conditional-expression is true
   If(conditional-expression)Then
         'code if the above conditional-expression is true 
   End If
End If

5. Select Case

Select [ Case ] expression
   [ Case expressionlist
      'code ]
   [ Case Else
      'code ]
End Select

Loops

1. For..Next

For counter [ As datatype ] = begin To end [ Step step ]
   'code
   [ Continue For ]
   'code
   [ Exit For ]
   'code
Next [ counter ]

2. For..Each

For Each element [ As datatype ] In group
   'code
   [ Continue For ]
   'code
   [ Exit For ]
   'code
Next [ element ]

3. While

While conditional-expression
   'Code 
   [ Continue While ]
   'Code
   [ Exit While ]
   'Code
End While

4. Do-while

Do { While | Until } conditional-expression
   'Code
   [ Continue Do ]
   'Code
   [ Exit Do ]
   'Code
Loop
Do
   'Code
   [ Continue Do ]
   'Code
   [ Exit Do ]
   'Code
Loop { While | Until } conditional-expression

Procedures

Procedure is a sub-routine which contains set of statements. Usually Procedures are written when multiple calls are required to same set of statements which increases re-usuability and modularity.

Procedures are of two types.

1. Functions

Functions return a value when they are called.

[accessModifiers] Function functionName [(parameterList)] As returnType
   'code
End Function

2. Sub-Procedures

Sub-procedures are similar to functions but they don't return any value.

Sub ProcedureName (parameterList)
'Code
End Sub