Page 1 of 2 12 LastLast
Results 1 to 15 of 25
  1. #1
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038

    Msgbox to include **Counter** as part of DELETE TABLE ("Success" or "Failure")

    Experts:

    In a previous post (https://www.accessforums.net/showthread.php?t=83262) I received assistance from multiple experts (e.g., ssanfu & accesstos).

    Over the course of nearly 30 posts, various solutions were posted. Each of the solutions work overall, but I am hoping to receive some follow-on assistance (given that I may have prematurely closed the thread yesterday).

    Naturally, feel free to read through the many messages, but I will attempt to start with -- somewhat -- a clean slate here. First though (again), all credit must be given to Steve (ssanfu) & John (accesstos) for the existing VBA (see attached DB "Delete Tables").

    That said, allow me to first recap what the existing solution ("Delete Tables.accdb") includes:

    a. 11 tables; [00_DeleteTables] + 10 lookup (LK) tables.
    b. Form "frmDeleteTables" to execute the DELETE function in module "DeleteTables"
    c. Table [00_DeleteTables] includes four (4) records where [Delete] = TRUE; unless I manually change the Boolean, these four records (Age, Education, MaritalStatus, Nickname) should *ALWAYS* keep value = TRUE.


    ************************

    Process (Delete Tables "Run #1):
    - Open the form and click "Delete Non-LOV Tables" from the listbox.
    - This invokes the function and -- once you click YES -- deletes all four (4) tables given they still exist in the database... good!

    HERE'S WHAT I NEED SOME HELP WITH:


    - I need a message box to pop up indicating that 4 tables were deleted.

    ************************

    Process (Delete Tables "Run #2):
    - I reopen the form and click on "Delete..." again.
    - Now, since I did NOT change the Boolean value in [00_DeleteTables] AND these four tables were previously deleted, the deletion cannot take place.
    - Currently, I'm getting a msgbox that "No tables selected to drop or does not exist..."

    HERE'S WHAT I NEED SOME HELP WITH:
    - Ideally, I'd like the message box to read something slightly different.
    - That is, the cause is NOT that any tables were checked or not-checked; instead, the cause is that these tables no longer exist.
    - If possible, I'd like to have the message to read that "The 4 (in this case) selected tables do NOT exist."

    ************************

    Process (Delete Tables "Run #3):
    - Now, before running the DELETE function again, open up [00_DeleteTables] and now check a 5th record (e.g. "Gender").
    - So, 5 records have a value = TRUE but -- we know -- that only 1 table (Gender) can be deleted... but for sake of argument, let's say the user 'does not know' or 'forgets what checked/not checked' or 'does not remember what was previously deleted'.
    - Again, open the form and press DELETE.

    HERE'S WHAT I NEED SOME HELP WITH:
    - In a perfect world, I'd like the message box to read that one (1) table was deleted but four (4) tables could not be found/were previously deleted.

    ************************

    In summary, I merely would like to have little bit more feedback (i.e., msgbox) indicating a) how many tables were actually deleted and b) how many could NOT be deleted.

    I must conclude by saying that Steve (ssanfu's) original solution did include a counter. At the same time, however, each delete action reset the [DELETE] Boolean value for *all* = FALSE. Thus, I had to always go back and update n records in [00_DeleteTables] = TRUE. That was not convenient; nor should I need to have a 2nd Boolean value to lookup the TRUE/FALSE records and have Boolean [Delete] updated by Boolean [2nd]... but I digress.

    I am hopeful that the baseline of the existing VBA does NOT require too much tweaking to include those counters (success, failure... or whatever it should be called).

    Cheers,
    Tom

    P.S. I included a 2nd DB "Restore Tables (Backup)" so that deleted tables can be easily restored as part of the development/testing.
    Attached Files Attached Files
    Last edited by skydivetom; 03-20-2021 at 05:30 PM. Reason: Better title

  2. #2
    moke123's Avatar
    moke123 is offline Me.Dirty=True
    Windows 7 32bit Access 2010 32bit
    Join Date
    Oct 2012
    Location
    Ma.
    Posts
    1,643
    I took the lazy route and added 2 functions. Changes and functions in red.

    Code:
    Function DelTables(Optional ByVal fShowMessage As Boolean) As Long
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim strIN As String
        Dim TNames
        
        Set db = CurrentDb
        'Query the tables selected to drop.
        Set rs = db.OpenRecordset("SELECT 'LK_' & [FieldnameStandardized] AS tName FROM 00_DeleteTables " _
                                & "WHERE [00_DeleteTables].Delete = True;")
    
        On Error Resume Next
        With rs
            While Not .EOF
                'Build a "list" with the existing tables to drop.
                strIN = strIN & ", " & db.TableDefs(!tName).Name
                .MoveNext
            Wend
        End With
        rs.Close
        Set rs = Nothing
        On Error GoTo 0
    
        strIN = Mid(strIN, 3)
        If Len(strIN) Then
    
            If MsgBox("Are you sure that you want to delete the selected tables?" _
             , vbQuestion + vbYesNo + vbDefaultButton2, "Delete tables") = vbYes Then
                'Drop all tables at once.
                db.Execute "DROP TABLE " & strIN
                'Return the count of droped tables via the RecordsAffected of db.
                DelTables = db.RecordsAffected
                db.TableDefs.Refresh
    
                'Show table changes in the database window
                RefreshDatabaseWindow
    
                MsgBox "These " & TableCheck(TNames) & " Tables No Longer Exist:" & vbNewLine & TNames
    
    
                If fShowMessage Then
                    'Prepare the "list" of table names for WHERE clause.
                    '(Remove the 'LK_' and add single quotes on names.
                    strIN = Replace(Replace(strIN, "LK_", ""), ", ", "', '")
                    'Get the names of the tables that not found.
                    Set rs = db.OpenRecordset("SELECT 'LK_' & [FieldnameStandardized] AS tName FROM 00_DeleteTables " _
                                            & "WHERE ([Delete]=True) AND (FieldnameStandardized NOT IN('" & strIN & "'))")
    
    
                    If rs.RecordCount Then
                        strIN = vbNullString
                        With rs
                            While Not .EOF
                                'Build a "list" with tables that not found.
                                strIN = strIN & vbCrLf & !tName
                                .MoveNext
                            Wend
                            MsgBox "The " & .RecordCount & " tables below not found:" & strIN, , "Delete tables"
                        End With
                    End If
                    rs.Close
                    Set rs = Nothing
                End If
            End If
        Else
            MsgBox "No tables selected to drop or does not exists. Review table [00_DeleteTables].", , "Delete tables"
        End If
        Set db = Nothing
    End Function
    
    
    Public Function TableCheck(ByRef TNames As Variant) As Integer
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim strSql As String
        Dim strOut As String
        Dim i As Integer
        Dim tbl As String
        strSql = "select * from  00_DeleteTables"
        Set db = CurrentDb()
        Set rs = db.OpenRecordset(strSql)
    
    
        If rs.BOF And rs.EOF Then
            GoTo MyExit
        End If
    
    
        Do Until rs.EOF
            
            If Not IsTableExists("LK_" & rs!FieldnameStandardized) Then
                strOut = strOut & Space(10) & "*" & rs!FieldnameStandardized & vbNewLine
                i = i + 1
            End If
            rs.MoveNext
        Loop
    
        TNames = strOut
        TableCheck = i
    
    MyExit:
        rs.Close
        Set rs = Nothing
        Set db = Nothing
    
    End Function
    
    Public Function IsTableExists(ByVal strTableName As String) As Boolean
        On Error Resume Next
        IsTableExists = IsObject(CurrentDb.TableDefs(strTableName))
    End Function
    If this helped, please click the star * at the bottom left and add to my reputation- Thanks

  3. #3
    accesstos's Avatar
    accesstos is offline Expert
    Windows XP Access 2007
    Join Date
    Dec 2018
    Location
    Greece
    Posts
    551
    I changed the scenario and now the caller has the absolute control.
    The DelTables() function, returns lists with the dropped and not dropped tables and the caller do anything it needs with them.
    Code:
    Function DelTables(strDropped As String, strNotFound As String) As Long
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim strT As String
    
        Set db = CurrentDb
        'Query the tables selected to drop.
        Set rs = db.OpenRecordset("SELECT [FieldnameStandardized] AS tName FROM 00_DeleteTables " _
                                  & "WHERE [00_DeleteTables].Delete = True;")
        With rs
            While Not .EOF
                On Error Resume Next
                strT = "LK_" & !tName
                'Try drop table
                db.Execute "DROP TABLE " & strT
                If Err = 0 Then
                    'Build a "list" with the dropped tables.
                    strDropped = strDropped & "," & strT
                Else
                    'Build a "list" with not dropped tables.
                    strNotFound = strNotFound & "," & strT
                    Err.Clear
                End If
                .MoveNext
            Wend
            DelTables = .RecordCount
        End With
        rs.Close
        Set rs = Nothing
        Set db = Nothing
        strDropped = Mid(strDropped, 2)
        strNotFound = Mid(strNotFound, 2)
    End Function
    An example of the usage from the caller's side, seems below (see attached DB "DropTables.accdb"):
    Code:
    Private Sub DeleteTables()
        Dim lngTables As Long                             'Count of checked records
        Dim strDrop As String                             'List with the dropped tables
        Dim strNot As String                              'List with the tables that not be dropped
        Dim varDropped As Variant                         'Variant to split the dropped list
        Dim varNot As Variant                             'Variant to split the not be dropped
    
        'Delete Non-LOV Tables
        Me.Dirty = False
        If DCount("*", "00_DeleteTables", "[Delete]=True") Then
            'There are selected tables to drop
            If MsgBox("Are you sure you want to delete the selected tables?" _
                      , vbQuestion + vbYesNo + vbDefaultButton2, Me.Caption) = vbYes Then
                'Deletes tables
                lngTables = DelTables(strDrop, strNot)
                If lngTables > 0 Then
                    If Len(strDrop) Then
                        'Tables deleted
                        varDropped = Split(strDrop, ",")
                        strDrop = Join(varDropped, vbCrLf)
                        MsgBox "From " & lngTables & " selected, " _
                               & UBound(varDropped) + 1 & " tables deleted:" _
                               & vbCrLf & vbCrLf & strDrop, vbInformation, Me.Caption
                    Else
                        MsgBox "No tables deleted", , Me.Caption
                    End If
    
                    If Len(strNot) Then
                        'Tables that not deleted for any reason.
                        varNot = Split(strNot, ",")
                        strNot = Join(varNot, vbCrLf)
                        MsgBox "From " & lngTables & " selected, " _
                               & UBound(varNot) + 1 & " tables not be deleted:" _
                               & vbCrLf & vbCrLf & strNot, vbInformation, Me.Caption
                    End If
                    RefreshDatabaseWindow
                Else
                    Beep
                End If
            End If
        Else
            Beep
        End If
    End Sub
    Good night,
    John
    Attached Files Attached Files

  4. #4
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038
    moke123:

    Hmh, I'm not sure if we're on the same sheet.

    Here's what should have happend:

    Run #1:
    - Deleted 4 tables
    - Display msgbox (abbreviated): "4 tables deleted!"

    Run #2:
    - No tables are deleted
    - Display msgbox (abbreviated): "4 tables do not exist. Nothing deleted."

    Run #3:
    - Deleted 1 table
    - Display msgbox (abbreviated): "1 table deleted! 4 tables do not exist."


    ---------------------

    At the present time, however, the following is taken place:

    Run #1:
    - Display msgbox (abbreviated): "These 4 Tables No Longer Exist: Age, Education, MaritalStatus, Nickname"
    - Deleted 4 tables

    ** Note: The message box is incorrect; the 4 tables do exist.

    Run #2:
    - No tables are deleted
    - Display msgbox (actual): "MsgBox "No tables selected to drop or does not exists. Review table [00_DeleteTables]."

    ** Note: This is currently the default message. At this time, I would be appropriate to display what's currently displayed in Run #1



    I stopped here given the message in Run #1 is wrong. Any ideas how to tweak the appropriate order? Also, I don't think it's necessary to include the actual table names in the display message.
    In my actual solution, it could potential include 80 tables if they were previously deleted.

    So, just having "n" for "success" and "n" for "failure would be sufficient.

    Standing by for additional suggestions.

    Thank you!
    Tom
    Attached Thumbnails Attached Thumbnails Run 1 and 2.JPG  

  5. #5
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038
    John:

    First of all, thanks for giving it another stab!!! Although this is not an "Allstate" commercial, I already know "I'm in good hands (now)".

    It's getting late but I had a quick peek at the newest procedure. At first glance, I believe the procedure itself (i.e, n of success; n of failure) appear to exactly follow what I should anticipate. I will do more complete testing tomorrow morning.

    In the meanwhile, here's what I tried to modify but failed; instead of using the new form, I tried to link the command's button (DELETE) function to my original form (listbox).

    This is NOT about cosmetics; but having quick access to changing the TRUE and FALSE values (vs. just being accessible by opening the table) could potentially lead to some unwanted outcomes. Don't want to go into details why...

    So, when putting the line "Call DeleteTables" to the AfterUpdate action (see below), I'm getting a compile error (see attached). Is this due to "Sub" vs. "Function" or "Private" vs. "Public"? Either way, how can I call the DELETE function from the original form (i.e., listbox)?

    Code:
    Private Sub Listbox_DeleteTable_AfterUpdate()
        
        'Delete Non-LOV Tables
        If Me.Listbox_DeleteTable = "Delete Non-LOV Tables" Then
        
            'Deletes tables
            Call DeleteTables
                 
        End If
    End Sub
    Attached Thumbnails Attached Thumbnails Listbox.JPG  

  6. #6
    moke123's Avatar
    moke123 is offline Me.Dirty=True
    Windows 7 32bit Access 2010 32bit
    Join Date
    Oct 2012
    Location
    Ma.
    Posts
    1,643
    Run #1:
    - Display msgbox (abbreviated): "These 4 Tables No Longer Exist: Age, Education, MaritalStatus, Nickname"
    - Deleted 4 tables

    ** Note: The message box is incorrect; the 4 tables do exist.
    Actually they dont exist. The Navpane doesn't update until the message box closes.
    If this helped, please click the star * at the bottom left and add to my reputation- Thanks

  7. #7
    moke123's Avatar
    moke123 is offline Me.Dirty=True
    Windows 7 32bit Access 2010 32bit
    Join Date
    Oct 2012
    Location
    Ma.
    Posts
    1,643
    Here's another version that returns these message boxes. You can easily modify them if you wish.
    Click image for larger version. 

Name:	a.jpg 
Views:	33 
Size:	13.8 KB 
ID:	44732Click image for larger version. 

Name:	b.jpg 
Views:	33 
Size:	14.7 KB 
ID:	44733
    *Note that I added 2 dummy tables to your 00_DeleteTables table for testing thats why it shows 12 original tables.


    Edit: The error your getting in Post#5 is because you named your Module and procedure the same name. Change the name of the module to something like modDeleteTables.
    Attached Files Attached Files
    Last edited by moke123; 03-21-2021 at 01:34 AM. Reason: To comment on error your getting in post #5
    If this helped, please click the star * at the bottom left and add to my reputation- Thanks

  8. #8
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038
    Moke123 -- your solution is **SOLID**!!!

    I have attached your version with only *cosmetic* changes (msgbox). That is, I included icons, removed carriage returns, added tabs to align counters, etc. See attached .zip.

    Your code follows a rather different logic. Would you be willing to add a few more (short) **comments**. I'd like to make sure I can properly follow all procedures.

    Note: Again, I really, really like your solution. However, I don't want to close the thread just yet (I did that yesterday). Ultimately, John (accesstos) also came up w/ a nice solution and I'd like to offer him the opportunity to respond as well. Thank you for understanding.

    Thank you for your help,
    Tom
    Attached Files Attached Files

  9. #9
    moke123's Avatar
    moke123 is offline Me.Dirty=True
    Windows 7 32bit Access 2010 32bit
    Join Date
    Oct 2012
    Location
    Ma.
    Posts
    1,643
    Hi Tom,

    Glad you like it.
    I'm not sure what additional comments I can add. Its pretty straight forward for the most part. The only tricky part I imagine is getting 1 function to return 3 values, so i'll try and explain that.

    Function GetTableCount(ByRef strDelete As Variant, ByRef strMsg As Variant) As Integer

    This function does most of the heavy lifting.
    It creates a recordset of all the tables in 00_DeleteTables. A RecordCount gives you the first count in the strMsg.

    We then loop through the recordset with the "LK_" prefix added.
    The loop passes the table name to fTableExists() which tests to see if the table exists in the tabledefs.
    If the table exists then the Remaining Tables count is incremented by 1.
    If it does not exists then the missing tables count is incremented by 1. It also concatenates the table name into a string list of missing/not found tables.

    We then apply a filter to the recordset to return just those records in 00_DeleteTables that are true for Delete.

    We then loop through the filterred recordset and compare it to the list of missing/not found tables.. If it is not in the missing list then we know it is marked to delete so we
    increment the count of files to delete by 1 and concatenate the table name in the strDelete list.

    This gives us the 4 different counts which are used in the strMsg msgbox.
    The number of files that are going to be deleted is then assigned to the return value of the function GetTableCount.

    Here's where we get to the tricky part which is how we get the one function to return 3 seperate values. They are the count to delete, the strMessage string, and the list of tables to delete.

    The count to delete is easy as it is assigned as the return value in the conventional way - GetTableCount = delCount

    The trick to getting the other 2 values is by passing the variables to GetTableCount "ByRef" rather than the default "ByVal"
    Code:
    GetTableCount(ByRef strDelete As Variant, ByRef strMsg As Variant)
    The whole process is invoked by calling Sub DeleteLKTables().

    Code:
    Sub DeleteLKTables()
    
    
        'Declare variables
        Dim strDelete As Variant
        Dim strMsg As Variant
        Dim i As Integer
        
        i = GetTableCount(strDelete, strMsg)
    You'll notice we dim'd the 3 variables and assigned the integer i variable to the value returned by the the function.
    We also passed the 2 other variables to the GetTableCount function as arguments.
    Since they were passed ByRef, any changes to them in GetTableCount() are reflected in the variables in the DeleteLKTables sub.

    The rest of the sub is pretty straight forward. We use the strMsg variable in our message box and the strDelete variable in the drop table statement.

    Hope this explains it enough. Let me know if you have any questions.
    If this helped, please click the star * at the bottom left and add to my reputation- Thanks

  10. #10
    accesstos's Avatar
    accesstos is offline Expert
    Windows XP Access 2007
    Join Date
    Dec 2018
    Location
    Greece
    Posts
    551
    Hi guys!

    @ Moke123, seems that we had the same idea with the ByRef arguments yesterday.
    -----------------------------
    Many times, we are focusing too much on attempt to pass through the window and we don’t see the open door nearby us.

    In our case, by choosing to work with SQL engine, we can retrieve the appropriate information using queries.
    At first, we can have a usefull view of the 00_DeleteTables via a simple query (qryFieldSTD):
    Code:
    SELECT ID, FieldnameStandardized, Delete, 
    "LK_" & [FieldnameStandardized] AS tName
    FROM 00_DeleteTables;
    We can simply retrieve the existing LK_* tables via a simple query (qryLK_Tables):
    Code:
    SELECT MSysObjects.Name AS table_name
    FROM MSysObjects
    WHERE MSysObjects.Name Like "LK_*";
    Now, we can create a left joined query with the above two (qryFieldsLKs):
    Code:
    SELECT qryFieldSTD.ID, qryFieldSTD.FieldnameStandardized, 
    qryFieldSTD.Delete, qryFieldSTD.tName, qryLK_Tables.table_name, 
    IsNull([table_name]) AS IsMissingLK
    FROM qryFieldSTD LEFT JOIN qryLK_Tables 
    ON qryFieldSTD.tName = qryLK_Tables.table_name;
    With another simple query, we can retrieve the selected but missing/deleted LK_ tables (qryLKsMissing):
    Code:
    SELECT qryFieldsLKs.tName, qryFieldsLKs.Delete, qryFieldsLKs.IsMissingLK
    FROM qryFieldsLKs
    WHERE (qryFieldsLKs.[Delete]=-1) AND (qryFieldsLKs.IsMissingLK=-1);
    And, finally, we can retrieve the existing selected tables to be deleted (qryLKsToDrop):
    Code:
    SELECT table_name FROM qryFieldsLKs
    WHERE ([Delete]=-1) AND (Not table_name Is Null);
    So, with the assistant of SQL engine, we can avoid the tricky code and its lines can be reduced enough.
    In other words, we can simply count the existing tables before and after the deletion, using the query qryLKsToDrop, and find the count of the actually deleted tables using the same recordset:
    Code:
    Function DropTables() As Long
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim i As Long
    
        On Error Resume Next
        Set db = CurrentDb
        'Open a recordset to the existing tables to be deleted.
        Set rs = db.OpenRecordset("qryLKsToDrop", dbOpenSnapshot)
        With rs
            If Not (.BOF And .EOF) Then
                .MoveLast
                'Get the initial count of existing tables to be deleted.
                i = .RecordCount
                While Not .BOF
                    'Try to delete the table.
                    db.Execute "DROP TABLE " & !table_name
                    .MovePrevious
                Wend
                .Requery 'to get the actual count.
                If (.BOF And .EOF) Then
                    'All tables have been deleted.
                    DropTables = i
                Else
                    'Some tables, for any reason, still remain.
                    .MoveLast
                    'Get the difference (initial-current)
                    DropTables = i - .RecordCount
                End If
            End If
        End With
        rs.Close
        Set rs = Nothing
        Set db = Nothing
        On Error GoTo 0
    End Function
    All the rest code is for the building of the messages. You can check the results by using the form frmDeleteNonLOVs in attachment (DropTables_SQL.accdb).
    I hope it was worth the waiting.

    Cheers,
    John
    Attached Files Attached Files

  11. #11
    Gicu's Avatar
    Gicu is online now VIP
    Windows 10 Access 2010 32bit
    Join Date
    Jul 2015
    Location
    Kelowna, BC, Canada
    Posts
    4,101
    Hi Tom,

    Sorry for the late arrival, I have a free utility to do this type of db clean-up (http://forestbyte.com/ms-access-util...-data-cleaner/). It is an accde, if you think it would help you please let me know and I can upload here the accdb so you could see how it works.

    Cheers,
    Vlad
    Vlad Cucinschi
    MS Access Developer
    http://forestbyte.com/

  12. #12
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038
    John -- I just checked out your version too. Another solid approach that's exactly producing the results of the original problem.

    Thank you for providing me this 2nd option. I will share w/ team for feedback.

    Either way, I'd like to recognize both you AND moke123 for providing two excellent solutions.

    At this time, I think it's ok to close the thread... I'll keep you posted in the event I have follow-up questions.

    Cheers,
    Tom

  13. #13
    skydivetom is offline VIP
    Windows 8 Access 2010 64bit
    Join Date
    Feb 2019
    Posts
    1,038
    Vlad -- thanks for chiming in... yes, I'd love to see your utility in accdb format. Thank you in advance.

  14. #14
    accesstos's Avatar
    accesstos is offline Expert
    Windows XP Access 2007
    Join Date
    Dec 2018
    Location
    Greece
    Posts
    551
    Quote Originally Posted by skydivetom View Post
    John -- I just checked out your version too. Another solid approach that's exactly producing the results of the original problem.

    Thank you for providing me this 2nd option. I will share w/ team for feedback.

    Either way, I'd like to recognize both you AND moke123 for providing two excellent solutions.

    At this time, I think it's ok to close the thread... I'll keep you posted in the event I have follow-up questions.

    Cheers,
    Tom
    Tom,

    I have to say, I feel lucky any time I am taking part in your interesting threads and I want to thank you for the recent opportunity that you gave me by keeping the thread open. Unfortunately, I’m not familiar enough with English to express the enjoyment that I take from this forum and the esteem for thankful members like you. The process of the assist in area of the search and development, is a two-way process and the most benefit is for those that are giving. So, trying to give an answer, I learn something every day and I update those that I already know. In other words, I "keep my saw sharp".

    About the last approach, the extra form expounds the capability of accessing to the existing selected tables in any time from any place. In general, I thing that the ability to have the appropriate info in a accessible dataset, especially in the environment of Access, is always an efficient feature.

    The confirmation message box is not static about the message and the options, but, it depends on the existence of selected tables, missing tables and tables to be deleted.

    I will be waiting for your feedback.

    Cheers,
    John

  15. #15
    moke123's Avatar
    moke123 is offline Me.Dirty=True
    Windows 7 32bit Access 2010 32bit
    Join Date
    Oct 2012
    Location
    Ma.
    Posts
    1,643
    I’m not familiar enough with English
    Sure fooled me. I would never have guessed English is not your native tongue.
    If this helped, please click the star * at the bottom left and add to my reputation- Thanks

Page 1 of 2 12 LastLast
Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 7
    Last Post: 03-19-2021, 05:54 PM
  2. Replies: 4
    Last Post: 11-14-2019, 11:30 AM
  3. Simple table relationships ("faces" to "spaces" to "chairs")
    By skydivetom in forum Database Design
    Replies: 36
    Last Post: 07-20-2019, 01:49 PM
  4. Replies: 1
    Last Post: 09-07-2015, 08:00 AM
  5. Replies: 16
    Last Post: 07-22-2011, 09:23 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums