Solved

DConcat function on Multiple rows, combining into a single field.

Posted on 2013-05-24
29
571 Views
Last Modified: 2013-05-29
I have used the Dconcat function in the past however, It is not returning the results I expect:

 DConcat("DistList","_49mwg_report_dist_list","Name"=[_49mwg_report_dist_list]!RptName).

I need to create a list of emails for a distribution list where the Company Names = Company Name, hence creating a field that contains multiple email address separated by ";".  and there will not be multiple records for each company.

This is currently returning #Error or a value of Zero when I step thru the code and it eventually locks up.

Karen
0
Comment
Question by:Karen Schaefer
  • 16
  • 7
  • 4
  • +1
29 Comments
 
LVL 61

Expert Comment

by:mbizup
ID: 39195868
DConcat is a custom function.  Can you post the code for it?

In the meantime, assuming that the third argument is similar to that in other Domain Aggregate functions, try this:


 DConcat("DistList","_49mwg_report_dist_list","Name = '" & [_49mwg_report_dist_list]!RptName & "'")

Open in new window

0
 

Author Comment

by:Karen Schaefer
ID: 39201744
Function DConcat(ConcatColumns As String, Tbl As String, Optional Criteria As String = "", _
    Optional Delimiter1 As String = ", ", Optional Delimiter2 As String = ", ", _
    Optional Distinct As Boolean = True, Optional Sort As String = "Asc", _
    Optional Limit As Long = 0)
    
    ' Function by Patrick G. Matthews, basically embellishing an approach seen in many
    ' incarnations over the years
    
    ' Requires reference to Microsoft DAO library
    
    ' This function is intended as a "domain aggregate" that concatenates (and delimits) the
    ' various values rather than the more usual Count, Sum, Min, Max, etc.  For example:
    '
    '    Select Field1, DConcat("Field2", "SomeTable", "[Field1] = '" & Field1 & "'") AS List
    '    FROM SomeTable
    '    GROUP BY Field1
    '
    ' will return the distinct values of Field1, along with a concatenated list of all the
    ' distinct Field2 values associated with each Field1 value.
    
    ' ConcatColumns is a comma-delimited list of columns to be concatenated (typically just
    '   one column, but the function accommodates multiple).  Place field names in square
    '   brackets if they do not meet the customary rules for naming DB objects
    ' Tbl is the table/query the data are pulled from.  Place table name in square brackets
    '   if they do not meet the customary rules for naming DB objects
    ' Criteria (optional) are the criteria to be applied in the grouping.  Be sure to use And
    '   or Or as needed to build the right logic, and to encase text values in single quotes
    '   and dates in #
    ' Delimiter1 (optional) is the delimiter used in the concatenation (default is ", ").
    '   Delimiter1 is applied to each row in the code query's result set
    ' Delimiter2 (optional) is the delimiter used in concatenating each column in the result
    '   set if ConcatColumns specifies more than one column (default is ", ")
    ' Distinct (optional) determines whether the distinct values are concatenated (True,
    '   default), or whether all values are concatenated (and thus may get repeated)
    ' Sort (optional) indicates whether the concatenated string is sorted, and if so, if it is
    '   Asc or Desc.  Note that if ConcatColumns has >1 column and you use Desc, only the last
    '   column gets sorted
    ' Limit (optional) places a limit on how many items are placed into the concatenated string.
    '   The Limit argument works as a TOP N qualifier in the SELECT clause
    
    Dim rs As DAO.Recordset
    Dim SQL As String
    Dim ThisItem As String
    Dim FieldCounter As Long
    
    On Error GoTo ErrHandler
    
    ' Initialize to Null
    
    DConcat = Null
    
    ' Build up a query to grab the information needed for the concatenation
    
    SQL = "SELECT " & IIf(Distinct, "DISTINCT ", "") & _
            IIf(Limit > 0, "TOP " & Limit & " ", "") & _
            ConcatColumns & " " & _
        "FROM " & Tbl & " " & _
        IIf(Criteria <> "", "WHERE " & Criteria & " ", "") & _
        Switch(Sort = "Asc", "ORDER BY " & ConcatColumns & " Asc", _
            Sort = "Desc", "ORDER BY " & ConcatColumns & " Desc", True, "")
        
    ' Open the recordset and loop through it:
    ' 1) Concatenate each column in each row of the recordset
    ' 2) Concatenate the resulting concatenated rows in the function's return value
   ' Debug.Print SQL
    
    Set rs = CurrentDb.OpenRecordset(SQL)
    With rs
        Do Until .EOF
            
            ' Initialize variable for this row
            
            ThisItem = ""
            
            ' Concatenate columns on this row
            
            For FieldCounter = 0 To rs.Fields.Count - 1
                ThisItem = ThisItem & Delimiter2 & Nz(rs.Fields(FieldCounter).value, "")
            Next
            
            ' Trim leading delimiter
            
            ThisItem = Mid(ThisItem, Len(Delimiter2) + 1)
            
            ' Concatenate row result to function return value
            
            DConcat = Nz(DConcat, "") & Delimiter1 & ThisItem
            .MoveNext
        Loop
        .Close
    End With
    
    ' Trim leading delimiter
    
    If Not IsNull(DConcat) Then DConcat = Mid(DConcat, Len(Delimiter1) + 1)
    
    GoTo Cleanup

ErrHandler:
    
    ' Error is most likely an invalid database object name, or bad syntax in the Criteria
    
    DConcat = CVErr(Err.Number)
    
Cleanup:
    Set rs = Nothing
    
End Function

Open in new window

0
 

Author Comment

by:Karen Schaefer
ID: 39202608
getting typemismatch on the  concat statement above:

EMailList: DConcat("DistList","_49mwg_report_dist_list","Name = '" & [_49mwg_report_dist_list]![RptName] & "'")
0
 

Author Comment

by:Karen Schaefer
ID: 39202696
DConcat & Memo Fields that will not truncate to 255 chars.

How do I prevent it from truncating?
K
0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39203579
Hi Karen

The DConcat code should be returning a full, untruncated string, so the truncation must be happening in the query.

Let's take a step back and ask what you are using this for.  If the query is being used in a VBA procedure to send emails to the concatenated list, then leave the DConcat out of the query and call it instead in your VBA procedure.

Likewise, if the list is being displayed in a textbox on a report, you can call DConcat in the Format event procedure of your Detail section to assign its returned value to an unbound textbox.

Best wishes,
Graham Mandeno [Access MVP 1996-2013]
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 39204182
@kfschaefer1,

Where are you using this?  Is it in a query, or in VBA?  I think you have probably referenced the wrong parameter in the criteria portion of the function.

In VBA, you might have:

Dim strEmailTo as string
strEmailTo = DConcat("DistList","_49mwg_report_dist_list","Name = '" & me.txtRptName & "'")

What intrigues me is that you are trying to use the same data source in the function as in your criteria, which implies that you might be trying to do this in a query.  If you are doing this in a query, please post the rest of the query SQL so we can see if there is a bad reference in there.

Another thing you might consider is that "Name" is a reserved word in Access, so whenever you use it to refer to a field, you really should wrap it in brackets:  [Name]
0
 

Author Comment

by:Karen Schaefer
ID: 39205234
Ok  I need to display a query that returns the results of

List of Report Names and the correlated list of emails (in a single row of data)  Concatenate the list of Emails.

I am currently using a query to call the function, it is here where the list of emails is being truncated.

Should I be using a Query Def to display the query results via VBA or is there a way to use this function within a query and preventing the truncation?

Karen
0
 

Author Comment

by:Karen Schaefer
ID: 39205792
Here is my current code, it is still truncating the Distrbution list to 255 chars.

Public Function ConcatDistList()
Dim curDB As DAO.Database
Dim strSQL As String, strSQL1 As String
Dim rs As DAO.Recordset, rs1 As DAO.Recordset
Dim MyString As String
   On Error GoTo ConcatDistList_Error

Set curDB = CurrentDb()

curDB.Execute ("Delete * from tblReportLIst_DistLst")

strSQL = "INSERT INTO tblReportLIst_DistLst ( Name, Period, DistributionList )" & _
        " SELECT tblDailyLog.Name, tblDailyLog.Period, DConcat('DistList','tblReportDist') AS DistbList" & _
        " FROM tblDailyLog INNER JOIN tblReportDist ON tblDailyLog.Name = tblReportDist.RptName" & _
        " GROUP BY tblDailyLog.Name, tblDailyLog.Period, DConcat('DistList','tblReportDist')" & _
        " HAVING (((tblDailyLog.Period)<>'Discontinued'))" & _
        " ORDER BY tblDailyLog.Name"

'strSQL = "INSERT INTO tblReportList_DistLst ( Name, Type, Period, DistributionList, Special," & _
        " RunDate, [Day], JobName, [Number], [Order], UpdateDate, RunTime, Priority, SaveToHistory," & _
        " Owner, ManualTask )" & _

'strSQL = " SELECT tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period, DConcat('DistList','TblReportDist') AS DistbList," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " FROM tblDailyLog INNER JOIN tblReportDist ON tblDailyLog.Name = tblReportDist.RptName" & _
        " GROUP BY tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period, DConcat('DistList','TblReportDist.DistList')," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " HAVING (((tblDailyLog.Period) <> 'Discontinued'))" & _
        " ORDER BY tblDailyLog.Name, tblDailyLog.Period;"


Debug.Print strSQL
curDB.Execute (strSQL)
DoCmd.OpenTable "tblReportLIst_DistLst", acViewNormal, acReadOnly
   On Error GoTo 0
   Exit Function

ConcatDistList_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ConcatDistList of Module _modDConcat"

End Function

Open in new window

0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 39205820
so, where are your report names saved?  What table?  The way I would normally do this in a query would be something like:

SELECT Rpt.[Report Name]
           , DConcat("DistList","_49mwg_report_dist_list","[Report Name] = '" & Rpt.[Report Name] & "'") as eMailTo
FROM tbl_Reports as Rpt

In my datatbases, I would use a Rpt_ID (autonumber) value stored in tbl_Reports to identify each report, and would store that value as a foreign key in the table where I store the email addresses associated with each report. Actually, I would probably have Rpt_ID and Person_ID as the fields in that table and use a query to link that table to the table that contains email addresses (probably tbl_People):

SELECT Rpt.[Report Name]
           , DConcat("DistList","_49mwg_report_dist_list","[Rpt_ID] = " & Rpt.[Rpt_ID]) as eMailTo
FROM tbl_Reports as Rpt

I'm not sure what "_49mwg_report_dist_list" is (table or query) or what fields are in it.  If you could elaborate on that a bit (field names and datatypes), that might be helpful.
0
 

Author Comment

by:Karen Schaefer
ID: 39205849
Ok I am getting closer - I got the query (SqlString in VBA) to update the table "TblReportDistList" & concatenate the email address using the following Sql String:

Feel free to modify my sql string ie. query.  I need to have the data visbile and the use of a query or table doesn't matter to me as long as the email list does not truncate.

strSQL = "INSERT INTO tblReportList_DistLst ( Name, Type, Period, DistributionList, Special," & _
        " RunDate, [Day], JobName, [Number], [Order], UpdateDate, RunTime, Priority, SaveToHistory," & _
        " Owner, ManualTask )" & _
        " SELECT tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period, DConcat('DistList','TblReportDist') AS DistbList," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " FROM tblDailyLog INNER JOIN tblReportDist ON tblDailyLog.Name = tblReportDist.RptName" & _
        " GROUP BY tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " HAVING (((tblDailyLog.Period) <> 'Discontinued'))" & _
        " ORDER BY tblDailyLog.Name, tblDailyLog.Period"

Open in new window


However, it puts all the emails together and does not separate them per each Record ie. Report Name.

When I place the "DConcat('DistList','TblReportDist')" into the GROUP BY is when it truncates the data"

This may hav something to do with the GROUP BY and the Dconcat function.

Please let me know.
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 39205886
OK, now the problem becomes apparent.  The Group By clause will force memo fields to truncate at 255 characters, as will a DISTINCT clause.

I believe your best bet will be to insert the records into the table, without the Distribution List.  Then use a secondary query to identify the records where the DistributionList field is empty and fill in that field.  That might look something like:

UPDATE tblReportList_DistLst
SET DistributionList = DConcat('DistList','TblReportDist', '[Name] = ''' & tblReportList_DistLst.Name & ''')
WHERE tblReportList_DistLst.DistributionList IS NULL
0
 

Author Comment

by:Karen Schaefer
ID: 39205904
ok problem with the quotes syntax of the update statement:

curDB.Execute ("Update tblReportList_DistLst" & _
                " SET DistributionList = DConcat('DistList','TblReportDist', '[Name] = ''' & tblReportList_DistLst.Name & ''')" & _
                " WHERE tblReportList_DistLst.DistributionList Is Null")

Returns:

err
0
 
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 39205938
Yeah, I thought that might happen.  I hate trying to embed those in a string like that.  I'll try to take a look at this later this evening.
0
 

Author Comment

by:Karen Schaefer
ID: 39205958
I appreciate your efforts, however, I could really use your help now, under a deadline.

Any help would be appreciated.

Thanks,

Karen
0
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 

Author Comment

by:Karen Schaefer
ID: 39206173
ok using the criteria feature what is the proper syntax?

I want to update the DistributionList field in the TblReprtList_DistList table.

Where the tblDailyLog.Name = tblReportDist.RptName

What would be the proper syntax - When I try to use tables not in the current Update Query I am getting and External Variable error.

Karen
0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39206200
Hi Karen

Looking at your original query, I cannot see where you are including any fields from tblReportDist (apart from the DConcat, which does not require the source table to be part of the query).  I suggest you drop the secondary table from the query and use a simple query without a GROUP BY clause:

strSQL = "INSERT INTO tblReportList_DistLst ( Name, Type, Period, DistributionList, Special," & _
        " RunDate, [Day], JobName, [Number], [Order], UpdateDate, RunTime, Priority, SaveToHistory," & _
        " Owner, ManualTask )" & _
        " SELECT tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period, DConcat('DistList','TblReportDist', 'RptName=' & tblDailyLog.Name) AS DistbList," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " FROM tblDailyLog " & _
        " WHERE tblDailyLog.Period <> 'Discontinued'" & _
        " ORDER BY tblDailyLog.Name, tblDailyLog.Period" 

Open in new window


Best wishes,
Graham
0
 

Author Comment

by:Karen Schaefer
ID: 39206209
When I do not use the Group by it updates all the emails for every report - they are not limited to just the specified report.


I have changed to using 2 steps 1 to insert into a table all data except the DistList(email)
2.  Create an Update query that will update the spcecific email per each report name.  This is where I am having an issue.  the correct format for the Update query to include the DConcat function with the criteria.

any help is appreciated.

Karen
0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39206220
Karen,

What is the primary key of tblDailyLog?  If it is included in the GROUP BY then I cannot see how removing the GROUP BY will give you duplicate records.  Are you sure you also removed the INNER JOIN clause?

-- Graham
0
 

Author Comment

by:Karen Schaefer
ID: 39206237
No Primary keys - Need to link by name and RptName

K
0
 

Author Comment

by:Karen Schaefer
ID: 39206252
What changes would you recommend for the following code - if it can be simplified please make recommendateions:

Public Function ConcatDistList()
Dim curDB As DAO.Database
Dim strSQL As String, strSQL1 As String
Dim rs As DAO.Recordset, rs1 As DAO.Recordset
Dim MyString As String
   On Error GoTo ConcatDistList_Error

Set curDB = CurrentDb()

curDB.Execute ("Delete * from tblReportLIst_DistLst")

strSQL = "INSERT INTO tblReportList_DistLst ( Name, Type, Period, Special," & _
        " RunDate, [Day], JobName, [Number], [Order], UpdateDate, RunTime, Priority, SaveToHistory," & _
        " Owner, ManualTask )" & _
        " SELECT tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " FROM tblDailyLog INNER JOIN tblReportDist ON tblDailyLog.Name = tblReportDist.RptName" & _
        " GROUP BY tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask" & _
        " HAVING (((tblDailyLog.Period) <> 'Discontinued'))" & _
        " ORDER BY tblDailyLog.Name, tblDailyLog.Period"
curDB.Execute (strSQL)
 
curDB.Execute ("Update tblReportList_DistLst" & _
                " SET DistributionList = DConcat('DistList','TblReportDist', '[RptName] = ''" & [tblReportList].[Name] & "'' ')" & _
                " WHERE tblReportList_DistLst.DistributionList Is Null")
Debug.Print strSQL
curDB.Execute (strSQL)
DoCmd.OpenTable "tblReportLIst_DistLst", acViewNormal, acReadOnly
   On Error GoTo 0
   Exit Function

ConcatDistList_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ConcatDistList of Module _modDConcat"

End Function

Open in new window

0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39206254
The DConcat does that linking!  Trust me and try removing that JOIN and the GROUP BY.  Unless you have multiple records in tblDailyLog with exactly the same combination of Name, Type, Period, Special, RunDate, Day, JobName, Number, Order, UpdateDate, RunTime, Priority, SaveToHistory, Owner and ManualTask, then using GROUP BY (or  DISTINCT) is a waste of time.

G
0
 

Author Comment

by:Karen Schaefer
ID: 39206265
The data sample.

Rpt Name                DistList

ABC                       1234@abc.com
ABC                       456@abc.com
ABC                        654@abcc.com
DEF                        1234@def.com
DEF                        2234@def.com
DEF                        4234@def.com

So results should be:

ABC                       1234@abc.com; 456@abc.com; 654@abcc.com
DEF                        1234@def.com; 2234@def.com; 234@def.com
0
 
LVL 20

Accepted Solution

by:
GrahamMandeno earned 500 total points
ID: 39206311
Hi K

Try this:
Public Function ConcatDistList()
Dim curDB As DAO.Database
Dim strSQL As String
  On Error GoTo ConcatDistList_Error

  Set curDB = CurrentDb()

  curDB.Execute ("Delete * from tblReportLIst_DistLst")

  strSQL = "INSERT INTO tblReportList_DistLst ( Name, Type, Period, Special," & _
        " RunDate, [Day], JobName, [Number], [Order], UpdateDate, RunTime, Priority, SaveToHistory," & _
        " Owner, ManualTask, DistributionList )" & _
        " SELECT tblDailyLog.Name, tblDailyLog.Type, tblDailyLog.Period," & _
        " tblDailyLog.Special, tblDailyLog.RunDate, tblDailyLog.Day, tblDailyLog.JobName, tblDailyLog.Number," & _
        " tblDailyLog.Order, tblDailyLog.UpdateDate, tblDailyLog.RunTime, tblDailyLog.Priority," & _
        " tblDailyLog.SaveToHistory, tblDailyLog.Owner, tblDailyLog.ManualTask, " & _
        " DConcat('DistList','TblReportDist', '[RptName] = ""' & tblDailyLog.Name & '""', '; ' )" & _
        " FROM tblDailyLog " & _
        " WHERE tblDailyLog.Period <> 'Discontinued' " & _
        " ORDER BY tblDailyLog.Name, tblDailyLog.Period"
  curDB.Execute strSQL, dbFailOnError
 
  DoCmd.OpenTable "tblReportLIst_DistLst", acViewNormal, acReadOnly

  Exit Function

ConcatDistList_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ConcatDistList of Module _modDConcat"

End Function 

Open in new window


G.
0
 

Author Comment

by:Karen Schaefer
ID: 39206316
What is the changes I need to make to include the Dconcat with the correct criteria statement.  I tried removing the INNER Joins and group and I am not getting anything in the Dist List.

K
0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39206327
It took you 49 seconds to reply!  Did you try the function I posted?

G.
0
 

Author Comment

by:Karen Schaefer
ID: 39206354
That did the trick - I really appreciate your help on this.

Karen
0
 

Author Closing Comment

by:Karen Schaefer
ID: 39206357
Thanks for the great assist.
0
 
LVL 20

Expert Comment

by:GrahamMandeno
ID: 39206360
Hi K

You're welcome!  We got there in the end :-)

Cheers,
Graham
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now